创建没有域的XML命名空间

创建没有域的XML命名空间,xml,namespaces,uri,uuid,Xml,Namespaces,Uri,Uuid,通常,教程会告诉您在创建新的XML命名空间时使用自己的域名。并不是每个人都拥有一个域,它需要花钱,而且该站点可能与您使用XML的目的无关 什么是好的选择 在中,示例中只有一些_标识符,但表示它是一个URI。URI可以是URL或URN URL可以提供指向模式的链接,但是名称空间的主要目的是作为唯一标识符,因此URN更适合 如何生成唯一标识符?UUID对于标识符很有用,所以我搜索了一下,甚至有一个关于: 为什么人们不更频繁地使用UUID?UUID名称空间的缺点或基于域的名称空间的优点是什么?如果

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

什么是好的选择

在中,示例中只有一些_标识符,但表示它是一个URI。URI可以是URL或URN

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

如何生成唯一标识符?UUID对于标识符很有用,所以我搜索了一下,甚至有一个关于:



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

除了DNS域名和XML名称空间之间的偶然性之外,没有任何连接

如果您有一个DNS域名,并且希望在XML名称空间中使用它,则可以。如果您没有DNS域名或不想在XML命名空间中使用它,也可以


UUID通常不用于XML名称空间,因为它们不是很有意义-类似于通常在IP地址上使用主机名和域名。

如果您想要一个可读的全局唯一标识符,只需要在某个时间点声明域或电子邮件地址的所有权,则可以使用。例如:

tag:user@example.com,2007-11-02:Tag_URI
一个
urn:uuid
将是完全有效的,但有时具有更多结构的标识符可能更容易发现,或者允许关联相关的名称空间。

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

建议的生成唯一包名的约定只是一种在现有的、广为人知的唯一名称注册表上附加包命名约定的方法,而不必为包名创建单独的注册表

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

UUID 优点:

  • 简单的
缺点:

  • 不可读
统一资源定位地址 优点:

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

  • 域名要花钱并且过期
    • 但是它们没有那么贵。还有一些可用的免费域服务(主要是子域)。这些服务往往没有那么可靠或寿命长(您无法控制域)
    • 如果使用代码托管,则可以使用项目的URL
  • 公司变更,代码转移,域变得无关
电子邮件 优点:

  • 几乎每个人都有一封电子邮件,如果没有,也有信誉良好的公司免费提供
缺点:

  • 电子邮件变了,作者也变了,有多个投稿人就没有意义了,而且变得无关紧要了

优点:

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

  • 与电子邮件/域相同,它们往往会随着时间的推移而变化,并且与项目无关
任何东西 优点:

  • 简单,快速,适合实验或个人项目
缺点:

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

tag:user@example.com,2007-11-02:Tag_URI