xsl-list
[Top] [All Lists]

Using xsl:sort to sort child elements

2003-11-04 10:29:36
I have examined the numerous examples of the xsl:sort instruction but 
haven't seen one that describes the technique to use for what I need to 
do.  

I need to sort child elements of the document that I am transforming.
Here is a very very simple example of what I'm trying to accomplish.  
Given this document: 

<EntryData>
        <Applicant>
                <FirstName>Ralph</FirstName>
                <LastName>Smith</LastName>
                <Address>
                        <Type>Business</Type>
                        <City>Chicago</City>
                        <ZipCode>60011</ZipCode>
                </Address>
                <Address>
                        <Type>Regional</Type>
                        <City>Springfield</City>
                        <ZipCode>62103</ZipCode>
                </Address>
                <Address>
                        <Type>Corporate</Type>
                        <City>New York</City>
                        <ZipCode>10011</ZipCode>
                </Address>
        </Applicant>
</EntryData>

I would like to transform this document sorting the "Address" elements 
within the document by zip code.

Here's an example of a style sheet that I've tried but the result tree 
remains in it's original state... 

<?xml version="1.0"?>
<!--XML Declaration -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0"
xmlns:xsd="http://www.w3.org/2001/XMLSchema";> 
<xsl:output method="xml" indent="yes" standalone="yes"
omit-xml-declaration="no" encoding="UTF-8"/> 

<xsl:template match="EntryData/Applicant/Address">
  <xsl:copy>
    <xsl:apply-templates> 
     <xsl:sort select="ZipCode"/>
   </xsl:apply-templates> 
  </xsl:copy>
</xsl:template>

<xsl:template match="*|@*|text()">
 <xsl:copy>
   <xsl:apply-templates select="*|@*|text()">
   </xsl:apply-templates>
  </xsl:copy>
</xsl:template>

</xsl:stylesheet>

Please advise.  

Thanks,
Jim McDowall


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>