17

我在 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 进行一些更改,以便验证只关心元素是否存在,并且它们是否在正确的父元素下,而不是它们的顺序?

4

1 回答 1

28

顺序意味着,元素必须以特定的顺序出现。你可能想要 xs:all。看看http://www.w3schools.com/xml/schema_complex_indicators.asp

于 2012-07-23T21:35:52.737 回答