[xsl] XPath question

Subject: [xsl] XPath question
From: "Chris Robinson" <sipitai@xxxxxxxxxxx>
Date: Wed, 07 Jun 2006 19:08:55 +0800
Hi everyone,

I have a XPath problem that "should" be reasonably easy to solve, but so far has just left me scratching my head.

Given the following XML*

<data>
 <a>
   <b/>
 </a>
 <a>
   <b>
     <c/>
   <b/>
 </a>
 <a>
   <b/>
   <b>
     <c/>
   <b/>
 </a>
</data>

* Note that this is just an example, the structure of the XML I'm working with changes each time. Having said that, there are always 1 or more "a" nodes, "a" nodes contain "b" nodes and there are always 1 or more "b" nodes, "b" nodes contain "c" nodes and a "c" node is either present or not present.

I am trying to create an XPath statement that selects the "c" node child of the first "b" node child (that has a "c" node child) of the first "a" node (that has a "b" node child, that in turn has a "c" node child). If that makes any sense :)

Note that I would just like to select 1 "c" node, as opposed to the set of "c" nodes.

I tried the following statement...

/data/a[1]/b[1]/c

....and while (if it works) it only selects 1 node, it just selects the first "a" node regardless of whether or not it contains a "b" node (and regardless of whether or not that "b" node contains a "c" node). In other words it only works if the first "a" node contains a "b" and that "b" node contains a "c" node, otherwise it fails.

I've tried so many variations on this statement that I've lost count, but so far I haven't been able to get it do what it needs to.

If anyone could let me know what the solution is here, or even just point me in the right direction, your assistance would be greatly appreciated.

Thanks!

_________________________________________________________________
realestate.com.au: the biggest address in property http://ninemsn.realestate.com.au


Current Thread