This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: adding string-length values
- To: xsl-list at mulberrytech dot com
- Subject: Re: adding string-length values
- From: Zeljko Rajic <Zeljko dot Rajic at brokat dot com>
- Date: Tue, 21 Nov 2000 14:13:24 +0100
- Organization: Brokat AG
- References: <6B2A5AEA929FD411AE41009027CA88E31D430F@WWMESSD048>
- Reply-To: xsl-list at mulberrytech dot com
Kay Michael wrote:
>
> > <xsl:variable name="mycounter" select="0"/>
> >
> > <xsl:for-each select="//Para">
> > <xsl:variable name="mycounter" select="$mycounter +
> > string-length(.)"/>
> > <p>Number Chars: <xsl:value-of select="$mycounter"/></p>
> > </xsl:for-each>
>
> You've got to stop thinking in terms of updating variables as you go along,
> and thing in terms of a function.
Seems to be a little bit like Lisp or Prolog...
> With Saxon it's easy,
> saxon:sum(preceding::text(), saxon:expression('string-length(.)');
>
> With standard XSLT it's a bit more work: you need a recursive template that
> calculates the total string-length of a node-set by finding the
> strgin-length of the first node, and adding the total of the remaining
> nodes, which you get by calling yourself recursively.
Well, I'm using Xalan ! But if I understand it right, it should look similar to
this:
<xsl:temaple match="Para">
<xsl:variable name="mycounter" select="$mycounter_from_parent_node +
string-length(.)">
<xsl:if test="mycounter < 1000">
Char count: <xsl:value-of select="$mycounter"/>
<xsl:apply-templates select="Para"/>
<xsl:if/>
<xsl:template/>
Unfortunately I do not know how to obtain the value of $mycounter from the
parent-node (here: $mycounter_from_parent_node)!! There are too many
possibilities (e.g. '../$mycounter') to try them all! :(
Maybe you (or somebody else) could give or point me to a similar example ??
That would be great !!
- Zeljko
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list