见:https ://www.rfc-editor.org/rfc/rfc3986#section-3
并且:https ://www.rfc-editor.org/rfc/rfc3986#section-3.3
“abempty”的起源对我来说很神秘,快速搜索并没有找到它的任何定义。
见:https ://www.rfc-editor.org/rfc/rfc3986#section-3
并且:https ://www.rfc-editor.org/rfc/rfc3986#section-3.3
“abempty”的起源对我来说很神秘,快速搜索并没有找到它的任何定义。
“abempty”,正如它在您引用的 rfc 中其用法右侧的注释中所述,意味着它的值可以是绝对路径或空所以(abempty)。
“Abempty”,意思是远离空虚,描述了路径与其先前权威的关系。在 path-abempty 相关的地方,hier-part 由“//”、权限和 path-abempty 组成。权限组件的长度可能为零——scheme:/// 是一个有效的 URI。
但是,当权限为零长度且路径为空时,无法区分这两个组件,因此是无路径路径 - 根据情况“以“/”开头或为空”(第 3.3 节) .
资料来源:http : //w3-org.9356.n7.nabble.com/path-abempty-in-URI-td170118.html(参见菲尔丁对 Petch 的回应。)
注意“abempty”这个词不是绝对和空的词的组合。
请:
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
在“通用”URI 的上下文中,hier-part 不是可选的。
hier-part = ("//" authority path-abempty) / path-absolute / path-rootless / path-empty
有趣的是,双斜线在与路径无关的情况下不是可选的。而且,向前跳跃一点,权限可能是零长度的:
reg-name = *( unreserved / pct-encoded / sub-delims )
Path-abempty 是相关的,层次部分由“//”、权限和 path-abempty 组成。Path-abempty 定义为:
path-abempty = *( "/" segment )
RFC 规定,“当授权存在时,路径必须为空或以斜杠 ("/") 字符开头。” 如果 reg-name 的长度为零,那么随意阅读该语句可能会表明以下 URI 是有效的:
scheme://
它不是。下一句指出,“当权限不存在时,路径不能以两个斜线字符 ('//') 开头。” 这意味着在解析以“scheme://”开头的 URI 时,我们指出了零长度权限和零长度路径的可能性 - 否则我们可能会停在那里,因为 URI 将是无效的。
在这种情况下,无论如何都不是常见的情况,零长度权限无法从零长度路径中辨别出来。因此,当权限为零长度时,我们没有选择,路径必须以正斜杠开头(更准确地说,它必须匹配 path-abempty)并从权限中识别路径;否则,我会再说一遍:URI 将是无效的。
“abempty”一词并不意味着路径可能是绝对的或空的。这个词的意思是路径必须区别于权威,因此它是abempty,即远离空。
例子:
这个 URI 是模棱两可的,因为即使它具有长度为零的权限和长度为零的路径,也无法将其与忽略权限且路径以两个正斜杠开头的无效 URI 区分开来。
scheme://
这个 URI 没有歧义,因为它清楚地包含一个零长度权限和一个无路径路径。
scheme:///
鉴于它在RFC 3986 第 3.3 节中的定义和上下文:我相信abempty是absolute和empty的组合;与带有拉丁语ab前缀的空相反。
可能的路径模式定义为:
path-abempty = *( "/" segment ) ; begins with "/" or is empty
path-absolute = "/" [ segment-nz *( "/" segment ) ] ; begins with "/" but not "//"
path-noscheme = segment-nz-nc *( "/" segment ) ; begins with a non-colon segment
path-rootless = segment-nz *( "/" segment ) ; begins with a segment
path-empty = 0<pchar> ; zero characters
我的断言完全基于推论猜想,因为我找不到这个词的词源,或者是谁创造了它。因此,如果有人有相关知识,可以反驳或证实:请分享!