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 Strasser <M dot Strasser at myrealbox dot com>
- Date: Wed, 16 May 2001 10:06:40 +1000
- Organization: StrassCom Pty Ltd
- References: <001701c0dd98$8f3756f0$6e01a8c0@PCUKMKA>
- 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.
Thanks, I see that now.
> 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.
Will you please elaborate? I don't understand the 'trick'. What are the
values of $x and $y?
Also, could I use:
count(preceding::input[generate-id(ancestor::inputform) =
generate-id(current()/ancestor::inputform)])
--
Michael Strasser
Brisbane, Australia
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list