[xsl] Sorting problem...

Subject: [xsl] Sorting problem...
From: "David M. Goudreau" <david_goudreau@xxxxxxxxxxxxxxxxx>
Date: Tue, 13 Feb 2001 18:29:03 -0800
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


Current Thread