[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Question about the key() function
Because there is a bug in your XSLT processor. The correct output is: Saxon 8.4 from Saxonica ... <?xml version="1.0" encoding="UTF-8"?> <keyNode> <Name>1, Frisby, 48392</Name> <Name>10, Backstayge, 02718</Name> <Name>2, Attired, 00218</Name> <Name>20, Backstayge, 02718</Name> <Name>300, McGoon, 27318</Name> <Name>31, Reckonwith, 02930</Name> </keyNode> The key() function is specified to remove duplicates, it appears your implementation is not doing so. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: aspsa [mailto:aspsa@xxxxxxxxxxxxx] > Sent: 13 May 2005 22:14 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Question about the key() function > > Hi, folks. > > Given this document... > > <?xml version="1.0" encoding="UTF-8"?> > <addressbook> > <address> > <name> > <title>Mr.</title> > <first-name>Chester Hasbrouck</first-name> > <last-name>Frisby</last-name> > </name> > <street>1234 Main Street</street> > <city>Sheboygan</city> > <state>WI</state> > <zip>48392</zip> > <id>1</id> > </address> > <address> > <name> > <first-name>Mary</first-name> > <last-name>Backstayge</last-name> > </name> > <street>283 First Avenue</street> > <city>Skunk Haven</city> > <state>MA</state> > <zip>02718</zip> > <id>10</id> > </address> > <address> > <name> > <title>Ms.</title> > <first-name>Natalie</first-name> > <last-name>Attired</last-name> > </name> > <street>707 Breitling Way</street> > <city>Winter Harbor</city> > <state>ME</state> > <zip>00218</zip> > <id>2</id> > </address> > <address> > <name> > <first-name>Harry</first-name> > <last-name>Backstayge</last-name> > </name> > <street>283 First Avenue</street> > <city>Skunk Haven</city> > <state>MA</state> > <zip>02718</zip> > <id>20</id> > </address> > <address> > <name> > <first-name>Mary</first-name> > <last-name>McGoon</last-name> > </name> > <street>103 Bryant Street</street> > <city>Boylston</city> > <state>VA</state> > <zip>27318</zip> > <id>300</id> > </address> > <address> > <name> > <title>Ms.</title> > <first-name>Amanda</first-name> > <last-name>Reckonwith</last-name> > </name> > <street>930-A Chestnut Street</street> > <city>Lynn</city> > <state>MA</state> > <zip>02930</zip> > <id>31</id> > </address> > </addressbook> > > ...and this XSLT document... > > <?xml version="1.0" encoding="UTF-8"?> > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > <xsl:output method="xml" version="1.0" encoding="UTF-8" > indent="yes"/> > <xsl:key name="x" match="address" use="zip"/> > > <xsl:template match="/"> > <keyNode> > <xsl:apply-templates select="key('x',addressbook/address/zip)" /> > </keyNode> > </xsl:template> > > <xsl:template match="address"> > <Name> > <xsl:value-of select="id"/> > <xsl:text>, </xsl:text> > <xsl:value-of select="name/last-name"/> > <xsl:text>, </xsl:text> > <xsl:value-of select="zip"/> > </Name> > </xsl:template> > </xsl:stylesheet> > > ...why does the output repeat nodes containing id values 10 and 20? > > <?xml version="1.0" encoding="UTF-8"?> > <keyNode> > <Name>1, Frisby, 48392</Name> > <Name>10, Backstayge, 02718</Name> > <Name>10, Backstayge, 02718</Name> > <Name>2, Attired, 00218</Name> > <Name>20, Backstayge, 02718</Name> > <Name>20, Backstayge, 02718</Name> > <Name>300, McGoon, 27318</Name> > <Name>31, Reckonwith, 02930</Name> > </keyNode> > > > Respectfully, > > ASP
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|