XPath trouver tous les éléments spécifiques nœud enfant
Pourriez-vous s'il vous plaît aidez-moi à trouver tous les éléments de b qui ont l'enfant de l'élément c dans l'exemple ci-dessous?
<a>
<b name = "b1"></b>
<b name = "b2"><c/></b>
<b name = "b3"></b>
</a>
La requête xpath doit retourner le b2 élément
La deuxième question est
Je veux combiner les 2 conditions: je veux obtenir l'élément qui ont nom = "b2" et a l'élément c
Mais cette syntaxe ne semble pas fonctionner:
//b[@name='b2' et c]
- Ce que cela signifie exactement "ne semble pas fonctionner"? S'il vous plaît, demandez à une nouvelle question distincte et complète (aussi petit que possible) document XML source, l'expression XPath utilisé et le résultat escompté et le résultat que vous avez obtenu. Avec le document XML en cours à l'expression XPath
//b[@name='b2' and c]
sélectionne le deuxième enfant dea
-- exactement comme il se doit.
Vous devez vous connecter pour publier un commentaire.
Chaque fois que la structure du document XML est connu, il est préférable d'éviter d'utiliser le
//
XPath pseudo-opérateur, car son utilisation peut entraîner une grande inefficacité (la traversée de l'ensemble de l'arborescence du document).Par conséquent, je recommande cette expression XPath pour le document XML fourni:
Cette sélectionne tout
b
élément qui est un enfant de l'élément du document XML et qui a un enfant-élément nomméc
.Mise à JOUR: L'OP posé une deuxième question à quelques minutes auparavant:
La condition de l'expression XPath ne sélectionner exactement le voulait élément.
Voici XSLT vérification basée sur les:
Lorsque cette transformation est appliquée sur le document XML:
l'expression XPath est évaluée et le correctement-l'élément sélectionné est copié à la sortie:
//some-element-deep-within-the-dom
recherche tous//some-element-deep-within-the-dom
, mais ne serait-il pas aussi être plus souple, moins susceptibles de se briser le script si, par exemple,//some-element-deep-within-the-dom
est déplacé ailleurs dans les dom???/
,/*
,//*[not(*)]
, etcIl devrait être aussi simple que
c'est à dire trouver un
b
n'importe où qui a unc
enfant.