Reihenfolge der Elemente
- All
Reihefolge nicht relevant, Element muss einmal vorkommen
- Choice
Wahl zwischen zwei Elementen
- Sequence
Die Elemente müssen zwingen in der Reihenfolge vorkommen
Für das Vorkommen eines Elementes
Die zwei Atribute können einem Element mitteilen, wie of es vorkommen kann:
Der Standardwert ist für beide 1, wenn das Attribute nicht angegeben wird. unbound kann für unendlich bei maxOccurs verwendet werden.
Wie in einem anderen Beitrag bereits beschrieben, kann ein komplexws Element in vier kombinationen vorkommen.
Leeres Element
<product prodid=”1345″ />
XSD
<xs:element name=”product”>
<xs:complexType>
<xs:attribute name=”prodid” type=”xs:positiveInteger”/>
</xs:complexType>
</xs:element>
Nur Elemente
<person>
<firstname>John</firstname>
<lastname>Smith</lastname>
</person>
XSD
<xs:element name=”person”>
<xs:complexType>
<xs:sequence>
<xs:element name=”firstname” type=”xs:string”/>
<xs:element name=”lastname” type=”xs:string”/>
</xs:sequence>
</xs:complexType>
</xs:element>
Nur Text
<shoesize country=”france”>35</shoesize>
XSD
<xs:element name=”shoesize”>
<xs:complexType>
<xs:simpleContent>
<xs:extension base=”xs:integer”>
<xs:attribute name=”country” type=”xs:string” />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
Weil der Typ nur einfachen Inhalt aufweist (Text und ein Attribute), wird ein simpleContent Element hinzugefügt. Wenn simpleContent verwendet wird, muss entweder eine extension oder eine restriction für das simpleContent Element angegeben werden.
Ein element kann nicht direkt ein attribute haben, es muss über einen complexType angefügt werden.
Das Attribute selbst ist jedoch immer als simpler Typ definiert:
- xs:string
- xs:decimal
- xs:integer
- xs:boolean
- xs:date
- xs:time
<xs:attribute name=”lang” type=”xs:string” use=”required”/>
Das Beispiel zeigt eine Definition, die das Attribut als erforderlich deklariert.
Ein Element kann nur Text enthalten. Es kann keine weiteren Elemente oder Attribute beinhalten.
Wobei “Text” missverständlich sein kann. Denn der Inhalt kann einer von den xsd Typen (boolean, string, date, etc.) sein, oder ein benutzerdefinierter Typ, den man selbst erstellt.
<xs:element name=”xxx” type=”yyy”/>
Komplexes Element
Es gibt vier Möglichkeiten:
- leere elemente
<result state=”true” />
- solche die nur andere elemente beinhalten
<result>
<state>true</state>
</result>
- solche die nur text beinhalten
<result state=”true”>no error occurred</result>
- elemente, die andere elemente und text beinhalten
<result state=”true”>no <green>error</green> occurred</result>
Definition eines komplexen Elementes
<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
XSD
<xs:element name=”employee”>
<xs:complexType>
<xs:sequence>
<xs:element name=”firstname” type=”xs:string”/>
<xs:element name=”lastname” type=”xs:string”/>
</xs:sequence>
</xs:complexType>
</xs:element>
Oder mehr genereller, damit beispielsweise ein anderes Element wie “Kunde” dieselbe Definition verwenden kann:
<xs:element name=”employee” type=”personinfo”/>
<xs:complexType name=”personinfo”>
<xs:sequence>
<xs:element name=”firstname” type=”xs:string”/>
<xs:element name=”lastname” type=”xs:string”/>
</xs:sequence>
</xs:complexType>
Ohne Angaben von minOccurs and maxOccurs muss das Element exakt einmal vorkommen. (entspricht also minOccurs=1 und maxOccurs=1).
ACHTUNG! Attribute Definitionen müssen immer am Ende (z.B. nach sequence) erfolgen!
Nachdem mehrere Tage die Soundkarte problemlos funktioniert hatte, streikte sie heute plötzlich. Ohne genauer der Ursache nachgegangen zu sein würde ich sagen; es könnte an der Installation von VLC liegen. (oder etwas anderem
Die Creative X-Fi Extreme Music verrichtet nun den Dienst wieder, nachdem ich die Treiber einfach nochmals neu installiert habe.