XPath peut-il effectuer une recherche de clé étrangère sur deux sous-arbres d'un fichier XML?
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 &";
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é.