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]