広告
広告
https://www.7key.jp/rfc/2396/rfc2396_c.html#source
https://www.7key.jp/rfc/2396/rfc2396_c.html#translation
Within an object with a well-defined base URI of http://a/b/c/d;p?q the relative URI would be resolved as follows:
形式の整った基底URIhttp://a/b/c/d;p?q
を持つオブジェクト内で、相対URIは次のように解決されるだろう。
g:h = g:h g = http://a/b/c/g ./g = http://a/b/c/g g/ = http://a/b/c/g/ /g = http://a/g //g = http://g ?y = http://a/b/c/?y g?y = http://a/b/c/g?y #s = (current document)#s g#s = http://a/b/c/g#s g?y#s = http://a/b/c/g?y#s ;x = http://a/b/c/;x g;x = http://a/b/c/g;x g;x?y#s = http://a/b/c/g;x?y#s . = http://a/b/c/ ./ = http://a/b/c/ .. = http://a/b/ ../ = http://a/b/ ../g = http://a/b/g ../.. = http://a/ ../../ = http://a/ ../../g = http://a/g
Although the following abnormal examples are unlikely to occur in normal practice, all URI parsers should be capable of resolving them consistently. Each example uses the same base as above.
以下の異常な例は通常起こり得ないが、全てのURIパーサはこれらも同様に解決できることが望ましい。各例ともに基底URIにはhttp://a/b/c/d;p?q
を用いる。
An empty reference refers to the start of the current document. <> = (current document)
空の参照は、現在の文書の先頭を参照する。
Parsers must be careful in handling the case where there are more relative path ".." segments than there are hierarchical levels in the base URI's path. Note that the ".." syntax cannot be used to change the authority component of a URI. ../../../g = http://a/../g ../../../../g = http://a/../../g
基底URIのパスに含まれる階層よりも相対パスの".."セグメントの数が多い場合、パーサはその扱いに注意しなければならない。".."という構文がURIのオーソリティ成分の変更には用い得ないことに注意せよ。
In practice, some implementations strip leading relative symbolic elements (".", "..") after applying a relative URI calculation, based on the theory that compensating for obvious author errors is better than allowing the request to fail. Thus, the above two references will be interpreted as "http://a/g" by some implementations.
実際は、要求を失敗に終らせるよりも作者の明白なエラーを補正した方がより良いとの考えから、処理系によっては相対URIの確定後に相対記号要素("."と"..")を取り除くものもある。したがって、上記の2つの参照は処理系によってはhttp://a/g
と解釈されることとなる。
Similarly, parsers must avoid treating "." and ".." as special when they are not complete components of a relative path. /./g = http://a/./g /../g = http://a/../g g. = http://a/b/c/g. .g = http://a/b/c/.g g.. = http://a/b/c/g.. ..g = http://a/b/c/..g
同様に、パーサは"."と".."が相対パスの完全なコンポーネントではない場合、特別な扱いを避けなければならない。
Less likely are cases where the relative URI uses unnecessary or nonsensical forms of the "." and ".." complete path segments. ./../g = http://a/b/g ./g/. = http://a/b/c/g/ g/./h = http://a/b/c/g/h g/../h = http://a/b/c/h g;x=1/./y = http://a/b/c/g;x=1/y g;x=1/../y = http://a/b/c/y
あまりないことではあるが、"."や".."の完全なパスセグメントが相対URIにおいて不必要或いは無意味な形式で用いられることもある。
All client applications remove the query component from the base URI before resolving relative URI. However, some applications fail to separate the reference's query and/or fragment components from a relative path before merging it with the base path. This error is rarely noticed, since typical usage of a fragment never includes the hierarchy ("/") character, and the query component is not normally used within relative references. g?y/./x = http://a/b/c/g?y/./x g?y/../x = http://a/b/c/g?y/../x g#s/./x = http://a/b/c/g#s/./x g#s/../x = http://a/b/c/g#s/../x
あらゆるクライアントアプリケーションは、相対URIを解決する前に基底URIからクエリコンポーネントを除去する。しかし、アプリケーションによっては基となるパスと結合する前に、相対パスからクエリー成分とフラグメント識別子の両方或いは片方を分割できないものがある。フラグメント識別子は通常階層文字("/")を含まず、クエリコンポーネントは通常相対参照内では用いられないため、このエラーはあまり注意を払われない。
Some parsers allow the scheme name to be present in a relative URI if it is the same as the base URI scheme. This is considered to be a loophole in prior specifications of partial URI [RFC1630]. Its use should be avoided. http:g = http:g ; for validating parsers | http://a/b/c/g ; for backwards compatibility
パーサによっては、基底URIのスキームと同じであれば相対URI中にスキーム名を含むことを許すものがある。これは既知の一部URI仕様書[RFC1630]のための抜け道と考えられるが、この方法は避けるべきである。
広告