2017-11-16 5 views
1

Ich verstehe und xs:choice und xs:sequence separat verwenden, aber ich verstehe nicht, was xs:choice innerhalb xs:sequence bedeuten?XSD Wahl innerhalb Sequenz

<xs:element name="sports-content"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:choice minOccurs="0" maxOccurs="unbounded"> 
     <xs:element name="sports-metadata" /> 
     <xs:element name="sports-event" /> 
     <xs:element name="tournament" /> 
     <xs:element name="schedule" /> 
     </xs:choice> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

Ok. Diese XML wird gültig sein.

<sports-content> 
    <sports-metadata /> 
    <tournament /> 
</sports-content> 

Wird diese XML-Datei gültig sein oder nicht?

<sports-content> 
    <sports-metadata /> 
    <tournament /> 
    <sports-metadata /> 
</sports-content> 

Antwort

1

Das xs:sequence Element in Ihrem XSD ist überflüssig; Sie kann entfernt werden, ohne die Gültigkeit eines XML-Dokuments zu beeinträchtigen. Eine xs:sequence um eine xs:choice wäre zum Beispiel nützlich, wenn Sie möchten, dass der Auswahl immer ein oder mehrere Elemente der Reihe nach vorangestellt oder gefolgt werden.

Ja, beide der XML-Dokumente in Ihrer Frage gelten gegen Ihre XSD (und wird auch weiterhin sein, wenn Sie die xs:sequence Wrapper um xs:choice zu entfernen.

Verwandte Themen