Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can XPath do a foreign key lookup across two subtrees of an XML?

Say I have the following XML...

<root>
  <base>
    <tent key="1" color="red"/>
    <tent key="2" color="yellow"/>
    <tent key="3" color="blue"/>
  </base>
  <bucket>
    <tent key="1"/>
    <tent key="3"/>
  </bucket>
</root>

...what would the XPath be that returns that the "bucket" contains "red" and "blue"?

like image 487
dacracot Avatar asked Mar 02 '23 07:03

dacracot


2 Answers

If you're using XSLT, I'd recommend setting up a key:

<xsl:key name="tents" match="base/tent" use="@key" />

You can then get the <tent> within <base> with a particular key using

key('tents', $id)

Then you can do

key('tents', /root/bucket/tent/@key)/@color

or, if $bucket is a particular <bucket> element,

key('tents', $bucket/tent/@key)/@color
like image 176
JeniT Avatar answered Apr 05 '23 23:04

JeniT


I think this will work:

/root/base/tent[/root/bucket/tent/@key = @key ]/@color
like image 27
Garth Gilmour Avatar answered Apr 06 '23 00:04

Garth Gilmour