Druck-Version
Deutsch Nederlands English
Inhaltsverzeichnis
Teile: Teil: XML Teil: PHP Quellenverzeichnis
Pfad: > Teil: XML > XML-Schema
Benachbarte Abschnitte: Grundlagen Definition komplexer Typen, Elementen- und Attributdeklaration Simple Typen Anonyme Typ-Definitionen Element-Inhalte Kommentare (annotations) Aufbau von Inhaltsmodellen Attribut-Gruppen NIL-Werte
Untergeordnete Abschnitte: Aufzählungstypen (List Types) Vereinigungstypen (Union Types)
1.3.3. Simple Typen

XML-Schema bringt eine Reihe von vordefinierten, simplen Typen mit. Des Weiteren ist es möglich, neue simple Typen durch Vererbung zu definieren. Beide Arten von simplen Typen können nachfolgend in Element- und Attribut-Deklarationen verwendet werden. Die andere Form definierter Typen, die komplexen Typen, können lediglich auf Elemte angewendet werden,

Tabelle 4: Simple Typen von XML Schema

Simpler Typ

Beispiele (Kommata-getrennt)

Hinweise

String

Confirm this is electric

NormalizedString

Confirm this is electric

siehe (3)

token

Confirm this is electric

siehe (4)

byte

-1, 126

siehe (2)

UnsignedByte

0, 126

siehe (2)

base64Binary

GpM7

HexBinary

0FB7

Integer

-126789, -1, 0, 1, 126789

siehe (2)

PositiveInteger

1, 126789

siehe (2)

NegativeInteger

-126789, -1

siehe (2)

NonNegativeInteger

0, 1, 126789

siehe (2)

NonPositiveInteger

-126789, -1, 0

siehe (2)

int

-1, 126789675

siehe (2)

UnsignedInt

0, 1267896754

siehe (2)

long

-1, 12678967543233

siehe (2)

UnsignedLong

0, 12678967543233

siehe (2)

short

-1, 12678

siehe (2)

UnsignedShort

0, 12678

siehe (2)

decimal

-1.23, 0, 123.4, 1000.00

siehe (2)

float

-INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN

Äquivalent zu einfach-genauem 32-Bit-Fließkomma; NaN bedeutet "not a number", siehe (2)

double

-INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN

Äquivalent zu einfach doppelt-genauem 64-bit Fließkomma; NaN bedeutet "not a number", siehe (2)

boolean

True, false 1, 0

time

13:20:00.000, 13:20:00.000-05:00

siehe (2)

dateTime

1999-05-31T13:20:00.000-05:00

31. Mai 1999, 13:20 Uhr Eastern Standard Time (5 Stunden auf Co-Ordinated Universal Time zurück), siehe (2)

duration

P1Y2M3DT10H30M12.3S

1 Jahr, 2 Monate, 3 Tage, 10 Stunden, 30 Minuten und 12.3 Sekunden

date

1999-05-31

siehe (2)

gMonth

--05--

Mai, siehe (2) (5)

gYear

1999

1999, siehe (2) (5)

gYearMonth

1999-02

Der Monat Februar 1999, unabhängig der Anzahl von Tagen, siehe (2) (5)

gDay

---31

der 31. Tag, siehe (2) (5)

gMonthDay

--05-31

jeder 31. Mai, siehe (2) (5)

Name

ShipTo

XML 1.0 Name type

QName

po:USAddress

XML Namespace QName

NCName

USAddress

XML Namespace NCName, d.h. QName ohne Präfix und Doppelpunkt

anyURI

Http://www.example.com/, http://www.example.com/doc.html#ID5

language

en-GB, en-US, fr

Gültige Werte für xml:lang wie in XML 1.0

ID

XML 1.0 ID Attribut-Typ, siehe (1)

IDREF

XML 1.0 IDREF Attribut-Typ, siehe (1)

IDREFS

XML 1.0 IDREFS Attribut-Typ, siehe (1)

ENTITY

XML 1.0 ENTITY Attribut-Typ, siehe (1)

ENTITIES

XML 1.0 ENTITIES Attribut-Typ, siehe (1)

NOTATION

XML 1.0 NOTATION Attribut-Typ, siehe (1)

NMTOKEN

US, Brésil

XML 1.0 NMTOKEN Attribut-Typ, siehe (1)

NMTOKENS

US UK, Brésil Canada Mexique

XML 1.0 NMTOKENS Attribut-Typ, d.h. eine Whitespace-getrennte List von NMTOKEN's, siehe (1)

Hinweise:

  • Um Kompatibilität zwischen XML-Schema und XML 1.0 DTD zu gewährleisten, sollten die simplen Typen ID, IDREF, IDREFS, ENTITY, ENTITIES, NOTATION, NMTOKEN, NMTOKENS nur in Attribute verwendet werden.

  • Ein Wert diesen Typs kann in verschiedenen Schreibweisen vorliegen, bspw. sind 100 und 1.0E2 beide gültige Fließkomma-Werte, die "einhundert" darstellen. Allerdings wurden Regeln eingeführt, die ein bestimmtes lexikalisches Format vorschreiben.

  • Zeilenvorschub-, Tabulator- und Wagenrücklauf-Zeichen in einem normalizedString werden zu Leerzeichen konvertiert vor dem Verarbeiten des Schemas.

  • Wie normalizedString; zusätzlich werden mehrere Leerzeichen zu einem zusammengefaßt, führende und folgende Leerzeichen werden entfernt.

  • Das "g"-Präfix signalisiert Zeitangaben nach dem Gregorianischen Kalender.

Neue simple Typen werden von bestehenden (eingebauten oder hergeleiteten) abgeleitet. Dazu wird der vorhandene Type in seinem Umfang eingeschränkt, so dass der neu entstehende Typ eine Untermenge des ursprünglichen Typs darstellt.

Das simpleType-Element wird verwendet, um den neuen, simplen Typ zu benennen und zu definieren. In ihm wird das restriction-Element verwendet, um den Basistypen zu spezifizieren, von dem abgeleitet werden soll, und die "facets" (Facetten) zu benennen, die die Einschränkungen darstellen. Mögliche Facetten: length, minLength, maxLength, pattern, enumeration, whiteSpace, maxInclusive, maxExclusive, minInclusive, minExclusive, totalDigits und fractionDigits. Nicht alle Facetten können jedoch auf alle Typen angewendet werden.

Soll ein neuer Integer-Typ gebildet werden, bei dem die Spanne gültiger Werte von 10000 bis zu 99999 (inklusive) reicht, wird vom simplen Typen integer abgeleitet, und entsprechend der minimale und maximale Wert begrenzt.

Beispiel 21: minInclusive und maxInclusive
<xsd:simpleType name="myInteger"> 
	<xsd:restriction base="xsd:integer"> 
		<xsd:minInclusive value="10000"/> 
		<xsd:maxInclusive value="99999"/> 
	</xsd:restriction> 
</xsd:simpleType> 

Andere Restriktionen führen ggf. ebenfalls zum gewünschten Ergebnis.

Mit pattern's lassen sich reguläre Ausdrücke zum Beschränken des Gültigkeitsbereichs von string-Typen verwenden.

Beispiel 22: Regulärer Ausdruck mittels pattern
<xsd:simpleType name="SKU"> 
	<xsd:restriction base="xsd:string"> 
		<xsd:pattern value="\d{3}-[A-Z]{2}"/> 
	</xsd:restriction> 
</xsd:simpleType> 

Unter den genannten Facetten ist vor allem enumeration sehr nützlich. Es läßt sich auf alle Typen anwenden (außer boolean). Es beschränkt einen simplen Typen auf eine benannte Liste eindeutiger Werte.

Beispiel 23: US-Staaten als enumerated-Liste
<xsd:simpleType name="USState"> 
	<xsd:restriction base="xsd:string"> 
		<xsd:enumeration value="AK"/> 
		<xsd:enumeration value="AL"/> 
		<xsd:enumeration value="AR"/> 
		<!-- u.s.w. --> 
	</xsd:restriction> 
</xsd:simpleType>