数値による検索では、要素ノードの値、テキストノードの値または属性ノードの値から数値部分を抽出し、その値と指定された数値が一致する文書や大小関係にある文書を検索します。要素ノードの値、テキストノードの値または属性ノードの値から数値部分を自動的に抽出するため、さまざまな書き方の数値の検索に利用できます。
数値の定義を以下の図に示します。
図B.12 数値の定義
数字には、半角文字の0~9までを指定します。
数値比較ではパス式に指定した要素ノードの値、テキスト式に指定したテキストノードの値または属性式に指定した属性ノードの値から数値を抜き出し、キーワードに指定した数値との比較を行います。
パス式に指定した要素ノードの値、テキスト式に指定したテキストノードの値または属性式に指定した属性ノードの値から最初に見つけた上記の形式の文字列を数値として扱います。
整数部に出現するカンマは無視します。小数点が指定されている場合、それ以降最初に出現した数字以外の文字の前までを小数部とみなします。
/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>