XSD-Lexikon
Die Bausteine der XML-Schema-Sprache, mit denen die GAEB-Schemata aufgebaut sind.
xs:schema – Schema-Dokument
Rahmen
Die Wurzel einer XSD-Datei. Sie legt Namensraum und Voreinstellungen fest und enthält Deklarationen und Typdefinitionen.
Didaktisches Beispiel
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">…</xs:schema>xs:element – XML-Element
Deklaration
Definiert einen Tag der späteren XML-Datei. Sein Name und sein Datentyp sind verschiedene Dinge: Version ist das Element, tgVersion sein Typ.
Beispiel aus der GAEB-XSD
<xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="GAEBInfo" type="tgGAEBInfo">
<xs:annotation>
<xs:documentation>Informationen zum GAEB-Datenaustausch</xs:documentation>
</xs:annotation>
</xs:element>xs:simpleType – Einfacher Wertetyp
Datentyp
Beschreibt einen einzelnen Wert, etwa Text, Datum oder Zahl. Er besitzt keine XML-Kindelemente und keine eigenen XML-Attribute.
Beispiel aus der GAEB-XSD
<xs:simpleType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="tgVersion">
<xs:restriction base="tgNormalizedString10">
<xs:enumeration value="3.3"/>
</xs:restriction>
</xs:simpleType>xs:complexType – Strukturtyp
Datentyp
Definiert Kindelemente, Attribute oder Text mit Attributen. „Komplex“ bedeutet nicht zwangsläufig, dass Kindelemente vorhanden sind.
Beispiel aus der GAEB-XSD
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="tgGAEB">
<xs:annotation>
<xs:documentation>Aufgestellt vom Gemeinsamen Ausschuss Elektronik im Bauwesen (GAEB) © 2002 - 2021 by DIN Deutsches Institut fuer Normung e. V.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="GAEBInfo" type="tgGAEBInfo">
<xs:annotation>
<xs:documentation>Informationen zum GAEB-Datenaustausch</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="PrjInfo" type="tgPrjInfo" minOccurs="0">
<xs:annotation>
<xs:documentation>Informationen zum Projekt</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Award" type="tgAward" minOccurs="0">
…xs:annotation – Anmerkung
Dokumentation
Bündelt Hinweise für Menschen oder Programme. Sie ist kein Inhalt der späteren GAEB-Datei.
Beispiel aus der GAEB-XSD
<xs:annotation xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:documentation>Informationen zum GAEB-Datenaustausch</xs:documentation>
</xs:annotation>xs:documentation – Originalbeschreibung
Dokumentation
Enthält den beschreibenden Text des Schema-Autors. Die Anwendung zeigt ihn getrennt von ergänzenden Erklärungen.
Beispiel aus der GAEB-XSD
<xs:documentation xmlns:xs="http://www.w3.org/2001/XMLSchema">Informationen zum GAEB-Datenaustausch</xs:documentation>xs:sequence – Feste Reihenfolge
Strukturregel
Die enthaltenen Elemente und Gruppen müssen in dieser Reihenfolge erscheinen. Optionale Teile dürfen fehlen. Eine optionale sequence macht ihre Kinder nur bei Verwendung der Gruppe erforderlich.
Beispiel aus der GAEB-XSD
<xs:sequence xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="GAEBInfo" type="tgGAEBInfo">
<xs:annotation>
<xs:documentation>Informationen zum GAEB-Datenaustausch</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="PrjInfo" type="tgPrjInfo" minOccurs="0">
<xs:annotation>
<xs:documentation>Informationen zum Projekt</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Award" type="tgAward" minOccurs="0">
<xs:annotation>
<xs:documentation>Vergabe
In diesem Objekt werden die Informationen des Vergabeverfahrens abgelegt.
Das Objekt kann in den Datenaustauschphasen D81-D88 verwendet werden.</xs:documentation>
…xs:choice – Auswahl
Strukturregel
Pro Vorkommen wird eine der enthaltenen Alternativen gewählt. minOccurs=0 erlaubt das Weglassen der Auswahl; minOccurs=1 verlangt ein Vorkommen der Auswahlgruppe. Ein leer erfüllbarer Zweig kann dabei ohne Element auskommen. Die Häufigkeit der choice bestimmt, wie oft die Auswahl erfolgt; die Alternative kann selbst eine Gruppe sein.
Beispiel aus der GAEB-XSD
<xs:choice xmlns:xs="http://www.w3.org/2001/XMLSchema" minOccurs="0">
<xs:element name="MastAgrDur">
<xs:annotation>
<xs:documentation>Rahmenvertragsdauer in Monaten</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="tgPositiveInteger">
<xs:maxInclusive value="99"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="MastAgrEnd" type="tgDate">
<xs:annotation>
<xs:documentation>Datum Vertragsende</xs:documentation>
</xs:annotation>
</xs:element>
…xs:all – Ungeordnete Gruppe
Strukturregel
Die enthaltenen Elemente dürfen in beliebiger Reihenfolge vorkommen. XSD 1.0 beschränkt diesen Gruppentyp stärker als sequence. Im gelieferten Paket nicht verwendet.
Didaktisches Beispiel
<xs:all><xs:element name="A" type="xs:string"/><xs:element name="B" type="xs:string" minOccurs="0"/></xs:all>xs:restriction – Einschränkung
Ableitung
Leitet einen engeren Typ ab. Bei komplexen Inhalten ist das eingeschränkte Inhaltsmodell maßgeblich; entfernte Elemente werden nicht aus der Basis wieder angefügt. Attribute können nach den XSD-Regeln geerbt werden.
Beispiel aus der GAEB-XSD
<xs:restriction xmlns:xs="http://www.w3.org/2001/XMLSchema" base="tgNormalizedString10">
<xs:enumeration value="3.3"/>
</xs:restriction>xs:extension – Erweiterung
Ableitung
Übernimmt den Basisinhalt und ergänzt ihn. Bei komplexem Inhalt folgen ergänzte Kindelemente auf den Basisinhalt. Attribute der Basis bleiben erhalten.
Beispiel aus der GAEB-XSD
<xs:extension xmlns:xs="http://www.w3.org/2001/XMLSchema" base="tgDescription">
<xs:sequence minOccurs="0">
<xs:element name="CtlgAssign" type="tgCtlgAssign" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>xs:complexContent – Komplexer Inhalt
Ableitung
Umschließt restriction oder extension eines komplexen Inhaltsmodells. Dieser Container ist kein Tag der späteren GAEB-Datei.
Beispiel aus der GAEB-XSD
<xs:complexContent xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:extension base="tgDescription">
<xs:sequence minOccurs="0">
<xs:element name="CtlgAssign" type="tgCtlgAssign" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>xs:simpleContent – Wert mit Attributen
Ableitung
Ein complexType mit einfachem Textwert und gegebenenfalls Attributen. Der Inhalt enthält keine Kindelemente.
Beispiel aus der GAEB-XSD
<xs:simpleContent xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:extension base="tgStLNoText">
<xs:attribute name="Type">
<xs:simpleType>
<xs:restriction base="tgNormalizedString">
<xs:enumeration value="STLB-BauZ"/>
<xs:enumeration value="StLB"/>
<xs:enumeration value="StLK"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>xs:attribute – XML-Attribut
Deklaration
Definiert eine Angabe im öffnenden XML-Tag. use="required" bedeutet Pflicht; ohne use ist ein Attribut optional. Attribute haben keine minOccurs-/maxOccurs-Kardinalität.
Beispiel aus der GAEB-XSD
<xs:attribute xmlns:xs="http://www.w3.org/2001/XMLSchema" name="VATPcnt" type="tgDecimal_5_2">
<xs:annotation>
<xs:documentation>Umsatzsteuersatz in %</xs:documentation>
</xs:annotation>
</xs:attribute>xs:enumeration – Erlaubte Einzelwerte
Werteinschränkung
Beschränkt den Wert auf die aufgezählten Alternativen. Beispielsweise erlaubt tgVersion nur 3.3.
Beispiel aus der GAEB-XSD
<xs:enumeration xmlns:xs="http://www.w3.org/2001/XMLSchema" value="3.3"/>xs:pattern – Wertmuster
Werteinschränkung
Ein regulärer Ausdruck nach XSD-Syntax begrenzt die zulässigen Zeichenfolgen. Diese Syntax ist nicht einfach mit JavaScript-RegExp gleichzusetzen. In XSD 1.0 gelten mehrere pattern innerhalb derselben Einschränkung als Alternativen (ODER). Muster aus verschiedenen Ableitungsebenen müssen gemeinsam erfüllt sein (UND).
Beispiel aus der GAEB-XSD
<xs:pattern xmlns:xs="http://www.w3.org/2001/XMLSchema" value="[a-zA-Z0-9]*"/>xs:minLength – Minimale Länge
Werteinschränkung
Legt die kleinste zulässige Länge fest. Bei Zeichenfolgen werden Zeichen gezählt; bei Listen die Einträge.
Didaktisches Beispiel
<xs:minLength value="1"/>xs:maxLength – Maximale Länge
Werteinschränkung
Legt die größte zulässige Länge fest. Welche Einheit zählt, hängt vom Basistyp ab.
Beispiel aus der GAEB-XSD
<xs:maxLength xmlns:xs="http://www.w3.org/2001/XMLSchema" value="4"/>xs:length – Exakte Länge
Werteinschränkung
Beschränkt einen Wert auf eine feste Länge.
Didaktisches Beispiel
<xs:length value="5"/>xs:minInclusive – Untere Grenze inklusive
Werteinschränkung
Der Wert muss mindestens so groß wie diese Grenze sein. Die Grenze selbst ist erlaubt.
Beispiel aus der GAEB-XSD
<xs:minInclusive xmlns:xs="http://www.w3.org/2001/XMLSchema" value="2"/>xs:maxInclusive – Obere Grenze inklusive
Werteinschränkung
Der Wert darf diese Grenze nicht überschreiten. Die Grenze selbst ist erlaubt.
Beispiel aus der GAEB-XSD
<xs:maxInclusive xmlns:xs="http://www.w3.org/2001/XMLSchema" value="999"/>xs:minExclusive – Untere Grenze exklusiv
Werteinschränkung
Der Wert muss größer als die Grenze sein; die Grenze selbst ist ausgeschlossen.
Didaktisches Beispiel
<xs:minExclusive value="0"/>xs:maxExclusive – Obere Grenze exklusiv
Werteinschränkung
Der Wert muss kleiner als die Grenze sein.
Didaktisches Beispiel
<xs:maxExclusive value="100"/>xs:totalDigits – Gesamtzahl der Ziffern
Werteinschränkung
Begrenzt die Ziffernzahl eines numerischen Werts. Vorzeichen und Dezimaltrennzeichen zählen nicht als Ziffern. Maßgeblich ist der Zahlenwert, nicht eine feste Textbreite.
Beispiel aus der GAEB-XSD
<xs:totalDigits xmlns:xs="http://www.w3.org/2001/XMLSchema" value="9"/>xs:fractionDigits – Nachkommastellen
Werteinschränkung
Begrenzt die Zahl der Nachkommastellen. fractionDigits=3 verlangt nicht, dass im XML immer genau drei Stellen ausgeschrieben werden.
Beispiel aus der GAEB-XSD
<xs:fractionDigits xmlns:xs="http://www.w3.org/2001/XMLSchema" value="6" fixed="true"/>xs:whiteSpace – Leerzeichenbehandlung
Werteinschränkung
Legt fest, ob Leerraum erhalten, ersetzt oder zusammengezogen wird, bevor weitere Wertregeln geprüft werden.
Didaktisches Beispiel
<xs:whiteSpace value="collapse"/>xs:minOccurs – Minimale Häufigkeit
Strukturregel
Gilt für ein Element oder eine Modellgruppe. Standard ist 1; 0 bedeutet optional. Bei verschachtelten Gruppen gilt dieser Wert lokal innerhalb des Elternmodells.
Beispiel aus der GAEB-XSD
<xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="PrjInfo" type="tgPrjInfo" minOccurs="0">xs:maxOccurs – Maximale Häufigkeit
Strukturregel
Standard ist 1. unbounded bedeutet, dass keine endliche Obergrenze festgelegt ist. Die Regeln umgebender Gruppen gelten zusätzlich.
Beispiel aus der GAEB-XSD
<xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Order" type="tgOrder" minOccurs="0" maxOccurs="unbounded">xs:group – Wiederverwendbare Modellgruppe
Strukturregel
Benennt eine Modellgruppe (sequence, choice oder all), die über ref wiederverwendet werden kann. Im gelieferten Paket nicht verwendet.
Didaktisches Beispiel
<xs:group name="G"><xs:sequence><xs:element name="A" type="xs:string"/></xs:sequence></xs:group>xs:attributeGroup – Wiederverwendbare Attribute
Strukturregel
Fasst Attributdeklarationen zur Wiederverwendung zusammen. Im gelieferten Paket nicht verwendet.
Didaktisches Beispiel
<xs:attributeGroup name="G"><xs:attribute name="ID" type="xs:ID"/></xs:attributeGroup>xs:include – Schema einbinden
Schemaverknüpfung
Bindet ein Schema desselben Namensraums ein. Eine Bibliothek ohne eigenen Zielnamensraum kann dabei den Namensraum des einbindenden Schemas annehmen. Im Paket erfolgt die Einbindung über redefine.
Didaktisches Beispiel
<xs:include schemaLocation="bibliothek.xsd"/>xs:import – Anderen Namensraum einbinden
Schemaverknüpfung
Macht Definitionen eines anderen Namensraums verfügbar. Im gelieferten Paket nicht verwendet.
Didaktisches Beispiel
<xs:import namespace="urn:beispiel" schemaLocation="andere.xsd"/>xs:redefine – Einbinden und neu definieren
Schemaverknüpfung
Bindet die Bibliothek ein und definiert ausgewählte Typen neu. Der gleichnamige Basisverweis innerhalb einer Neudefinition verweist auf die ursprüngliche Definition. Andere Typreferenzen sehen die neue Definition. Bei einer Typneudefinition muss der neue Typ von der ursprünglichen gleichnamigen Definition abgeleitet sein. In XSD 1.1 ist redefine als veraltet (deprecated) eingestuft; das hier verwendete GAEB-Paket nutzt XSD 1.0.
Beispiel aus der GAEB-XSD
<xs:redefine xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.gaeb.de/GAEB_DA_XML/DA87/3.3" schemaLocation="GAEB_DA_XML_Lib_3.3_2021-05.xsd">xs:union – Vereinigung von Wertetypen
Datentypregel
Ein Wert darf einem der aufgeführten Mitgliedstypen entsprechen. Die Regeln der Typen sind Alternativen, nicht gemeinsam zu erfüllende Grenzen.
Beispiel aus der GAEB-XSD
<xs:union xmlns:xs="http://www.w3.org/2001/XMLSchema" memberTypes="tgCtlgEnum tgCtlgAnyString"/>xs:list – Liste von Werten
Datentypregel
Ein einfacher Typ kann eine durch Leerraum getrennte Liste von Werten eines Eintragstyps erlauben. Im gelieferten Paket nicht verwendet.
Didaktisches Beispiel
<xs:list itemType="xs:integer"/>Grundlage der Erläuterungen: W3C XML Schema 1.0 Primer und XML Schema 1.0 Structures.
