Re: [xsl] Count a substring of an attribute in childnodes

Subject: Re: [xsl] Count a substring of an attribute in childnodes
From: David Carlisle <davidc@xxxxxxxxx>
Date: Wed, 9 Mar 2005 10:58:47 GMT
> But this one gives me <Output>NaN</Output>

does it? what system?



 <xsl:variable name="total-colwidth" 
select="'count(number(colspec[contains(@colwidth,'*')]/substring-before(@colwidth,'*')))'"/>

That selects the string
'count(number(colspec[contains(@colwidth,'*')]/substring-before(@colwidth,'*')))'

which you output using <xsl:value-of select="$total-colwidth"/>
so you should get

<Output>count(number(colspec[contains(@colwidth,'*')]/substring-before(@colwidth,'*')))</Output>

Unless something is seriously wrong with your system.


If you took away the string quotes so it was an XPath expression you
woul dget an error as count() counts items in a node set (it doesn't
calculate totals which is what you indicated you wanted to do)
but number() returns a number not a node set.

In Xpath2 draft you could do

<xsl:value-of select="sum(colspec/@colwidth/number(translate(.,'*','')))"

In XSLT11 you have to use a recursive template to accumulate the sum by
hand adding a new value on each iteration, you could use one of
Dimitre's FXSL procedures for example, or just code it directly.


David

________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

Current Thread