DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=20909>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=20909 Usage of combined xsl:sort causes Exception Summary: Usage of combined xsl:sort causes Exception Product: XalanJ2 Version: 2.5Dx Platform: PC OS/Version: Windows NT/2K Status: NEW Severity: Normal Priority: Other Component: org.apache.xpath AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] Xalan 2.4.1 and 2.5.1 seem to have problems with the following sort instruction: <xsl:sort select = "*[name()=$sortBy]|[EMAIL PROTECTED]"/> The stylesheet below which causes exceptions on the mentioned versions works fine on Xalan 2.2, IE6 and Mozilla 1.3. The bug seems related to bug 10640 but to my opinion the cause is different (See second exception). STYLESHEET: <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <xsl:output method="text"/> <xsl:template match="/"> <xsl:call-template name='sort'> <xsl:with-param name='sortBy' select='string("name")'/> </xsl:call-template> <xsl:call-template name='sort'> <xsl:with-param name='sortBy' select='string("p1")'/> </xsl:call-template> <xsl:call-template name='sort'> <xsl:with-param name='sortBy' select='string("p2")'/> </xsl:call-template> </xsl:template> <xsl:template name="sort"> <xsl:param name='items' select='/root/item'/> <xsl:param name='sortBy' select='string("name")'/> sort by <xsl:value-of select='$sortBy'/>: <xsl:for-each select="$items"> <xsl:sort select = "*[name()=$sortBy]|[EMAIL PROTECTED]"/> <xsl:value-of select='line'/> <xsl:text>, </xsl:text> </xsl:for-each> </xsl:template> </xsl:stylesheet> XML FILE: <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="sort.xsl"?> <root> <item> <line>line 1 </line><name>name3</name> <par key='p1'>p13</par> <par key='p2'>p22</par> </item> <item> <line>line 2 </line> <name>name2</name> <par key='p1'>p11</par> <par key='p2'>p21</par> </item> <item> <line>line 3 </line> <name>name1</name> <par key='p1'>p12</par> <par key='p2'>p23</par> </item> </root> EXCEPTION THROWN (Xalan 2.5.1): java.lang.ArrayIndexOutOfBoundsException: -1 at org.apache.xml.utils.ObjectStack.pop(ObjectStack.java:137) at org.apache.xalan.transformer.TransformerImpl.popElemTemplateElement (TransformerImpl.java:2545) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode (TransformerImpl.java:2203) at org.apache.xalan.transformer.TransformerImpl.transformNode (TransformerImpl.java:1263) ... 6 more --------- java.lang.ArrayIndexOutOfBoundsException: -1 at org.apache.xml.utils.ObjectStack.pop(ObjectStack.java:137) at org.apache.xalan.transformer.TransformerImpl.popElemTemplateElement (TransformerImpl.java:2545) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode (TransformerImpl.java:2203) at org.apache.xalan.transformer.TransformerImpl.transformNode (TransformerImpl.java:1263) at org.apache.xalan.transformer.TransformerImpl.transform (TransformerImpl.java:671) at org.apache.xalan.transformer.TransformerImpl.transform (TransformerImpl.java:1179) at org.apache.xalan.transformer.TransformerImpl.transform (TransformerImpl.java:1157) As written earlier the exception is reproducible on Xalan 2.4.1. Till so far it seems related to bug 10640. But I think this problem was caused by an earlier problem. When skipping the PopElemTemplateElement in the debugger the following exception is thrown: java.lang.NullPointerException Content-Type: text/html ; SystemID: http://localhost:8090/sort.xsl; Line#: 20; Column#: 35 javax.xml.transform.TransformerException: java.lang.NullPointerException at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates (TransformerImpl.java:2323) at org.apache.xalan.templates.ElemTemplate.execute (ElemTemplate.java:431) at org.apache.xalan.templates.ElemCallTemplate.execute (ElemCallTemplate.java:281) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates (TransformerImpl.java:2318) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode (TransformerImpl.java:2185) at org.apache.xalan.transformer.TransformerImpl.transformNode (TransformerImpl.java:1263) at org.apache.xalan.transformer.TransformerImpl.transform (TransformerImpl.java:671) at org.apache.xalan.transformer.TransformerImpl.transform (TransformerImpl.java:1179) at org.apache.xalan.transformer.TransformerImpl.transform (TransformerImpl.java:1157) Caused by: java.lang.NullPointerException at org.apache.xpath.operations.Variable.getElemVariable(Variable.java:312) at org.apache.xpath.operations.Variable.execute(Variable.java:273) at org.apache.xpath.operations.Operation.execute(Operation.java:145) at org.apache.xpath.axes.PredicatedNodeTest.executePredicates (PredicatedNodeTest.java:377) at org.apache.xpath.axes.UnionChildIterator.acceptNode (UnionChildIterator.java:143) at org.apache.xpath.axes.BasicTestIterator.nextNode(BasicTestIterator.java:208) at org.apache.xpath.axes.NodeSequence.nextNode(NodeSequence.java:318) at org.apache.xpath.axes.NodeSequence.item(NodeSequence.java:508) at org.apache.xpath.objects.XNodeSet.str(XNodeSet.java:309) at org.apache.xalan.transformer.NodeSorter$NodeCompareElem.(NodeSorter.java:554) at org.apache.xalan.transformer.NodeSorter.sort(NodeSorter.java:128) at org.apache.xalan.templates.ElemForEach.sortNodes(ElemForEach.java:329) at org.apache.xalan.templates.ElemForEach.transformSelectedNodes (ElemForEach.java:367) at org.apache.xalan.templates.ElemForEach.execute (ElemForEach.java:284) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates (TransformerImpl.java:2318) ... 11 more --------- java.lang.NullPointerException at org.apache.xpath.operations.Variable.getElemVariable(Variable.java:312) at org.apache.xpath.operations.Variable.execute(Variable.java:273) at org.apache.xpath.operations.Operation.execute(Operation.java:145) at org.apache.xpath.axes.PredicatedNodeTest.executePredicates (PredicatedNodeTest.java:377) at org.apache.xpath.axes.UnionChildIterator.acceptNode (UnionChildIterator.java:143) at org.apache.xpath.axes.BasicTestIterator.nextNode(BasicTestIterator.java:208) at org.apache.xpath.axes.NodeSequence.nextNode(NodeSequence.java:318) at org.apache.xpath.axes.NodeSequence.item(NodeSequence.java:508) at org.apache.xpath.objects.XNodeSet.str(XNodeSet.java:309) at org.apache.xalan.transformer.NodeSorter$NodeCompareElem.(NodeSorter.java:554) at org.apache.xalan.transformer.NodeSorter.sort(NodeSorter.java:128) at org.apache.xalan.templates.ElemForEach.sortNodes(ElemForEach.java:329) at org.apache.xalan.templates.ElemForEach.transformSelectedNodes (ElemForEach.java:367) at org.apache.xalan.templates.ElemForEach.execute (ElemForEach.java:284) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates (TransformerImpl.java:2318) at org.apache.xalan.templates.ElemTemplate.execute (ElemTemplate.java:431) at org.apache.xalan.templates.ElemCallTemplate.execute (ElemCallTemplate.java:281) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates (TransformerImpl.java:2318) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode (TransformerImpl.java:2185) at org.apache.xalan.transformer.TransformerImpl.transformNode (TransformerImpl.java:1263) at org.apache.xalan.transformer.TransformerImpl.transform (TransformerImpl.java:671) at org.apache.xalan.transformer.TransformerImpl.transform (TransformerImpl.java:1179) at org.apache.xalan.transformer.TransformerImpl.transform (TransformerImpl.java:1157)
