2012-07-23 16 views
9

C#アプリケーションに、埋め込みXSDに対してユーザー入力XMLファイルを検証するメソッドがあります。それは正常に動作しますが、すべての子要素がXSDで定義されている正確な順序であることが必要です。私にとっては、要素が存在する限り、順序は重要ではありません。例えばXSDに対してXMLを検証し、子要素の順序を無視する

、私は...

<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を以下のXSDを持っていた場合...

<ParentElement> 
    <FirstChildElement>someValue</FirstChildElement>   
    <ThirdChildElement>someValue</ThirdChildElement> 
    <SecondChildElement>someValue</SecondChildElement> 
</ParentElement> 

私はそれを検証している場合ので、私はエラーを取得したいです子要素が順不同です。

XSDに何らかの変更を加えて、要素が存在し、それらが正しい親の下にあるが、それらの要素の順序がわからない場合にのみ検証できますか?

答えて

20

シーケンスとは、要素が特定の順序で表示されることを意味します。おそらくxs:allが必要です。見てくださいhttp://www.w3schools.com/xml/schema_complex_indicators.asp

+0

ありがとう、それは答えです。私のXSDはVSによって私のために生成されたので、Sequenceタグの下に子要素がすべてありました。 – Jim

+1

覚えておくべきことは、xs:allは1のmaxOccursとそれ以下の値しかサポートしないということです。しかし、これはXSD 1.1プロセッサではまだベータ段階にあります。 – vanval

+0

彼らは1.1をリリースしましたか? – ppumkin

関連する問題