Es gibt eine Choice Indicator in XML-Schema, mit dem Sie eine der enthaltenen Elemente nehmen können, aber nicht zwei oder mehr. Wenn Sie irgendeine 2 von 3 wollen, empfehlen ich etwas wie folgt aus:
<xs:choice>
<xs:element name="fieldname" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="freetext" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="dbtablename" type="xs:string" minOccurs="0" maxOccurs="1" />
</xs:choice>
<xs:choice>
<xs:element name="fieldname" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="freetext" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="dbtablename" type="xs:string" minOccurs="0" maxOccurs="1" />
</xs:choice>
(. Vielleicht maxOccurs
wird verhindern, dass Sie eine Auswahl und das gleiche Element zweimal) Wenn das nicht funktioniert, wird nichts, denke ich.
Bearbeitet: Ich habe die Frage beim ersten Mal nicht richtig verstanden. Wenn Sie dbtablename
wollen immer anwesend sein mit einem der fieldname
oder freetext
, dann ist dies die Antwort:
<xs:complexType name="tSome">
<xs:sequence>
<xs:choice>
<xs:element name="fieldname" type="xs:string" />
<xs:element name="freetext" type="xs:string" />
</xs:choice>
<xs:element name="dbtablename" type="xs:string" />
</xs:sequence>
</xs:complexType>
Es tut mir wirklich leid, aber die vorherigen minOccurs-Tags, wo nur weil meine Implementierung der Wahl war, dass Feldname und Freetext nur optional waren. –