创建没有域的XML名称空间

通常,教程会告诉您在创建新的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' ?>

为什么不经常使用UUID? UUID名称空间的缺点或基于域的名称空间的优点是什么? 如果你的域名到期,你可能会失去它并且必须改变你的所有名字空间。


没有连接,除非在DNS域名和XML名称空间之间偶然发生。

如果你有一个DNS域名并想在你的XML命名空间中使用它,你可以。 如果您没有DNS域名或不想在XML命名空间中使用它,那也没关系。

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


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

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

urn:uuid会非常有效,但有时更多结构的标识符会更容易被发现,或允许关联相关的命名空间。


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

生成唯一包名的建议惯例仅仅是在现有的,广为人知的唯一名称注册表之上搭载一个包命名约定的方式,而不必为包名创建单独的注册表。

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

UUID

优点:

  • 简单
  • 缺点:

  • 不是人类可读的
  • 网址

    优点:

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

  • 域名花钱并且过期
  • 但他们不花那么多钱。 还有一些免费的域名服务(主要是子域名)。 这些服务并不倾向于可靠或长期存在(您不控制域)。
  • 如果您使用代码托管,则可以使用该项目的URL。
  • 公司发生变化,代码被转移,域名变得无关紧要。
  • 电子邮件

    优点:

  • 几乎每个人都有一封电子邮件,或者如果他们没有,有信誉的公司免费提供。
  • 缺点:

  • 电子邮件的变化,作者的变化,对多个贡献者没有意义,并且变得无关紧要。
  • 标记URI

    从乔的回答。

    优点:

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

  • 与电子邮件/域一样,它们往往会随着时间而改变,并且与项目无关。
  • 什么

    优点:

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

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

    我认为最终的最佳解决方案是UUID,也许是一个规范的项目名称(如果您想更改名称,可能会遇到问题)。 域名/电子邮件与项目无关,只是一种提供唯一性的方式,UUID已经废弃了这种唯一性。

    链接地址: http://www.djcxy.com/p/70135.html

    上一篇: Creating an XML namespace without a domain

    下一篇: Are all URLs also URNs?