This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Sorting problem...
- To: "XSL-List" <xsl-list at lists dot mulberrytech dot com>
- Subject: [xsl] Sorting problem...
- From: "David M. Goudreau" <david_goudreau at crosscommerce dot com>
- Date: Tue, 13 Feb 2001 18:29:03 -0800
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hi list -
I'm trying to sort some concatenated strings in a dropdown box in my XSL.
(I'm also sure there's a more compact way to write my XSL, frankly). My XML
is:
<root sub_id="84">
<folder name="c" cdate="2/13/01" id="f_49">
<folder name="m" cdate="2/13/01" id="f_42" />
</folder>
<folder name="y" cdate="2/13/01" id="f_45" />
<folder name="d" cdate="2/13/01" id="f_43" />
<folder name="r" cdate="2/13/01" id="f_44" />
<folder name="d" cdate="2/13/01" id="f_49">
<folder name="t" cdate="2/13/01" id="f_42">
<folder name="z" cdate="2/13/01" id="f_42">
</folder>
</folder>
</root>
I want my output to look alphabetical like the following:
-c
--c:m
-d
--d:t
---d:t:z
-r
-y
My XSL looks like this:
<xsl:template match="root">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="folder">
<xsl:if test="count(ancestor::node())='2'">
<option>
<xsl:attribute name="value">
<xsl:value-of select="@id"/>
</xsl:attribute>
-<xsl:value-of select="@name"/>
</option>
</xsl:if>
<xsl:if test="count(ancestor::node())='3'">
<option>
<xsl:attribute name="value">
<xsl:value-of select="@id"/>
</xsl:attribute>
--<xsl:value-of select="../@name"/>:<xsl:value-of select="@name"/>
</option>
</xsl:if>
<xsl:if test="count(ancestor::node())='4'">
<option>
<xsl:attribute name="value">
<xsl:value-of select="@id"/>
</xsl:attribute>
---<xsl:value-of select="../../@name"/>:<xsl:value-of
select="../@name"/>:<xsl:value-of select="@name"/>
</option>
</xsl:if>
<xsl:apply-templates/>
</xsl:template>
The results are not currently sorted at all. Thanks much for your help!
-dmg
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list