-
Notifications
You must be signed in to change notification settings - Fork 4
/
390.txt
56 lines (47 loc) · 2.1 KB
/
390.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#?SuikaWiki/0.9
[1] [DFN[述部]] (predicate;
<http://www.w3.org/TR/xpath#predicates>)
は、[[位置段階]]の末尾に零個以上つけることができます。
述部は、位置段階の前の部分、すなわち[[軸]]と[[節検査]]の結果で得た[[節集合]]を[[濾過]]して更に絞り込むのに使います。
述部は複数記述できますが、前の述部から順に濾過します。
例えば、 [SAMP(XPath)[ child:foo [ [VAR[expr1]] ] [ [VAR[expr2]] ] ]]
は、まず [CODE(XPath)[[[child]]:foo]]
を評価して得た節集合を、
まず [VAR[expr1]] で濾過し、次に
[VAR[expr2]] で濾過して、この結果を全体の評価結果の節集合とします。
[2]
- [CODE(ABNF)[[DFN[述部]] := [ [[WSP]] ] "[" 述部式 "]" [WSP]
- [CODE(ABNF)[[DFN[述部式]] := [[式]] ]]
[3] 述部式は、次のように評価します。
= まず、式を評価します。
=- [[文脈節]]は濾過対象の節とします。
=- [[文脈寸法]]は濾過対象の節集合の節の数とします。
=- [[文脈位置]]は濾過対象の節の、濾過対象の節集合中における[[近接位置]]とします。
= 評価結果が[[数値]]である場合、
文脈位置との比較の真偽を結果とします。
例えば、述部 [SAMP(XPath)[ [3] ]] は、
[SAMP(XPath)[ [ [[position]]() = 3 ] ]]
と等価です。
= それ以外の場合、 [CODE(XPath)[ [[boolean]]( [VAR[$述部式]] ) ]]
を結果とします。
結果が真ならその節は濾過結果の節集合に入れられ、
偽であれば位置段階中でのその節の評価はそこでおしまいです。
[4]
[PRE[
<context>
<foo>
<p id="p1"/>
<p id="p2"/>
</foo>
<p id="p3"/>
<bar>
<p id="p4"/>
<p id="p5"/>
</bar>
</context>
]PRE]
で、 [SAMP(XPath)[[[descendant]]:p[position()=2] ]]
は要素 [CODE(XML)[p2]] です。
[5] [CITE@en[164822 – XPath expressions .''''''[''''''foo'''''']'''''' and ..'''['''foo''']''' shouldn't work]]
( ([TIME[2013-11-01 00:10:34 +09:00]] 版))
<https://bugzilla.mozilla.org/show_bug.cgi?id=164822>