2016-03-01 137 views
1

之间的区别是什么XML命名空间前缀:二片段

<ns:MyRequest xmlns:ns="http://my.namespace"> 
     <node_a>2016-02-29T08:50:00</node_a> 
     <node_b></node_b> 
</MyRequest> 

<MyRequest xmlns="http://my.namespace"> 
     <node_a xmlns="">2016-02-29T08:50:00</node_a> 
     <node_b xmlns=""></node_b> 
</MyRequest> 
+1

没有区别。在这两种情况下,附加的命名空间uris都附加在等效节点上。 – potame

回答

3

从XML信息模型视角之间的区别,它们是相同的:如果有这样的事情一个“扩展元素名称”的语法,在这两种情况下文档看起来都是这样的:

<{http://my.namespace}MyRequest> 
    <{}node_a>2016-02-29T08:50:00</{}node_a> 
    <{}node_b></{}node_b> 
</{http://my.namespace}MyRequest> 
+0

正如我怀疑,但我需要独立确认。 – Karol

2

正如@potame中提到的评论(现在@四十二刚刚在另一个答案中再次肯定了扩展名称(+1)),这两种形式相当于。有无数的词汇方式可以用来指定等价的命名空间XML。

注:

  • 这是相关联的命名空间URI,而不是到底重要的前缀。
  • 第二种形式使用默认的命名空间,如果没有这将适用于 子节点,node_anode_b,对于xmlns="",这 重置默认和叶node_anode_b没有命名空间, 就像在第一形成。
+0

就像我怀疑的一样。作为一个侧面说明,事实证明,它使得我试图使用SOAP服务的区别... – Karol

+0

有趣,可信和不幸。 – kjhughes

1

虽然这是传统的智慧前缀的选择应该没有什么区别,许多编程数据模型(包括DOM和XPath)露出了前缀,这使得它非常容易编写停止,如果有人选择工作的应用程序一个不同的前缀。所以当我们说“没有区别”时,我们的意思是“一个正确书写的应用程序应该将它们视为等同的”。不幸的是,很多处理XML数据的程序员并不理解XML的微妙特性,因此写入不当的应用程序相当普遍。