I have a variant of the xslt task for processing Saxon transformations. It
seems to have a bug that is also present in the base xslt task (which
contains a lot of code that I copied), and I'm not sure how to fix it.

Basically, given this input

        <target name="saxon">
                <saxon-xslt 
                        basedir="in" 
                        destdir="out"
                        style="identity.xsl"
                        force="true" >
                        <mapper type="glob" from="*.template.xml"
to="*.xml"/>
                </saxon-xslt>
        </target>

It's processing each of the input files (that is, each file matching
in/*.template.xml) twice.

The relevant code is:

                // Process all the files marked for styling
                list = scanner.getIncludedFiles();
                for (int i = 0; i < list.length; ++i) {
                    process(baseDir, list[i], destDir, xslResource);
                }
                if (performDirectoryScan) {
                    // Process all the directories marked for styling
                    dirs = scanner.getIncludedDirectories();
                    for (int j = 0; j < dirs.length; ++j) {
                        list = new File(baseDir, dirs[j]).list();
                        for (int i = 0; i < list.length; ++i) {
                            process(baseDir, dirs[j] + File.separator +
list[i],
                                    destDir, xslResource);
                        }
                    }
                }

and the first transformation is being done as a result of
getIncludedFiles(), the second as a result of getIncludedDirectories().

Now, the "performDirectoryScan" flag corresponds to the external property
scanIncludedDirectories, and its default value is true.

Adding scanIncludedDirectories="false" to the task cures the problem. But
why would anyone want to set it to true, and why is true the default value?

Michael Kay
http://www.saxonica.com/


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to