Mega Code Archive

 
Categories / XML / XSLT StyleSheet
 

Sort by different level of node

File: Data.xml <winelist>   <wine grape="Chardonnay">     <winery>shop 1</winery>     <product>product 1</product>     <year>1998</year>     <prices>       <list>6.99</list>       <discounted>5.99</discounted>       <case>71.50</case>     </prices>   </wine>   <wine grape="Chardonnay">     <winery>shop 2</winery>     <product>product 2</product>     <year>1997</year>     <prices>       <list>10.99</list>       <discounted>9.50</discounted>       <case>114.00</case>     </prices>   </wine>   <wine grape="Cabernet">     <winery>shop 1</winery>     <product>product 1</product>     <year>1996</year>     <prices>       <list>13.99</list>       <discounted>11.99</discounted>       <case>143.50</case>     </prices>   </wine> </winelist> File: Transform.xslt <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"   version="1.0">   <xsl:template match="winelist">     <xsl:copy>       <xsl:apply-templates>         <xsl:sort data-type="number" select="prices/discounted" />       </xsl:apply-templates>     </xsl:copy>   </xsl:template>   <xsl:template match="*">     <xsl:copy>       <xsl:apply-templates />     </xsl:copy>   </xsl:template> </xsl:stylesheet> Output: <?xml version="1.0" encoding="UTF-8"?><winelist>          <wine>     <winery>shop 1</winery>     <product>product 1</product>     <year>1998</year>     <prices>       <list>6.99</list>       <discounted>5.99</discounted>       <case>71.50</case>     </prices>   </wine><wine>     <winery>shop 2</winery>     <product>product 2</product>     <year>1997</year>     <prices>       <list>10.99</list>       <discounted>9.50</discounted>       <case>114.00</case>     </prices>   </wine><wine>     <winery>shop 1</winery>     <product>product 1</product>     <year>1996</year>     <prices>       <list>13.99</list>       <discounted>11.99</discounted>       <case>143.50</case>     </prices>   </wine></winelist>