Streamable XSLT attempt passes streamability analysis, gives warning "bytecode(consume(xsl:apply-templates)) is not fully streamed" but then gives different result when run without streaming
Replies (1)
Please register to reply
Added by Martin Honnen almost 3 years ago
Playing with some code to see which errors during streamed processing xsl:try/xsl:catch
could catch I wrote the code
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="3.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="#all"
expand-text="yes">
<xsl:output method="xml" indent="yes"/>
<xsl:mode on-no-match="shallow-copy" streamable="yes"/>
<xsl:template match="/">
<xsl:try>
<xsl:apply-templates/>
<xsl:catch/>
</xsl:try>
</xsl:template>
</xsl:stylesheet>
When I run this against a sample input like
<?xml version="1.0" encoding="utf-8"?>
<root><section><title>s1</title></section><section><title>s2</title></section></root>
Saxon 10.6 EE Java gives a warning
Warning on line 14 column 29 of streamed-identity-plus-indentation-with-try-catch.xsl:
SXST0067 Execution of bytecode(consume(xsl:apply-templates)) is not fully streamed
but then runs the code and gives an output different to a non-streamed execution where it seems text nodes are output after the document:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<section>
<title/>
</section>
<section>
<title/>
</section>
</root>s1s2
The expected output would be
<?xml version="1.0" encoding="UTF-8"?>
<root>
<section>
<title>s1</title>
</section>
<section>
<title>s2</title>
</section>
</root>
SaxonCS-EE 11.0 gets it right even with streaming.
Raised (belatedly) as bug #5312.
XSLT3 test case si-try-200
created
Please register to reply