|
Subject: [xsl] Question about the key() function From: aspsa <aspsa@xxxxxxxxxxxxx> Date: Fri, 13 May 2005 17:13:56 -0400 |
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
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] A parameter current conte, Michael Kay | Thread | RE: [xsl] Question about the key() , Michael Kay |
| RE: [xsl] A parameter current conte, Michael Kay | Date | RE: [xsl] Using <xsl:for-each> and , David Gadd |
| Month |