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
|