パスで指定したノードの集合に対して、パス要素にフィルタブロック“[ ]”で示す条件を指定することで、ノード集合を絞り込むことができます。フィルタによる条件指定の効果は、SQLのWHERE句による効果に相当します。
フィルタの定義を以下に示します。
フィルタ::= '[' 式 ']'
フィルタが修飾するノードの集合のうち、フィルタ内の式が真となるノードだけが、パスで示すノードの集合の候補となります。
また、フィルタブロック中のカレントノードは、フィルタブロックを付加したノード自身を指します。
たとえば、以下のパスでは、フィルタブロック中に記述した“A”というパスは、XMLデータノードをカレントノードとする相対パスであり、「値が100以上である“要素”をルート要素としてもつXMLデータ」を表します。
/[A > 100]
以下のパスは、「“属性B”の値が“abc”である“要素A”配下の“要素C”」を表します。
/A[@B = " abc" ]/C