如何选择新XML语言的命名空间名称?

时间:2010-11-19 00:45:11

标签: xml programming-languages xsd

我已经创建了一种基于XML的(特定于域的)语言,我希望它能被广泛使用。要“实现”它我正在使用xsd文件。

到目前为止,我已经使用了像这样的URL作为xml语言命名空间:

http://languagemainsite.org/lang/1.0/

现在,我不确定这是长期选择命名空间的最佳方式:

  1. 也许命名空间中的版本号太过分了?它已经在“版本”属性中定义,但我认为每个版本有不同的URL会很好吗?
  2. 为此使用网址总是好的吗?
  3. ????
  4. 有关为基于xml的语言命名命名空间的任何建议吗?

2 个答案:

答案 0 :(得分:2)

如果命名空间foo中的http://languagemainsite.org/lang/1.0/元素在语义上与命名空间foo中的http://languagemainsite.org/lang/1.1/元素不同,则命名空间应该不同。如果他们不是 - 如果Lang-1.1 foo只是一个Lang-1.0 foo,可能还有一些额外的功能 - 它们应该在同一名称空间中。

例如,考虑XHTML 1.0,XHTML 1.1和XHTML5中的<p>元素。在所有版本的XHTML中,它在语义上都是相同的(段落),因此它们都可以存在于http://www.w3.org/1999/xhtml命名空间中,即使它们在不同语言版本中具有不同的功能。

在命名空间中包含版本号会使向后兼容性变得非常困难。支持两种语言版本的应用程序必须切换命名空间以应对相同的命名元素,而支持版本1的应用程序实际上根本无法读取版本2文档。

因此,仅对新的“主要版本”更新使用版本化命名空间,故意完全降低向后兼容性。否则,根元素上的version属性通常是更好的主意。

是的,您应该使用URL,以避免与其他人的命名空间发生冲突。在您使用的URL上添加一些描述性信息是礼貌的。

答案 1 :(得分:0)

我认为这看起来像一个合理的命名空间URI。

版本号;我认为这是一个好主意。不能使用xml声明中的版本号(它必须是1.0,或者可能是1.1,并且指示xml解析本身如何工作而不是包含数据或语言的版本。这是一种常用的做法,我看不到太多价值不包括在那里。