[oXygen-user] Author : Number of characters
Rogie Isabelle
Wed May 12 07:40:06 CDT 2010
Hi,
Thanks for your help!
I found another solution; I added a predicat in the select node with specific ancestor axis.
<xsl:template match="/">
<xsl:text>The document contains </xsl:text>
<xsl:call-template name="add">
<xsl:with-param name="nodes" select="//text()[ancestor::p|ancestor::HeadLine]"/>
</xsl:call-template>
<xsl:text> characters.</xsl:text>
</xsl:template>
Regards,
Isabelle
-----Message d'origine-----
De : George Cristian Bina [mailto:]
Envoyé : mardi 11 mai 2010 07:57
À : Rogie Isabelle
Cc : Radu Coravu;
Objet : Re: [oXygen-user] Author : Number of characters
Hi Isabelle,
You can just use the following XPath expression:
sum(//p/string-length(normalize-space()))
The stylesheet works ok for me, it gives as output:
"The document contains 16 characters."
Best Regards,
George
--
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com
On 5/10/10 6:18 PM, I. Rogie wrote:
> An xml example :
>
> <?xml version="1.0" encoding="UTF-8"?>
> <NewsMLwk>
> <NewsItemId>WK20100201-01</NewsItemId>
> <OfInterestTo FormalName="WKF"/>
> <HeadLine/>
> <DateLine/>
> <body.content>
> <p>Par<aut/></p>
> <p>PARIS, 2010 -</p>
> </body.content>
> </NewsMLwk>
>
> With this xsl :
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:template match="/">
> <xsl:text>The document contains</xsl:text>
> <xsl:call-template name="add">
>
> <xsl:with-param name="nodes" select="//p/text()"/>
> </xsl:call-template>
> <xsl:text> characters.</xsl:text>
> </xsl:template>
>
> <xsl:template name="add">
> <xsl:param name="sum" select="0"/>
> <xsl:param name="nodes" select="/.."/>
> <xsl:choose>
> <xsl:when test="not($nodes)">
> <xsl:value-of select="$sum"/></xsl:when>
> <xsl:otherwise>
> <xsl:call-template name="add">
> <xsl:with-param name="sum" select="$sum +
> string-length(normalize-space($nodes[1]))"/>
> <xsl:with-param name="nodes"
> select="$nodes[position() != 1]"/>
> </xsl:call-template>
> </xsl:otherwise>
> </xsl:choose>
> </xsl:template>
> </xsl:stylesheet>
>
>
>
> Le 10/05/10 17:06, « George Cristian Bina »<> a écrit :
>
>> Dear Isabelle,
>>
>> You can use also the XPath evaluation (see the XPath edit box in the
>> toolbar). To get the normalized text from the document you can use
>>
>> normalize-space(/*)
>>
>> and for the number of characters in this text use
>>
>> string-length(normalize-space(/*))
>>
>> For understanding the problem you have with the stylesheet please post
>> also a sample XML file together with the stylesheet that you use.
>>
>> Best Regards,
>> George
>
More information about the oXygen-user
mailing list