例子
显然,这是一个有效的 XML 文档(从http://www.lenzconsulting.com/namespaces/复制)。
<?xml version="1.1"?>
<my:doc xmlns:my="http://xmlportfolio.com/xmlguild-examples">
<simple xmlns:my="">
<remark>We don't use namespaces.</remark>
</simple>
</my:doc>
然而,它似乎违反了Namespace 1.1 规范中的“Prefix Declared”命名空间约束。
命名空间约束:前缀声明
命名空间前缀,除非它是 xml 或 xmlns,必须在命名空间声明属性中声明在使用前缀的元素的开始标记或祖先元素(即,其内容中出现前缀标记的元素)。此外,最里面的此类声明中的属性值不得为空字符串。
请注意最后一句“最里面的此类声明中的属性值不得为空字符串”以及它如何应用于上述文档元素中的my:
未声明。simple
这肯定是最里面的这样的声明吗?
我对此的解读是,您不能取消声明前缀,除非您有一个重新声明它的子元素。
问题
- 上述 XML 文档对于 Namespaces 1.1 是否有效?
- 如果是这样,我是如何误解规范的?答案能否给出满足和违反此约束的示例和反例?
- 如果不是,取消声明的价值是什么?