パスで指定したノードの集合に対して、パス要素にフィルタブロック“[ ]”で示す条件を指定することで、ノード集合を絞り込むことができます。フィルタによる条件指定の効果は、SQLのWHERE句による効果に相当します。
フィルタの定義を以下に示します。
フィルタ::= '[' 式 ']'
フィルタが修飾するノードの集合のうち、フィルタ内の式が真となるノードだけが、パスで示すノードの集合の候補となります。
また、フィルタブロック中のカレントノードは、フィルタブロックを付加したノード自身を指します。
たとえば、以下のパスでは、フィルタブロック中に記述した“text()”というパスは、「ルート要素A」をカレントノードとする相対パスであり、「テキストノードの値が100以上である“要素A”をルート要素としてもつXMLデータ」を表します。
/A[text() > 100]
参考
フィルタは、パス式の最後に記述することができます。
パス式の途中に記述する場合は、2項論理演算子“and”を使用した表記方法で記述することで、同じ意味を持つ表記方法となります。
/A[B[@id="B"]/C/text() > 100] ↓同じ意味 /A[B[@id="B" and C/text() > 100]]
/A[B[@id="B"]/C] ↓同じ意味 /A[B[@id="B" and C]]
注意
フィルタブロックは要素名を指定した要素ノードに対して指定できます。