exist
exist copied to clipboard
[BUG] XSLT Transformation failed with "The TransformerHandler is not serially reusable."
To be able to better understand you problem, please add as much information as possible to this ticket. Always test your bugs against the latest stable release of exist. We cannot provide support for older versions here on GitHub. If the version of eXist that is experiencing the issue is more than 1 major version behind the most recent release, please consider posting a question on our mailing list.
Describe the bug If we call an XSLT Script with existdb 6.0.1 the exceution failed with following Exception:
java.lang.UnsupportedOperationException: The TransformerHandler is not serially reusable. The startDocument() method must be called once only. at net.sf.saxon.jaxp.TransformerHandlerImpl.startDocument(TransformerHandlerImpl.java:91) ~[Saxon-HE-9.9.1-8.jar:?] at net.sf.saxon.event.ContentHandlerProxy.open(ContentHandlerProxy.java:281) ~[Saxon-HE-9.9.1-8.jar:?] at net.sf.saxon.event.ProxyReceiver.open(ProxyReceiver.java:88) ~[Saxon-HE-9.9.1-8.jar:?] at net.sf.saxon.event.SequenceNormalizer.open(SequenceNormalizer.java:54) ~[Saxon-HE-9.9.1-8.jar:?] at net.sf.saxon.event.ProxyReceiver.open(ProxyReceiver.java:88) ~[Saxon-HE-9.9.1-8.jar:?] at net.sf.saxon.event.ComplexContentOutputter.open(ComplexContentOutputter.java:182) ~[Saxon-HE-9.9.1-8.jar:?] at net.sf.saxon.trans.XsltController.prepareOutputReceiver(XsltController.java:806) ~[Saxon-HE-9.9.1-8.jar:?] at net.sf.saxon.trans.XsltController.applyTemplates(XsltController.java:689) ~[Saxon-HE-9.9.1-8.jar:?] at net.sf.saxon.s9api.AbstractXsltTransformer.applyTemplatesToSource(AbstractXsltTransformer.java:347) ~[Saxon-HE-9.9.1-8.jar:?] at net.sf.saxon.s9api.XsltTransformer.transform(XsltTransformer.java:349) ~[Saxon-HE-9.9.1-8.jar:?] at net.sf.saxon.jaxp.TransformerImpl.transform(TransformerImpl.java:71) ~[Saxon-HE-9.9.1-8.jar:?] at net.sf.saxon.jaxp.TransformerHandlerImpl.endDocument(TransformerHandlerImpl.java:173) ~[Saxon-HE-9.9.1-8.jar:?] at org.exist.util.serializer.ReceiverToSAX.endDocument(ReceiverToSAX.java:81) ~[exist-core-6.0.1.jar:6.0.1] at org.exist.storage.serializers.XIncludeFilter.endDocument(XIncludeFilter.java:157) ~[exist-core-6.0.1.jar:6.0.1] at org.exist.storage.serializers.Serializer.toSAX(Serializer.java:965) ~[exist-core-6.0.1.jar:6.0.1] at org.exist.util.serializer.XQuerySerializer.serializeXML(XQuerySerializer.java:94) ~[exist-core-6.0.1.jar:6.0.1] at org.exist.util.serializer.XQuerySerializer.serialize(XQuerySerializer.java:75) ~[exist-core-6.0.1.jar:6.0.1] at org.exist.http.RESTServer.writeResultXML(RESTServer.java:2142) ~[exist-core-6.0.1.jar:6.0.1] at org.exist.http.RESTServer.writeResults(RESTServer.java:2106) ~[exist-core-6.0.1.jar:6.0.1] at org.exist.http.RESTServer.executeXQuery(RESTServer.java:1559) ~[exist-core-6.0.1.jar:6.0.1] at org.exist.http.RESTServer.doGet(RESTServer.java:516) ~[exist-core-6.0.1.jar:6.0.1] at org.exist.http.servlets.EXistServlet.doGet(EXistServlet.java:324) ~[exist-core-6.0.1.jar:6.0.1] at javax.servlet.http.HttpServlet.service(HttpServlet.java:687) ~[javax.servlet-api-3.1.0.jar:3.1.0] at org.exist.http.servlets.EXistServlet.service(EXistServlet.java:588) ~[exist-core-6.0.1.jar:6.0.1] at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0]
Expected behavior XSLT Transformation failed because of Saxon Error.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">
<xsl:output encoding="UTF-8" method="text"/>
<xsl:template match="/">
<xsl:for-each select="//url">
<xsl:value-of select="concat('http://..../exist/rest/db/kpe/', replace(., '/db/kpe/', ''), '?_indent=no')"/>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Context (please always complete the following information):
- OS: Linux Debian 11
- eXist-db version: 6.0.1
- Java Version 11
Please could you check this with Saxon alone? As I see it right now, this is a Saxon specific issue?
yes you are right this is an issue with saxon but existdb needs update the relevant dependency to saxon 9.1
https://www.oxygenxml.com/archives/xsl-list/200906/msg00012.html