Datentypen Data Types Simple Types Complex Types User-derived Built-in Atomic (restriction) Non-atomic (list, union) Primitive Derived WT:III-1 XML Schema Reference Lettmann 2014
Datentypen anytype anysimpletype base types list types primitive types derived types derived from anyatomictype anyuri boolean time gday NOTATION double date gmonth QName float datetime gmonthday base64binary decimal datetimestamp gyear hexbinary... duration gyearmonth string daytimeduration ENTITIES... yearmonthduration IDREFS NMTOKENS WT:III-2 XML Schema Reference Lettmann 2014
Datentypen anytype anysimpletype anyatomictype base types primitive types derived types derived from string normalizedstring token language Name NCName ENTITY ID IDREF NMTOKEN decimal integer long int short byte nonnegativeinteger positiveinteger unsignedlong unsignedint unsignedshort unsignedbyte nonpositiveinteger negativeinteger WT:III-3 XML Schema Reference Lettmann 2014
Datentypen Data Types Simple Types Complex Types Empty Simple Content Complex Cont. Sequence All Choice WT:III-4 XML Schema Reference Lettmann 2014
Aufbau einer XML-Schemainstanz: Rahmen <?xml version="1.0"?> <myns:myelementname xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://www.upb.de/webtec http://www.upb.de/webtec/myschema.xsd" xmlns:myns="http://www.upb.de/webtec"...>. </myns:myelementname> xmlns:xsi="..." Deklaration Schemainstanz-Namensraum für Vokabular zur Anbindung des Schema-Dokumentes xsi:schemalocation="..." Bindung Namensraum an Schema-Datei (auch mehrere Paare möglich) xmlns:myns="..." Deklaration Namensraum für eigene Elemente und Attribute (war Zielnamensraum in Schema-Datei)... Weitere Attribute für myelementname wie in Schema-Datei festgelegt WT:III-5 XML Schema Reference Lettmann 2014
Aufbau eines XML-Schemas: Rahmen <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.upb.de/webtec" xmlns:myns="http://www.upb.de/webtec" elementformdefault="qualified" attributeformdefault="qualified">. </xsd:schema> xmlns:xsd="..." Deklaration Schema-Namensraum für Vokabular des Schema-Dokumentes targetnamespace="..." Festlegung Zielnamensraum (optional; falls nicht vorhanden: anonymer Namensraum) xmlns:myns="..." Deklaration Zielnamensraum für Referenzen (benannte eigene Datentypen, global deklarierte Elemente und Attribute) elementformdefault="qualified" attributeformdefault="qualified" Festlegung, ob Namen lokal deklarierter Elemente/Attribute in Zielnamensraum gehören oder zum anonymen Namensraum WT:III-6 XML Schema Reference Lettmann 2014
Inhaltsmodelle (a) einfacher Inhalt [W3C] : 1. Verwendung eines Builtin-Datentyps <xsd:element name="myelementname" type="xsd:decimal"/> Vergleichbare DTD-Definition: <!ELEMENT Elementname (#PCDATA)> 2. Verwendung eines Builtin-Datentyps mit Attribut <xsd:element name="myelementname" <xsd:complextype> <xsd:simplecontent> <xsd:extension base="xsd:string"> <xsd:attribute name="source" type="xsd:nmtoken"/> </xsd:extension> </xsd:simplecontent> </xsd:element> WT:III-7 XML Schema Reference Lettmann 2014
Inhaltsmodelle (Fortsetzung) (a) einfacher Inhalt [W3C] : 3. benannter einfacher Datentyp (nur global) <xsd:simpletype name="mysimpletypename"> <xsd:restriction base="xsd:positiveinteger"> <xsd:mininclusive value="8"/> <xsd:maxinclusive value="72"/> </xsd:restriction> </xsd:simpletype> Verwendung in Elementdeklaration: <xsd:element name="myelementname" type=="myns:mysimpletypename"/> Beachte die Qualifizierung bei Verwendung von type. WT:III-8 XML Schema Reference Lettmann 2014
Inhaltsmodelle (Fortsetzung) (a) einfacher Inhalt [W3C] : 4. benannter einfacher Datentyp mit Attribut <xsd:complextype name="myattributedsimpletypename"> <xsd:simplecontent> <xsd:extension base="myns:mysimpletypename"> <xsd:attribute name="source" type="xsd:nmtoken"/> </xsd:extension> </xsd:simplecontent> <xsd:simpletype name="mysimpletypename"> <xsd:restriction base="xsd:positiveinteger"> <xsd:mininclusive value="8"/> <xsd:maxinclusive value="72"/> </xsd:restriction> </xsd:simpletype> Der hohe Aufwand wird nötig, da hier ein eigener einfacher Datentyp die Basis der Erweiterung um ein Attribut ist. WT:III-9 XML Schema Reference Lettmann 2014
Inhaltsmodelle (Fortsetzung) (b) explizite Kindelemente [W3C] : 1. einfache lokale Datentypdefinition <xsd:element name="myelementname"> <xsd:complextype> <xsd:sequence> <xsd:element name="mychildname1" type="xsd:string" maxoccurs="3"/> <xsd:element name="mychildname2" type="xsd:string" minoccurs="0"/> </xsd:sequence> </xsd:element> Vergleichbare DTD-Definition, ohne Anzahl-Constraint: <!ELEMENT myelementname (mychildname1+, mychildname2?)> WT:III-10 XML Schema Reference Lettmann 2014
Inhaltsmodelle (Fortsetzung) (b) explizite Kindelemente [W3C] : 2. einfache lokale Datentypdefinition mit Attribut <xsd:element name="myelementname"> <xsd:complextype> <xsd:choice> <xsd:element name="mychildname1" type="xsd:string" maxoccurs="3"/> <xsd:element name="mychildname2" type="xsd:string" minoccurs="0"/> </xsd:choice> <xsd:attribute name="myattributename" type="xsd:string" use="optional"/> </xsd:element> Vergleichbare DTD-Definition, ohne Anzahl-Constraint: <!ELEMENT myelementname (mychildname1+ mychildname2?)> WT:III-11 XML Schema Reference Lettmann 2014
Inhaltsmodelle (Fortsetzung) (b) explizite Kindelemente [W3C] : 3. benannter Datentyp (nur global) mit Attribut <xsd:complextype name="mycomplextypename"> <xsd:choice> <xsd:element name="mychildname1" type="xsd:string" maxoccurs="3"/> <xsd:element name="mychildname2" type="xsd:string" minoccurs="0"/> </xsd:choice> <xsd:attribute name="myattributename" type="xsd:string" use="optional"/> Verwendung in Elementdeklaration: <xsd:element name="myelementname" type=="myns:mycomplextypename"/> WT:III-12 XML Schema Reference Lettmann 2014
Inhaltsmodelle (Fortsetzung) (b) explizite Kindelemente [W3C] : 4. benannter Datentyp mit Verwendung anderer globaler Element- und Attributdeklarationen <xsd:complextype name="mycomplextypename"> <xsd:choice> <xsd:element ref="myns:mychildname1" maxoccurs="3"/> <xsd:element ref="myns:mychildname2" minoccurs="0"/> </xsd:choice> <xsd:attribute ref="myns:myattributename" use="optional"/> <xsd:element name="mychildname1" type="xsd:string"/> <xsd:element name="mychildname2" type="xsd:string"/> <xsd:attribute name="myattributename" type="xsd:string"/> Beachte die Qualifizierung bei Verwendung von ref. Beachte die Position der Attribute minoccurs, maxoccurs und use bei der Verwendung der Elemente bzw. Attribute und nicht bei der Deklaration. WT:III-13 XML Schema Reference Lettmann 2014
Inhaltsmodelle (Fortsetzung) (c) gemischter Inhalt [W3C] : 1. einfache lokale Datentypdefinition <xsd:element name="myelementname" mixed="true"> <xsd:complextype> <xsd:all> <xsd:element name="mychildname1" type="xsd:string" maxoccurs="3"/> <xsd:element name="mychildname2" type="xsd:string" minoccurs="0"/> </xsd:all> </xsd:element> Vergleichbare DTD-Definition, ohne Anzahl-Constraint: <!ELEMENT myelementname (#PCDATA mychildname1 mychildname2)*> Die Verwendung von mixed="true" ist in allen Arten von komplexen Datentypen möglich außer bei der Art a) Bsp. 2 und Bsp. 4. WT:III-14 XML Schema Reference Lettmann 2014
Inhaltsmodelle (Fortsetzung) (d) beliebiger Inhalt [W3C] : 1. Verwendung des Builtin-Datentyps <xsd:element name="elementname" type="xsd:anytype"/> Vergleichbare DTD-Definition: <!ELEMENT Elementname ANY> WT:III-15 XML Schema Reference Lettmann 2014
Inhaltsmodelle (d) beliebiger Inhalt [W3C] : 2. Verwendung des Builtin-Datentyps mit Attribut <xsd:element name="myelementname" <xsd:complextype> <xsd:complexcontent> <xsd:extension base="xsd:anytype"> <xsd:attribute name="source" type="xsd:decimal"/> </xsd:extension> </xsd:complexcontent> </xsd:element> Ziel ist hier die Einschränkung des Attributes source auf einen bestimmten Datentyp und eine bestimmte Nutzung. Ohne Deklaration sind für alle Attribute beliebige Werte möglich. WT:III-16 XML Schema Reference Lettmann 2014
Inhaltsmodelle (Fortsetzung) (e) leerer Inhalt [W3C] : 1. einfache lokale Datentypdefinition <xsd:element name="myelementname"> <xsd:complextype> </xsd:element> Vergleichbare DTD-Definition: <!ELEMENT Elementname EMPTY> 2. einfache lokale Datentypdefinition mit Attribut <xsd:element name="myelementname"> <xsd:complextype> <xsd:attribute name="myattributename" type="xsd:string"/> </xsd:element> WT:III-17 XML Schema Reference Lettmann 2014
Inhaltsmodelle (Fortsetzung) (e) leerer Inhalt [W3C] : 3. benannter Datentyp (nur global) <xsd:complextype name="myemptytype"> Verwendung in Elementdeklaration: <xsd:element name="myelementname" type=="myns:myemptytype"/> 4. benannter Datentyp mit Attribut <xsd:complextype name="myemptytype"/> <xsd:attribute name="myattributename" type="xsd:string"/> WT:III-18 XML Schema Reference Lettmann 2014
Datentypen für Attribute Attribute können nur einfache Datentypen haben. Sie werden aus den verfügbaren einfachen Builtin-Datentypen [W3C] durch Einschränkung der Wertemenge abgeleitet. 1. Angabe von Minimal-, Maximalwerten <xsd:simpletype name="mysimpletypename1"> <xsd:restriction base="xsd:positiveinteger"> <xsd:mininclusive value="8"/> <xsd:maxinclusive value="72"/> </xsd:restriction> </xsd:simpletype> 2. Angabe von Minimal-, Maximalwerten <xsd:simpletype name="mysimpletypename2"> <xsd:restriction base="xsd:date"> <xsd:minexclusive value="1999-05-31"/> <xsd:maxexclusive value="2014-05-31"/> </xsd:restriction> </xsd:simpletype> WT:III-19 XML Schema Reference Lettmann 2014
Datentypen für Attribute Attribute können nur einfache Datentypen haben. Sie werden aus den verfügbaren einfachen Builtin-Datentypen [W3C] durch Einschränkung der Wertemenge abgeleitet. 3. Angabe von Pattern für die Zeichenkette <xsd:simpletype name="mysimpletypename3"> <xsd:restriction base="xsd:string"> <xsd:pattern value="code [0-9]9-[A-Z]2"/> </xsd:restriction> </xsd:simpletype> 4. Angabe von Pattern für die Zeichenkette <xsd:simpletype name="mysimpletypename4"> <xsd:restriction base="xsd:decimal"> <xsd:pattern value="[1-9][0-9]* 0"/> </xsd:restriction> </xsd:simpletype> WT:III-20 XML Schema Reference Lettmann 2014
Datentypen für Attribute Attribute können nur einfache Datentypen haben. Sie werden aus den verfügbaren einfachen Builtin-Datentypen [W3C] durch Einschränkung der Wertemenge abgeleitet. 5. Angabe der genauen Länge der Zeichenkette <xsd:simpletype name="mysimpletypename5"> <xsd:restriction base="xsd:decimal"> <xsd:length value="10"/> </xsd:restriction> </xsd:simpletype> 6. Angabe von Minimal-, Maximallänge <xsd:simpletype name="mysimpletypename6"> <xsd:restriction base="xsd:qname"> <xsd:minlength value="3"/> <xsd:maxlength value="12"/> </xsd:restriction> </xsd:simpletype> WT:III-21 XML Schema Reference Lettmann 2014
Datentypen für Attribute Attribute können nur einfache Datentypen haben. Sie werden aus den verfügbaren einfachen Builtin-Datentypen [W3C] durch Einschränkung der Wertemenge abgeleitet. 7. Aufzählung der möglichen Werte für die Zeichenkette <xsd:simpletype name="mysimpletypename7"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="alpha"/> <xsd:enumeration value="beta"/> <xsd:enumeration value="gamma"/> <xsd:enumeration value="delta"/> <xsd:enumeration value="epsilon"/> <xsd:enumeration value="zeta"/> <xsd:enumeration value="eta"/> <xsd:enumeration value="theta"/> <xsd:enumeration value="iota"/> <xsd:enumeration value="kappa"/> <xsd:enumeration value="lambda"/> </xsd:restriction> </xsd:simpletype> WT:III-22 XML Schema Reference Lettmann 2014