xsl-list
[Top] [All Lists]

RE: Sorting XML Elements alphabetically

2004-02-13 14:25:38
You want a variation of the identity template:

<xsl:template match="*">
 <xsl:copy>
 <xsl:copy-of select="@*"/>
 <xsl:apply-templates select="*">
   <xsl:sort select="name()"/>
 </xsl:apply-templates>
</xsl:template>

Not tested.

Michael Kay

-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com 
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of 
Peter Loh Yoon Chao
Sent: 13 February 2004 12:03
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Sorting XML Elements alphabetically


Hi,

I am a beginner to the world of XSL and related technologies. 
 I have an XML document with an arbitrarily deep tree 
structure where the elements are in random order, e.g.

<school>
  <teacher>
    <subject>maths</subject>
    <name>tom hart</name>
  </teacher>
  <student>
    <age>12</age>
    <name>dick jones</name>
    <gender>male</gender>
  </student>
</school>

I would like to produce XML output from this source where the 
elements are sorted alphabetically at each level, i.e.

<school>
    <student>
      <age>12</age>
      <gender>male</gender>
      <name>dick jones</name>
    </student>
  <teacher>
    <name>tom hart</name>
    <subject>maths</subject>
  </teacher>
</school>

Is there an XSL transformation that can help me achieve this? 
 I experimented with different ways of using <xsl:sort> but 
so far, I seem to have been only sorting data rather than the 
elements themselves.  Any help would be appreciated.  Thanks.

Peter


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



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



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