XSD 序列复杂类型中缺少必需元素时出现验证错误
XSD Validation Error when mandatory element is missing from sequence complex type
我有一个 XSD 和一个不正确的 XML。
XSD 具有复杂类型,具有 序列 元素。所有这些元素都是强制性。 (XSD 由第 3 方维护,不能 更改)
不正确的 XML 缺少一个元素。
当我使用 C# 根据 XSD 验证 XML 时,预期的错误是 "the 'XXX' element is expected"。但实际上,它也告诉我"the element has invalid child element"。我不知道该怎么办。
为了帮助您理解我的问题,我将向您展示一个示例:
<!-- Incorrect XML -->
<class>
<el1>222</el1>
<el3>222</el3>
</class>
<!-- XSD -->
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="class">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:short" name="el1" />
<xs:element type="xs:short" name="el2" />
<xs:element type="xs:short" name="el3"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
真实但意外的验证错误如下所示:
The element 'class' has invalid child element 'el3'. List of possible elements expected: 'el2'.
预期的错误是:
List of possible elements expected: 'el2'.
你误解了消息。 不是 说 el3
永远不可能是 class
的 child。是说el3
在解析过程中遇到的那个点是无效的
换句话说,如前所述,
The element 'class' has invalid child element 'el3'.
正确。
另一方面,您解释消息的方式,
The element 'class' can never have child element 'el3'.
确实不正确。但是,由于它实际上并没有这么说,所以诊断消息没有问题。
我有一个 XSD 和一个不正确的 XML。
XSD 具有复杂类型,具有 序列 元素。所有这些元素都是强制性。 (XSD 由第 3 方维护,不能 更改)
不正确的 XML 缺少一个元素。
当我使用 C# 根据 XSD 验证 XML 时,预期的错误是 "the 'XXX' element is expected"。但实际上,它也告诉我"the element has invalid child element"。我不知道该怎么办。
为了帮助您理解我的问题,我将向您展示一个示例:
<!-- Incorrect XML -->
<class>
<el1>222</el1>
<el3>222</el3>
</class>
<!-- XSD -->
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="class">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:short" name="el1" />
<xs:element type="xs:short" name="el2" />
<xs:element type="xs:short" name="el3"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
真实但意外的验证错误如下所示:
The element 'class' has invalid child element 'el3'. List of possible elements expected: 'el2'.
预期的错误是:
List of possible elements expected: 'el2'.
你误解了消息。 不是 说 el3
永远不可能是 class
的 child。是说el3
在解析过程中遇到的那个点是无效的
换句话说,如前所述,
The element 'class' has invalid child element 'el3'.
正确。
另一方面,您解释消息的方式,
The element 'class' can never have child element 'el3'.
确实不正确。但是,由于它实际上并没有这么说,所以诊断消息没有问题。