[Home]
[Edit this page]
[Recent Changes]
[Special Pages]
[Help]
How_To_XML_Sort_XML_By_Multiple_Elements_XSLT
Create an XML document and link it to a XSL stylesheet.
Create a XSL stylesheet.
Adding more <xsl:sort> will sort the output by the first and then by the second specified element. Identical elements are sorted in the order they appear in the XML document.
Output:
XML FAQ
[Edit this page] [Page history] [What links here] [Discuss this topic] [Printer Friendly]
How_To_XML_Sort_XML_By_Multiple_Elements_XSLT
How to sort XML data by multiple elements using XSLT?
The example explains how to sort XML data by multiple child elements (<title> and <publisher>) of the same parent element <book>. The XSL stylesheet will display the sorted elements in a HTML table.Create an XML document and link it to a XSL stylesheet.
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="books_sorted.xsl"?> <books> <book> <title ISBN="0321173481" author="Michael R. Sweet"> OpenGL Programming Guide Fourth Edition</title> <publisher>Addison-Wesley</publisher> <year>2004</year> </book> <book> <title ISBN="0849371643" author="Gerald Farin"> Curves and Surfaces for CAGD: A Practical Guide</title> <publisher>Academic Press</publisher> <year>2002</year> </book> <book> <title ISBN="1558606696" author="David Rogers"> An Introduction to NURBS: With Historical Perspective</title> <publisher>Academic Press</publisher> <year>2001</year> </book> <book> <title ISBN="1568810849" author="Gerald Farin"> NURBS: From Projective Geometry to Practical Use</title> <publisher>A K Peters</publisher> <year>1999</year> </book> </books>
Create a XSL stylesheet.
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8"/>
<xsl:template match="/">
<html>
<head><title>Books</title>
</head>
<body>
<table width="100%" border="1">
<THEAD>
<TR>
<TD width="50%"><B>Title</B></TD>
<TD width="50%"><B>Publisher</B></TD>
</TR>
</THEAD>
<TBODY>
<xsl:for-each select="books/book">
<xsl:sort select="title" />
<xsl:sort select="publisher" />
<TR>
<TD width="50%"><xsl:value-of select="title" /></TD>
<TD width="50%"><xsl:value-of select="publisher" /></TD>
</TR>
</xsl:for-each>
</TBODY>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>Adding more <xsl:sort> will sort the output by the first and then by the second specified element. Identical elements are sorted in the order they appear in the XML document.
<xsl:sort select="title" /> <xsl:sort select="publisher" />
Output:
Title An Introduction to NURBS: With Historical Perspective Curves and Surfaces for CAGD: A Practical Guide NURBS: From Projective Geometry to Practical Use OpenGL Programming Guide Fourth Edition
Publisher Academic Press Academic Press A K Peters Addison-Wesley
XML FAQ
[Edit this page] [Page history] [What links here] [Discuss this topic] [Printer Friendly]
