key() on xsl:key with literal @use returns too many nodes ---------------------------------------------------------
Key: XALANJ-2399 URL: https://issues.apache.org/jira/browse/XALANJ-2399 Project: XalanJ2 Issue Type: Bug Affects Versions: 2.7 Environment: Windows XP Pro x64; JRE 1.5.0_12 Reporter: Deborah Pickett Using a literal* string value for @use in an xsl:key causes key() to return too many nodes in the node-set for that key. I define a key in a couple of places (same stylesheet or different, seems to behave the same): <xsl:key name="name" match="foo" use="'string'"/> <xsl:key name="name" match="bar" use="..."/> <xsl:key name="name" match="baz" use="..."/> It does not seem to matter what the "..." are. Calls to key('name', 'string') should give a node-set only of <foo> elements, but I also get <bar> and <baz> elements, essentially every node that has a presence in the "name" key. Calls to key('name', 'never-seen-before-string') return an empty node-set. * Or, it seems, an expression that can be optimized into a literal. This makes the bug go away: <xsl:key name="group" match="[EMAIL PROTECTED] = 'concept']" use="concat(substring(@type, 1, 1), 'oncept')"/> but this still has the bug: <xsl:key name="group" match="[EMAIL PROTECTED] = 'concept']" use="concat(substring(@type, 1, 0), 'concept')"/> Small test case follows. Source document: <root> <link href="somewhere.xml" type="concept"><linktext>C1</linktext></link> <link href="somewhere.xml" type="concept"><linktext>C1</linktext></link> <link href="somewhere.xml" type="concept" importance="required"><linktext>C1 Prereq</linktext></link> <link href="somewhere.xml" type="reference" role="cousin"><linktext>R2</linktext></link> <link href="somewhere.xml" type="reference" role="sibling"><linktext>R1</linktext></link> <link href="somewhere.xml" type="reference" role="sibling"><linktext>R1</linktext></link> <link href="somewhere.xml" type="task"><linktext>T1</linktext></link> <link href="somewhere.xml" type="topic"><linktext>X1</linktext></link> <link href="somewhere.xml"><linktext>X0</linktext></link> <link href="somewhere.xml" type="unknown-thing" role="sibling"><linktext>X2</linktext></link> <link href="somewhere.xml" type="concept"><linktext>C1</linktext></link> </root> Stylesheet: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:key name="group" match="[EMAIL PROTECTED] = 'concept']" use="'concept'"/> <xsl:key name="group" match="[EMAIL PROTECTED] = 'task']" use="'task'"/> <xsl:key name="group" match="[EMAIL PROTECTED] = 'reference']" use="'reference'"/> <xsl:template match="/"> <xsl:apply-templates select="key('group', 'concept')"/> </xsl:template> </xsl:stylesheet> Expected output: C1C1C1 PrereqC1 Output with Xalan-J 2.7.0: C1C1C1 PrereqR2R1R1T1C1 $ java -cp c:/Program\ Files\ \(x86\)/Oxygen\ XML\ Editor\ 8.2/lib/xalan.jar org.apache.xalan.xslt.EnvironmentCheck #---- BEGIN writeEnvironmentReport($Revision: 1.29 $): Useful stuff found: ---- version.DOM.draftlevel=2.0fd java.class.path=c:/Program Files (x86)/Oxygen XML Editor 8.2/lib/xalan.jar version.JAXP=1.1 or higher java.ext.dirs=C:\Program Files (x86)\Java\jre1.5.0_12\lib\ext version.xerces2=Xerces-J 2.9.0 version.xerces1=not-present version.xalan2_2=Xalan Java 2.7.0 version.xalan1=not-present version.ant=not-present java.version=1.5.0_12 version.DOM=2.0 version.crimson=not-present sun.boot.class.path=C:\Program Files (x86)\Java\jre1.5.0_12\lib\rt.jar;C:\Program Files (x86)\Java\jre1.5.0_12\lib\i18n.jar;C:\Progr am Files (x86)\Java\jre1.5.0_12\lib\sunrsasign.jar;C:\Program Files (x86)\Java\jre1.5.0_12\lib\jsse.jar;C:\Program Files (x86)\Java\ jre1.5.0_12\lib\jce.jar;C:\Program Files (x86)\Java\jre1.5.0_12\lib\charsets.jar;C:\Program Files (x86)\Java\jre1.5.0_12\classes #---- BEGIN Listing XML-related jars in: foundclasses.java.class.path ---- xalan.jar-path=c:\Program Files (x86)\Oxygen XML Editor 8.2\lib\xalan.jar #----- END Listing XML-related jars in: foundclasses.java.class.path ----- version.SAX=2.0 version.xalan2x=Xalan Java 2.7.0 #----- END writeEnvironmentReport: Useful properties found: ----- # YAHOO! Your environment seems to be OK. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]