|
Subject: RE: [xsl] key match and x-path problems From: "Kevin Jones" <kjjones@xxxxxxxxxxxx> Date: Tue, 23 Apr 2002 14:34:21 +0100 |
> So how could I then count the correct number of unique statuses ?
>
> Ahmad
>
>
Here is a solution which I think does what you want, i.e. count the number
of times a CHARACTER_STATUS value is used in the DIRECT, LOCAL, GLOBAL,
ADMIN elements that are the first to contain any CHARACTER_ID.
The easy way is probably using a second key to map CHARACTER_STATUS values
to the parent element.
<xsl:key name='kByStatus' match="DIRECT | LOCAL | GLOBAL | ADMIN"
use="number(CHARACTER_STATUS)"/>
You can the use,
<xsl:for-each select="$vUniqueCharacters">
<xsl:variable name='sameStatus'
select="key('kByStatus',number(CHARACTER_STATUS))"/>
<xsl:variable name='intersect'
select='$vUniqueCharacters[count(.|$sameStatus)=count($sameStatus)]'/>
<xsl:if test=".=$intersect[1]">
<xsl:text>STATUS </xsl:text>
<xsl:value-of select='CHARACTER_STATUS'/>
<xsl:text>SUM </xsl:text>
<xsl:value-of select="count($intersect)"/>
<xsl:value-of select="$NL"/>
</xsl:if>
</xsl:for-each>
The loop iterates over the unique characters. To find if this is first with
a given CHARACTER_STATUS it computes the intersect of the unique characters
and all the ones which have the same CHARACTER_STATUS value. For there on
its fairly straight forward to determine if this is first one in that set
and how many others are in the set.
Kev.
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] key match and x-path prob, Ahmad J Reeves | Thread | RE: [xsl] key match and x-path prob, Ahmad J Reeves |
| [xsl] next sibling, Lea Allison | Date | Re: [xsl] doubt regarding position(, David B. Bitton |
| Month |