Mega Code Archive

 
Categories / XML / XSLT StyleSheet
 

Sort first then output to table

File: Data.xml <?xml version="1.0" ?> <customer-list>   <customer>     <name>       <first>A</first>       <last>B</last>     </name>     <order>order 1</order>     <order>order 2</order>   </customer>   <customer>     <name>       <first>C</first>       <last>D</last>     </name>     <order>order 3</order>     <order>order 4</order>   </customer> </customer-list> File: Transform.xslt <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">   <xsl:template match="/">     <HTML>       <HEAD><TITLE>Customers</TITLE></HEAD>       <BODY>         <TABLE BORDER="1">           <xsl:apply-templates select="customer-list/customer">                         <xsl:sort select="name/last"/>             <xsl:sort select="name/first"/>           </xsl:apply-templates>         </TABLE>       </BODY>     </HTML>   </xsl:template>   <xsl:template match="customer">     <TR>       <TH ALIGN="left">         <xsl:value-of select="name/last"/>         <xsl:text>, </xsl:text>         <xsl:value-of select="name/first"/>       </TH>     </TR>     <xsl:apply-templates select="order"/>   </xsl:template>   <xsl:template match="order">     <TR>       <TD>         <xsl:apply-templates/>       </TD>     </TR>   </xsl:template> </xsl:stylesheet> Output: <HTML>    <HEAD>       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">       <TITLE>Customers</TITLE>    </HEAD>    <BODY>       <TABLE BORDER="1">          <TR>             <TH ALIGN="left">D, C</TH>          </TR>          <TR>             <TD>order 3</TD>          </TR>          <TR>             <TD>order 4</TD>          </TR>          <TR>             <TH ALIGN="left">B, A</TH>          </TR>          <TR>             <TD>order 1</TD>          </TR>          <TR>             <TD>order 2</TD>          </TR>       </TABLE>    </BODY> </HTML>