如果架构需要属性并将其作为元素发送,它是否无效?

时间:2009-08-10 13:07:34

标签: xml schema

此处的相关节点是 - XML Attributes vs Elements 但这更像是一个设计问题。

我的问题是有效性。

如果架构需要

<record name="foo" description="bar" />

我供应

<record>
  <name>foo</name>
  <description>bar</description>
</record>

XML会被视为无效吗?

反之亦然:如果指定了元素并且我提供了属性,它是否无效?

在XML规范中是否有一个引用,记录了XML解析器在这种情况下应该做什么,其中语义相同,但文字XML结构不同?

3 个答案:

答案 0 :(得分:2)

如果XML模式声明需要一个元素,并且您提供的属性是无效的。反过来也是一样的。如果您没有验证XML,那么您的代码仍会出现问题,因为您将查找某个属性并且找不到该元素。

答案 1 :(得分:1)

属性和元素绝不可互换。如果架构需要一个架构,则使用另一个架构无效,并且XML架构验证逻辑应该拒绝它。它们在语义上是否相同也是非常值得怀疑的。

答案 2 :(得分:0)

在XML中,架构是一个严格的合同:如果你不遵守它,那么交易就结束了

  

如果将属性指定为元素,那么XML是否有效?

答案:无效

  

如果将元素指定为属性,那么XML是否有效?

答案:无效

  

在这种情况下,XML解析器应该做什么?

答案:失败解析模式有效性原因。

XML阅读器将无法适应源文档中的任何错误。在这个主题上,XML世界与HTML世界相对立。这种严格性是XML的一种属性,它使得它易于解析,处理和生成。