gpt4 book ai didi

XML:带有空 URI 的命名空间

转载 作者:行者123 更新时间:2023-12-04 16:59:57 26 4
gpt4 key购买 nike

为什么 XML 验证器不允许使用空的命名空间 URI?它是验证器( http://www.xmlvalidation.com )特性还是一般的 XML 特性?

<?xml version="1.0"?>
<root xmlns:em="">
<em:elem/>
</root>

在命名空间 URI 中使用任何字符串是否有效? (例如 xmlns="abcd")

最佳答案

在 namespace 声明中使用空字符串在 XML namespace 1.1 中具有特定含义:它将其变成“未声明”,因此在其范围内,前缀“em”不与任何 URI 相关联。但是 XML Namespaces 1.1 从未被用户或 XML 解析器编写者广泛采用。

XML Namespaces 1.0 明确规定(第 2.2 节):空字符串虽然是合法的 URI 引用,但不能用作命名空间名称。

问题“在命名空间 URI 中使用任何字符串是否有效?”的答案是一个复杂的。 XML 命名空间规范一方面说:

 An XML namespace is identified by a URI reference


    The attribute's normalized value MUST be either a URI reference — 
the namespace name identifying the namespace — or an empty string.

它还说:
    The use of relative URI references, including 
same-document references, in namespace declarations
is deprecated.

(您的示例 xmlns:p="abcd" 使用相对 URI 引用。)

但是,在定义一致性规则(第 7 节)时,并没有说一致性文档必须在其命名空间声明中使用有效的 URI,而且我知道这是一个深思熟虑的决定(因为我当时对此提出了质疑)。在实践中,绝大多数 XML 解析器和应用程序允许任何字符串作为命名空间名称,但也有一些异常(exception),例如 XOM 库,我建议任何人选择绝对 URI 作为良好实践。

关于XML:带有空 URI 的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44275997/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com