Ein XML Schema beschreibt die Struktur eines XML-Dokuments und ist eine Alternative zur Document Type Definition (DTD). Die XML Schemasprache wird auch als XML Schema Definition (XSD) bezeichnet. Grundsätzlich erfüllt ein XML Schema die gleichen Anforderungen wie eine DTD, unterstützt aber zusätzlich die Definition von Datentypen, so dass ein XML-Dokument nicht nur strukturell, sondern auch inhaltlich vor dem Einlesen geprüft werden kann.
Ein XML Schema ist selbst ein XML-Dokument und wird durch ein eigenes XML Schema definiert. Im Gegensatz zu einer DTD ist eine XML Schema Definition sehr einfach erweiterbar.
In einem XML Schema sind folgende Element definiert:
Element: schema
Das Wurzelelement eines XML Schemas ist immer das Element <schema>. In dem Element kann durch einfache Angabe des Namensraums http://www.w3.org/2001/XMLSchema/ angezeigt werden, dass im XML Schema alle Elemente und Datentypen den Standardelementen und Standarddatentypen entsprechen. Der Päfix für den XML Schema Namensraum ist normalerweise xs.
<xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> ... </xsd:schema>
targetNamespace
In dem Markup Element schema kann zusätzlich das Attribut targetNamespace angegeben werden. Das Attribut zeigt an, dass alle in dem XML Schema definierten Elemente zu einem bestimmten Namespace gehören.
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.bitworld.de/">
...
</xsd:schema>
elementFormDefault
Das Attribut elementFormDefault kann die Werte qualified und unqualified annehmen und legt fest, ob alle Elemente in dem XML-Dokument, welches das XML Schema verwenden, durch einen Namensraum qualifiziert sein müssen.
Wie bei allen XML-Dokumenten kann auch in dem XML Schema ein Vorgabenamensraum angegeben werden, der für alle Kindelemente automatisch gilt. In dem unteren Beispiel wurde der Vorgabenamensraum http://www.bitworld.de/ festgelegt.
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.bitworld.de/"
elementFormDefault="qualified" xmlns="http://www.bitworld.de/">
...
</xsd:schema>
attributeFormDefault
Das Attribut attributeFormDefault kann die Werte qualified und unqualified annehmen und legt fest, ob alle Attribute der Elemente in dem XML-Dokument, welches das XML Schema verwenden, durch einen Namensraum qualifiziert sein müssen.
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.bitworld.de/"
elementFormDefault="qualified" attributeFormDefault="qualified" xmlns="http://www.bitworld.de/">
...
</xsd:schema>
Element: element
Ein <element> definiert ein XML Element im XML-Dokument. Es wird zwischen zwei Typen von Elementen unterschieden:
- einfache Typen:
simpleType - komplexe Typen
complexType
Ein einfacher Typ kann nur Inhaltstext enthalten und keine anderen Elemente oder Attribute, aber man kann dem Inhaltstext einen bestimmten Datentypen zuweisen. Außerdem ist es möglich, dem Inhaltstext bestimmte Beschränkungen aufzuerlegen, sogenannte Fassetten (engl. facets).
Ein komplexer Typ erweitert den einfachen Typ um die Möglichkeit, Attribute zu definieren.
Ein <element> wird folgendermaßen definiert:
<!-- Einfacher Typ -->
<xs:element name="name" type="datentyp">
<xs:simpleType>
...
</xs:simpleType>
</xs:element>
<!-- Komplexer Typ -->
<xs:element name="name" type="datentyp">
<xs:complexType>
...
</xs:complexType>
</xs:element>
Der Wert name ist der Name des späteren XML Elements und datentyp ist der Datentyp des Elements.
Element: attribute
Mit dem Element <attribute> kann man einem Element Attribute zuweisen. Zu beachten ist jedoch, dass einem einfachen Element keine Attribute zugewiesen werden können, sondern nur komplexen Typen. Wie bei einem <element> kann einem <attribute> ein Name und ein Typ zugeordnet werden. Auch die Angaben default und fixed können verwendet werden.
<xs:attribute name="name" type="type"/>
Zusätzlich kann ein Attribut als optional (optional) oder zwingend (required) gekennzeichnet werden.
<xs:attribute name="name" type="xs:string" use="optional"/> <xs:attribute name="color" type="xs:string" use="required"/>
Element: simpleType
Elemente die weder andere Elemente enthalten, noch Attribute besitzen, werden als einfache Elemente (engl. simple elements) bezeichnet.
Beispiel:
<plz>12345</plz>
Einfache Elemente werden im XML-Schema mit dem Element simpleType definiert.
<xs:element name="plz" type="xs:string"> <xs:simpleType/> </xs:element>
Element: complexType
Als komplexe Elemente (engl. complex elements) werden alle XML-Elemente bezeichnet, die andere Elemente enthälten und/oder Attribute besitzen.
Beispiel 1: Ein Element enthält weitere Elemente
<anschrift> <strasse>Musterweg 1</strasse> <plz>12345</plz> <ort>Musterstadt</ort> </anschrift>
Beispiel 2: Ein Element definiert Attribute
<email typ="privat">christian.jaenicke@bitworld.de</email>
Beispiel 3: Ein Element enthält sowohl weitere Elemente, wie auch Attribute
<anmerkung> Anmeldung erfolgte am <datum locale="DE">03.01.2007</datum> per Fax. </anmerkung>
Komplexe Elemente werden im XML-Schema mit dem Element complexType definiert. Innerhalb des Elements werden dann sowohl die enthaltenen Unterelemente, wie auch die Attribute beschrieben.
<xs:element name="email" type="xs:string">
<xs:complexType>
<xs:attribute name="typ" type="xs:string" use="optional"/>
</xs:complexType/>
</xs:element>
Allgemeine Datentypen definieren
Komplexe Typen können auch außerhalb eines Elements element definiert werden und beschreiben so einen mehrfach verwendbaren, allgemeinen Datentyp, ähnlich einer struct-Anweisung in C. Um diesen Datentyp einem element zuweisen zu können, muss dem Element complexType ein eindeutiger Name mit dem Attribut name gegeben werden. Dem Element element kann nun mit dem Attribut type durch Angabe des Namens der komplexe Typ zugewiesen werden.
<xs:element name="email" type="emailtyp"/> <xs:complexType name="emailtyp"> <xs:attribute name="typ" type="xs:string" use="optional"/> </xs:complexType/>
Gruppierung von Elementen
Komplexe Elemente enthalten meistens mehrere Unterelemente. Um die Anordnung und die Häufigkeit des Auftretens der Elemente festlegen zu können, werden im XML-Schema Gruppierungselemente verwendet.
all
Mit der Angabe von all gilt für jedes Unterelement, dass es entweder gar nicht, sofern das Attribut minOccurs auf 0 gesetzt wurde, oder exakt einmal vorkommen darf, wobei die Reihenfolge der Unterelemente beliebig ist. Folgende Attribute können optional angegeben werden:
minOccurs |
Bestimmt, wie oft ein Element minimal vorkommen darf. Erlaubte Werte sind 0 oder 1. Der Vorgabewert ist 1. |
maxOccurs |
Bestimmt, wie oft ein Element maximal vorkommen darf. Der Wert ist immer 1. |
<xs:element name="kontakt">
<xs:complexType>
<xs:all minOccurs="0">
<xs:element name="email">
<xs:element name="icq">
<xs:element name="telefon">
</xs:all>
</xs:complexType>
</xs:element>
choice
Definiert eine Liste von Elementen, aus der jedoch nur eines vorkommen darf. Wie oft das Element vorkommen darf, kann mit dem Attribut maxOccurs festgelegt werden.
minOccurs |
Bestimmt, wie oft das Element minimal vorkommen darf. Erlaubte Werte sind alle Werte größer oder gleich 0. Der Vorgabewert ist 1. |
maxOccurs |
Bestimmt, wie oft das Element maximal vorkommen darf. Erlaubte Werte sind alle Werte größer oder gleich 0. Der Vorgabewert ist 1. Soll es keine Beschränkung nach oben geben, so kann anstatt einer Zahl das Wort unbounded angegeben werden. |
<xs:element name="kontakt">
<xs:complexType>
<xs:choice>
<xs:element name="email">
<xs:element name="icq">
<xs:element name="telefon">
</xs:choice>
</xs:complexType>
</xs:element>
sequence
Alle Unterelemente müssen in der definierten Reihenfolge vorkommen, wobei jedes Element gar nicht, sofern das Attribut minOccurs auf 0 gesetzt wurde, oder beliebig oft angegeben werden kann.
minOccurs |
Bestimmt, wie oft das Element minimal vorkommen darf. Erlaubte Werte sind alle Werte größer oder gleich 0. Der Vorgabewert ist 1. |
maxOccurs |
Bestimmt, wie oft das Element maximal vorkommen darf. Erlaubte Werte sind alle Werte größer oder gleich 0. Der Vorgabewert ist 1. Soll es keine Beschränkung nach oben geben, so kann anstatt einer Zahl das Wort unbounded angegeben werden. |
<xs:element name="adresse">
<xs:complexType>
<xs:sequence>
<xs:element name="strasse">
<xs:element name="plz">
<xs:element name="ort">
</xs:sequence>
</xs:complexType>
</xs:element>
attributeGroup
Attribute können in Gruppen unter einem gemeinsamen Namen zusammengefasst werden, um diese Gruppe von Attributen mehreren Elementen zuordnen zu können. Solche Attributgruppen werden mit folgender Syntax definiert:
<xs:attributeGroup name="name"> ... </xs:attributeGroup>
Der Name name der Gruppe muss im gesamten XML-Schema eindeutig sein. Elemente können diese Gruppe durch die Angabe des Namens in dem ref-Attribut des Elements attributeGroup einbinden.
<xs:attributeGroup name="telefonnummer"> <xs:attribute name="vorwahl" type="xs:string" use="optional"/> <xs:attribute name="nummer" type="xs:string" use="required"/> </xs:attributeGroup> <xs:complexType name="telefon"> <xs:attribute name="typ" type="xs:string" use="optional"/> <xs:attributeGroup ref="telefonnummer"/> </xs:complexType/>
Das Beispiel interpretiert der XML-Parser folgendermaßen:
<xs:complexType name="telefon"> <xs:attribute name="typ" type="xs:string" use="optional"/> <xs:attribute name="vorwahl" type="xs:string" use="optional"/> <xs:attribute name="nummer" type="xs:string" use="required"/> </xs:complexType/>
Attributgruppen können auch weitere Attributgruppen enthalten, so dass sehr komplexe Strukturen erstellt werden können, allerding muss hier darauf geachtet werden, dass keine Rekursionen entstehen.
group
Genauso wie Attribute können auch Elemente in Gruppen unter einem gemeinsamen Namen zusammengefasst werden. Die Syntax für die Erstellung von Elementgruppen ist:
<xs:group name="name"> ... </xs:group>
Der Name name der Gruppe muss im gesamten XML-Schema eindeutig sein. Elemente können diese Gruppe durch die Angabe des Namens in dem ref-Attribut des Elements group einbinden.
<xs:group name="adresse">
<xs:all>
<xs:element name="strasse" type="xs:string"/>
<xs:element name="plz" type="xs:string"/>
<xs:element name="ort" type="xs:string"/>
</xs:all>
</xs:group>
<xs:complexType name="anschrift">
<xs:all>
<xs:element name="vorname" type="xs:string"/>
<xs:element name="nachname" type="xs:string"/>
<xs:group ref="adresse"/>
</xs:all>
</xs:complexType/>
Das Beispiel interpretiert der XML-Parser folgendermaßen:
<xs:complexType name="anschrift">
<xs:all>
<xs:element name="vorname" type="xs:string"/>
<xs:element name="nachname" type="xs:string"/>
<xs:all>
<xs:element name="strasse" type="xs:string"/>
<xs:element name="plz" type="xs:string"/>
<xs:element name="ort" type="xs:string"/>
</xs:all>
</xs:all>
</xs:complexType/>
Fassetten
Als Fassetten (engl. facets ) werden Beschränkungen an XML Elementen bezeichnet. Fassetten werden mit dem Element restriction festgelegt. Die möglichen Fassetten werden durch den Datentyp des Elements vorgegeben, der entweder über das type Attribute des Elements element definiert wird, oder über die Angabe base des Elements restriction.
<xs:element name="name" type="type">
<xs:simpleType>
<xs:restriction base="type">
<xs:fassette value="wert"/>
<xs:restriction>
</xs:simpleType>
</xs:element>
Beispiel:
<xs:element name="schulnote">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:length value="6"/>
<xs:minInclusive value="1"/>
<xs:maxInclusive value="6"/>
<xs:restriction>
</xs:simpleType>
</xs:element>
Einbinden eines XML-Schemas
Ein XML-Schema wird über das im Namensraum http://www.w3.org/2001/XMLSchema-instance definierte Attribut schemaLocation in ein XML-Dokument eingebunden. Als Präfix für den Namensraum wird in der Regel xsi verwendet. Der Wert des Attributes schemaLocation ist ein URL auf die Schema-Datei.
<?xml version="1.0"?>
<p:rechnung xmlns:p="http://www.bitworld.de/rechnung/"
xmlns:xsdi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.bitworld.de/rechnung.xsd">
<p:nummer>156899</p:nummer>
<p:datum>2007-10-26</p:datum>
<p:betrag>129</p:betrag>
<p:mwst>19</p:mwst>
</p:rechnung>
Primitive Datentypen
Im XML Schema sind viele Datentypen bereits vordefiniert, es ist aber auch möglich, eigene Datentypen zu definieren. Folgende primitive Datentypen sind im XML Schema definiert:
| Primitive Datentypen |
Beschränkende Fassetten | Beschreibung |
|---|---|---|
stringanyURIAbgeleitete Datentypen normalizedStringtokenlanguageNMTOKENNMTOKENSNameNCNAMEIDIDREFIDREFSENTITY |
Der Datentyp string stellt Zeichenketten in XML dar. Der Datentyp anyURI stellt ebenfalls eine Zeichenkette dar, kennzeichnet diese jedoch als Uniform Resource Identifier.
Der abgeleitete Datentyp Gleiches gilt für den Datentyp Die Datentypen |
|
| length | <length value="positive ganzzahl"/> Gibt die Länge der Zeichenkette in Zeichen an und kann für die Bestimmung des Speicherbedarfs verwendet werden. |
|
| minLength | <minLength value="positive ganzzahl"/> Gibt die minimale Länge der Zeichenkette in Zeichen an. |
|
| maxLength | <maxLength value="positive ganzzahl"/> Gibt die maximale Länge der Zeichenkette in Zeichen an. Dieser Wert kann von dem Wert der Fassette |
|
| pattern | <pattern value="regulärer ausdruck"/> Ein regulärer Ausdruck der ein Muster für die Zeichenkette definiert. |
|
| enumeration | <enumeration value="zeichenkette"/> Beschränkt die Zeichenkette auf bestimmte benannte Werte. Diese Werte werden durch die Angabe mehrerer |
|
| whiteSpace | <whiteSpace value="preserve|replace|collapse"/> Definiert ein bestimmtes Verhalten bei Sonderzeichen (Tabulator, Wagenrücklauf, Zeilenvorschub). Es sind folgende Werte möglich:
|
|
boolean |
Logischer Datentyp der die Werte true, false, 0 oder 1 annehmen kann. |
|
| pattern | <pattern value="regulärer ausdruck"/> Ein regulärer Ausdruck der ein Muster für den logischen Ausdruck definiert. |
|
| whiteSpace | <whiteSpace value="preserve|replace|collapse"/> Definiert ein bestimmtes Verhalten bei Sonderzeichen (Tabulator, Wagenrücklauf, Zeilenvorschub). Es sind folgende Werte möglich:
|
|
decimalAbgeleitete Datentypen integerlongintshortbytenonPositiveIntegernonNegativeIntegernegativeIntegernegativeIntegerpositiveIntegerunsignedLongunsignedIntunsignedShortunsignedByte |
Datentyp für die Angabe von Dezimalzahlen in XML. Die Datentypen integer, long, int, short und byte beschreiben die Menge von ganzen Zahlen. Bei diesen Datentypen ist die Fassette fractionDigits immer 0. Der Datentyp nonPositiveInteger definiert die Menge der negativen ganzen Zahlen (..., -2, -1, 0) inkl. der Null und nonNegativeInteger entsprechend die Menge der positiven ganzen Zahlen (0, 1, 2, ...) inkl. der Null. Die Datentypen negativeInteger und positiveInteger definieren auch die Menge der negativen bzw. positiven ganzen Zahlen, schließen aber die Null nicht mit ein (..., -2, -1) bzw. (1, 2, ...). Die Datentypen ohne Vorzeichen: unsignedLong, unsignedInt, unsignedShort und unsignedByte umfassen alle die Menge der positiven ganzen Zahlen inkl. der Null unterscheiden sich aber in ihrem Wertebereich:
unsignedLong : 0 - 18.446.744.073.709.551.615 unsignedInt : 0 - 4.294.967.295 unsignedShort: 0 - 65.535 unsignedByte : 0 - 255 |
|
| totalDigits | <totalDigits value="positive ganzzahl"/> Definiert die Gesamtzahl an Stellen der Dezimalzahl (Vor-, wie auch Nachkommastellen). |
|
| fractionDigits | <fractionDigits value="positive ganzzahl"/> Definiert die Anzahl an Nachkommastellen. |
|
| pattern | <pattern value="regulärer ausdruck"/> Ein regulärer Ausdruck der ein Muster für die Dezimalzahl definiert. |
|
| whiteSpace | <whiteSpace value="preserve|replace|collapse"/> Definiert ein bestimmtes Verhalten bei Sonderzeichen (Tabulator, Wagenrücklauf, Zeilenvorschub). Es sind folgende Werte möglich:
|
|
| enumeration | <enumeration value="zeichenkette"/> Beschränkt die Dezimalzahl auf bestimmte benannte Werte. Diese Werte werden durch die Angabe mehrerer |
|
| minInclusive | <minInclusive value="dezimalzahl"/> Gibt den kleinsten erlaubten Dezimalwert an. |
|
| minExclusive | <minExclusive value="dezimalzahl"/> Gibt den Dezimalwert an, der außerhalb des erlaubten unteren Wertebereichs liegt. |
|
| maxInclusive | <maxInclusive value="dezimalzahl"/> Gibt den größ erlaubten Dezimalwert an. |
|
| maxExclusive | <maxExclusive value="dezimalzahl"/> Gibt den Dezimalwert an, der außerhalb des erlaubten oberen Wertebereichs liegt. |
|
floatdouble |
Datentyp für die Definition von 32-bit (float) bzw. 64-bit (double) Fließkommazahlen in XML. Fließkommazahlen können in der Form Mantisse E Exponent angegeben werden, wobei die Mantisse eine Dezimalzahl sein muss und der Exponent eine Ganzzahl. | |
| pattern | <pattern value="regulärer ausdruck"/> Ein regulärer Ausdruck der ein Muster für die Fließkommazahl definiert. |
|
| whiteSpace | <whiteSpace value="preserve|replace|collapse"/> Definiert ein bestimmtes Verhalten bei Sonderzeichen (Tabulator, Wagenrücklauf, Zeilenvorschub). Es sind folgende Werte möglich:
|
|
| enumeration | <enumeration value="zeichenkette"/> Beschränkt die Fließkommazahl auf bestimmte benannte Werte. Diese Werte werden durch die Angabe mehrerer |
|
| minInclusive | <minInclusive value="dezimalzahl"/> Gibt den kleinsten erlaubten Wert an. |
|
| minExclusive | <minExclusive value="dezimalzahl"/> Gibt den Wert an, der außerhalb des erlaubten unteren Wertebereichs liegt. |
|
| maxInclusive | <maxInclusive value="dezimalzahl"/> Gibt den größ erlaubten Wert an. |
|
| maxExclusive | <maxExclusive value="dezimalzahl"/> Gibt den Wert an, der außerhalb des erlaubten oberen Wertebereichs liegt. |
|
duration |
Datentyp für die Darstellung einer Zeitdauer. Das Format der Darstellung entspricht der ISO 8601 und wird in der folgenden Form angegeben (ohne Leerstellen):
Der Ausdruck beginnt mit einem |
|
| pattern | <pattern value="regulärer ausdruck"/> Ein regulärer Ausdruck der ein Muster für die Darstellung der Zeitdauer definiert. |
|
| enumeration | <enumeration value="zeichenkette"/> Beschränkt die Zeidauer auf bestimmte benannte Werte. Diese Werte werden durch die Angabe mehrerer |
|
| whiteSpace | <whiteSpace value="preserve|replace|collapse"/> Definiert ein bestimmtes Verhalten bei Sonderzeichen (Tabulator, Wagenrücklauf, Zeilenvorschub). Es sind folgende Werte möglich:
|
|
| minInclusive | <minInclusive value="dezimalzahl"/> Gibt den kleinsten erlaubten Wert an. |
|
| minExclusive | <minExclusive value="dezimalzahl"/> Gibt den Wert an, der außerhalb des erlaubten unteren Wertebereichs liegt. |
|
| maxInclusive | <maxInclusive value="dezimalzahl"/> Gibt den größ erlaubten Wert an. |
|
| maxExclusive | <maxExclusive value="dezimalzahl"/> Gibt den Wert an, der außerhalb des erlaubten oberen Wertebereichs liegt. |
|
dateTimedatetime |
Datentyp für die Darstellung eines Zeitpunktes. Das Format der Darstellung ist:
Der Ausdruck beginnt mit der vierstelligen Jahreszahl, gefolgt von dem Monat (2-stellig) und dem Tag (2-stellig). Das Die Zeitzone hat folgendes Format: Die Datentypen |
|
| pattern | <pattern value="regulärer ausdruck"/> Ein regulärer Ausdruck der ein Muster für die Darstellung des Zeitpunktes definiert. |
|
| enumeration | <enumeration value="zeichenkette"/> Beschränkt den Zeitpunkt auf bestimmte benannte Werte. Diese Werte werden durch die Angabe mehrerer |
|
| whiteSpace | <whiteSpace value="preserve|replace|collapse"/> Definiert ein bestimmtes Verhalten bei Sonderzeichen (Tabulator, Wagenrücklauf, Zeilenvorschub). Es sind folgende Werte möglich:
|
|
| minInclusive | <minInclusive value="dezimalzahl"/> Gibt den kleinsten erlaubten Wert an. |
|
| minExclusive | <minExclusive value="dezimalzahl"/> Gibt den Wert an, der außerhalb des erlaubten unteren Wertebereichs liegt. |
|
| maxInclusive | <maxInclusive value="dezimalzahl"/> Gibt den größ erlaubten Wert an. |
|
| maxExclusive | <maxExclusive value="dezimalzahl"/> Gibt den Wert an, der außerhalb des erlaubten oberen Wertebereichs liegt. |
|
hexBinary |
Datentyp für die Darstellung von Hexadezimalzahlen. | |
| length | <length value="positive ganzzahl"/> Gibt die Länge der Hexadezimalzahl in Bytes an und kann für die Bestimmung des Speicherbedarfs verwendet werden. |
|
| minLength | <minLength value="positive ganzzahl"/> Gibt die minimale Länge der Hexadezimalzahl in Bytes . |
|
| maxLength | <maxLength value="positive ganzzahl"/> Gibt die maximale Länge der Hexadezimalzahl in Bytes an. Dieser Wert kann von dem Wert der Fassette |
|
| pattern | <pattern value="regulärer ausdruck"/> Ein regulärer Ausdruck der ein Muster für die Hexadezimalzahl definiert. |
|
| enumeration | <enumeration value="zeichenkette"/> Beschränkt die Hexadezimalzahl auf bestimmte benannte Werte. Diese Werte werden durch die Angabe mehrerer |
|
| whiteSpace | <whiteSpace value="preserve|replace|collapse"/> Definiert ein bestimmtes Verhalten bei Sonderzeichen (Tabulator, Wagenrücklauf, Zeilenvorschub). Es sind folgende Werte möglich:
|
|
base64Binary |
Datentyp für die Darstellung von Base64 kodierten Binärwerten. Die Werte sollten in Zeilen mit einer Länge von 76 Zeichen angegeben werden, allerdings ist dies keine zwingende Voraussetzung. | |
| length | <length value="positive ganzzahl"/> Gibt die Länge der Base64-Werte in Zeichen an und kann für die Bestimmung des Speicherbedarfs verwendet werden. |
|
| minLength | <minLength value="positive ganzzahl"/> Gibt die minimale Länge der Base64-Werte in Zeichen an. |
|
| maxLength | <maxLength value="positive ganzzahl"/> Gibt die maximale Länge der Base64-Werte in Zeichen an. Dieser Wert kann von dem Wert der Fassette |
|
| pattern | <pattern value="regulärer ausdruck"/> Ein regulärer Ausdruck der ein Muster für die Base64-Werte definiert. |
|
| enumeration | <enumeration value="zeichenkette"/> Beschränkt die Base64-Werte auf bestimmte benannte Werte. Diese Werte werden durch die Angabe mehrerer |
|
| whiteSpace | <whiteSpace value="preserve|replace|collapse"/> Definiert ein bestimmtes Verhalten bei Sonderzeichen (Tabulator, Wagenrücklauf, Zeilenvorschub). Es sind folgende Werte möglich:
|
|
Für weitere Datentypen siehe W3C Recommendation - XML Schema Datentypen.
Einem Element kann entweder ein Vorgabewert oder ein konstanter Wert zugewiesen werden
<xs:element name="color" type="xs:string" default ="white"/>
<xs:element name="color" type="xs:string" fixed ="white"/>
Quellen
W3C XML Schema Part 0: Primer Second Edition, W3C Recommendation 28 October 2004
W3C XML Schema Part 1: Structures Second Edition, W3C Recommendation 28 October 2004
W3C XML-Schema Part 2: Datatypes Section, W3C Recommendation 28 October 2004

![Validate my RSS feed [Valid RSS]](/templates/bitworld/images/valid-rss.png)
