ページの先頭行へ戻る
Symfoware Server V10.0.0 XQueryリファレンス

D.3.2 フィルタ

パスで指定したノードの集合に対して、パス要素にフィルタブロック“[ ]”で示す条件を指定することで、ノード集合を絞り込むことができます。フィルタによる条件指定の効果は、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]]

注意

フィルタブロックは要素名を指定した要素ノードに対して指定できます。