我在C#应用程序中有一个方法,可以针对嵌入式XSD验证用户输入XML文件。它工作正常,但它要求所有子元素都按照XSD中定义的确切顺序。但对我而言,只要元素存在,顺序就无关紧要了。
例如,如果我有以下XSD ......
<xs:element maxOccurs="unbounded" name="ParentElement">
<xs:complexType>
<xs:sequence>
<xs:element name="FirstChildElement" type="xs:string" />
<xs:element name="SecondChildElement" type="xs:string" />
<xs:element name="ThirdChildElement" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
这样的XML ......
<ParentElement>
<FirstChildElement>someValue</FirstChildElement>
<ThirdChildElement>someValue</ThirdChildElement>
<SecondChildElement>someValue</SecondChildElement>
</ParentElement>
如果我验证了它,我会收到错误,因为子元素出现故障。
我是否可以对XSD进行一些更改,因此验证只关注元素是否存在,以及它们是否在正确的父级下,而不是它们所处的顺序?
答案 0 :(得分:23)
序列表示元素必须以特定顺序出现。你可能想要xs:all。看看http://www.w3schools.com/xml/schema_complex_indicators.asp