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.