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

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

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 2.6
    • 2.7
    • XSLTC
    • Security Level: No security risk; visible to anyone (Ordinary problems in Xalan projects. Anybody can view the issue.)
    • None
    • PatchAvailable
    • 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. Step.patch
          2 kB
          Nick Van den Bleeken
        2. problem2.xsl
          0.4 kB
          Nick Van den Bleeken
        3. items.xml
          0.1 kB
          Nick Van den Bleeken

        Activity

          People

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

            Dates

              Created:
              Updated:
              Resolved: