2011-09-19 7 views
7

Quello che voglio dire è che ci sono situazioni in cui questo:eventuale differenza quando si utilizza min/maxOccurs in sequenza piuttosto che a livello elemento

<xs:element name="MyType1"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element maxOccurs="unbounded" name="MyType2">...</xs:element> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 

ha un significato diverso a questo:

<xs:element name="MyType1"> 
    <xs:complexType> 
     <xs:sequence maxOccurs="unbounded"> 
      <xs:element name="MyType2">...</xs:element> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 

Grazie in anticipo

risposta

14

In generale i vincoli di occorrenza (minOccurs o maxOccurs) sui gruppi di elementi (sequenze o scelte) significano che l'intero gruppo può essere ripetuto d mentre i vincoli di occorrenza sugli elementi significano che l'elemento può essere ripetuto prima che appaia l'elemento successivo nel gruppo.

Se la sequenza contiene solo un elemento, non c'è differenza.

<xs:sequence> 
    <xs:element maxOccurs="unbounded" name="MyType2">...</xs:element> 
</xs:sequence> 

è uguale

<xs:sequence maxOccurs="unbounded"> 
    <xs:element name="MyType2">...</xs:element> 
</xs:sequence> 

ed entrambi permettono ripetendo l'elemento <MyType2>. Ci sarà una differenza non appena la sequenza contiene più di una definizione di elemento.

<xs:sequence> 
    <xs:element maxOccurs="unbounded" name="MyType">...</xs:element> 
    <xs:element maxOccurs="unbounded" name="foobar">...</xs:element> 
</xs:sequence> 

è non uguale

<xs:sequence maxOccurs="unbounded"> 
    <xs:element name="MyType">...</xs:element> 
    <xs:element name="foobar">...</xs:element> 
</xs:sequence> 

Il primo permette strutture come

<MyType/> 
<MyType/> 
<foobar/> 
<foobar/> 

ma il secondo non consente una tale struttura. Invece consente strutture come

<MyType/> 
<foobar/> 
<MyType/> 
<foobar/> 

che d'altra parte non sono consentiti dalla prima definizione.

Problemi correlati