Aktuelle Remote-Seminare mit Durchführungsgarantie: Etwas Werbung in eigener Sache Termine: 03.08.-05.08.2020, 21.09.-23.09.2020, 23.11.-25.11.2020, 07.12.-09.12.2020, 22.03.-24.03.2021, 07.06.-09.06.2021, 06.09.-08.09.2021XML Einführung und Grundlagen Termine: 06.08.2020, 20.10.2020, 13.11.2020, 10.12.2020, 25.03.2021, 10.06.2021, 09.09.2021XML - der professionelle Überblick Termine: 23.11.-26.11.2020, 29.03.-01.04.2021Einstieg in die Programmierung Termine: 17.08.-19.08.2020, 14.12.-16.12.2020, 07.04.-09.04.2021XML, XSLT, XPath, XSL-FO Einführung Termine: Termin nach WunschEinstieg in C#.NET Termine: 21.09.-23.09.2020, 11.01.-13.01.2021, 26.05.-28.05.2021, 27.09.-29.09.2021VB.NET für Visual Basic-Programmierer Termine: 21.10.-23.10.2020, 14.12.-16.12.2020, 08.03.-10.03.2021, 19.07.-21.07.2021, 23.08.-25.08.2021XML Grundlagen, XSL-FO, SVG, DocBook, DITA Termine: Termin nach WunschJava Grundlagen Termine: 03.08.-06.08.2020, 30.11.-03.12.2020, 29.03.-01.04.2021C++ für Programmiereinsteiger Termine: 10.09.2020, 11.12.2020, 16.03.2021Neues Seminar: XProc Grundlagen Termine: 21.09.-25.09.2020, 01.03.-05.03.2021Java/JSP/HTML/JDBC/XML Komplett Termine: 07.09.-09.09.2020, 21.10.-23.10.2020, 23.11.-25.11.2020, 25.01.-27.01.2021, 12.04.-14.04.2021, 26.07.-28.07.2021Python für Programmiereinsteiger Last-Minute-Seminare, noch freie Plätze XML Einführung und Grundlagen03.08.-05.08.2020 XML, XSLT, XPath, XSL-FO Einführung17.08.-19.08.2020 Python für Programmiereinsteiger07.09.-09.09.2020

XPROC * XSL-FO * SVG * XML * XML-SCHEMA * XPATH * XSL * XSLT 1.0 * XSLT 2.0 * XSLT 3.0 * XQUERY * ANT



XML-Schema / xs:simpleType

xs:simpleType

xs:simpleType

➪ Ähnlich wie bei der globalen Deklaration von xs:complexType können auch einfache Datentypen via xs:simpleType global deklariert und dann an anderer Stelle wiederholt eingesetzt werden.

Das Ziel des Type-Designs liegt in der Wiederverwendung bereits deklarierter Typen. Nicht selten wird eine Sammlung von etwa in eine Schemadatei simpleTypes.xsd gelegt, die in andere Schemadateien eingebunden wird.

Dann freilich wird ein exakter Umgang mit Namespaces erforderlich, wie folgendes Beispiel zeigt, das die erweiterte Beziehungsstruktur Laender - Land - Orte - Ort - Mensch darstellt und in mehrere Schemata zerteilt:


<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  elementFormDefault="unqualified" 
  attributeFormDefault="unqualified" 
  targetNamespace="www.wilfried-grupe.de/simpleTypes">
  <xs:simpleType name="stringmax20">
    <xs:restriction base="xs:string">
      <xs:minLength value="2"/>
      <xs:maxLength value="20"/>
      <xs:pattern value="[A-Z][a-zäöü]*"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="posintmax150">
    <xs:restriction base="xs:nonNegativeInteger">
      <xs:maxInclusive value="150"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

DATEI: simpleTypes.xsd

Damit diese Datei in andere Schemata eingebunden werden kann, muss in simpleTypes.xsd ein targetNamespace="www.wilfried-grupe.de/simpleTypes" definiert werden, der in der Zieldatei complexTypes.xsd angesprochen werden kann: <xs:import namespace="www.wilfried-grupe.de/simpleTypes" schemaLocation="simpleTypes.xsd"/>. Zusätzlich muss in complexTypes.xsd ein Namespace xmlns:wgst="www.wilfried-grupe.de/simpleTypes" definiert werden, damit über das Namespacepräfix wgst die Typdefinition der Elemente erfolgen kann.


<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  elementFormDefault="unqualified" 
  attributeFormDefault="unqualified" 
  xmlns:wgst="www.wilfried-grupe.de/simpleTypes" 
  targetNamespace="www.wilfried-grupe.de/complexTypes" 
  xmlns:wgct="www.wilfried-grupe.de/complexTypes">
  <xs:import namespace="www.wilfried-grupe.de/simpleTypes" 
     schemaLocation="simpleTypes.xsd"/>
  <xs:element name="Orte" type="wgct:OrteTyp"/>
  <xs:complexType name="OrteTyp">
    <xs:sequence>
      <xs:element name="Ort" 
                  type="wgct:OrtTyp" 
                  maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="OrtTyp">
    <xs:sequence>
      <xs:element name="Ortname" 
                  type="wgst:stringmax20"/>
      <xs:element name="Person"
                  type="wgct:PersonTyp" 
                  maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="PersonTyp">
    <xs:sequence>
      <xs:element name="Name" 
                  type="wgst:stringmax20"/>
      <xs:element name="Vorname" 
                  type="wgst:stringmax20"/>
      <xs:element name="Alter" 
                  type="wgst:posintmax150"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

Das Prinzip wiederholt sich: Zur Weiterverwendung dieses Schemadokuments muss ein targetNamespace definiert werden, dem ein passendes Präfix wgct zugewiesen wird, über das die Typdefinition bereits in complexTypes.xsd erfolgen kann. Derselbe Namespace muss im importierenden Schema benannt werden, wobei das Namespacepräfix anders benannt (z.B. xct) werden kann.


<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  elementFormDefault="qualified" 
  attributeFormDefault="unqualified" 
  xmlns:xct="www.wilfried-grupe.de/complexTypes">
  <xs:import namespace="www.wilfried-grupe.de/complexTypes" 
    schemaLocation="complexTypes.xsd"/>
  <xs:element name="Laender" type="LaenderTyp"/>
  <xs:complexType name="LaenderTyp">
    <xs:sequence>
      <xs:element name="Land" 
         type="LandTyp" 
         maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="LandTyp">
    <xs:sequence>
      <xs:element name="Orte" 
         type="xct:OrteTyp" 
         maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

Siehe auch .

wg / 1. Mai 2020



Fragen? Anmerkungen? Tipps?

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_3.html