XML-Validierung: Wozu? / xs:complexType

xs:complexType

xs:complexType

xs:complexType name erlaubt, mehrere Attribute und/oder Childnodes an globaler Stelle zu deklarieren, wodurch die "type"-Deklaration von xs:element auf diesen definierten xs:complexType verweisen kann.

In diesem XML-Schema werden Typen, die im Beispiel lokal definiert wurden, global deklariert. Beginnend mit simplen Datentypen wie stringmax, wo der Basistyp xs:string über Patterns und minLength bzw. maxLength auf eine Stringlänge von mindestens zwei und maximal 20 Stellen begrenzt wird, wobei das erste Zeichen aus der Zeichenmenge großer Zahlen A bis Z und alle weiteren Zeichen aus der Zeichenmenge a bis z stammen müssen.

Ergänzend werden Complex-Types deklariert, die intern Elementsequenzen, Attribute, Choices oder anderen Anordnungen bilden. Bei der Typdefinition der einzelnen Elemente bzw. Attribute werden die anderen Simple- oder ComplexTypes herangezogen. Im Idealfall wird nur das Root-Element global definiert; die restlichen Abhängigkeiten ergeben sich aus dem gegenseitigen Aufbau der Complex- und Simple-Types.


<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  elementFormDefault="qualified" 
  attributeFormDefault="unqualified">
  <xs:simpleType name="stringmax20">
    <xs:restriction base="xs:string">
      <xs:maxLength value="20"/>
      <xs:pattern value="[A-Z][a-z]{1,19}"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="CTPerson">
    <xs:sequence>
      <xs:element name="Name" type="stringmax20"/>
      <xs:element name="Vorname" 
                  type="stringmax20" 
                  maxOccurs="unbounded"/>
      <xs:element name="Alter" 
                  type="xs:nonNegativeInteger" 
                  minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Persons">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Person" 
                  type="CTPerson" 
                  maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

pic/XSD_CT.png

wg / 27. Juni 2018



Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf.






Vielen Dank für Ihr Interesse an meiner Arbeit.


V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/XSD3_2.html