我试图验证XSD aginst XML但是收到错误
元素'表'内容不完整。预期可能元素的列表:' IP21TAG'。
XML:
<NewDataSet>
<Table>
<SITE>VMD</SITE>
<TANK>65-12-392</TANK>
<SERVICE>HZLPG</SERVICE>
</Table>
<Table>
<SITE>VMD</SITE>
<TANK>65-12-392</TANK>
<SERVICE>HZLPG</SERVICE>
<IP21TAG>BC-BBH-OS-4LI21392</IP21TAG>
</Table>
</NewDataSet>
XSD:
<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="NewDataSet">
<xs:complexType>
<xs:sequence>
<xs:element name="Table">
<xs:complexType>
<xs:sequence>
<xs:element name="SITE" type="xs:string" />
<xs:element name="PLANT" type="xs:string" />
<xs:element name="TANK" type="xs:string" />
<xs:element name="SERVICE" type="xs:string" />
<xs:element name="IP21TAG" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
任何人都可以帮我解决这个问题吗?
提前致谢。
答案 0 :(得分:0)
您在架构的minOccurs
节点中省略了<xs:element>
,其默认值为1(请参阅specifications),如果您没有指定您的XML获胜的节点,那么t根据该模式进行验证。
如果该节点是可选的,只需更改您的XSD即可反映出来。在这里,我更改了IP21TAG
和PLANT
(因为它们在您的示例XML中都不存在,但如果其他人也是可选的,那么您应该相应地更改它们):
<xs:element name="IP21TAG" type="xs:string" minOccurs="0"/>
<xs:element name="PLANT" type="xs:string" minOccurs="0" />
如果该元素不是可选的,那么你的XML就是错误的,你可以 - 例如 - 提供一个空字符串而不是缺少节点:
<NewDataSet>
<Table>
<SITE>VMD</SITE>
<TANK>65-12-392</TANK>
<SERVICE>HZLPG</SERVICE>
<IP21TAG></IP21TAG>
<PLANT></PLANT>
</Table>
</NewDataSet>
答案 1 :(得分:0)
显然,解决方案是在可选元素上设置minOccurs =“ 0”。
但是,Visual Studio中的错误消息甚至在“可能的元素名称”列表中显示了可选元素,因此,如果您错过了元素上的minOccurs,就不会很明显。
我的问题是,一个元素错过了minOccurs =“ 0”,并且错误消息列出了全部,大约100个元素...