XPath式メモ(基礎)

XPath 2.0式

「,」でつながれてない式
単一式(Single Expressions)
「,」でつながれた式
式(Expressions)

以下、スキーマによって型付けされていない場合の式メモ。

算術式

1 + 2 → 3
1 + <x>2</x> → 3
<x>1</x> + <x>2</x> → 3
1 + <x>abc</x> → error

値比較式

演算子 説明
eq equal
ne not equal
lt less than
le less than or equal
gt greater than
ge greater than or equal
"ab" eq "cd" → false
<x>ab</x> eq "ab" → true
10 gt 2 → true
"10" gt "2" → false
fn:number(<x>10</x>) lt 10 → false
<x>10</x> eq 10 → error (左辺は文字列"10")
"abc" ne ("def") → true (単一アイテムのシーケンスは単独の原子値またはノードと等価)
"abc" ne ("def", "ghi") → error (右辺が単一式ではないため)

一般演算式

演算子 説明
= equal
!= not equal
less than
<= less than or equal
> greater than
>= greater than or equal
1 = (1, 2) → true
(1, 2) = (1, 3) → true
("1", "2") = ("3", "4") → false
2 < <x>10</x> → true
"2" < <x>10</x> → false
<x>2007-09-01</x> < xs:date("2007-10-01") → true
1 = <x/> → error (空文字""は数値に変換できない)

ノード比較式

ドキュメントオーダーで比較する。

演算子 説明
is 第1オペランドと第2オペランドが同一のときtrue、そうではないときfalse
<< 第1オペランドが第2オペランドの前に来るときtrue、そうではないときfalse
>> 第1オペランドが第2オペランドの後に来るときtrue、そうではないときfalse

論理式

and

第2オペランド
true false error
第1オペランド true true false error
false false false false or error
error error false or error error

or

第2オペランド
true false error
第1オペランド true true true true or error
false true false error
error true or error error error

1 = (1, 2) and (1, 2) = (1, 3) → true and true → true
2 < <x>10</x> or "2" < <x>10</x> → true or false → true
1 = (1, 2) and 1 = <x/> → true and error → error
("1", "2") = ("3", "4") and 1 = <x/> → false and error → false or error
1 = (1, 2) or 1 = <x/> → true or error → true or error
  • 空シーケンスの場合、false
  • 1個以上のアイテムを持つシーケンスの場合、先頭アイテムがノードならばtrue、そうでなければfalse
  • 文字列の場合、長さ0ならばfalse、そうでなければtrue
  • 数値の場合、0またはNaNならばfalse、そうでなければtrue

条件式

if (式) then 単一式 else 単一式
if ((1, 2) = (1, 3)) then 1 else 0 → 1
if (2 < <x>10</x> and "2" < <x>10</x> then 1 else 0 → 0