有没有人知道HTML,XML文件中xmlns
的确切用法是什么?
编辑:为什么我们需要此命名空间?它的用途是什么?
答案 0 :(得分:9)
xmlns
属性具有特殊处理,允许声明命名空间。
文档中的所有名称(如标记名称)都属于命名空间。在没有xmlns
属性的情况下,所有名称都属于“无名称”命名空间。因此: -
<root><item /></root>
在上面的示例中,root
和item
都是“无名称”命名空间中的名称。鉴于: -
<root xmlns="urn:mydomain.com:mystuff"><item /></root>
“urn:mydomain.com:mystuff”命名空间中现在存在root
和item
。
xmlns
可以进一步定义其他名称空间元素,可以使用别名前缀将其与其他名称空间区分开来: -
<root xmlns="urn:mydomain.com:mystuff" xmlns:a="urn:otherdomain.com:other">
<item>
<a:supplement />
</item>
</root>
在这种情况下,root
和item
继续位于“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 Namespace。 Namespaces 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>
标签,如先生,夫人等。要区分,你可以将它们分配到不同的名称空间。
您还可以在验证文档是否符合特定标准/限制时使用命名空间,其中命名空间将指示文档所属的“架构”。