Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6941869

XSL : Xalan transformer fails to process semicolumn symbol in a count() function correctly

    XMLWordPrintable

Details

    • b09
    • generic
    • generic
    • Verified

    Backports

      Description

        We have problems with XSL transformations using the so-called Muenchian Method(by Steve Muench) for grouping nodes of an XML document (see also < http://www.jenitennison.com/xslt/grouping/muenchian.html> ). The Xalan transformer contained in the JDK 5 & 6 does not compile or evaluate the following union (= "|" symbol) expression in a count() function correctly - it always evaluates to 1 instead of the real number of nodes in the union set:

         
                count(.|key('props', d/e)[1])

        The problem is observed from JDK 5 update 12 onwards, including 6th and 7th trains.

        More detailed explanation:
        Xalan 2.6 contained in the Sun JDK 1.5 u12 and newer has issues with evaluating grouping nodes according the Muenchian Method, where nodes are stored in a key data structure for the group key, and later a group start is checked by checking for the first node retrieved for a key.
        The nodes are compared using a set union, where the size of the set should be 1 when the nodes are identical, and different to 1 when the nodes are different.
        The issue with Xalan 2.6 as part of the JDK is, that it does not evaluate the expression "count(.|key('props', subexpr)[1])" correctly. It always returns "1". If the argument expression of count() is stored in a variable first, and the variable is used as argument for count(), then everything works fine.

        Attachments

          Issue Links

            Activity

              People

                mbankal Mala Bankal (Inactive)
                ikrylov Ivan Krylov
                Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved:
                  Imported:
                  Indexed: