XSD - Verpflichtendes Element
whine
- xml
1 ThomasM0 whine
0 Gunnar Bittersmann0 whine
Guten Morgen!
<symbolLeft>
<symbolRaster></symbolRaster>
<symbolVector></symbolVector>
<symbolFont></symbolFont>
<symbolTxt></symbolTxt>
</symbolLeft>
Für o.a. XML-Struktur sollen folgenden Regeln gelten:
symbolRaster
ODER symbolVector
ist verpflichtend, also mindestens eins von beiden muss angegeben werden (können aber auch beide)symbolFont
und symbolTxt
sind optionalWie lege ich das in der XSD fest?
Mit choice? Oder muss ich die XML-Strktur ändern um die Bedingungen abzubilden?
<xs:element name="symbolLeft">
<xs:complexType>
<xs:choice>
<xs:element name="symbolRaster" type="symbolRaster"/>
<xs:element name="symbolVector " type="symbolVector"/>
</xs:choice>
<xs:element name="symbolFont " type="symbolFont" minOccurs="0"/>
<xs:element name="symbolTxt " type="symbolTxt" minOccurs="0"/>
</xs:complexType>
</xs:element>
whine
Hallo whine,
Für o.a. XML-Struktur sollen folgenden Regeln gelten:
symbolRaster
ODERsymbolVector
ist verpflichtend, also mindestens eins von beiden muss angegeben werden (können aber auch beide)symbolFont
undsymbolTxt
sind optionalWie lege ich das in der XSD fest?
Probiere diesen Ansatz:
<xs:element name="symbolLeft">
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:sequence>
<xs:element name="symbolRaster"/>
<xs:element name="symbolVector" minOccurs="0"/>
</xs:sequence>
<xs:sequence>
<xs:element name="symbolVector"/>
<xs:element name="symbolRaster" minOccurs="0"/>
</xs:sequence>
</xs:choice>
<xs:element name="symbolFont" minOccurs="0"/>
<xs:element name="symbolTxt" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Wichtig ist neben minOccurs die geänderte Reihenfolge in der zweiten Auswahl-Sequenz, sonst handelt man sich eine Verletzung der "Unique Particle Attribution" ein.
Keine maxOccurs-/maxOccurs-Angabe bedeutet jeweils 1.
Grüße,
Thomas
Hallo Thomas,
vielen Dank! Ich habe es mit ein paar Beispieldaten erfolgreich ausprobiert.
Viele Grüße whine
@@whine
Ich hatte das Tag deines Postings mal von „sonstiges“ auf „xml“ geändert, damit der ThomasM das sieht. Hat gewirkt. 😉
LLAP 🖖
Danke, das habe ich vergeblich gesucht. Aber vielleicht war eas auch noch zu früh😀