Mega Code Archive

 
Categories / XML Tutorial / XSLT StyleSheet
 

Sort by attribute

File: Data.xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="Transform.xslt" type="text/xsl"?> <member>  <state joined="1995">Austria</state>  <state joined="1950">Belgium</state>  <state joined="1973">Denmark</state>  <state joined="1986">Portugal</state>  <state joined="1986">Spain</state>  <state joined="1995">Sweden</state>  <state joined="1973">United Kingdom</state> </member> File: Transform.xslt <?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" indent="yes" />   <xsl:output doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" />   <xsl:output     doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" />   <xsl:template match="member">     <html xmlns="http://www.w3.org/1999/xhtml">       <head>         <title>EU Member States</title>         <style type="text/css">           h3 {font-size: 16pt} body {font-size: 13pt}         </style>       </head>       <body>         <h3>EU Member States</h3>         <paragraph>           There are           <xsl:text> </xsl:text>           <xsl:value-of select="count(state)" />           member states, listed starting from the most recent           year:         </paragraph>         <ul>           <xsl:apply-templates select="state">             <xsl:sort select="@joined" data-type="number"               order="descending" />           </xsl:apply-templates>         </ul>       </body>     </html>   </xsl:template>   <xsl:template match="state">     <xsl:element name="li"       namespace="http://www.w3.org/1999/xhtml">       <xsl:apply-templates />       <xsl:text> (</xsl:text>       <xsl:value-of select="@joined" />       <xsl:text>)</xsl:text>     </xsl:element>   </xsl:template> </xsl:stylesheet> Output: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html   PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">    <head>       <title>EU Member States</title>       <style type="text/css">           h3 {font-size: 16pt} body {font-size: 13pt}         </style>    </head>    <body>       <h3>EU Member States</h3>       <paragraph>           There are            7           member states, listed starting from the most recent           year:         </paragraph>       <ul>          <li>Austria (1995)</li>          <li>Sweden (1995)</li>          <li>Portugal (1986)</li>          <li>Spain (1986)</li>          <li>Denmark (1973)</li>          <li>United Kingdom (1973)</li>          <li>Belgium (1950)</li>       </ul>    </body> </html>