-
Notifications
You must be signed in to change notification settings - Fork 4
/
146.txt
45 lines (32 loc) · 2.04 KB
/
146.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
- [1] [CODE(ABNF)[[DFN[path]] = [[fsegment]] *( "/" [[segment]] ) ;; [[RFC 1808]]]]
- [5] [CODE(ABNF)[[DFN[path]] := [ abs_path / opaque_part ] ;; [[RFC 2396]]]]
[4] RFC 1808 の [CODE(ABNF)[path]] は、 2396 では [CODE(ABNF)[[[path_segments]]]] に当たります。
[2] >>1 [CODE(ABNF)[[DFN[fsegment]] := 1*[[pchar]]]], [CODE(ABNF)[[DFN[segment]] := *pchar]] です。
最初の部分が必ず1文字ないといけないのは、
空を許すとすると [CODE(ABNF)[[[abs_path]]]] で
[SAMP(URI)[//foo]] のようなものが認められることなり、
[CODE(ABNF)[[[net_path]]]] と区別できなくなってしまうからでしょう。
[3] [[RFC 2396]] では、 [CODE[<path>]] は
[CODE(ABNF)[[[abs_path]]]] 又は [CODE(ABNF)[[[opaque_part]]]]
のことを指します。これらは排他的なので曖昧なく区別できます。
(RFC 2396 3.)
[6] 2396 によれば、 path segment では [CODE(regex)[ [/;=?] ]]
が[[予約]]されています。 [CODE(URI)[=]]
は[[引数]]で使われるのですが、
最初の引数のセミコロンより前では意味を持たないはずです。
それでも予約されています。
あ、よくみると、引数でも [CODE(URI)[=]] は定義されていませんね。
つまり、引数だろうがなかろうが、経路 segment 内では
[CODE(URI)[=]] と [CODE(URI)[%3D]] は必ずしも等価ではなく、
うかつに (un)escape してはいけないということです。
[7]
[CITE[The Path URN Specification]] ([CODE[1999-03-16 02:27:52 +09:00]] 版) <http://www.hypernews.org/~liberte/www/path.html>
([[名無しさん]])
[8]
<urn:ietf:id:draft-ietf-uri-urn-path-01>
* 比較
[9] [[Path]] に関する[[比較演算]]として [[path一致]]があります。
[11] [[隣接異体]]の定義では、[[HTTPにおけるURLの比較]]を用いつつ、
[[ディレクトリー]]部分までの[[パス]]の一致を使っています。
* 関連
[10] [CODE(URI)@en[[[/]]]] から始まる [[path]] を[[絶対パス]]といいます。