2010-03-03 9 views
16

Basit bir XSD seçim yapısı oluşturmaya çalışıyorum. Yapı aşağıdakine benzer ama ben bir belirsizlik hatası alıyorum. Neyi kaçırıyorum?XSD "bir veya her iki" seçim yapısı belirsiz içerik modeline yol açar

<xs:schema xmlns:xs="..."> 
    <xs:element name="Number" type="xs:integer"/> 
    <xs:element name="Text" type="xs:string"/> 
    <xs:element name="RootStructure"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:choice> 
      <xs:sequence> 
      <xs:element ref="Number"/> 
      <xs:element ref="Text"/> 
      </xs:sequence> 
      <xs:element ref="Number"/> 
      <xs:element ref="Text"/> 
     </xs:choice> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

cevap

30

bunu yapmak için her zamanki yolu şudur:

<xs:schema xmlns:xs="..."> 
    <xs:element name="Number" type="xs:integer"/> 
    <xs:element name="Text" type="xs:string"/> 
    <xs:element name="RootStructure"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:choice> 
      <xs:sequence> 
      <xs:element ref="Number"/> 
      <xs:element ref="Text" minOccurs="0"/> 
      </xs:sequence> 
      <xs:element ref="Text"/> 
     </xs:choice> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 
0

Bazı ek ipucu Birden elemanları bağlantılı varsa ve biri unsurların demetini veya diğer paket ya da her ikisini isterseniz, şunları yapabilirsiniz Bunu yapın:

<xsd:complexType name="ComplexTypeName"> 
    <xsd:choice> 
     <xsd:sequence> 
      <xsd:element name="theElement" /> 
      <xsd:element name="theElementIsFlagged" /> 
      <xsd:choice> 
       <xsd:sequence> 
<!-- note the empty sequence block --> 
       </xsd:sequence> 
       <xsd:sequence> 
        <xsd:element name="theOtherElement" /> 
        <xsd:element name="theOtherElementIsFlagged" /> 
       </xsd:sequence> 
      </xsd:choice> 
     </xsd:sequence> 
     <xsd:sequence> 
      <xsd:element name="theOtherElement" /> 
      <xsd:element name="theOtherElementIsFlagged" /> 
     </xsd:sequence> 
    </xsd:choice> 
</xsd:complexType> 

Sadece bazılarınız aynı soruna çarptığında!