|
Subject: Re: [xsl] count number of <P>s From: "Joerg Heinicke" <joerg.heinicke@xxxxxx> Date: Fri, 5 Apr 2002 08:41:42 +0200 |
> I'm trying to count the number of <P> tags withing a <![CDATA[ section.
>
> Doing this:
> <xsl:value-of select="string-length(.) - string-length(translate(.,
> '<P>', ''))"/>
>
> almost gets me there -- but counts each instance of <, P, and >
> separately. Is there a way of searching for an *entire* string,
> rather than individual characters?
Hello Dan,
my approach is to use a recursive template:
<xsl:template match="element-with-cdata">
<xsl:call-template name="string-count">
<xsl:with-param name="string" select="."/>
<xsl:with-param name="string-to-count" select="'<P>'"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="string-count">
<xsl:param name="string"/>
<xsl:param name="string-to-count"/>
<xsl:param name="count" select="0"/>
<xsl:choose>
<xsl:when test="contains($string, $string-to-count)">
<xsl:call-template name="string-count">
<xsl:with-param name="string"
select="substring-after($string, $string-to-count)"/>
<xsl:with-param name="string-to-count"
select="$string-to-count"/>
<xsl:with-param name="count" select="$count + 1"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$count"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
(untested)
This template tests whether the string contains the string to count. When
this is true, the string is shortened til the first occurence of the
string-to-count, the counter is incremented and the template calls itself
again. If string-to-count is not more contained in string then the value of
the count will be returned.
But a question I would ask earlier: Do you really need CDATA? Why not using
"normal" XML? If it is poor HTML, you can use Tidy to transform it to
XHTML/XML. Then counting nodes would be much easier than string
manipulation.
Regards,
Joerg
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] count number of <P>s, Dan Cederholm | Thread | [xsl] Java Extension returning <>, Venkateshwar Bommine |
| RE: [xsl] xsl:document not regonise, Jarno . Elovirta | Date | Re: [xsl] passing parameters from o, Joerg Heinicke |
| Month |