Actions
Bug #4362
closedpositional predicate not recognized by streamability analysis: execution fails with java.lang.UnsupportedOperationException: net.sf.saxon.trans.XPathException: Navigation using preceding-sibling axis is not supported from a streamed input node
Start date:
2019-10-26
Due date:
% Done:
0%
Estimated time:
Legacy ID:
Applies to branch:
9.9, trunk
Fix Committed on Branch:
9.9, trunk
Fixed in Maintenance Release:
Platforms:
Description
I used a predicate pb[position() mod 2 = 1]
in the group-starting-with
pattern of an xsl:for-each-group
and with Saxon 9.9.1.5 EE that seems to pass the streamability analysis but then fails on execution with
Using parser com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser
java.lang.UnsupportedOperationException: net.sf.saxon.trans.XPathException: Navigation using preceding-sibling axis is not supported from a streamed input node
at com.saxonica.ee.stream.om.FleetingNode.iterateAxis(FleetingNode.java:512)
at com.saxonica.ee.stream.om.FleetingElementNode.iterateAxis(FleetingElementNode.java:98)
at net.sf.saxon.tree.util.Navigator.getSiblingPosition(Navigator.java:1136)
at net.sf.saxon.pattern.GeneralPositionalPattern.getActualPosition(GeneralPositionalPattern.java:273)
at net.sf.saxon.pattern.GeneralPositionalPattern.internalMatches(GeneralPositionalPattern.java:242)
at net.sf.saxon.pattern.GeneralPositionalPattern.matchesBeneathAnchor(GeneralPositionalPattern.java:222)
at net.sf.saxon.pattern.GeneralPositionalPattern.matches(GeneralPositionalPattern.java:207)
at com.saxonica.ee.stream.adjunct.GroupStartingTester.notifyItem(GroupStartingTester.java:35)
at com.saxonica.ee.stream.watch.ForEachGroupPartitionAction.startSelectedParentNode(ForEachGroupPartitionAction.java:123)
at com.saxonica.ee.stream.watch.Trigger.startSelectedParentNode(Trigger.java:85)
at com.saxonica.ee.stream.watch.WatchManager.startElement(WatchManager.java:274)
at net.sf.saxon.event.StartTagBuffer.startContent(StartTagBuffer.java:246)
at com.saxonica.ee.stream.ContentDetector.flush(ContentDetector.java:97)
at com.saxonica.ee.stream.ContentDetector.endElement(ContentDetector.java:55)
at net.sf.saxon.event.ReceivingContentHandler.endElement(ReceivingContentHandler.java:528)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at net.sf.saxon.event.Sender.sendSAXSource(Sender.java:435)
at net.sf.saxon.event.Sender.send(Sender.java:167)
at net.sf.saxon.trans.XsltController.applyStreamingTemplates(XsltController.java:1050)
at net.sf.saxon.s9api.AbstractXsltTransformer.applyTemplatesToSource(AbstractXsltTransformer.java:339)
at net.sf.saxon.s9api.Xslt30Transformer.applyTemplates(Xslt30Transformer.java:311)
at net.sf.saxon.Transform.processFile(Transform.java:1283)
at net.sf.saxon.Transform.doTransform(Transform.java:815)
at net.sf.saxon.Transform.main(Transform.java:80)
Caused by: net.sf.saxon.trans.XPathException: Navigation using preceding-sibling axis is not supported from a streamed input node
at com.saxonica.ee.stream.om.FleetingNode.iterateAxis(FleetingNode.java:509)
... 33 more
Fatal error during transformation: java.lang.UnsupportedOperationException: net.sf.saxon.trans.XPathException: Navigation using preceding-sibling axis is not supported from a streamed input node
Complete code is
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xpath-default-namespace="http://www.tei-c.org/ns/1.0"
exclude-result-prefixes="#all"
version="3.0">
<xsl:mode on-no-match="shallow-copy" streamable="yes"/>
<xsl:output method="html" indent="yes" html-version="5"/>
<xsl:template match="/">
<html>
<head>
<title>.NET XSLT Fiddle Example</title>
</head>
<body>
<xsl:apply-templates select="TEI/text/body"/>
</body>
</html>
</xsl:template>
<xsl:template match="body">
<div class="panel-body">
<xsl:for-each-group select="*" group-starting-with="pb[position() mod 2 = 1]">
<div style="display: flex; flex-direction: row;">
<xsl:for-each-group select="current-group()" group-starting-with="pb">
<div style="border: solid 1px red;">
<xsl:apply-templates select="current-group()"/>
</div>
</xsl:for-each-group>
</div>
</xsl:for-each-group>
</div>
</xsl:template>
<xsl:template match="pb">
<div class="page number" style="text-align:right;">
<xsl:text>[F.</xsl:text>
<xsl:value-of select="@n"/>
<xsl:text>]</xsl:text>
<hr/>
</div>
</xsl:template>
<xsl:template match="p">
<p>
<xsl:apply-templates/>
</p>
</xsl:template>
</xsl:stylesheet>
Sample input is:
<TEI xmlns="http://www.tei-c.org/ns/1.0">
<teiHeader>
<fileDesc>
<titleStmt>
<title>Test</title>
<author>John Doe</author>
</titleStmt>
</fileDesc>
</teiHeader>
<text>
<body>
<pb n="1"></pb>
<p> Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. </p>
<pb n="2"></pb>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. </p>
<pb n="3"></pb>
<p> Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. </p>
<pb n="4"></pb>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. </p>
<pb n="5"></pb>
<p> Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. </p>
<pb n="6"></pb>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. </p>
<pb n="7"></pb>
<p> Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. </p>
<pb n="8"></pb>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. </p>
</body>
</text>
</TEI>
I guess the positional predicate in the pattern should be rejected by the streamability analysis.
Related issues
Updated by Michael Kay over 4 years ago
Probably a duplicate of #4357, but I will confirm.
Updated by Michael Kay over 4 years ago
Added test case si-group-063; confirmed that this is fixed by the patch for bug #4357
Updated by Michael Kay over 4 years ago
- Status changed from New to Duplicate
- Assignee set to Michael Kay
- Applies to branch trunk added
- Fix Committed on Branch 9.9, trunk added
Updated by Michael Kay over 4 years ago
- Is duplicate of Bug #4357: XSLT using accumulator passes streamability analysis but crashed with java.lang.UnsupportedOperationException: net.sf.saxon.trans.XPathException: Navigation using preceding-sibling axis is not supported from a streamed input node added
Please register to edit this issue
Actions