Uploaded image for project: 'XalanJ2'
  1. XalanJ2
  2. XALANJ-2097

Problem with variable reference followed by self::node() if you use XSLTC

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.6
    • Fix Version/s: 2.7
    • Component/s: XSLTC
    • Security Level: No security risk; visible to anyone (Ordinary problems in Xalan projects. Anybody can view the issue.)
    • Labels:
      None
    • Xalan info:
      PatchAvailable
    • Fix priority:
      fp2

      Description

      There is a problem when you have an XPath that contains a variable reference followed by self::node() if you use XSLTC (the problem does not occure if you just use Xalan without XSLTC).
      If you have for example $var1/self::node(). The following XSLTC Step is generated :

      FilterParentPath(variable-ref(var1/node-set), step("self", -1))

      This step is translated to the following piece of code (I decompiled to byte code):

      DTMAxisIterator dtmaxisiterator1 = (new CachedNodeListIterator(new StepIterator(dom.getTypedAxisIterator(3, 14), dom.getTypedAxisIterator(3, 15)))).setStartNode;
      this;
      dom;
      new StepIterator(dtmaxisiterator1.cloneIterator(), new SingletonIterator);

      As you can see the 'self::node()' step is translated to 'new SingletonIterator'. This is not correct because new SingletonIterator will refer to the node of the _parent of the FilterParentPath step.
      After applying the patch I made, the following code is generated if the _parent of the Step (self::node()) isn't a 'ParentLocationPath' :

      new StepIterator(dtmaxisiterator1.cloneIterator(), dom.getAxisIterator(13));

      To run the sample just run

      org.apache.xalan.xslt.Process -in items.xml -xsl problem2.xsl -xsltc

        Attachments

        1. items.xml
          0.1 kB
          Nick Van den Bleeken
        2. problem2.xsl
          0.4 kB
          Nick Van den Bleeken
        3. Step.patch
          2 kB
          Nick Van den Bleeken

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              nvdbleek Nick Van den Bleeken
              Reviewer:
              Henry Zongaro
            • Votes:
              2 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: