7

见:https ://www.rfc-editor.org/rfc/rfc3986#section-3

并且:https ://www.rfc-editor.org/rfc/rfc3986#section-3.3

“abempty”的起源对我来说很神秘,快速搜索并没有找到它的任何定义。

4

3 回答 3

8

“abempty”,正如它在您引用的 rfc 中其用法右侧的注释中所述,意味着它的值可以是绝对路径或所以(abempty)。

于 2016-12-30T19:47:31.267 回答
2

“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:///
于 2016-12-30T22:35:47.277 回答
0

鉴于它在RFC 3986 第 3.3 节中的定义和上下文:我相信abemptyabsoluteempty的组合;与带有拉丁语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
  • Path-abempty本质上是一个扩展的 path-absolute,结合了path-empty
  • Path-absolute-or-empty变为path-abempty

免责声明

我的断言完全基于推论猜想,因为我找不到这个词的词源,或者是谁创造了它。因此,如果有人有相关知识,可以反驳或证实:请分享!

于 2018-10-21T13:07:29.083 回答