创建没有域的 XML 命名空间

use*_*538 6 xml uuid uri namespaces

通常教程会告诉您在创建新的 XML 命名空间时使用自己的域名。不是每个人都拥有域,它需要花钱,而且该站点可能与您使用 XML 的目的无关。

什么是好的替代方案?

这个答案中,示例只有some_identifier,但维基百科说它是一个 URI。URI 可以是 URL 或 URN。

URL 可以提供到模式的链接,但是命名空间的主要目的是作为唯一标识符,因此 URN 更适合。

如何生成唯一标识符?UUID 非常适合用作标识符,所以我搜索了一下, W3C上甚至有一个示例:

<?xml:namespace ns='urn:uuid:C4ED1820-6207-11d1-A29F-00AA00C14882/'
                src='http://www.w3.org' prefix='w3c' ?>
Run Code Online (Sandbox Code Playgroud)

为什么人们不更频繁地使用 UUID?UUID 命名空间的缺点或基于域的命名空间的优点是什么?如果您的域名过期,您可能会丢失它并且必须更改所有命名空间。

use*_*538 1

这个问题是一个类似的问题,除了Java包名称。Java规范建议了域约定,但不是强制性的。他们的选择解释如下:

建议的生成唯一包名称的约定仅仅是在现有的、众所周知的唯一名称注册表之上搭载包命名约定的一种方式,而不必为包名称创建单独的注册表。

以下是一些选项及其主要优点和缺点。

通用唯一标识符

优点:

  • 简单的

缺点:

  • 人类不可读

网址

优点:

  • 传统-“其他人都在使用它”。
  • 您可以链接到提供附加信息的架构/网站。

缺点:

  • 域名需要花钱并且会过期
    • 但它们的成本并不高。还有一些免费的域名服务可用(主要是子域名)。这些服务往往不太可靠或寿命较长(您无法控制域)。
    • 如果您使用代码托管,则可以使用项目的 URL。
  • 公司发生变化,代码发生转移,域名变得无关紧要。

电子邮件

优点:

  • 几乎每个人都有电子邮件,即使没有,也有信誉良好的公司免费提供。

缺点:

  • 电子邮件发生变化,作者发生变化,对于多个贡献者来说毫无意义,而且变得无关紧要。

标签 URI

乔的回答来看

优点:

  • 指定日期可以解决将来不拥有电子邮件/域的问题。

缺点:

  • 与电子邮件/域相同,它们往往会随着时间的推移而变化,并且与项目无关。

任何事物

优点:

  • 简单、快速,适合实验或个人项目。

缺点:

  • 将来可能会与其他名称空间发生冲突。

结论

我认为最终最好的解决方案是 UUID 加上规范的项目名称(如果您想更改名称,可能会遇到问题)。域名/电子邮件与项目无关,只是提供唯一性的一种方式,而这种方式已被 UUID 所淘汰。