根据XSD验证XML并忽略子元素的顺序

时间:2012-07-23 21:29:16

标签: c# xml validation xsd

我在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进行一些更改,因此验证只关注元素是否存在,以及它们是否在正确的父级下,而不是它们所处的顺序?

1 个答案:

答案 0 :(得分:23)

序列表示元素必须以特定顺序出现。你可能想要xs:all。看看http://www.w3schools.com/xml/schema_complex_indicators.asp

相关问题