
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 »<george@oxygenxml.com> 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