在XML 1.1中取消声明名称空间和“已声明前缀”名称空间约束

肖恩·B·杜金

显然,这是有效的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当然这是最内在的声明了吗?

我的理解是,除非您有一个子元素可以重新声明前缀,否则您不能取消声明前缀。

  1. 上面的XML文档对于命名空间1.1是否有效?
  2. 如果是这样,我怎么会误解规格?答案能否给出满足和违反此约束的示例和反示例?
  3. 如果没有,取消声明的价值是什么?
迈克尔·凯
  1. 是的,根据命名空间1.1,它是有效的(技术上来说,是“格式正确的命名空间”)

  2. 您引用的规则是指元素和属性名称(例如my:element或my:attribute)的有效性,并且是与此类名称中前缀“ my”的有效性有关的规则。您没有任何带有前缀“ my”的元素或属性,名称空间声明xmlns:my是最里面的声明,因此您没有违反规则。

  3. 未声明的值很小。这是一个很大的错误:为了解决一个小问题,在规范中增加了痛苦的部分。微小的问题是“命名空间污染”:例如,如果将一些XML有效负载包装在SOAP信封中,则SOAP名称空间会渗透到您的有效负载中,而当提取有效负载时,很难摆脱SOAP名称空间。命名空间声明旨在解决该问题。但是它几乎从未使用过,因为在实践中,每个人都会忽略不必要的未使用的命名空间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

未前缀子元素的XML名称空间,其中父元素已声明xmlns:prefix

来自分类Dev

获取XML元素的名称空间前缀和名称空间绑定

来自分类Dev

读取XML和未声明的名称空间

来自分类Dev

c#XML序列化:名称空间声明的顺序

来自分类Dev

XML中的名称空间需求

来自分类Dev

XML名称空间前缀错误

来自分类Dev

“此页面要求使用前缀p声明的XML名称空间,但该名称空间不存在标记库。”

来自分类Dev

如何控制XML中的名称空间前缀?

来自分类Dev

xml名称空间出现xml

来自分类Dev

如何在JAVA中编码默认名称空间和带有单个XML元素前缀的名称空间

来自分类Dev

是否需要在根元素中声明XML名称空间,以便XPath查询可以匹配它?

来自分类Dev

在Java DOM中创建以名称空间为前缀的XML节点

来自分类Dev

默认声明哪些XML名称空间?

来自分类Dev

警告:此页面需要使用前缀XXX声明的XML名称空间http://xmlns.jcp.org/jsf/XXX,但该名称空间不存在标记库

来自分类Dev

使用FOR XML EXPLICIT时删除xmlns =“”名称空间声明

来自分类Dev

如何使用声明的名称空间创建XML?

来自分类Dev

使用Unmarshal在Go中获取XML名称空间前缀

来自分类Dev

XML名称空间的含义

来自分类Dev

如何用内联xmlns声明替换XML名称空间前缀?

来自分类Dev

XML名称空间前缀冲突的XPath行为

来自分类Dev

xml名称空间的属性

来自分类Dev

c#XML序列化:名称空间声明的顺序

来自分类Dev

XML在名称空间中查找名称空间

来自分类Dev

将XML名称空间声明提取到单独的标记文件/标记库中

来自分类Dev

在xml消息中插入几个带前缀的名称空间

来自分类Dev

声明MathML的XML名称空间

来自分类Dev

如何在JAVA中编码默认名称空间和带有单个XML元素前缀的名称空间

来自分类Dev

在Eclipse的XHTML + XML文件中搜索并替换XML名称空间前缀

来自分类Dev

XML名称空间的含义

Related 相关文章

  1. 1

    未前缀子元素的XML名称空间,其中父元素已声明xmlns:prefix

  2. 2

    获取XML元素的名称空间前缀和名称空间绑定

  3. 3

    读取XML和未声明的名称空间

  4. 4

    c#XML序列化:名称空间声明的顺序

  5. 5

    XML中的名称空间需求

  6. 6

    XML名称空间前缀错误

  7. 7

    “此页面要求使用前缀p声明的XML名称空间,但该名称空间不存在标记库。”

  8. 8

    如何控制XML中的名称空间前缀?

  9. 9

    xml名称空间出现xml

  10. 10

    如何在JAVA中编码默认名称空间和带有单个XML元素前缀的名称空间

  11. 11

    是否需要在根元素中声明XML名称空间,以便XPath查询可以匹配它?

  12. 12

    在Java DOM中创建以名称空间为前缀的XML节点

  13. 13

    默认声明哪些XML名称空间?

  14. 14

    警告:此页面需要使用前缀XXX声明的XML名称空间http://xmlns.jcp.org/jsf/XXX,但该名称空间不存在标记库

  15. 15

    使用FOR XML EXPLICIT时删除xmlns =“”名称空间声明

  16. 16

    如何使用声明的名称空间创建XML?

  17. 17

    使用Unmarshal在Go中获取XML名称空间前缀

  18. 18

    XML名称空间的含义

  19. 19

    如何用内联xmlns声明替换XML名称空间前缀?

  20. 20

    XML名称空间前缀冲突的XPath行为

  21. 21

    xml名称空间的属性

  22. 22

    c#XML序列化:名称空间声明的顺序

  23. 23

    XML在名称空间中查找名称空间

  24. 24

    将XML名称空间声明提取到单独的标记文件/标记库中

  25. 25

    在xml消息中插入几个带前缀的名称空间

  26. 26

    声明MathML的XML名称空间

  27. 27

    如何在JAVA中编码默认名称空间和带有单个XML元素前缀的名称空间

  28. 28

    在Eclipse的XHTML + XML文件中搜索并替换XML名称空间前缀

  29. 29

    XML名称空间的含义

热门标签

归档