我有一个来自第三方的 XSD,我试图用它在 SQL Server 中创建 XML 模式集合并验证从该第三方接收的 XML。
验证后,我收到一个错误:
XML 验证:无效的内容。预期元素:“元素 1”、“元素 2”。找到:元素 'element3' 代替。位置:/DOCUMENT[1]/ :reference_data[1]/ :element3[1]。
相关的 XSD 和 XML 对我来说看起来是正确的,但我无法确定为什么会发生此错误。这是相关的 XSD 修剪回相关元素(整个文档很大,所以我不会在这里发布):
<xs:element name="reference_data">
<xs:complexType>
<xs:sequence>
<xs:element name="element1" minOccurs="0" maxOccurs="256">
<xs:complexType>
<xs:simpleContent>
... some other stuff
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="element2" minOccurs="0" maxOccurs="50">
<xs:complexType>
<xs:simpleContent>
... some other stuff
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:choice minOccurs="0" maxOccurs="1000">
<xs:element name="element3" minOccurs="0" maxOccurs="1000">
</xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
以下是正在验证的相关 XML:
<reference_data>
<element1>ABCD</element1>
<element3>
<associated_detail1>whatever</associated_detail1>
<associated_detail2>whatever</associated_detail2>
</element3>
</reference_data>
如您所见,element1 在那里,所以我不明白为什么它找到了 element3 而不是 element1。Element2 不存在,但它在 XSD 中也定义为minoccurs=0
,那么为什么它是“预期的”?