XPath 11 インスタンス

黄舟
リリース: 2017-02-28 16:40:03
オリジナル
1520 人が閲覧しました

例 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) に注目してください。



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート