cache cache cache cache cache cache cache cache cache cache cache cache cache cache cache cache cache cache
 

Grundlagen - XML-Schema

Drucken
XML-Schema
Geschrieben von: Christian Jänicke
Samstag, 23. Januar 2010

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
string
anyURI
Abgeleitete Datentypen
normalizedString
token
language
NMTOKEN
NMTOKENS
Name
NCNAME
ID
IDREF
IDREFS
ENTITY
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 normalizedString definiert Zeichenketten, die kein Sonderzeichen (Tabulator, Wagenrücklauf, Zeilenvorschub) enthalten dürfen.

Gleiches gilt für den Datentyp token, allerdings darf dieser zusätzlich weder ein führendes, noch ein abschließendes Leerzeichen enthalten und innerhalb der Zeichenkette keine Folge von zwei oder mehr Leerzeichen hintereinander. Der Datentyp language unterliegt den gleichen Beschränkungen wie token und Kennzeichnet eine Sprache nach RFC 3066. Die Erlaubten Werte sind in der ISO 3166 definiert. NMTOKEN und NMTOKENS werden ebenfalls von token abgeleitet und Kennzeichnen gültige XML-Bezeichner (NMTOKEN) bzw. eine Sequenz von gültigen XML-Bezeichnern (NMTOKENS). Beide Datentypen sollten jedoch nur für Attribute verwendet werden. Name definiert einen XML-Namen und gleicht in seinen Beschränkungen dem Datentyp token.

Die Datentypen NCNAME, ID, IDREF, IDREFS (als Sequenz von IDREF Typen) und ENTITY bzw. ENTITIES, als Sequenz von ENTITY Typen, definieren die entsprechenden XML-Typen und leiten sich alle von token ab.

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 length abweichen und sollte nicht für die Bestimmung des Speicherbedarfs verwendet werden.

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 enumeration Fassetten definiert.

whiteSpace
<whiteSpace value="preserve|replace|collapse"/>

Definiert ein bestimmtes Verhalten bei Sonderzeichen (Tabulator, Wagenrücklauf, Zeilenvorschub).

Es sind folgende Werte möglich:

preserve: Der Wert wird nicht verändert.
replace: Jedes Sonderzeichen wird durch ein Leerzeichen ersetzt.
collapse: Erweitert replace dadurch, daß aufeinander folgende Leer- und Sonderzeichen durch ein einziges Leerzeichen ersetzt werden.

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:

preserve: Der Wert wird nicht verändert.
replace: Jedes Sonderzeichen wird durch ein Leerzeichen ersetzt.
collapse: Erweitert replace dadurch, daß aufeinander folgende Leer- und Sonderzeichen durch ein einziges Leerzeichen ersetzt werden.

decimal
Abgeleitete Datentypen
integer
long
int
short
byte
nonPositiveInteger
nonNegativeInteger
negativeInteger
negativeInteger
positiveInteger
unsignedLong
unsignedInt
unsignedShort
unsignedByte
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:

preserve: Der Wert wird nicht verändert.
replace: Jedes Sonderzeichen wird durch ein Leerzeichen ersetzt.
collapse: Erweitert replace dadurch, daß aufeinander folgende Leer- und Sonderzeichen durch ein einziges Leerzeichen ersetzt werden.

enumeration
<enumeration value="zeichenkette"/>

Beschränkt die Dezimalzahl auf bestimmte benannte Werte. Diese Werte werden durch die Angabe mehrerer enumeration Fassetten definiert.

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.

float
double
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:

preserve: Der Wert wird nicht verändert.
replace: Jedes Sonderzeichen wird durch ein Leerzeichen ersetzt.
collapse: Erweitert replace dadurch, daß aufeinander folgende Leer- und Sonderzeichen durch ein einziges Leerzeichen ersetzt werden.

enumeration
<enumeration value="zeichenkette"/>

Beschränkt die Fließkommazahl auf bestimmte benannte Werte. Diese Werte werden durch die Angabe mehrerer enumeration Fassetten definiert.

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):

P jahreY monateM tageD T stundenH minutenM sekundenS

Der Ausdruck beginnt mit einem P, gefolgt von der Zeitdauer, wobei nicht alle Werte angegeben werden müssen. So definiert der Ausdruck P90D eine Zeitdauer von 90 Tagen. Das T dient zur Trennung von Datums- und Zeitangaben. Bei der Angabe von Sekunden können optional die Sekundenbruchteile angegeben werden, wobei diese durch einen Punkt von den Sekunden getrennt werden: ss.s. Vor dem P kann ein Minuszeichen - angegeben werden, um eine negative Zeitdauer anzuzeigen.

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 enumeration Fassetten definiert.

whiteSpace
<whiteSpace value="preserve|replace|collapse"/>

Definiert ein bestimmtes Verhalten bei Sonderzeichen (Tabulator, Wagenrücklauf, Zeilenvorschub).

Es sind folgende Werte möglich:

preserve: Der Wert wird nicht verändert.
replace: Jedes Sonderzeichen wird durch ein Leerzeichen ersetzt.
collapse: Erweitert replace dadurch, daß aufeinander folgende Leer- und Sonderzeichen durch ein einziges Leerzeichen ersetzt werden.

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.

dateTime
date
time
Datentyp für die Darstellung eines Zeitpunktes. Das Format der Darstellung ist:

yyyy-mm-ddThh:mm:ss.szzzzzz

Der Ausdruck beginnt mit der vierstelligen Jahreszahl, gefolgt von dem Monat (2-stellig) und dem Tag (2-stellig). Das T dient als Trennzeichen zwischen Datums- und Zeitangabe. Die Zeit wird in der Form Stunden:Minuten:Sekunden angegeben, wobei bei den Sekunden optional hinter dem Punkt die Sekundenbruchteile angegeben werden können. Ebenfalls optional ist die Angabe der Zeitzone zzzzzz.

Die Zeitzone hat folgendes Format: +hh:mm oder +hh:mm. Der Wert hh gibt die Stundenmagnitude an und mm die Minutenmagnitude. Die Angabe kann entweder nicht-negativ (+) oder nicht-positiv (-) sein.

Die Datentypen date bzw. time haben die gleichen Fassetten wie der Datentyp dateTime, erlauben jedoch entweder nur die Angabe eines Datums (date) oder einer Uhrzeit (time). Das T im Format entfällt bei diesen 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 enumeration Fassetten definiert.

whiteSpace
<whiteSpace value="preserve|replace|collapse"/>

Definiert ein bestimmtes Verhalten bei Sonderzeichen (Tabulator, Wagenrücklauf, Zeilenvorschub).

Es sind folgende Werte möglich:

preserve: Der Wert wird nicht verändert.
replace: Jedes Sonderzeichen wird durch ein Leerzeichen ersetzt.
collapse: Erweitert replace dadurch, daß aufeinander folgende Leer- und Sonderzeichen durch ein einziges Leerzeichen ersetzt werden.

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 length abweichen und sollte nicht für die Bestimmung des Speicherbedarfs verwendet werden.

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 enumeration Fassetten definiert.

whiteSpace
<whiteSpace value="preserve|replace|collapse"/>

Definiert ein bestimmtes Verhalten bei Sonderzeichen (Tabulator, Wagenrücklauf, Zeilenvorschub).

Es sind folgende Werte möglich:

preserve: Der Wert wird nicht verändert.
replace: Jedes Sonderzeichen wird durch ein Leerzeichen ersetzt.
collapse: Erweitert replace dadurch, daß aufeinander folgende Leer- und Sonderzeichen durch ein einziges Leerzeichen ersetzt werden.

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 length abweichen und sollte nicht für die Bestimmung des Speicherbedarfs verwendet werden.

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 enumeration Fassetten definiert.

whiteSpace
<whiteSpace value="preserve|replace|collapse"/>

Definiert ein bestimmtes Verhalten bei Sonderzeichen (Tabulator, Wagenrücklauf, Zeilenvorschub).

Es sind folgende Werte möglich:

preserve: Der Wert wird nicht verändert.
replace: Jedes Sonderzeichen wird durch ein Leerzeichen ersetzt.
collapse: Erweitert replace dadurch, daß aufeinander folgende Leer- und Sonderzeichen durch ein einziges Leerzeichen ersetzt werden.

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

W3Schools XML Schema Tutorial

Zuletzt aktualisiert am Samstag, 23. Januar 2010

Impressum

Impressum

Haftungsausschluss

(1) Haftungsbeschränkung

Inhalte dieser Website

Die Inhalte dieser Website werden mit größtmöglicher Sorgfalt erstellt. Der Anbieter übernimmt jedoch keine Gewähr für die Richtigkeit, Vollständigkeit und Aktualität der bereitgestellten Inhalte. Die Nutzung der abrufbaren Inhalte erfolgt auf eigene Gefahr des Nutzers. Namentlich gekennzeichnete Beiträge geben die Meinung des jeweiligen Autors und nicht immer die Meinung des Anbieters wieder.

Verfügbarkeit der Website

Der Anbieter wird sich bemühen, den Dienst möglichst unterbrechungsfrei zum Abruf anzubieten. Auch bei aller Sorgfalt können aber Ausfallzeiten nicht ausgeschlossen werden. Der Anbieter behält sich das Recht vor, sein Angebot jederzeit zu ändern oder einzustellen.

Externe Links

Diese Website enthält Verknüpfungen zu Websites Dritter ("externe Links"). Diese Websites unterliegen der Haftung der jeweiligen Betreiber. Der Anbieter hat bei der erstmaligen Verknüpfung der externen Links die fremden Inhalte daraufhin überprüft, ob etwaige Rechtsverstöße bestehen. Zu dem Zeitpunkt waren keine Rechtsverstöße ersichtlich. Der Anbieter hat keinerlei Einfluss auf die aktuelle und zukünftige Gestaltung und auf die Inhalte der verknüpften Seiten. Das Setzen von externen Links bedeutet nicht, dass sich der Anbieter die hinter dem Verweis oder Link liegenden Inhalte zu Eigen macht. Eine ständige Kontrolle dieser externen Links ist für den Anbieter ohne konkrete Hinweise auf Rechtsverstöße nicht zumutbar. Bei Kenntnis von Rechtsverstößen werden jedoch derartige externe Links unverzüglich gelöscht.

Werbeanzeigen

Für den Inhalt der Werbeanzeigen ist der jeweilige Autor verantwortlich, ebenso wie für den Inhalt der beworbenen Website. Die Darstellung der Werbeanzeige stellt keine Akzeptanz durch den Anbieter dar.

Kein Vertragsverhältnis

Mit der Nutzung der Website des Anbieters kommt keinerlei Vertragsverhältnis zwischen dem Nutzer und dem Anbieter zustande. Insofern ergeben sich auch keinerlei vertragliche oder quasivertragliche Ansprüche gegen den Anbieter. Für den Fall, dass die Nutzung der Website doch zu einem Vertragsverhältnis führen sollte, gilt rein vorsorglich nachfolgende Haftungsbeschränkung: Der Anbieter haftet für Vorsatz und grobe Fahrlässigkeit sowie bei Verletzung einer wesentlichen Vertragspflicht (Kardinalpflicht). Der Anbieter haftet unter Begrenzung auf Ersatz des bei Vertragsschluss vorhersehbaren vertragstypischen Schadens für solche Schäden, die auf einer leicht fahrlässigen Verletzung von Kardinalpflichten durch ihn oder eines seiner gesetzlichen Vertreter oder Erfüllungsgehilfen beruhen. Bei leicht fahrlässiger Verletzung von Nebenpflichten, die keine Kardinalpflichten sind, haftet der Anbieter nicht. Die Haftung für Schäden, die in den Schutzbereich einer vom Anbieter gegebenen Garantie oder Zusicherung fallen sowie die Haftung für Ansprüche aufgrund des Produkthaftungsgesetzes und Schäden aus der Verletzung des Lebens, des Körpers oder der Gesundheit bleibt hiervon unberührt.

(2) Urheberrecht

Die auf dieser Website veröffentlichten Inhalte und Werke sind urheberrechtlich geschützt. Jede vom deutschen Urheberrecht nicht zugelassene Verwertung bedarf der vorherigen schriftlichen Zustimmung des jeweiligen Autors oder Urhebers. Dies gilt insbesondere für Vervielfältigung, Bearbeitung, Übersetzung, Einspeicherung, Verarbeitung bzw. Wiedergabe von Inhalten in Datenbanken oder anderen elektronischen Medien und Systemen. Inhalte und Beiträge Dritter sind dabei als solche gekennzeichnet. Die unerlaubte Vervielfältigung oder Weitergabe einzelner Inhalte oder kompletter Seiten ist nicht gestattet und strafbar. Lediglich die Herstellung von Kopien und Downloads für den persönlichen, privaten und nicht kommerziellen Gebrauch ist erlaubt.

Links zur Website des Anbieters sind jederzeit willkommen und bedürfen keiner Zustimmung durch den Anbieter der Website. Die Darstellung dieser Website in fremden Frames ist nur mit Erlaubnis zulässig.

(3) Datenschutz

Durch den Besuch der Website des Anbieters können Informationen über den Zugriff (Datum, Uhrzeit, betrachtete Seite) auf dem Server gespeichert werden. Diese Daten gehören nicht zu den personenbezogenen Daten, sondern sind anonymisiert. Sie werden ausschließlich zu statistischen Zwecken ausgewertet. Eine Weitergabe an Dritte, zu kommerziellen oder nichtkommerziellen Zwecken, findet nicht statt.

Der Anbieter weist ausdrücklich darauf hin, dass die Datenübertragung im Internet (z.B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen und nicht lückenlos vor dem Zugriff durch Dritte geschützt werden kann.

Die Verwendung der Kontaktdaten der Anbieterkennzeichnung - insbesondere der Telefon-/Faxnummern und E-Mailadresse - zur gewerblichen Werbung ist ausdrücklich nicht erwünscht, es sei denn der Anbieter hatte zuvor seine schriftliche Einwilligung erteilt oder es besteht bereits ein geschäftlicher Kontakt. Der Anbieter und alle auf dieser Website genannten Personen widersprechen hiermit jeder kommerziellen Verwendung und Weitergabe ihrer Daten.

(4) Anwendbares Recht

Es gilt ausschließlich das maßgebliche Recht der Bundesrepublik Deutschland.

(5) Besondere Nutzungsbedingungen

Soweit besondere Bedingungen für einzelne Nutzungen dieser Website von den vorgenannten Punkten (1) bis (4) abweichen, wird an entsprechender Stelle ausdrücklich darauf hingewiesen. In diesem Falle gelten im jeweiligen Einzelfall die besonderen Nutzungsbedingungen.

Quelle: Disclaimer von Juraforum.de - Portal mit Rechtsanwalt-Suche.