[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Endre Magyari wrote:
You can make use substring-before($value, ' ') function recursively to get tokens. I'd better use standard templates either from exslt[1] or fxsl[2] libraries, but just to give you idea, here is a sample template:
<xsl:template match="Class">
<xsl:call-template name="tokenize">
<xsl:with-param name="str" select="normalize-space(@subtypes)"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="tokenize">
<xsl:param name="str"/>
<xsl:if test="string-length($str) > 0">
<token>
<xsl:choose>
<xsl:when test="contains($str, ' ')">
<xsl:value-of select="substring-before($str, ' ')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$str"/>
</xsl:otherwise>
</xsl:choose>
</token>
<xsl:call-template name="tokenize">
<xsl:with-param name="str" select="normalize-space(substring-after($str, ' '))"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Re: [xsl] Splitting attributes
Subject: Re: [xsl] Splitting attributes From: Oleg Tkachenko <olegt@xxxxxxxxxxxxx> Date: Mon, 18 Nov 2002 09:10:44 +0200 |
Endre Magyari wrote:
In my source XML I have elements with IDREFS attributes, like:
<Class subtypes="id1 id23 id56 id34">
My desire is to generate an element for each idref in part.(Split the attribute to idrefs)
Any idea how to do this? I haven't seen any splitting functions in the XPATH documentation. Mostly, I would like an <xsl:for-each>-like behaviour to iterate on the set of the strings resulted from splitting the attribute value.
You can make use substring-before($value, ' ') function recursively to get tokens. I'd better use standard templates either from exslt[1] or fxsl[2] libraries, but just to give you idea, here is a sample template:
<xsl:template match="Class">
<xsl:call-template name="tokenize">
<xsl:with-param name="str" select="normalize-space(@subtypes)"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="tokenize">
<xsl:param name="str"/>
<xsl:if test="string-length($str) > 0">
<token>
<xsl:choose>
<xsl:when test="contains($str, ' ')">
<xsl:value-of select="substring-before($str, ' ')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$str"/>
</xsl:otherwise>
</xsl:choose>
</token>
<xsl:call-template name="tokenize">
<xsl:with-param name="str" select="normalize-space(substring-after($str, ' '))"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
[1] http://www.exslt.org/str/functions/tokenize/index.html [2] http://www.topxml.com/xsl/articles/dice/#res3 -- Oleg Tkachenko eXperanto team Multiconn Technologies, Israel
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Splitting attributes, Endre Magyari | Thread | Re: [xsl] Splitting attributes, Wendell Piez |
[xsl] stability with variables, Jarkko . Moilanen | Date | RE: [xsl] stability with variables, Jarno . Elovirta |
Month |