XPath è in grado di eseguire una ricerca di una chiave esterna tra due sottoalberi di un XML?

StackOverflow https://stackoverflow.com/questions/142010

Domanda

Dire che ho il seguente 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>

... quale sarebbe l'XPath che restituisce che " bucket " contiene " rosso " e " blue " ;?

È stato utile?

Soluzione

Se stai usando XSLT, ti consiglio di impostare una chiave:

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

È quindi possibile visualizzare <tent> in <base> con un key particolare utilizzando

key('tents', $id)

Quindi puoi farlo

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

o, se $bucket è un particolare <bucket> elemento,

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

Altri suggerimenti

Penso che funzionerà:

/root/base/tent[/root/bucket/tent/@key = @key ]/@color

Non è carino. Come con qualsiasi ricerca, è necessario utilizzare current ():

/ root / bucket [/ root / base / tent [@key = current () / tent / @ key] / @ color = 'blue' o / root / base / tent [@key = current () / tent / @ key] / @ color = 'red']

JeniT ha la risposta / il codice appropriati elencati qui. È necessario creare la chiave prima di utilizzare il documento XML, quindi eseguire corrispondenze con quella chiave.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top