数値による検索では、要素の値から数値部分を抽出し、その値と指定された数値が一致する文書や大小関係にある文書を検索します。要素の値から数値部分を自動的に抽出するため、さまざまな書き方の数値の検索に利用できます。
また、左辺に数値関数を指定して数値と比較することもできます。
数値の定義を以下の図に示します。
図A.17 数値の定義
数値比較では指定した要素の値から数値を抜き出し、キーワードに指定した数値と比較します。
要素の値から最初に見つけた上記の形式の文字列を数値として扱います。
整数部に出現するカンマ(,)は無視します。小数点が指定されている場合、それ以降最初に出現した数字以外の文字の前までを小数部とみなします。
/doc/money = 1000
/doc/moneyが示す要素の値から数値を抜き出し、1000と一致するものを真とします。
以下の例では、パス式に指定した要素の値に、複数の数値を含みます。このような場合は、最初に見つけた数値を値とみなします。
<money>ABC123,456@789</money>
123456とみなします。
<money>123456 7890123</money>
123456とみなします。
<money>1,500千円</money>
1500とみなします。
検索データに有効な数値文字列が存在しない場合、その条件は偽となります。
以下の検索対象文字列の場合は、有効な数値文字列が存在しません。
<money></money>
注意
数値比較ではパス式の最後に、パス演算子“//”は指定できません。
数値比較ではパス式の最後に、パス要素“*”は指定できません。
数値比較では項目式に、"$_"は指定できません。
キーワードで指定する数値文字と、パス式で指定した要素の値の桁数をそろえる必要はありません。
/root/money > 1000
パス式で指定した要素ノードが以下の場合、条件に一致しているとみなします。
<money>1000.5</money>
複数のXML文書間で要素の値の整数部および小数部ともに桁数をそろえる必要はありません。
<money>1000.1</money>
<money>2000.05</money>
<money>10.5</money>
日時データ比較では、指定した数値関数の値から数値を抜き出し、キーワードに指定した数値と比較します。
例として以下の文書があるものとします。
商品名 | 入荷日 | 産地 | 発送日 | 発送数 |
---|---|---|---|---|
オレンジ | 2008-01-01 | アメリカ | TUE DEC 25 2007 | 10,000 |
バナナ | 2008-08-20 | フィリピン | MON AUG 18 2008 | 50,000 |
グレープ | 2008-11-05 | フランス | WED OCT 29 2008 | 30,000 |
メロン | 2008-01-15 | イタリア | FRI JAN 11 2008 | 10,000 |
パイナップル | 2008-07-20 | シンガポール | SAT JUL 19 2008 | 100,000 |
入荷日から1月のデータを取り出します。
extract_date($入荷日,"MONTH") = 1 |
商品名 | 入荷日 | 産地 | 発送日 | 発送数 |
---|---|---|---|---|
オレンジ | 2008-01-01 | アメリカ | TUE DEC 25 2007 | 10,000 |
メロン | 2008-01-15 | イタリア | FRI JAN 11 2008 | 10,000 |