[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