2 Stimmen

xml-element aufzählungsattribut und aufzählungswert in xsd

Von Interesse ist das folgende xml-Kinderelement:

<optInItem type='MARKETING_EMAILS'>NO</optInItem>

Ich möchte mögliche Werte (nehmen Sie 2 mögliche Werte an) für das Attribut "Typ" aufzählen und mögliche Werte für den Textwert von optInItem aufzählen (Werte könnten Ja | Nein sein). Ich beginne mit dem folgenden xsd, bin mir aber nicht sicher, wie ich die beiden separaten Aufzählungen hinzufügen kann.

 <xs:element name="optInItem" maxOccurs="2" minOccurs="2">
      <xs:complexType>
        <xs:simpleContent>
          <xs:extension base="xs:string">
           <xs:attribute type="xs:string" name="type" use="required"/>
          </xs:extension>
        </xs:simpleContent>
      </xs:complexType>
</xs:element>

Für Vorschläge/Hinweise wären wir dankbar.

danke

3voto

Walter Kelt Punkte 2039

Nach vielen Versuchen sieht es so aus, als ob die folgende Lösung den gewünschten Effekt erzielt:

<xs:element name="account">
 <xs:complexType>
  <xs:sequence>
    <xs:element type="optInItemType" name="optInItem" maxOccurs="2" minOccurs="2">
  </xs:sequence>
 </xs:complexType>
</xs:element>
<xs:complexType name="optInItemType"> 
 <xs:simpleContent> 
    <xs:extension base="elementOptInItemType">
         <xs:attribute name="type" type="attrOptInItemType"/> 
    </xs:extension> 
 </xs:simpleContent>
</xs:complexType>  
<xs:simpleType name="elementOptInItemType">
 <xs:restriction base="xs:string">
   <xs:enumeration value="YES"/>
   <xs:enumeration value="NO"/>
 </xs:restriction>
</xs:simpleType>
<xs:simpleType name="attrOptInItemType">
 <xs:restriction base="xs:string">
   <xs:enumeration value="MARKETING_EMAILS"/>
   <xs:enumeration value="UPDATE_NOTIFICATIONS"/>
 </xs:restriction>
</xs:simpleType>

Das war komplizierter, als ich es mir vorgestellt hatte. Die simpleContent Erweiterungsbasis erlaubt einen benutzerdefinierten Typ und war somit der Schlüssel, um das Ganze alles zusammen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X