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)

Reply via email to