1 |
wakaba |
1.1 |
#?SuikaWiki/0.9
|
2 |
|
|
[1] 【[[XPath]]】 [DFN[節検査]] (node test,
|
3 |
|
|
<http://www.w3.org/TR/xpath#node-tests>)
|
4 |
|
|
は、[[位置段階]]の必須の部分で、
|
5 |
|
|
[[節]]の種類や名前が一致するかを検査します。
|
6 |
|
|
|
7 |
|
|
- [CODE(ABNF)[[DFN[節検査]] := 名前検査 / 節検査関数]]
|
8 |
|
|
- [CODE(ABNF)[[DFN[名前検査]] := [ [[WSP]] ] [ [[名前空間接頭辞]] ":" ] ([[局部名]] / "*") [WSP] ]]
|
9 |
|
|
- [CODE(ABNF)[節検査関数 := 節検査関数名 [WSP] "(" [引数並び] ")" [WSP] ]]
|
10 |
|
|
[2] 名前検査は、型が[[主要節型]]である節のうち、
|
11 |
|
|
名前が一致する節の場合に[[真]]となります。
|
12 |
|
|
接頭辞がある場合、その[[文脈]]で解決した[[名前空間URI]]
|
13 |
|
|
と節の名前空間 URI の一致をみます。
|
14 |
|
|
接頭辞が無い場合は、 [CODE[null]] 名前空間とみなされます。
|
15 |
|
|
局部名が [CODE(XPath)[[[*]]]] の場合は、
|
16 |
|
|
名前空間 URI が一致する全ての節が真となります。
|
17 |
|
|
|
18 |
|
|
名前検査が [CODE(XPath)[*]] で接頭辞が無い時は、
|
19 |
|
|
その型が主要節型である全ての節と一致します。
|
20 |
|
|
|
21 |
|
|
接頭辞を解決できない場合は[[誤り]]とします。
|
22 |
|
|
|
23 |
|
|
[3] 節検査関数は、次のものが定義されています。
|
24 |
|
|
,関数 ,一致する節
|
25 |
|
|
,[CODE(XPath)[[[[comment]] ()]] ,[[注釈節]]
|
26 |
|
|
,[CODE(XPath)[[[[node]] ()]] ,全ての節
|
27 |
|
|
,[CODE(XPath)[[[[processing-instruction]] ( [ [VAR[[[表記]]]] ] )]],[ [[対象名]]が引数と一致する ] [[処理指令節]]
|
28 |
|
|
,[CODE(XPath)[[[text]] ()]] ,[[文節]]
|
29 |
|
|
|
30 |
|
|
[4] >>3 つまらないことに [CODE(XPath)[processing-instruction]]
|
31 |
|
|
の引数は表記であって任意の文字列じゃないのね。
|
32 |
|
|
|
33 |
|
|
[5] 例:
|
34 |
|
|
- [SAMP(XPath)[foo]]
|
35 |
|
|
-- 真 [SAMP(XML)[foo]]
|
36 |
|
|
-- 偽 [SAMP(XML)[{http://ns.example/}:foo]]
|
37 |
|
|
- [SAMP(XPath)[foo:bar]] ([SAMP(XML)[[[xmlns]]:foo="http://ns.example/"]])
|
38 |
|
|
-- 偽 [SAMP(XML)[bar]]
|
39 |
|
|
-- 真 [SAMP(XML)[foo:bar]] ([SAMP(XML)[xmlns:foo="http://ns.example/"]])
|
40 |
|
|
-- 偽 [SAMP(XML)[foo:bar]] ([SAMP(XML)[xmlns:foo="ftp://ns.example/"]])
|
41 |
|
|
-- 真 [SAMP(XML)[baz:bar]] ([SAMP(XML)[xmlns:baz="http://ns.example/"]])
|
42 |
|
|
- [SAMP(XPath)[baz:bar]] ([SAMP(XML)[xmlns:baz]] = ??)
|
43 |
|
|
-- 誤り
|
44 |
|
|
- [SAMP(XML)[*]]
|
45 |
|
|
-- 真 [SAMP(XML)[foo]]
|
46 |
|
|
-- 真 [SAMP(XML)[bar]]
|
47 |
|
|
-- 真 [SAMP(XML)[foo:bar]]
|
48 |
|
|
- [SAMP(XML)[foo:*]] ([SAMP(XML)[xmlns:foo="http://ns.example/"]])
|
49 |
|
|
-- 偽 [SAMP(XML)[foo]]
|
50 |
|
|
-- 真 [SAMP(XML)[foo:bar]] ([SAMP(XML)[xmlns:foo="http://ns.example/"]])
|
51 |
|
|
-- 偽 [SAMP(XML)[foo:bar]] ([SAMP(XML)[xmlns:foo="ftp://ns.example/"]])
|
52 |
|
|
-- 真 [SAMP(XML)[bar:bar]] ([SAMP(XML)[xmlns:bar="http://ns.example/"]])
|
53 |
|
|
|
54 |
|
|
[6] [CODE(XPath)[*:foo]] みたいな書き方は出来ないわけですね。
|
55 |
|
|
まあこんなもの役に立つとは思えませんが。
|
56 |
|
|
|
57 |
|
|
|
58 |
|
|
|