2012-04-21 6 views
2

可変要素の順序でxsdで継承を使用できますか?可変要素の順序でxsdで継承を使用できますか?

基本的には、このような何かがうまくいかない「拡張子」の内側に許可されていない「すべて」以来、:

<xs:complexType name="root"> 
    <xs:complexContent> 
      <xs:all> 
       <xs:element name="A" type="xs:string"/> 
       <xs:element name="B" type="xs:string"/> 
      </xs:all> 
    </xs:complexContent> 
</xs:complexType> 

<xs:complexType name="extended"> 
    <xs:complexContent> 
     <xs:extension base="root"> 
      <xs:all> 
       <xs:element name="C" type="xs:string"/> 
       <xs:element name="D" type="xs:string"/> 
      </xs:all> 
     </xs:extension> 
    </xs:complexContent> 
</xs:complexType> 

最も簡単な解決策は、単に「配列」の代わりに「すべて」を使用することですが、要素の順序は保証されませんので、私の場合、これは、オプションではありませんので、このような何か:

<obj> 
    <B/> 
    <C/> 
    <D/> 
    <A/> 
</obj> 

があるため、間違った要素の順序で無効になりますが、すべての要素が存在しているので、すべきではありませんさ。

答えて

1

あなたの例は、先週の勧告になったXSD 1.1では合法です。 XSD 1.1はXercesとSaxonで実装されています。

+0

1.1 XMLスキーマをサポートするXercesベータパーサを使ってこれをJavaでテストしたところ、以前と同じエラーが発生しました.XSD 1.1仕様に基づいてスキーマが本当に正当なものであるかどうかをテストできますか? – Shajirr

関連する問題