#?SuikaWiki/0.9
-[1] ''Another HTML-lint : Explanation''
正しくない [[URI]] の例が幾つかあります。
[[#comment]]
* RFC 2068 の定義
[2] [[RFC2068]] 3.2 で規定されています。
ただし、 [[HTTP]] で使うための
[[URI]] の定義であって、一般の場面の
URI としての定義ではないことに注意が必要です。
具体的には、本来 URI
では使えないはずの [[national]]
の文字が認められていたりします。
- http_URL = "http:" "//" host [ ":" port ] [ abs_path ]
- host =
-- = uri.[[host]] ;; = hostname / [[IPv4address]]
- port = *DIGIT
- relativeURI = net_path | abs_path | rel_path
- net_path = "//" net_loc [ abs_path ]
- abs_path = "/" rel_path
- rel_path = [ path ] [ ";" params ] [ "?" query ]
- path = fsegment *( "/" segment )
- fsegment = 1*pchar
-- = 1*((OCTET - unsafe) / escaped)
- segment = *pchar
-- = *((OCTET - unsafe) / escaped)
- params = param *( ";" param )
- param = *( pchar | "/" )
-- = *((OCTET - unsafe) / escaped)
- scheme = 1*( ALPHA | DIGIT | "+" | "-" | "." )
- net_loc = *( pchar | ";" | "?" )
-- = *((OCTET - unsafe) / escaped)
- query = *( uchar | reserved )
-- = *(([[OCTET]] - [[unsafe]]) / [[escaped]])
- fragment = *( uchar | reserved )
-- = *((OCTET - unsafe) / escaped)
なんかこの構文破綻してる気がしますが。。。
例えば [CODE(ABNF)[segment = 2068.segment - "/"]]
と定義しておかないと[[欲張り]]過ぎるんじゃ?
- [3] 仕様の詳細は [CODE(WikiPage)[[[HTTP//URI]]]] を参照されたし。