Sollte XSD-auftreten-Grenzen werden auf die Sequenz oder das element?
Wenn ich ein element mit einem oder mehreren Unterelementen, sollte die min - /maxoccurs-Attribute werden über das xsd:sequence element xsd:element, beides oder keines von beiden?
<xsd:element name="books">
<xsd:complexType>
<xsd:sequence minOccurs="1" maxOccurs="unbounded"> <!-- here? -->
<xsd:element ref="book" minOccurs="1" maxOccurs="unbounded"/> <!-- or here? -->
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Du musst angemeldet sein, um einen Kommentar abzugeben.
In fast allen Fällen, werden Sie wollen, stellen Sie die min/max Tritt auf das element, innerhalb einer Sequenz und nicht auf die Reihenfolge an. Mit deinem Beispiel:
Dies ist unmissverständlich. Wenn Sie eine Reihe von Buch-Elemente in einer Zeile, Sie können zeigen Sie auf genau das schema-Element ist, Sie zu produzieren. Allerdings:
Hier, wenn Sie zwei haben "
book
" Elemente in einer Reihe, haben Sie zweisequence
s in einer Zeile, oder einesequence
mit zweibook
Elemente? Dies schlägt fehl, die Unique Particle Attribution Anforderung.Schließlich, wenn man die min/max-Tritt auf die Reihenfolge und die Sie später hinzufügen ein zusätzliches element:
dann dies kann die folgenden XML-Code, das ist wahrscheinlich nicht was Sie beabsichtigen:
in der Erwägung, dass, wenn Sie haben:
dann ist es klar und eindeutig was Sie wollen: Eine Sequenz von einem oder mehr
book
Elemente, gefolgt von einer Folge von einem oder mehrebook
Elemente.Es sollte auf der
<xsd:element>
IMHO.Den Effekt, indem es auf die Reihenfolge ist die gleiche, irgendwann (für diesen Fall). Aber betrachten wir es aus einer logischen Perspektive, die Sie zum Ausdruck bringen wollen, dass es ein Reihenfolge der Elemente, und nicht eine Reihe von Sequenzen, die mit einem element für jede.
Indem es auf beide würde auf jeden Fall fühlen sich für mich falsch, obwohl für diesen Fall wäre es (wieder) machen keinen praktischen Unterschied.
Setzen das maxOccurs-Attribut auf den <xsd:element> - element.