[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