XML Validierung - wozu? / XML Schema / Datentypen, Designs / xs:complexType

xs:complexType

xs:complexType

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

In diesem XML Schema werden lokal definierte Typen als globale Typen deklariert. Beginnend mit simplen Datentypen wie stringmax, wo der Basistyp xs:string über Patterns und minLength bzw. maxLength auf eine Stringlänge von mindestens 2 und maximal 20 Stellen begrenzt wird, wobei das erste Zeichen aus der Zeichenmenge grosser Zahlen A-Z und alle weiteren Zeichen aus der Zeichenmenge a-z stammen müssen.

Ergänzend werden ComplexTypes deklariert, die intern wiederum ComplexTypes mit Elementsequenzen, Attributen, 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 Rootelement global definiert; die restlichen Abhängigkeiten ergeben sich aus dem gegenseitigen Aufbau der Complex- und SimpleTypes.


<?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 / 11. Februar 2018



Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf:

Vorname
Nachname
Mailadresse







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