This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: XPath for number of preceding nodes sharing an ancestor
- To: <xsl-list at lists dot mulberrytech dot com>
- Subject: RE: [xsl] XPath for number of preceding nodes sharing an ancestor
- From: "Michael Kay" <mhkay at iclway dot co dot uk>
- Date: Wed, 16 May 2001 00:41:25 +0100
- Reply-To: xsl-list at lists dot mulberrytech dot com
> I want to count the number of preceding nodes that share an
> ancestor node.
>
> My XSL includes:
>
> <xsl:template match="input">
> <xsl:variable name="input-count"
> select="count(preceding::input[ancestor::inputform =
> current()/ancestor::inputform]) + 1"/>
>
> This works but ...
It appears to work but it's wrong. You're comparing the string-value of the
ancestor nodes, not their identity. It's possible for two different nodes to
have the same string-value, which will throw your code.
You really need a set intersection here; if you don't want to use an
extension function there's the $x[count(.|$y)=count($y)] trick.
Mike Kay
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list