ホームページ  >  記事  >  バックエンド開発  >  XPath 11 インスタンス

XPath 11 インスタンス

黄舟
黄舟オリジナル
2017-02-28 16:40:031503ブラウズ

例 1
基本的な XPath 構文は、ファイル システム内のファイルの検索に似ています。パスがスラッシュ / で始まる場合、そのパスは要素への絶対パスを表します。
/AAA
ルート要素 AAA
を選択します

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

AAA
の CCC サブ要素をすべて選択します

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

DDD のすべてのサブ要素、AAA のサブ要素を選択します

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

例 2
パスは二重スラッシュで終わります // 最初は、文書内の二重スラッシュ以降の規則を満たすすべての要素を選択することを意味します // (階層関係に関係なく) // BBB
BBB 要素をすべて選択します

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

すべて選択親要素が DDD である BBB 要素

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


インスタンス 3
アスタリスク* は、アスタリスクの前のパスにあるすべての要素を選択することを意味します
/AAA/CCC/DDD/*
パスが /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

祖先要素のBBB要素が3つある全要素を選択

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

全要素を選択

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

例4
平方数値内の式は、要素をさらに指定できます。数値は、要素の位置を表します。選択セット内の要素、last() 関数は Select the last element in the set.

/AAA/BBB[1]
Select the first BBB sub-element of AAA

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


Select the last AAA の BBB サブ要素

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

例 5


//@id
id 属性をすべて選択

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

id 属性を持つ BBB 要素を選択する

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

name 属性を持つ BBB 要素を選択する

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

任意の属性を持つ BBB 要素を選択する



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

属性のない BBB 要素を選択する



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

例 6

normalize-space 関数は、先頭と末尾のスペースを選択基準として使用できます。連続するスペース文字列を単一のスペース文字列に置き換えます

//BBB[@id='b1']

属性 ID を含み、その値が 'b1' である BBB 要素を選択します

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

次の BBB 要素を選択します属性名が含まれ、その値は 'bbb' です


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

属性名を含む BBB 要素を選択し、その値 (normalize-space 関数で先頭と末尾のスペースを削除した後) は 'bbb' です

     <AAA> 
          <BBB id = \"b1\"/> 
          <BBB name = \" bbb \"/> 
          <BBB name = \"bbb\"/> 
     </AAA>

例 7

count() 関数は、選択された要素の数をカウントできます



//*[count(BBB)=2]

2 つの BBB サブ要素を持つ要素を選択します


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

2 つのサブ要素を持つ要素を選択しますelements

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

3 つのサブ要素を持つ要素を選択します


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

例 8 name() 関数は要素の名前を返し、start-with() 関数は要素の最初のパラメータ文字列が含まれている場合に true を返します。関数は 2 番目のパラメータ文字で始まり、contains() 関数は、関数の最初のパラメータ文字列が 2 番目のパラメータ文字で始まる場合に true を返します。文字列パラメータに 2 番目の文字列パラメータが含まれる場合に true を返します。


//*[ name()='BBB']
BBB という名前の要素をすべて選択します (ここでは //BBB に相当します)

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

名前が "B" で始まるすべての要素を選択します

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

名前に次が含まれる要素をすべて選択します"C"

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

例 9
区切り文字を使用して複数のパスを結合できます

// CCC | //BBB
すべての CCC 要素と BBB 要素を選択します

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

すべての BBB 要素とすべての EEE 要素を選択しますAAA

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

マージできるパスの数に制限はありません

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

例 10
子軸 (axis) には、デフォルトの軸としてコンテキスト ノードの子要素が含まれています。

/AAA
は /child::AAA と同等です

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

は /AAA
と同等です

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


/AAA/BBB
は /child::AAA/child と同等です。 ::BBB

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


/child::AAA/child::BBB
は、/AAA/BBB

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

/child ::AAA/BBB
と同等です

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

例 11
子孫軸にはコンテキスト ノードの子孫が含まれます。子孫は子ノードまたは子ノードの子ノードなどを参照するため、子孫軸には属性や名前空間ノードは含まれません。
ドキュメントルート要素のすべての子孫を選択します。つまり、すべての要素が選択されます

     <AAA> 
          <BBB> 
               <DDD> 
                    <CCC> 
                         <DDD/> 
                         <EEE/> 
                    </CCC> 
               </DDD> 
          </BBB> 
          <CCC> 
               <DDD> 
                    <EEE> 
                         <DDD> 
                              <FFF/> 
                         </DDD> 
                    </EEE> 
               </DDD> 
          </CCC> 
     </AAA> 
 
/AAA/BBB/descendant::*

/AAA/BBB のすべての子孫要素を選択します

     <AAA> 
          <BBB> 
               <DDD> 
                    <CCC> 
                         <DDD/> 
                         <EEE/> 
                    </CCC> 
               </DDD> 
          </BBB> 
          <CCC> 
               <DDD> 
                    <EEE> 
                         <DDD> 
                              <FFF/> 
                         </DDD> 
                    </EEE> 
               </DDD> 
          </CCC> 
     </AAA> 
 
//CCC/descendant::*

先祖で選択します 要素内に CCC の要素がすべてあります

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

上記は XPath の 11 個の例の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。