RE: [xsl] Sorting XML Elements alphabetically

Subject: RE: [xsl] Sorting XML Elements alphabetically
From: "Peter Loh Yoon Chao" <yoonchao@xxxxxxxxxxxxxx>
Date: Sat, 14 Feb 2004 19:01:17 +0800
Hi Michael,

> > Thanks for your suggestions.  Michael, the following
> > variation of your suggestion came close to giving me the
> > desired result.
> >
> > <xsl:template match="@* | node()">
> >  <xsl:copy>
> >  <xsl:apply-templates select="@* | node()">
> >    <xsl:sort select="name()"/>
> >  </xsl:apply-templates>
> >  </xsl:copy>
> > </xsl:template>
> >
> > However, there are 2 problems:
> > 1.)  It breaks when there are attributes in the source document, e.g.
>
> Why did you change my code, which didn't have this problem?

In your code, <xsl:copy> was not closed by a matching </xsl:copy>.  I
guessed that you had wanted an empty element.  With that I got the following
output, which is not well-formed XML:

<school/><student/><age/><gender/><name/><teacher/><name/><subject/>

I took another stab and placed </xsl:copy> after </xsl:apply-templates> and
got the following output, which was sorted but did not contain any data:

<school><student><age/><gender/><name/></student><teacher><name/><subject/><
/teacher></school>

Since you mentioned identity template, I searched around the web for
examples and added the sort at what I thought to be an appropriate location.
I only tried putting attributes after getting some decent result from this.

> > 2.)  The formatting in the output is all out of whack, losing
> > its original identation and has extra blank lines, like the following:
> >
>
> Use xsl:strip-space.

Do I use this as an empty element?  I tried this and also enclosing
appropriate sections of my code with this, but the stylesheet processor
complained each time that:

javax.xml.transform.TransformerException: xsl:strip-space is not allowed in
this
 position in the stylesheet!

When used appropriately, would this give me the original proper identation
(which is the goal)?  Would appreciate your input.  Thanks.

Peter


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


Current Thread