RE: Computing string-value of nodesets

Subject: RE: Computing string-value of nodesets
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Sat, 11 Nov 2000 02:40:19 -0800 (PST)
Here's a non-recursive solution (because some XSLT processors will
crash when performing a highly recursive transformation):

<xsl:template name="averageLength">
  <xsl:param name="pValue"/>
		
    <xsl:variable name="vContainer">
      <xsl:for-each select="$pValue">
        <xsl:element name="body">
          <xsl:copy-of select="."/>
        </xsl:element>
      </xsl:for-each>
    </xsl:variable>
	
    <xsl:variable name="theParent"
select="msxsl:node-set($vContainer)"/>
		
    <xsl:choose>
      <xsl:when test="count($theParent//text()) > 0">
        <xsl:value-of  select="string-length($theParent) div
count($theParent//text())"/>
      </xsl:when>
      <xsl:otherwise>
        0
      </xsl:otherwise>
    </xsl:choose>
</xsl:template>



Cheers,
Dimitre Novatchev.
P.S. Oviously, the result will vary depending on whether and how
<xsl:strip-space> is used. 

---------------Original Message-----------------------------
From: Kay Michael <Michael.Kay@xxxxxxx>
Subject: RE: Computing string-value of nodesets

> I'd like to know the average string-length of a collection of 
> nodes (in a nodeset).

You can program this by a recurive template, or you can use the Saxon
extension function:

saxon:sum( $nodes, saxon:expression('string-length(.)'))

Mike Kay 



__________________________________________________
Do You Yahoo!?
Thousands of Stores.  Millions of Products.  All in one Place.
http://shopping.yahoo.com/


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread