Maison  >  Article  >  développement back-end  >  XPath 11 instances

XPath 11 instances

黄舟
黄舟original
2017-02-28 16:40:031503parcourir

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=\&#39;bbb\&#39;]

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)=\&#39;bbb\&#39;]
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(),\&#39;B\&#39;)]

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(),\&#39;C\&#39;)]

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

est équivalent à /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::*

Sélectionne tous les descendants de l'élément racine du document, c'est-à-dire. , tous les éléments sont sélectionnés
   <AAA> 
          <BBB/> 
          <CCC/> 
     </AAA>


Sélectionne tous les éléments descendants de /AAA/BBB



Sélectionne tous les éléments avec CCC dans leurs éléments ancêtres
     <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::*

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn