Heim  >  Artikel  >  Backend-Entwicklung  >  XPath 11-Instanzen

XPath 11-Instanzen

黄舟
黄舟Original
2017-02-28 16:40:031517Durchsuche

Beispiel 1
Die grundlegende XPath-Syntax ähnelt der Suche nach Dateien in einem Dateisystem. Wenn der Pfad mit einem Schrägstrich / beginnt, stellt der Pfad den absoluten Pfad zu einem Element dar.
/AAA
Wählen Sie das Stammelement AAA aus

<AAA>           
<BBB/>           
<CCC/>           
<BBB/>           
<BBB/>          
 <DDD>                
 <BBB/>           
 </DDD>           
 <CCC/>      
 </AAA> 
/AAA/CCC

Wählen Sie alle untergeordneten CCC-Elemente von AAA aus

<AAA>           
<BBB/>           
<CCC/>           
<BBB/>           
<BBB/>           
<DDD>                
<BBB/>           
</DDD>           
<CCC/>      
</AAA>  
/AAA/DDD/BBB

Wählen Sie die Kinder aus von AAA Alle untergeordneten Elemente des Elements DDD

  <AAA> 
          <BBB/> 
          <CCC/> 
          <BBB/> 
          <BBB/> 
          <DDD> 
               <BBB/> 
          </DDD> 
          <CCC/> 
     </AAA>

Beispiel 2
Wenn der Pfad mit einem doppelten Schrägstrich // beginnt, bedeutet dies, dass alle Regeln im Dokument das erfüllen den doppelten Schrägstrich // werden ausgewählt (unabhängig von der hierarchischen Beziehung) //BBB
Alle BBB-Elemente auswählen

     <AAA> 
          <BBB/> 
          <CCC/> 
          <BBB/> 
          <DDD> 
               <BBB/> 
          </DDD> 
          <CCC> 
               <DDD> 
                    <BBB/> 
                    <BBB/> 
               </DDD> 
          </CCC> 
     </AAA> 
 
//DDD/BBB

Alle BBB-Elemente auswählen, deren übergeordnetes Element DDD ist

     <AAA> 
          <BBB/> 
          <CCC/> 
          <BBB/> 
          <DDD> 
               <BBB/> 
          </DDD> 
          <CCC> 
               <DDD> 
                    <BBB/> 
                    <BBB/> 
               </DDD> 
          </CCC> 
     </AAA>


Beispiel 3
Das Sternchen* bedeutet, dass alle Elemente ausgewählt werden, die sich im Pfad vor dem Sternchen befinden.
/AAA/CCC/DDD/*
Alle Elemente auswählen, deren Pfade sind an /AAA/CCC/DDD-Elemente angehängt

     <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

Alle BBB-Elemente mit 3 Vorgängerelementen auswählen

     <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> 
 
//*

Alle Elemente auswählen

  <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>

Beispiel 4
Der Ausdruck in der Quadratzahl kann das Element weiter spezifizieren, wobei die Zahl die Position des Elements im Auswahlsatz darstellt und die Funktion last() das letzte Element in darstellt der Auswahlsatz.

/AAA/BBB[1]
Wählen Sie das erste untergeordnete BBB-Element von AAA aus
 

 <AAA> 
          <BBB/> 
          <BBB/> 
          <BBB/> 
          <BBB/> 
     </AAA> 
 
/AAA/BBB[last()]


Wählen Sie das letzte BBB aus untergeordnetes Element von AAA

    <AAA> 
          <BBB/> 
          <BBB/> 
          <BBB/> 
          <BBB/> 
     </AAA>

Beispiel 5


//@id
Alle ID-Attribute auswählen
 

<AAA> 
          <BBB id = \"b1\"/> 
          <BBB id = \"b2\"/> 
          <BBB name = \"bbb\"/> 
          <BBB/> 
     </AAA> 
 
//BBB[@id]

ID-Attribut-BBB-Element auswählen

  <AAA> 
          <BBB id = \"b1\"/> 
          <BBB id = \"b2\"/> 
          <BBB name = \"bbb\"/> 
          <BBB/> 
     </AAA> 
 
//BBB[@name]

BBB-Element mit Namensattribut auswählen

<AAA> 
          <BBB id = \"b1\"/> 
          <BBB id = \"b2\"/> 
          <BBB name = \"bbb\"/> 
          <BBB/> 
     </AAA> 
 
//BBB[@*]

BBB-Element auswählen mit einem beliebigen Attribut

<AAA> 
          <BBB id = \"b1\"/> 
          <BBB id = \"b2\"/> 
          <BBB name = \"bbb\"/> 
          <BBB/> 
     </AAA> 
 
//BBB[not(@*)]

Wählen Sie BBB-Elemente ohne Attribute aus
, die Normalize-Space-Funktion entfernt führende und nachgestellte Leerzeichen und ersetzt aufeinanderfolgende Leerzeichenfolgen durch ein einzelnes Leerzeichen

<AAA> 
          <BBB id = \"b1\"/> 
          <BBB id = \"b2\"/> 
          <BBB name = \"bbb\"/> 
          <BBB/> 
     </AAA>
//BBB[@id='b1']

Auswahl Das BBB-Element
, das die Attribut-ID enthält und dessen Wert „b1“ ist.

Wählen Sie das aus BBB-Element
, das den Attributnamen enthält und dessen Wert „bbb“ ist

 <AAA> 
          <BBB id = \"b1\"/> 
          <BBB name = \" bbb \"/> 
          <BBB name = \"bbb\"/> 
     </AAA> 
 
//BBB[@name=\&#39;bbb\&#39;]

Wählen Sie das BBB-Element aus, das den Attributnamen und seinen Wert enthält (nachdem Sie die führenden und nachfolgenden Leerzeichen mit entfernt haben). die Normalize-Space-Funktion) ist 'bbb'

<AAA> 
          <BBB id = \"b1\"/> 
          <BBB name = \" bbb \"/> 
          <BBB name = \"bbb\"/> 
     </AAA> 
 
//BBB[normalize-space(@name)=\&#39;bbb\&#39;]
Beispiel 7

count() Die Funktion kann die Anzahl der ausgewählten Elemente zählen

     <AAA> 
          <BBB id = \"b1\"/> 
          <BBB name = \" bbb \"/> 
          <BBB name = \"bbb\"/> 
     </AAA>
// *[count(BBB)=2]

Elemente auswählen, die 2 BBB-Unterelemente enthalten

Element mit 2 untergeordneten Elementen auswählen

     <AAA> 
          <CCC> 
               <BBB/> 
               <BBB/> 
               <BBB/> 
          </CCC> 
          <DDD> 
               <BBB/> 
               <BBB/> 
          </DDD> 
          <EEE> 
               <CCC/> 
               <DDD/> 
          </EEE> 
     </AAA> 
 
//*[count(*)=2]
Wählen Sie ein Element mit 3 untergeordneten Elementen aus

 

     <AAA> 
          <CCC> 
               <BBB/> 
               <BBB/> 
               <BBB/> 
          </CCC> 
          <DDD> 
               <BBB/> 
               <BBB/> 
          </DDD> 
          <EEE> 
               <CCC/> 
               <DDD/> 
          </EEE> 
     </AAA> 
 
//*[count(*)=3]

Beispiel 8
Name Die ()-Funktion gibt den Namen des Elements zurück, die start-with()-Funktion gibt true zurück, wenn Die erste Parameterzeichenfolge der Funktion beginnt mit dem zweiten Parameterzeichen, und die Funktion enthält() gibt true zurück, wenn der erste Zeichenfolgenparameter enthält. Gibt true zurück, wenn es einen zweiten Zeichenfolgenparameter gibt.

<AAA> 
          <CCC> 
               <BBB/> 
               <BBB/> 
               <BBB/> 
          </CCC> 
          <DDD> 
               <BBB/> 
               <BBB/> 
          </DDD> 
          <EEE> 
               <CCC/> 
               <DDD/> 
          </EEE> 
     </AAA>
//* [name()='BBB']

Wählt alle Elemente mit dem Namen BBB aus (entspricht hier //BBB)
 

Wählt alle Elemente aus, deren Namen mit „B“ beginnen
 

<AAA> 
          <BCC> 
               <BBB/> 
               <BBB/> 
               <BBB/> 
          </BCC> 
          <DDB> 
               <BBB/> 
               <BBB/> 
          </DDB> 
          <BEC> 
               <CCC/> 
               <DBD/> 
          </BEC> 
     </AAA> 
 
//*[starts-with(name(),\&#39;B\&#39;)]

Alle Elemente auswählen, deren Namen mit „C“ beginnen
 

<AAA> 
          <BCC> 
               <BBB/> 
               <BBB/> 
               <BBB/> 
          </BCC> 
          <DDB> 
               <BBB/> 
               <BBB/> 
          </DDB> 
          <BEC> 
               <CCC/> 
               <DBD/> 
          </BEC> 
     </AAA> 
 
//*[contains(name(),\&#39;C\&#39;)]

Beispiel 9
Mehrere Pfade können mit zusammengeführt werden das Trennzeichen |.

<AAA> 
          <BCC> 
               <BBB/> 
               <BBB/> 
               <BBB/> 
          </BCC> 
          <DDB> 
               <BBB/> 
               <BBB/> 
          </DDB> 
          <BEC> 
               <CCC/> 
               <DBD/> 
          </BEC> 
     </AAA>
//CCC |. //BBB

Wählen Sie alle CCC- und BBB-Elemente aus

Wählen Sie alle BBB-Elemente und alle EEE-Elemente aus Untergeordnete Elemente von AAA



<AAA> 
          <BBB/> 
          <CCC/> 
          <DDD> 
               <CCC/> 
          </DDD> 
          <EEE/> 
     </AAA> 
 
/AAA/EEE | //BBB
können zusammengeführt werden. Es gibt keine Begrenzung für die Anzahl der Pfade



<AAA> 
          <BBB/> 
          <CCC/> 
          <DDD> 
               <CCC/> 
          </DDD> 
          <EEE/> 
     </AAA> 
 
/AAA/EEE | //DDD/CCC | /AAA | //BBB
Beispiel 10

Die untergeordnete Achse (Achse) enthält die untergeordneten Elemente des Kontextknotens. Als Standardachse kann sie ignoriert werden.

/AAA
   <AAA> 
          <BBB/> 
          <CCC/> 
          <DDD> 
               <CCC/> 
          </DDD> 
          <EEE/> 
     </AAA>
entspricht /child::AAA



entspricht /AAA

 

     <AAA> 
          <BBB/> 
          <CCC/> 
     </AAA> 
 
/child::AAA

/AAA/BBB
entspricht /child::AAA/child ::BBB

  <AAA> 
          <BBB/> 
          <CCC/> 
     </AAA>


/child::AAA/child::BBB
Entspricht /AAA/BBB

     <AAA> 
          <BBB/> 
          <CCC/> 
     </AAA>

/ child::AAA/BBB
Beide können zusammengeführt werden

     <AAA> 
          <BBB/> 
          <CCC/> 
     </AAA>

Beispiel 11
Die Nachkommenachse enthält die Nachkommen des Kontextknotens. Ein Nachkomme bezieht sich auf ein Kind Knoten oder ein untergeordneter Knoten eines untergeordneten Knotens usw., sodass die Nachkommenachse keine Attribut- und Namespaceknoten enthält.

/descendant::*

Wählt alle Nachkommen des Dokumentstammelements aus , alle Elemente werden ausgewählt
   <AAA> 
          <BBB/> 
          <CCC/> 
     </AAA>


Wählt alle Nachkommenelemente von /AAA/BBB aus



Wählt alle Elemente mit CCC in ihren Vorgängerelementen aus
     <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::*

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn