[oXygen-user] Author : Number of characters

George Cristian Bina
Mon May 10 10:06:37 CDT 2010


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:]
> Envoyé : lundi 10 mai 2010 11:18
> À : 
> 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
>



More information about the oXygen-user mailing list