ThomasM: XSD - Verpflichtendes Element

Beitrag lesen

Hallo whine,

Für o.a. XML-Struktur sollen folgenden Regeln gelten:

  1. symbolRaster ODER symbolVector ist verpflichtend, also mindestens eins von beiden muss angegeben werden (können aber auch beide)
  2. symbolFont und symbolTxt sind optional

Wie 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