根据维基百科,
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
,如果他们只是选择了{{{}},那就不会有任何不同1}},除非很明显它没有在IANA正式注册。
因此,我们应该尝试制作一些独特的东西,并尽最大努力检查它是否正确。正确?
答案 0 :(得分:2)
As far as I know,RFC 6648不会使experimental NIDs (as defined by RFC 3406)无效。
根据RFC 6648的建议,draft for the next RFC about URNs(当前)删除了实验性NID(使x-
使用的URN无效)。
我的直觉说
x-
前缀没有任何好处,因为两个开发人员可以轻松地开始使用urn:x-foo
,如果他们只是选择了{{{}},那就不会有任何不同1}},除非很明显它没有在IANA正式注册。
那么,RFC 3406 defines那个
没有规定避免实验性NID的碰撞
并且他们是
打算在内部或有限的实验环境中使用。
因此,首先,您不应该使用实验性NID,以便其他方(不了解您对这些实验性NID的使用/定义)会遇到它们。
换句话说:实验性NID的碰撞应该是没有问题的,因为每一方都应该只在内部或实验上使用它们,并且不应该期望能够对不受其控制的实验性NID做任何有用的事情。
所以......
如果您只想将URN用于私人目的,您仍然可以使用urn:foo
NID(遵循RFC 3406),直到它被新RFC淘汰。或者,您可以使用example
NID。
如果您想公开/认真地使用URN,您希望它们是唯一的(避免冲突)并定义(使其对其他作者和消费者有用)。那就是URN的重点,对吧?为此,您 注册您的NID。
如果您不想注册,请不要使用URN。还有许多其他URI schemes可供使用(例如Tag URIs)。