フィルターおよびフィルター パターン (XPath)

コレクションにフィルター句 [パターン] を追加することにより、制約と分岐をコレクションに適用することができます。 フィルターは SQL の WHERE 句に類似しています。 フィルターにはフィルター パターンが含まれています。 フィルター パターンはコレクションの各要素に対してテストされ、論理値として評価されます。 フィルター パターンのテストに不合格となったコレクション内の要素は、結果のコレクションから除外されます。

フィルター内にコレクションが含まれる場合、便宜上、コレクションに何かメンバーが含まれていると論理値 TRUE が生成され、コレクションが空の場合は FALSE が生成されます。 author/degree などの式はコレクションから論理値への変換関数を意味し、<degree> という名の子要素を持つ <author> 要素が存在する場合は TRUE として評価されます。

式の所定のレベルで任意数のフィルターを使用することができます。 空のフィルターは使用できません。

フィルターは常にコンテキストに対して評価されます。 言い換えると、式 book[author] は、見つかったすべての <book> 要素に対して、それに <author> 子要素が存在するかどうかがテストされます。 同様に、book[author = 'Bob'] は、見つかったすべての <book> 要素に対して、それに値 Bob を持つ <author> 子要素があるかどうかがテストされます。 コンテキストの値もピリオド (.) 文字を使用して調べることができます。 たとえば book[. = 'Trenton'] は、現在のコンテキスト内で見つかったすべての book に対して、その値が Trenton かどうかがテストされます。

説明

book[excerpt]

少なくとも 1 つの <excerpt> 要素を含むすべての <book> 要素。

book[excerpt]/title

少なくとも 1 つの <excerpt> 要素を含む <book> 要素内のすべての <title> 要素。

book[excerpt]/author[degree]

少なくとも 1 つの <excerpt> 要素を含む <book> 要素内にあり、少なくとも 1 つの <degree> 要素を含むすべての <author> 要素。

book[author/degree]

少なくとも 1 つの <degree> 子要素を持つ少なくとも 1 つの <author> 要素を含む、すべての <book> 要素。

book[excerpt][title]

少なくとも 1 つの <excerpt> 要素を含み、少なくとも 1 つの <title> 要素を含む、すべての <book> 要素。

参照

関連項目

XPath の例

概念

XPath 構文のサンプル XML ファイル (inventory.xml)