Archiv für Kategorie XML Schema
XML Schema: complexType mit simpleContent
Verfasst von Stf unter Grundlagen, XML Schema, XML-Validierung am 4. Dezember 2011
Gelegentlich steht man vor dem Problem, in XML Schema ein Element mit einem oder mehreren Attributen und einem in irgendeiner Form beschränkten simpleContent
(Text, Zahlen, URIs; aber keine Elemente) zu definieren. Die Syntax von XML Schema dazu ist wenig intuitiv:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="MyElement"> <xs:complexType> <xs:simpleContent> <xs:extension base="MySimpleElementType"> <xs:attribute name="MyAttribute" type="MySimpleAttributeType"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:simpleType name="MySimpleElementType"> <xs:restriction base="xs:string"> <xs:enumeration value="Value_A"/> <xs:enumeration value="Value_B"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="MySimpleAttributeType"> <xs:restriction base="xs:string"> <xs:enumeration value="AttributeContent_A"/> <xs:enumeration value="AttributeContent_B"/> </xs:restriction> </xs:simpleType> </xs:schema> |
Es handelt sich um einen complexType
(wegen des Attributes) mit simpleContent
(hier xs:string
mit aufgezählten gültigen Werten). Wenig intuitiv ist, dass ein simpleType
mit einem Attribut erweitert wird und so faktisch ein complexContent
wird, aber trotzdem innerhalb von simpleContent
steht. Der Schlüssel ist sicher die Unterscheidung von Type und Content, denn der Inhalt des Elements ist ja immer noch einfach.
Das Schema und ein Instanzdokument habe ich in der Beispielsammlung abgelegt.