现在不推荐使用 X- 适当的 URN 命名空间?

Posted

技术标签:

【中文标题】现在不推荐使用 X- 适当的 URN 命名空间?【英文标题】:Appropropriate URN namespace now that X- is deprecated? 【发布时间】:2014-10-31 22:23:25 【问题描述】:

就在 2002 年,IETF 在 RFC 3406 中建议我们应该为我们不想注册的 URN 命名空间使用 x- 前缀,例如urn:x-acme:foobar。现在 IETF 已弃用 RFC 6648 中的 x- 前缀,我们应该如何为我们不打算注册的命名空间构造 URN?

顺便说一句,我注意到 RFC 6648 特别提到了 URN:“在几乎所有使用协议参数的应用程序协议中(包括 ... URN ...),名称空间不受任何限制或约束,因此无需为私人使用或实验目的分配一组名称。”我觉得这很奇怪,正如 RFC 3406 声称的那样,“URN 命名空间的空间是受管理的。也就是说,并非所有语法正确的 URN 命名空间(根据 URN 语法定义)都是有效的 URN 命名空间。”

那么对于自定义但未注册的 URN 命名空间,最好使用什么?我可以放弃x- 并使用我的示例公司Acme 的URN,例如urn:acme:foobar

【问题讨论】:

出于兴趣,如果您不想注册您的 NID,为什么要首先使用urn?你不能使用不同的 URI 方案吗? URN 更漂亮。 http 方案 URL 让那些在资源识别等方面没有受过良好培训的开发人员感到困惑。但这并不重要。我只想使用urns。它们正是为我想做的而制作的。 IETF 说我不再需要使用 x- 前缀,并且“名称空间不受任何限制或约束”。那么有什么推荐的呢?这就是问题所在,即使我后来决定在这个特定项目中不使用 URN,这个问题仍然相关且有用。 【参考方案1】:

RFC 6648 says:

不会覆盖现有规范,这些规范规定将“X-”用于特定应用程序协议 […];这是那些协议的设计者的事。

所以使用实验性 NID as defined by RFC 3406 仍然没问题。

而 RFC 6648 recommends 用于新协议(以及,我假设,现有协议的更新)基本上就是 URN 目前的情况(减去实验性的 X- 前缀):

NID 有一个“潜在的无限价值空间” 定义了“明确的注册程序”(我不知道他们在“简单”下的理解是什么)

因此,如果实验性的 X- NID 在更新的 RFC 中被弃用,我不希望有替代注册 NID 的方法。

如果您不想注册 NID(甚至不是 Informal NID),您可能需要使用不同的 URI 方案。想到tag (tag:example.com,2013:foobar)。

【讨论】:

感谢分享标签!我喜欢“联合”铸造新标识符的想法。标签方案当然符合要求。任何拥有域或电子邮件地址的人都可以创建它们!

以上是关于现在不推荐使用 X- 适当的 URN 命名空间?的主要内容,如果未能解决你的问题,请参考以下文章

Python UUID - 使用命名空间处理 URN

更好地使用 urn 或 url 作为 wpf 中的命名空间

Unicode 字符是不是存在已知的 URI 方案或 URN 命名空间?

你能举一个私人使用的URN的例子吗

Chromecast v3|安卓 |如何使用自定义命名空间?

XML名命空间