问题描述
|
我有这样的XSD。这些所有字段可以存在或不存在,并且顺序不可预测。
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\">
<xs:element name=\"request\">
<xs:complexType>
<xs:all minOccurs=\"0\">
<xs:element ref=\"field1\"/>
<xs:element ref=\"field2\"/>
<xs:element ref=\"field3\"/>
<xs:element ref=\"field4\"/>
<xs:element ref=\"field5\"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema>
xml中不存在field4,验证程序说他正在等待field4,但他不应该这样说。那怎么了?
w3cschools.com说
<xs:element name=\"person\">
<xs:complexType>
<xs:all minOccurs=\"0\">
<xs:element name=\"firstname\" type=\"xs:string\"/>
<xs:element name=\"lastname\" type=\"xs:string\"/>
</xs:all>
</xs:complexType>
</xs:element>
上面的示例表明\“ firstname \”和\“ lastname \”元素可以以任何顺序出现,并且每个元素可以出现零或一次!
解决方法
您需要将
minOccurs
放在单个元素上,而不是<xs:all>
,即
<xs:all>
<xs:element ref=\"field1\" minOccurs=\"0\"/>
<xs:element ref=\"field2\" minOccurs=\"0\"/>
<xs:element ref=\"field3\" minOccurs=\"0\"/>
<xs:element ref=\"field4\" minOccurs=\"0\"/>
<xs:element ref=\"field5\" minOccurs=\"0\"/>
</xs:all>
将ѭ5放在ѭ3上表示可以省略整个组,而不是单个元素。
请参阅XML模式文档。
,尝试这样
<xs:element ref=\"field4\" minOccurs=\"0\" >