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
-- 
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com

On 5/10/10 5:56 PM, Rogie Isabelle wrote:
> Hello,
>
> Thanks for this idea!
> I just add the function normalize-space to suppress space on this line:
> <xsl:with-param name='sum' select='$sum + 
> string-length(normalize-space($nodes[1]))'/>
>
> I wanted only the number of characters in element p. So I change the 
> selection:
>       <xsl:with-param name='nodes' select='//p/text()'/>
> But it doesn't work. The number of characters is 0
>
> Regards,
>
> Isabelle Rogie
>
> -----Message d'origine-----
> De : Radu Coravu [mailto:[email protected]]
> Envoyé : lundi 10 mai 2010 11:18
> À : [email protected]
> Objet : Re: [oXygen-user] Author : Number of characters
>
> Hi Isabelle,
>
> We have some plans to add actions in Oxygen for counting words and
> characters.
> In the meantime you can create an XSLT stylesheet with the following
> content:
>
> <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='//text()'/>
> </xsl:call-template>
> <xsl:text>  characters.
> </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($nodes[1])'/>
> <xsl:with-param name='nodes'
>                           select='$nodes[position() != 1]'/>
> </xsl:call-template>
> </xsl:otherwise>
> </xsl:choose>
> </xsl:template>
> </xsl:stylesheet>
>
> and apply it on the XML file.
> If you need to count words, there is an XSLT stylesheet available here:
> http://tech.groups.yahoo.com/group/dita-users/message/11854
>
> Regards,
> Radu
>
_______________________________________________
oXygen-user mailing list
[email protected]
http://www.oxygenxml.com/mailman/listinfo/oxygen-user

Reply via email to