xsl-list
[Top] [All Lists]

Re: Splitting attributes

2002-11-18 00:10:44
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



<Prev in Thread] Current Thread [Next in Thread>