コレクションにフィルタ句 [パターン] を追加することにより、制約と分岐をコレクションに適用することができます。フィルタは SQL の WHERE 句に類似しています。フィルタにはフィルタ パターンが含まれています。フィルタ パターンはコレクションの各要素に対してテストされ、論理値として評価されます。フィルタ パターンのテストに不合格となったコレクション内の要素は、結果のコレクションから除外されます。
フィルタ内にコレクションが含まれる場合、便宜上、コレクションに何かメンバが含まれていると論理値 TRUE が生成され、コレクションが空の場合は FALSE が生成されます。author/degree などの式はコレクションから論理値への変換関数を意味し、<degree> という名の子要素を持つ <author> 要素が存在する場合は TRUE として評価されます。
式の所定のレベルで任意数のフィルタを使用することができます。空のフィルタは使用できません。
フィルタは常にコンテキストに対して評価されます。言い換えると、式 book[author] は、見つかったすべての <book> 要素に対して、それに <author> 子要素が存在するかどうかがテストされます。同様に、book[author = 'Bob'] は、見つかったすべての <book> 要素に対して、それに値 Bob を持つ <author> 子要素があるかどうかがテストされます。コンテキストの値もピリオド (.) 文字を使用して調べることができます。たとえば book[. = 'Trenton'] は、現在のコンテキスト内で見つかったすべての book に対して、その値が Trenton かどうかがテストされます。
例
| 式 | 説明 |
|---|---|
|
少なくとも 1 つの |
|
少なくとも 1 つの |
|
少なくとも 1 つの |
|
少なくとも 1 つの |
|
少なくとも 1 つの |