6

根据维基百科,

urn:<NID>:<NSS>

前导 urn: 序列不区分大小写。<NID> 是命名空间标识符,它决定了<NSS>特定于命名空间的字符串的语法解释。RFC 1737 中描述了统一资源名称的功能要求。 [5]

来源:http ://en.wikipedia.org/wiki/Uniform_resource_name

然后它继续说实验性 NID 是前缀X-,然后说:

RFC 6648 不赞成对新 ID 名称使用“X-”表示法,但不建议替换现有的“X-”名称,也不会覆盖需要使用“X-”的现有规范。[7]

那么现在怎么办?

如果我想为私有系统中的某些标识符组成一个 URN,我该如何正确命名它们?

我的直觉说x-前缀没有任何好处,因为两个开发人员可以很容易地开始使用urn:x-foo它,如果他们刚刚选择了它并没有什么不同urn:foo,除了可能很明显它不是正式的在 IANA 注册。

因此,我们应该尝试制作一些独特的东西,并尽最大努力检查它是否存在。正确的?

4

1 回答 1

5

据我所知RFC 6648不会使实验性 NID(由 RFC 3406 定义)无效。

根据RFC 6648 的建议,下一个关于 URN 的 RFC 草案(当前)删除了实验性 NID(使使用x-无效的 URN)。


我的直觉说x-前缀没有任何好处,因为两个开发人员可以很容易地开始使用urn:x-foo它,如果他们刚刚选择了它并没有什么不同urn:foo,除了可能很明显它不是正式的在 IANA 注册。

好吧,RFC 3406定义

没有规定避免实验性 NID 的冲突

他们是

旨在用于内部或有限的实验环境。

因此,首先,您不应该以其他方(不知道您对这些实验性 NID 的使用/定义)会遇到它们的方式使用实验性 NID。
或者换句话说:实验性 NID 的冲突应该没有问题,因为每一方都应该只在内部或实验性地使用它们,并且不应该期望能够对不受其控制的实验性 NID 做任何有用的事情。


所以……</p>

  • 如果您只想将 URN 用于私人目的,您仍然可以使用X-NID(通过遵循 RFC 3406),直到它被新的 RFC 淘汰。或者,您可以从exampleNID铸造 URN 。

  • 如果您想公开/认真地使用 URN,您希望它们是唯一的(避免冲突)和定义的(使它们对其他作者和消费者有用)。这就是 URN 的全部意义,对吧?为此,您必须注册您的 NID。

  • 如果您不想注册,请不要使用 URN。还有许多其他可用的URI 方案(例如,我想到了标记 URI )。

于 2015-05-20T01:02:43.430 回答