xsl-list
[Top] [All Lists]

Re: count in several document

2003-06-23 11:43:41
i use a template for counting the "ht" node,but the problem is when
i get the return of template to a variable,i have NaN?
this what i use:
...........................
<xsl:variable name="nb_ht">
<xsl:call-template name="test1">
<xsl:with-param name="total" select="0"/>
<xsl:with-param name="pchapmod" select="//chapmod[4]"/>
</xsl:call-template>
</xsl:variable>
..................................



<xsl:template name="test1">
<xsl:param name="total"/>
<xsl:param name="pchapmod" />
<xsl:choose>
<xsl:when test="boolean($pchapmod) and name($pchapmod)='chapmod'">
<xsl:variable name="ht_nb"
select="count(document(concat(string($pchapmod/attribute::docref),'.xml'))//ht)"/>

<xsl:value-of select="$ht_nb"/>
<xsl:text> </xsl:text>
<xsl:call-template name="test1">
<xsl:with-param name="total" select="$total + $ht_nb"/>
<xsl:with-param name="pchapmod"
select="$pchapmod/preceding::chapmod[position() = 1]"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$total"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>



David Carlisle a écrit :

when you use a node set, such as //chapmod/attribute::docref in the
argument of a function expecting a string, or explictly coerce it to a
string using string() then XPath1 _always_ takes the string value of the
first node in the set in document order, and discards all the rest.

If your source file had the full filename

<chapmod docref="document1.xml" lang="FR"/>
...

then you would be in much better shape as you could go
select="count(document(//chapmod/@docref)//ht)"

Otherwise your simplest solution is probably to make one pass to make a
document of that form just using an xml-xml transformation to add .xml
to the filenames, then make a second pass that does the above.

Otherwise you'll have to do a recursive template that does the addition
by hand. That isn't hard but changing the input document is easier, if
that is an option.

David

________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. 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
________________________________________________________________________

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


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



<Prev in Thread] Current Thread [Next in Thread>