问题 xmlns属性有什么作用? [重复]


这个问题在这里已有答案:


4090
2018-05-24 00:06


起源

对不起,水晶球需要清洁。也许您可以发布一些示例XML来向我们展示您在谈论什么? - bmargulies
非常类似于[stackoverflow.com/questions/5838343/... - colinross


答案:


来自 W3Schools的

xmlns属性指定文档的xml命名空间。

这基本上有助于避免不同xml文档之间的命名空间冲突,例如,如果开发人员混合来自不同xml应用程序的xml文档。

这方面的一个例子(也来自W3网站):

用于定义html表的XML数据:

<table>
  <tr>
    <td>Apples</td>
    <td>Bananas</td>
  </tr>
</table>

用于定义咖啡桌信息的XML数据

<table>
  <name>African Coffee Table</name>
  <width>80</width>
  <length>120</length>
</table>

这里有两个表元素,会产生冲突。要解决此问题,您可以添加命名空间以表示哪条信息定义了html表,哪些信息包含有关咖啡桌的信息:

<root>

<h:table xmlns:h="http://www.w3.org/TR/html4/">
  <h:tr>
    <h:td>Apples</h:td>
    <h:td>Bananas</h:td>
  </h:tr>
</h:table>

<f:table xmlns:f="http://www.w3schools.com/furniture">
  <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>


9
2018-05-24 00:11



请不要链接到带有文字“W3标准”的w3schools页面。看到 w3fools.com 。正如标准一样,w3schools在这里并不完全正确 - 它没有指定文档的命名空间 - 它为其出现的元素及其后代元素指定了无前缀元素的命名空间,除非那些后代元素重新定义它。它只有在用XML解析器解析时才有效。 - Alohci
W3Schools不是W3C所以不要写标准。我已编辑此问题以删除该声明。 - Quentin


想象一下,我们都定义了包含标签foobar的xlm模式。你会如何分辨? 如果两者都用在同一份文件中?答案是 - 我们将它们放在不同的命名空间中。这就是xmlns的用途 它类似于java包。


1
2018-05-24 00:12





当XHTML文档作为text / html提供时,通常是, xmlns 属性什么都不做。

当XHTML文档以XML内容类型提供时,该属性指定元素的默认命名空间。在这种情况下,实际影响是,如果省略属性,没有元素具有其HTML含义 - 所有元素都被视为纯XML,这意味着它们没有特殊行为,也没有默认格式,并且文档相当无用,它根本不作为HTML。


0
2017-10-15 07:25