Maison > Article > développement back-end > XPath 11 instances
Exemple 1
La syntaxe XPath de base est similaire à la localisation de fichiers dans un système de fichiers. Si le chemin commence par une barre oblique /, alors le chemin représente le chemin absolu vers un élément.
/AAA
Sélectionnez l'élément racine AAA
<AAA> <BBB/> <CCC/> <BBB/> <BBB/> <DDD> <BBB/> </DDD> <CCC/> </AAA> /AAA/CCC
Sélectionnez tous les éléments enfants CCC de AAA
<AAA> <BBB/> <CCC/> <BBB/> <BBB/> <DDD> <BBB/> </DDD> <CCC/> </AAA> /AAA/DDD/BBB
Sélectionnez les enfants de AAA Tous les éléments enfants de l'élément DDD
<AAA> <BBB/> <CCC/> <BBB/> <BBB/> <DDD> <BBB/> </DDD> <CCC/> </AAA>
Exemple 2
Si le chemin commence par une double barre oblique //, cela signifie que toutes les règles du document qui satisfaire la double barre oblique // sont des éléments sélectionnés (quelle que soit la relation hiérarchique) //BBB
Sélectionner tous les éléments BBB
<AAA> <BBB/> <CCC/> <BBB/> <DDD> <BBB/> </DDD> <CCC> <DDD> <BBB/> <BBB/> </DDD> </CCC> </AAA> //DDD/BBB
Sélectionner tous les éléments BBB dont l'élément parent est DDD
<AAA> <BBB/> <CCC/> <BBB/> <DDD> <BBB/> </DDD> <CCC> <DDD> <BBB/> <BBB/> </DDD> </CCC> </AAA>
Exemple 3
L'astérisque* signifie sélectionner tous les éléments situés par le chemin avant l'astérisque
/AAA/CCC/DDD/*
Sélectionner tous les éléments dont les chemins sont attachés aux éléments /AAA/CCC/DDD
<AAA> <XXX> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </XXX> <CCC> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </CCC> <CCC> <BBB> <BBB> <BBB/> </BBB> </BBB> </CCC> </AAA> /*/*/*/BBB
Sélectionnez tous les éléments BBB avec 3 éléments ancêtres
<AAA> <XXX> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </XXX> <CCC> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </CCC> <CCC> <BBB> <BBB> <BBB/> </BBB> </BBB> </CCC> </AAA> //*
Sélectionnez tous les éléments
<AAA> <XXX> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </XXX> <CCC> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </CCC> <CCC> <BBB> <BBB> <BBB/> </BBB> </BBB> </CCC> </AAA>
Exemple 4
L'expression dans le nombre carré peut spécifier davantage l'élément, où le nombre représente la position de l'élément dans le jeu de sélection, et la fonction last() représente le dernier élément dans l'ensemble de sélection.
/AAA/BBB[1]
Sélectionnez le premier élément enfant BBB de AAA
<AAA> <BBB/> <BBB/> <BBB/> <BBB/> </AAA> /AAA/BBB[last()]
Sélectionnez le dernier BBB élément enfant de AAA
<AAA> <BBB/> <BBB/> <BBB/> <BBB/> </AAA>
Exemple 5
//@id
Sélectionner tous les attributs d'identification
<AAA> <BBB id = \"b1\"/> <BBB id = \"b2\"/> <BBB name = \"bbb\"/> <BBB/> </AAA> //BBB[@id]
Sélectionnez l'élément BBB d'attribut id
<AAA> <BBB id = \"b1\"/> <BBB id = \"b2\"/> <BBB name = \"bbb\"/> <BBB/> </AAA> //BBB[@name]
Sélectionnez l'élément BBB avec l'attribut de nom
<AAA> <BBB id = \"b1\"/> <BBB id = \"b2\"/> <BBB name = \"bbb\"/> <BBB/> </AAA> //BBB[@*]
Sélectionnez l'élément BBB avec n'importe quel attribut
<AAA> <BBB id = \"b1\"/> <BBB id = \"b2\"/> <BBB name = \"bbb\"/> <BBB/> </AAA> //BBB[not(@*)]
Sélectionnez les éléments BBB sans attributs
, la fonction normalize-space supprime les espaces de début et de fin et remplace les chaînes d'espaces consécutives par un seul espace
<AAA> <BBB id = \"b1\"/> <BBB id = \"b2\"/> <BBB name = \"bbb\"/> <BBB/> </AAA>//BBB[@id='b1']
sélection L'élément BBB
qui contient l'identifiant de l'attribut et sa valeur est 'b1'
Sélectionnez le Élément BBB
qui contient le nom de l'attribut et sa valeur est 'bbb'
<AAA> <BBB id = \"b1\"/> <BBB name = \" bbb \"/> <BBB name = \"bbb\"/> </AAA> //BBB[@name=\'bbb\']
Sélectionnez l'élément BBB qui contient le nom de l'attribut et sa valeur (après avoir supprimé les espaces de début et de fin avec la fonction normalize-space) est 'bbb'
<AAA> <BBB id = \"b1\"/> <BBB name = \" bbb \"/> <BBB name = \"bbb\"/> </AAA> //BBB[normalize-space(@name)=\'bbb\']Exemple 7
count() La fonction peut compter le nombre d'éléments sélectionnés
<AAA> <BBB id = \"b1\"/> <BBB name = \" bbb \"/> <BBB name = \"bbb\"/> </AAA>// *[count(BBB)=2]
Sélectionnez les éléments contenant 2 sous-éléments BBB
Sélectionnez un élément avec 2 éléments enfants
<AAA> <CCC> <BBB/> <BBB/> <BBB/> </CCC> <DDD> <BBB/> <BBB/> </DDD> <EEE> <CCC/> <DDD/> </EEE> </AAA> //*[count(*)=2]Sélectionnez un élément avec 3 éléments enfants
<AAA> <CCC> <BBB/> <BBB/> <BBB/> </CCC> <DDD> <BBB/> <BBB/> </DDD> <EEE> <CCC/> <DDD/> </EEE> </AAA> //*[count(*)=3]
Exemple 8
name La fonction () renvoie le nom de l'élément, la fonction start-with() renvoie true lorsque la première chaîne de paramètre de la fonction commence par le deuxième caractère de paramètre, et la fonction contain() renvoie true lorsque le premier paramètre de chaîne contient. Renvoie true lorsqu'il y a un deuxième paramètre de chaîne.
<AAA> <CCC> <BBB/> <BBB/> <BBB/> </CCC> <DDD> <BBB/> <BBB/> </DDD> <EEE> <CCC/> <DDD/> </EEE> </AAA>//* [name()='BBB']
Sélectionne tous les éléments nommés BBB (ici est équivalent à //BBB )
Sélectionne tous les éléments dont les noms commencent par "B"
<AAA> <BCC> <BBB/> <BBB/> <BBB/> </BCC> <DDB> <BBB/> <BBB/> </DDB> <BEC> <CCC/> <DBD/> </BEC> </AAA> //*[starts-with(name(),\'B\')]
Sélectionnez tous les éléments dont les noms commencent par "C"
<AAA> <BCC> <BBB/> <BBB/> <BBB/> </BCC> <DDB> <BBB/> <BBB/> </DDB> <BEC> <CCC/> <DBD/> </BEC> </AAA> //*[contains(name(),\'C\')]
Exemple 9
Plusieurs chemins peuvent être fusionnés en utilisant le séparateur |
<AAA> <BCC> <BBB/> <BBB/> <BBB/> </BCC> <DDB> <BBB/> <BBB/> </DDB> <BEC> <CCC/> <DBD/> </BEC> </AAA>//CCC | //BBB
Sélectionnez tous les éléments CCC et BBB
Sélectionnez tous les éléments BBB et tous les éléments EEE qui sont les éléments enfants de AAA
<AAA> <BBB/> <CCC/> <DDD> <CCC/> </DDD> <EEE/> </AAA> /AAA/EEE | //BBB
peuvent être fusionnés. Il n'y a pas de limite au nombre de chemins
<AAA> <BBB/> <CCC/> <DDD> <CCC/> </DDD> <EEE/> </AAA> /AAA/EEE | //DDD/CCC | /AAA | //BBB
Exemple 10
L'axe enfant (axis) contient les éléments enfants du nœud de contexte. Comme axe par défaut, il peut être ignoré.
<AAA> <BBB/> <CCC/> <DDD> <CCC/> </DDD> <EEE/> </AAA>/AAA
est équivalent à /child::AAA
<AAA> <BBB/> <CCC/> </AAA> /child::AAA
/AAA/BBB
est équivalent à /child::AAA/child ::BBB
<AAA> <BBB/> <CCC/> </AAA>
/child::AAA/child::BBB
Équivalent à /AAA/BBB
<AAA> <BBB/> <CCC/> </AAA>
/ child::AAA/BBB
Les deux peuvent être fusionnés
<AAA> <BBB/> <CCC/> </AAA>
Exemple 11
L'axe descendant contient les descendants du nœud de contexte Un descendant fait référence à un enfant. ou un nœud enfant d'un nœud enfant, etc., de sorte que l'axe descendant n'inclut pas les nœuds d'attribut et d'espace de noms.
/descendant::*
<AAA> <BBB/> <CCC/> </AAA>
<AAA> <BBB> <DDD> <CCC> <DDD/> <EEE/> </CCC> </DDD> </BBB> <CCC> <DDD> <EEE> <DDD> <FFF/> </DDD> </EEE> </DDD> </CCC> </AAA> /AAA/BBB/descendant::*.php.cn) !
<AAA> <BBB> <DDD> <CCC> <DDD/> <EEE/> </CCC> </DDD> </BBB> <CCC> <DDD> <EEE> <DDD> <FFF/> </DDD> </EEE> </DDD> </CCC> </AAA> //CCC/descendant::*