Mega Code Archive

 
Categories / XML Tutorial / XSLT StyleSheet
 

Compare id

File: Data.xml <?xml version="1.0" encoding="US-ASCII"?> <?xml-stylesheet href="Transform.xslt" type="text/xsl"?> <uscities>  <western>   <uscity state="Nevada">Las Vegas</uscity>   <uscity state="Arizona">Phoenix</uscity>   <uscity state="California">San Francisco</uscity>   <uscity state="Nevada">Silver City</uscity>   <uscity state="Washington">Seattle</uscity>   <uscity state="Montana">Missoula</uscity>  </western> </uscities> File: Transform.xslt <?xml version="1.0" encoding="US-ASCII"?> <xsl:stylesheet version="1.0"   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">   <xsl:output method="html" />   <xsl:key name="list" match="uscity" use="@state" />   <xsl:template match="/">     <html>       <head>         <title>Western State Cities</title>       </head>       <body>         <xsl:for-each           select="/uscities/western/uscity[generate-id(.)=generate-id(key('list', @state))]/@state">           <xsl:sort />           <h2>             <xsl:value-of select="." />           </h2>           <ul>             <xsl:for-each select="key('list', .)">               <xsl:sort />               <li>                 <xsl:value-of select="." />               </li>             </xsl:for-each>           </ul>         </xsl:for-each>       </body>     </html>   </xsl:template> </xsl:stylesheet> Output: <html>    <head>       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">       <title>Western State Cities</title>    </head><body>       <h2>Arizona</h2>       <ul>          <li>Phoenix</li>       </ul>       <h2>California</h2>       <ul>          <li>San Francisco</li>       </ul>       <h2>Montana</h2>       <ul>          <li>Missoula</li>       </ul>       <h2>Nevada</h2>       <ul>          <li>Las Vegas</li>          <li>Silver City</li>       </ul>       <h2>Washington</h2>       <ul>          <li>Seattle</li>       </ul>    </body> </html>