XpSQL propriatory extentions.

[1] Match without string-value (strongly recommended)

* firstly, you learn about what is the 'string-value' in XPath spec.
http://www.w3.org/TR/xpath#dt-string-value

#The string-value of an element node is the concatenation 
#of the string-values of all text node descendants of 
#the element node in document order.

this is a input, sample xml.
<top>
 <sec>aaa<third>bbb</third>ccc</sec>
</top>

In XPath spec, the expression '/top[sec="aaabbbcc"]' must match to top element,
and XpSQL evalute this query strictly.

However, the evalution of string-value, selecting descendant text-node 
and concatenation them, becomes very high cost.
Many xml database seems to not supporting this evaluation strictly.

for example eXist, an open source xml native database.
--
echo '/top[sec="aaabbbccc"]/sec' | bin/client.sh -x
result: no match

Then, we prepared a alternative way. 

The Syntax is.. '/top[sec=='aaa']' using operator '=='. (the negation is '!==').
This query matches root node named 'top' which child element 'sec' 
have any text-node valued 'aaa'.

'/top[sec=='ccc']' also matches in this case.

[2] POSIX regular expressions support (high level usecase)

The Syntax is like '/top[sec=~'^a*'] with operator '=~'.
The expression power is equals to postgres's.
http://developer.postgresql.org/docs/postgres/functions-matching.html#FUNCTIONS-POSIX-REGEXP

[3] Cast to number (performance)

(1) /PLAY[NUM>=31] 
              ~~~~ when just number
	- cast the string-value of '/PLAY/NUM' to INTEGER type and compare it.
(2) /PLAY[NUM>=31.54] 
              ~~~~~~~ when including floating point.
	- cast the string-value of '/PLAY/NUM' to REAL type and compare it.

In XPath spec, numerical comparison is always done with number function and 
casted to IEEE 754 number.
http://www.w3.org/TR/xpath#function-number

it's also possible processing with '==' like behavior, using operator '>==', '<=='.