RE: String-length

Subject: RE: String-length
From: Thomas Karlsen <ThomasK@xxxxxxxxxxxxxxx>
Date: Tue, 14 Dec 1999 08:47:26 +0100
Thanks Phil

For information I'm using LotusXSL and XML4J.
Actually I did not need any namespace.
This worked for me:

<xsl:template match="P">
  <xsl:variable name="lengths">
    <xsl:apply-templates select="preceding-sibling::P|." mode="length"/>
  </xsl:variable>
 <b>This para contains: <xsl:value-of select="string-length()"/>
 Total from para number 1 to <xsl:value-of select="position()"/>:
<xsl:value-of select="sum($lengths)"/></b><br/>
<p><xsl:apply-templates /></p>
</xsl:template>

<xsl:template match="P" mode="length">
  <xsl:value-of select="string-length()"/>
</xsl:template>

Thanks for quick response.

__ Thomas Karlsen | System Developer
__ Cell Network ASA | New Media Science | Sorkedalsveien 10A, N-0304 Oslo,
Norway
    Tel: +47 23196600 | Fax: +47 23196601 | Mob: +47 91514293


> -----Original Message-----
> From: Phil Lanch [mailto:phil@xxxxxxxxxxxxxxx]
> Sent: 13. desember 1999 20:09
> To: xsl-list@xxxxxxxxxxxxxxxx
> Subject: Re: String-length
> 
> 
> Alternatively, use a named template to collect (nodes containing) the
> numbers you want to add up in a variable, and apply the sum() function
> to them. The tricky bit is that the variable contains a result-tree
> fragment, not a node list, and the sum() function must be given a
> node-list, so you need to convert the result-tree fragment to a
> node-list using a node-set() extension function. This is available in
> Saxon or XT (and it looks such a good idea that surely all good XSL
> processors will have it eventually).
> 
> This kind of use of apply-templates or call-template inside a variable
> is often an alternative to recursive named templates.
> 
> So in Saxon that would be:
> 
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
>   xmlns:sxf="/com.icl.saxon.functions.Extensions" version="1.0">
> 
> <xsl:template match="para">
>   <xsl:variable name="lengths">
>     <xsl:apply-templates select="preceding-sibling::para|."
> mode="length"/>
>   </xsl:variable>
>  This para contains: <xsl:value-of select="string-length()"/>
>  Total from para number 1 to <xsl:value-of select="position()"/>:
> <xsl:value-of select="sum(sxf:node-set($lengths)/length)"/>
> </xsl:template>
> 
> <xsl:template match="para" mode="length">
>   <length><xsl:value-of select="string-length()"/></length>
> </xsl:template>
> 
> and in XT you need to declare the xmlns:xt="http://www.jclark.com/xt";
> namespace and change sxf:node-set to xt:node-set.
> 
> Kay Michael wrote:
> > 
> > You need another of those recursive named templates that 
> does, in effect
> > strlength($nodeset) = string-length($nodeset[1]) +
> > strlength($nodeset[position()>1])
> > 
> > Of course writing this in XSL is about 15 lines of code. 
> There are many
> > examples of this pattern in the archives of this list.
> > 
> > Mike Kay
> > 
> > > -----Original Message-----
> > > From: Thomas Karlsen [mailto:ThomasK@xxxxxxxxxxxxxxx]
> > > Sent: 13 December 1999 11:22
> > > To: 'XSL-List@xxxxxxxxxxxxxxxx'
> > > Subject: String-length
> > >
> > >
> > > Im trying to hold track over how many char. i'm sending 
> to the output.
> > >
> > > xml:
> > > <section>
> > >  <para>this is a test</para>
> > >  <para>this is a test</para>
> > >  <para>this is a test</para>
> > >  <para>this is a test</para>
> > > </section>
> > >
> > > xsl:
> > > <template match="section">
> > >  <apply-templates />
> > > </template>
> > >
> > > <template match="para">
> > >  This para contains: <xsl:value-of select="string-length()"/>
> > >  Total from para number 1 to <xsl:value-of select="position()"/>:
> > > <xsl:value-of select="string-length(preceding-sibling::para)"/>
> > >  <apply-templates />
> > > </template>
> > >
> > > My question is how can I add the string-values for the 
> para's that is
> > > already traversed?
> > > The preceding-sibling function only gives me the value of the
> > > first para in
> > > the node-set.
> 
> -- 
> 
> cheers
> 
> phil
> 
> "that monotonous state of the soul halfway between fulfillment
> and futility which comes with life in the country" --- Musil
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 


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


Current Thread