J'ai besoin d'un XPath qui élira tous les nœuds parents d'un enfant avec un attribut qui constitue au moins une liste de valeurs.XPath Query using contient plusieurs valeurs
Exemple XML
<mynodes>
<theParentNode>
<theChildNode name="one two" />
</theParentNode>
<theParentNode>
<theChildNode name="one all" />
</theParentNode>
<theParentNode>
<theChildNode name="two" />
</theParentNode>
<theParentNode>
<theChildNode name="all" />
</theParentNode>
</mynodes>
Je veux sélectionner tous les noeuds où le nom contient « un » ou « tous » (ou toute autre combinaison pour cette question). Alors que le retour nodeList est:
<theParentNode>
<theChildNode name="one two" />
</theParentNode>
<theParentNode>
<theChildNode name="one all" />
</theParentNode>
<theParentNode>
<theChildNode name="all" />
</theParentNode>
Jusqu'à présent, ma requête ressemble à ceci (note im ne pas utiliser un schéma):
//theChildNode[contains(tokenize(@name, '\s'), "one")]
Ce qui va me faire tous les éléments du fournisseur contenant « un "dans leur attribut de nom. Mais je ne sais pas comment faire pour fournir plusieurs valeurs à la place du «un», puis la meilleure façon de revenir à theParentNode
. Je pourrais toujours faire tout cela en php mais je préfère juste le faire avec un XPath si possible.
Pourquoi utilisez-vous « tokenize »? La fonction "contains" ne fonctionne que sur les chaînes et concaténera en interne la chaîne tokenisée. – chiborg