xml和html中xmlns的确切用法是什么

时间:2009-09-03 08:12:36

标签: html xml namespaces

有没有人知道HTML,XML文件中xmlns的确切用法是什么?

编辑:为什么我们需要此命名空间?它的用途是什么?

5 个答案:

答案 0 :(得分:9)

xmlns属性具有特殊处理,允许声明命名空间。

文档中的所有名称(如标记名称)都属于命名空间。在没有xmlns属性的情况下,所有名称都属于“无名称”命名空间。因此: -

<root><item /></root>

在上面的示例中,rootitem都是“无名称”命名空间中的名称。鉴于: -

<root xmlns="urn:mydomain.com:mystuff"><item /></root>

“urn:mydomain.com:mystuff”命名空间中现在存在rootitem

xmlns可以进一步定义其他名称空间元素,可以使用别名前缀将其与其他名称空间区分开来: -

<root xmlns="urn:mydomain.com:mystuff" xmlns:a="urn:otherdomain.com:other">
    <item>
       <a:supplement />
    </item> 
</root>

在这种情况下,rootitem继续位于“urn:mydomain.com:mystuff”命名空间中,但a:supplement表示名称supplement位于“urn:otherdomain.com:其他”命名空间。

这有什么作用?

XML中的X代表eXtensible。一个目标是允许附加信息分层到现有文档上,即扩展文档的能力。考虑: -

甲方创建文件: -

 <root>
    <item />
 <root>

乙方通过提供其他信息来扩展文件: -

 <root>
    <item />
    <supplement />
 </root>

后来的甲方将新信息添加到其原始形式的文档中,恰好在其原始文件中也使用了名称supplement。我们最终会得到类似的结果: -

 <root>
    <item />
    <supplement />
    <supplement />
 </root>

哪个补充元素属于哪一方?通过使用名称空间,文档将如下所示: -

 <root xmlns="urn:mydomain.com:mystuff" xmlns:a="urn:otherdomain.com:other">
    <item />
    <supplement />
    <a:supplement />
 </root>

现在,在解析和查询XML时,清楚哪个元素属于谁。命名空间消除了本来是一组全局简单名称之间的冲突。

答案 1 :(得分:6)

xmlns属性声明XML NamespaceNamespaces in XML标准深入讨论了这个元素。

命名空间主要用于在混合XML语言时避免元素名称之间的冲突。如果您对某个特定应用程序有疑问,也许您可​​以发布一个示例。

答案 2 :(得分:2)

XML命名空间有助于将元素的上下文化属性等等。它还为特定元素或属性提供精确标识。

例如,<html>元素可以由任何人定义并具有任何含义。但是, http://www.w3.org/1999/xhtml 命名空间中的<html>元素是唯一的,并且引用了XHTML。

在单个文件中使用多种XML语言时,在处理homographs时,命名空间也很有用。

答案 3 :(得分:2)

在HTML中,xmlns只是一个让您更容易从XHTML移动到XHTML的护身符。它完全没有做任何事情。

答案 4 :(得分:1)

命名空间可以减少重复时的歧义。你可以有一个引用作者的<title>标签和引用称呼的<title>标签,如先生,夫人等。要区分,你可以将它们分配到不同的名称空间。

您还可以在验证文档是否符合特定标准/限制时使用命名空间,其中命名空间将指示文档所属的“架构”。