fn:transform and post-process function: shouldn't it be applied to all result documents?
Added by Martin Honnen over 2 years ago
I have tried a rather complex setting of an XSLT stylesheet processing an XML input document first with fn:transform
and a second XSLT stylesheet which splits the input into various result documents, where I hoped to provide the post-process
option function to fn:transform
to do further processing on the intermediary results, in this case a chain of stylesheets applied further using fold-left
and fn:transform
.
Unfortunately neither with SaxonCS nor SaxonJ the results are what I expected, namely getting the chain of stylesheets applied to each result document; rather, the chain of sylesheets seems to be only applied to the primary result while secondary results don't seem to have been processed by my post-process
doing fold-left
with fn:transform
on a series of stylesheets.
I attach a zip with reduced test samples, the main stylesheet to be run with SaxonCS or Java from the command line is split-and-post-process1.xsl
, the XML input sample is input-sample-25-items.xml
, the code should create result files output
, chunk-1.xml
, 'chunk-2.xml,
chunk-3.xmlwhere in each of the result files you should see the comment that the chain of stylesheets
sheet1.xsl,
sheet2.xsl,
sheet3.xsl.
sheet4.xslinserted, but the comments appear only in the
output.xml, the
chunk-x.xmlfile contents shows no sign of having been created by the
post-process` function using a chain of stylesheets.
Any advice whether the error is in my code or with Saxon appreciated.
All tested with the current releases 11.3 of SaxonCS and SaxonJ.
Replies (2)
RE: fn:transform and post-process function: shouldn't it be applied to all result documents? - Added by Martin Honnen over 2 years ago
Looking at https://saxonica.plan.io/projects/saxonmirrorhe/repository/he/revisions/he_mirror_saxon_11_3/entry/src/main/java/net/sf/saxon/functions/TransformFn.java it kind of appears as if only the primary result is subjected to the post-process
function. But the spec states
A function that is used to post-process each result document of the transformation (both the principal result and secondary results)
Hmm. Kind of a bummer. Or I have to take the map result of the first fn:transform
call and use map:for-each
to apply my post processing chain on each item in the result map.
RE: fn:transform and post-process function: shouldn't it be applied to all result documents? - Added by Norm Tovey-Walsh over 2 years ago
Hmm. Kind of a bummer. Or I have to take the map result of the first
fn:transform call and use map:for-each to apply my post processing
chain on each item in the result map.
That looks like a bug to me, created #5566.
There’s already an action to investigate post-processing in SaxonJS
where I think the observation was that we simply don’t.
Be seeing you,
norm
--
Norm Tovey-Walsh
Saxonica
Please register to reply