XPath peut-il effectuer une recherche de clé étrangère sur deux sous-arbres d'un fichier XML?

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

Question

Disons que j'ai le code XML suivant ...

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

... que serait l'XPath qui retourne que le & "; seau &"; contient " rouge " et & "bleu &";

Était-ce utile?

La solution

Si vous utilisez XSLT, je vous recommande de configurer une clé:

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

Vous pouvez ensuite obtenir le <tent> dans <base> avec un key particulier à l'aide de

.
key('tents', $id)

Ensuite, vous pouvez faire

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

ou, si $bucket est un élément <bucket> particulier,

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

Autres conseils

Je pense que cela fonctionnera:

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

Ce n'est pas joli. Comme pour toute recherche, vous devez utiliser current ():

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

JeniT a la réponse / le code approprié listés ici. Vous devez créer la clé avant de parcourir le document XML, puis effectuez des correspondances avec cette clé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top