Subject: Re: xsl:for-each within an element?
From: David Carlisle <davidc@xxxxxxxxx>
Date: Fri, 27 Aug 1999 17:34:22 +0100 (BST)
|
> But this way I have to write each iteration explicitly, to cover as many
> as 20 'thing' occurrences when there are usually far less than that.
> This seems like a job for xsl:for-each, but each time I try, XT reminds
> me that element substrings aren't node-sets. All ideas appreciated, and
> apologies if I'm missing something obvious.
Loops are evil. Recursion is your friend.
David
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/XSL/Transform/1.0"
result-ns="">
<xsl:template match="field">
<xsl:call-template name="split">
<xsl:with-param name="text" select="."/>
</xsl:call-template>
</xsl:template>
<xsl:template name="split">
<xsl:param name="text" select="''"/>
<xsl:choose>
<xsl:when test="contains($text,';')">
<field>
<xsl:value-of select="substring-before($text,';')"/>
</field>
<xsl:call-template name="split">
<xsl:with-param name="text" select="substring-after($text,';')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<field>
<xsl:value-of select="$text"/>
</field>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|