Velocity Reviews > XML > //b[1]//c gives different results if the first b is nested in anotherelement

# //b[1]//c gives different results if the first b is nested in anotherelement

yawnmoth
Guest
Posts: n/a

 09-14-2008
<a>
<b>
<c/><c/>
</b>
<b>
<c/><c/><c/>
</b>
<b>
<c/>
</b>
</a>

Doing //b[1]//c on that yields two items. If, however, I put the
first <b></b> within a <d></d>, I get five items. My question is...
why?

Here's what I mean by "put the first <b></b> within a <d></d>":

<a>
<d>
<b>
<c/><c/>
</b>
</d>
<b>
<c/><c/><c/>
</b>
<b>
<c/>
</b>
</a>

Why does that return 5 items when the first only returns 2?

David Carlisle
Guest
Posts: n/a

 09-14-2008
yawnmoth wrote:
> <a>
> <b>
> <c/><c/>
> </b>
> <b>
> <c/><c/><c/>
> </b>
> <b>
> <c/>
> </b>
> </a>
>
> Doing //b[1]//c on that yields two items. If, however, I put the
> first <b></b> within a <d></d>, I get five items. My question is...
> why?
>
> Here's what I mean by "put the first <b></b> within a <d></d>":
>
> <a>
> <d>
> <b>
> <c/><c/>
> </b>
> </d>
> <b>
> <c/><c/><c/>
> </b>
> <b>
> <c/>
> </b>
> </a>
>
> Why does that return 5 items when the first only returns 2?

//b[1] means select all b that are the first b child of their parent.
If you want to select the first b descendant use
/descendant::b[1]

David

--
http://dpcarlisle.blogspot.com