xsl-list
[Top] [All Lists]

RE: counting the number of tokens in a string?

2002-10-02 10:05:22
Worse than a newbie question - a question that was only asked 24 hours
ago...

Mike Kay's response:
"Your first job is to tokenize this. Some processors (and EXSLT) have an
xx:tokenize() extension function that makes this easy; the only other
way is to use a recursive template (which isn't very difficult). Let's
say you end up with a variable $colours containing a node-set in which
there are four elements whose string values are blue, red, etc,"

My response:
If you aren't using a processor which supports tokenize() then use the
recursive method:

---------------------

<xsl:variable name="t">
        <xsl:call-template name="getTotal">
                <xsl:with-param name="s"
select="normalize-space(ITEM/@cols)"/>
                <xsl:with-param name="x" select="'1'"/>
        </xsl:call-template>
</xsl:variable>

<xsl:template name="getTotal">
        <xsl:param name="s"/>
        <xsl:param name="x"/>
        <xsl:choose>
                <xsl:when test="contains($s, ',')">
                        <xsl:call-template name="getTotal">
                                <xsl:with-param name="s"
select="substring-after($s,''')"/>
                                <xsl:with-param name="x" select="$x +
1"/>
                        </xsl:call-template>
                </xsl:when>
                <xsl:otherwise><xsl:value-of
select="$x"/></xsl:otherwise>
        </xsl:choose>
</xsl:template>

---------------------

Then the total number of items in the cols attribute will be given by:

<xsl:value-of select="$t" />

Rgs,

Ben Robb


-----Original Message-----
From: john liao [mailto:jliao2k(_at_)yahoo(_dot_)com] 
Sent: 02 October 2002 17:36
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] counting the number of tokens in a string?


Hi,

another newbie question. Is there an easy way to count
the number of commas in a string? Like this:

<ITEM cols="col1,col2,col3,col4"/>

I would like to print 4 for the number of columns in
my ITEM. I searched on tokenize() but most of the
references are about the existence of it.

Thanks,

J.L.

=====


__________________________________________________
Do you Yahoo!?
New DSL Internet Access from SBC & Yahoo!
http://sbc.yahoo.com

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list