【发布时间】:2010-11-25 05:12:14
【问题描述】:
有人知道xmlns 在 HTML、XML 文件中的确切用法吗?
编辑:为什么我们需要这个命名空间?它的用途是什么?
【问题讨论】:
标签: html xml namespaces
有人知道xmlns 在 HTML、XML 文件中的确切用法吗?
编辑:为什么我们需要这个命名空间?它的用途是什么?
【问题讨论】:
标签: html xml namespaces
xmlns 属性声明了一个XML Namespace。 Namespaces in XML 标准深入讨论了这个元素。
命名空间主要用于避免混合 XML 语言时元素名称之间的冲突。如果您对某个特定的应用程序有疑问,也许您可以发布一个示例。
【讨论】:
命名空间可让您在存在重复项时减少歧义。您可以有一个引用作者的<title> 标签和一个引用称呼的<title> 标签,例如先生、夫人等。为了区分,您可以将它们分配到不同的命名空间。
您还可以在验证文档是否符合特定标准/限制时使用命名空间,其中命名空间将指示文档所属的“架构”。
【讨论】:
XML 命名空间有助于将元素和属性等上下文化。它还提供特定元素或属性的精确标识。
例如,<html> 元素可以由任何人定义并具有任何含义。但是,http://www.w3.org/1999/xhtml 命名空间中的 <html> 元素是唯一的,并且引用 XHTML。
在处理homographs、在单个文件中使用多种 XML 语言时,命名空间也很有用。
【讨论】:
xmlns 属性具有特殊处理,允许声明命名空间。
文档中的所有名称,例如标签名称,都属于一个命名空间。在没有xmlns 属性的情况下,所有名称都属于“无名称”命名空间。因此:-
<root><item /></root>
在上面的示例中,root 和 item 都是“无名称”命名空间中的名称。鉴于:-
<root xmlns="urn:mydomain.com:mystuff"><item /></root>
现在root 和item 存在于“urn:mydomain.com:mystuff”命名空间中。
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:other”中" 命名空间。
这样做有什么用?
XML 中的 X 代表可扩展。一个目标是允许将附加信息分层到现有文档上,即扩展文档的能力。考虑:-
甲方创建文件:-
<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 时,它清楚哪个元素属于谁。命名空间消除了原本是一组简单名称的全局集合之间的冲突。
【讨论】:
在 HTML 中,xmlns 只是一个护身符,可以更轻松地从 XHTML 迁移到 XHTML。它根本没有做任何事情。
【讨论】: