xPath

2791 ワード


XPathは、XMLドキュメントのノードまたはノードセットを選択するためにパス式を使用します.ノードはパス(path)またはステップ(steps)に沿って選択されます.
XMLインスタンスドキュメント
このXMLドキュメントは、次の例で使用します.
<?xml version="1.0" encoding="ISO-8859-1"?>

<bookstore>

<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>

<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>

</bookstore>

ノードの選択
XPathは、パス式を使用してXMLドキュメントでノードを選択します.ノードはパスまたはstepに沿って選択されます.
次に、最も有用なパス式を示します.
式#シキ#
説明
nodename
このノードのすべてのサブノードを選択
/
ルートノードから選択
//
選択に一致する現在のノードからドキュメント内のノードを選択し、その位置を考慮しない
.
現在のノードを選択
..
現在のノードの親を選択
@
属性の選択
≪インスタンス|Instance|emdw≫
次の表では、パス式と式の結果をいくつか示します.
パス式
結果
bookstore
bookstore要素のすべてのサブノードを選択
/bookstore
ルート要素bookstoreコメントを選択:パスが正のスラッシュ(/)から始まる場合、このパスは常に要素への絶対パスを表します.
bookstore/book
book storeに属するすべてのサブエレメントのbookエレメントを選択します.
//book
ドキュメント内のすべてのbookサブ要素を選択します.
bookstore//book
book store要素の下にある場所にかかわらず、book store要素の子孫に属するすべてのbook要素を選択します.
//@lang
langという名前のすべてのプロパティを選択します.
述部(Predicates)
述部は、特定のノードまたは指定した値を含むノードを検索するために使用されます.
述語は括弧で囲まれています.
≪インスタンス|Instance|emdw≫
次の表では、述部を含むパス式と、式の結果を示します.
パス式
結果
/bookstore/book[1]
book storeサブエレメントに属する最初のbookエレメントを選択します.
/bookstore/book[last()]
book storeサブエレメントに属する最後のbookエレメントを選択します.
/bookstore/book[last()-1]
book storeサブエレメントに属する最後から2番目のbookエレメントを選択します.
/bookstore/book[position()<3]
一番前のbook store要素に属する2つのサブ要素のbook要素を選択します.
//title[@lang]
langという名前のプロパティを持つtitle要素をすべて選択します.
//title[@lang='eng']
すべてのtitle要素を選択し、engのlang属性を持つ要素を選択します.
/bookstore/book[price>35.00]
すべてのbook store要素のbook要素を選択し、price要素の値は35.00より大きくする必要があります.
/bookstore/book[price>35.00]/title
すべてのbook store要素のbook要素のtitle要素を選択し、price要素の値は35.00より大きくする必要があります.
不明なノードの選択
XPathワイルドカードは、未知のXML要素を選択するために使用できます.
ワイルドカード
説明
*
任意の要素ノードを一致させる
@*
任意のアトリビュートノードを一致させる
node()
任意のタイプのノードに一致
≪インスタンス|Instance|emdw≫
次の表に、パス式とその結果を示します.
パス式
結果
/bookstore/*
bookstore要素のすべてのサブノードを選択
//*
ドキュメント内のすべての要素を選択
//title[@*]
属性付きtitle要素をすべて選択します.
複数のパスを選択
パス式で「|」演算子を使用すると、複数のパスを選択できます.
≪インスタンス|Instance|emdw≫
次の表に、パス式とその結果を示します.
パス式
結果
//book/title |//book/price
すべてのbook要素のtilte要素とprice要素を選択します.
//title |//price
すべてのドキュメントのtitle要素とprice要素を選択します.
/bookstore/book/title |//price
book store要素に属するすべてのbookを選択