This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RE: Computing string-value of nodesets


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@icl.com>
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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]