6. Some Features

本システムでは, Predicateの部の評価について, XPathにはない幾つかの表現をサポートしている. ここでは, 本システム固有の構文について解説する.

正規表現 /PLAY[ACT=~"^(hoge*)$"
/PLAY/ACTの文字列値(エレメントの場合, テキストノードを文書順につなぎ合わせたもの)が指定の正規表現'^(hoge*)$'にマッチする/PLAYを抜きだす.
否定演算子は'!=~'である.

通常のマッチ処理は, /PLAY[ACT="hoge"]は, /PLAY/ACT下の文字列値を算出する必要があるため検索コストが高い.
そこで代替構文/PLAT[ACT=="hoge"]を用意した.
これは, /PLAY/ACT下に, ノードテキスト"hoge"が存在する/PLAY要素を取りだすものである.
否定演算子は'!=='である.

Attributeの場合/PLAT[@ACT="hoge"]は, /PLAY/@ACTの文字列値(属性の場合は, 属性値)のなので, 文字列値の算出は比較的容易である.

Predicate部での数値の評価
/PLAY[NUM>=31] /PLAY/NUMの文字列値をINTEGERにキャストし比較を行なう.
/PLAY[NUM>=31.54] /PLAY/NUMの文字列値をREAL型にキャストし, 比較を行なう.

XPathの仕様では, 実数値で全て比較を行なわれるが, Performance面と実用面からユーザが選択可能とした.

マッチ処理と同様の処理もサポートしている.
/PLAY[NUM<==3.1] /PLAY/NUMを親とするテキストノードをREAL型にキャストし, 比較を行なう.
/PLAY[NUM>==5] /PLAY/NUMを親とするテキストノードをINTEGERにキャストし, 比較を行なう.