This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: XPath for number of preceding nodes sharing an ancestor


> > 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]