xsl-list
[Top] [All Lists]

RE: Sorting XML Elements alphabetically

2004-02-14 04:01:17
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



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