4 XML und Datenbanken XML wird von Internet Explorer ab Version 5.0 und von Netscape ab Version 6 unterstützt.

Ähnliche Dokumente
Namespaces. Namensräume...

XML Schema Kurzreferenz

XML Schema 2016 S h_da S Seite 1

XML-Schema Datentypen

XML Schema 2012/2013 S Seite 1 h_da W

3. XML Schema. XML Schema. Eigenschaften von XML Schema. Vorteile eines expliziten Schemas: Die XML Schema Recommendation des W3C besteht aus:

2 XML-Basiskonzepte. 2.1 XML-Dokumente

Document Type Definition (DTD)

Deklaration standalone="yes" Quelle:

XML DTD und Schema von Thomas Mangold

1. Einführung 2. DTD 3. XML Schema 4. XPath 5. XSLT 6. XSL-FO 7. XQuery 8. Web Services 9. XML und Datenbanken

Was ist SGML. - welche Auszeichnungen (Mark up) sind erlaubt? - welche Auszeichnungen sind notwendig?

IT-Zertifikat: Daten- und Metadatenstandards

Zusammenfassung XML. Metasprache um Dokumenttypen zu definieren

Logische Dokumentenstruktur mit SGML und XML

Eine Dokumenttypdefinition lässt sich im Kopfbereich des XML-Dokumentes (interne DTD) oder in einer separaten Datei formulieren (externe DTD).

XML Grundlagen Teil I

DTD: Syntax-Zusammenfassung

XML Vorlesung ETHZ SS XML Vorlesung ETHZ, Sommersemester

XML steht für Extensible Markup Language. Helmut Vonhoegen (2007) beschreibt XML unter anderem so:

Mario Jeckle. XML Schema

2. Einführung in Datenbanken und XML

<B1>Skript</B1> Skript zur Vorlesung Auszeichnungssprachen Stand: September 2016

Strukturierung von Inhalten

Einleitung. Schema root Übersicht Dokumentation

B Babuschka. Siehe Matrjoschka Babuschka-Design 294, 296, 301, 357 base 102, 109, 238 base64binary 74

DTDs und XML- Schemata

Datenaustauschformate. Datenaustauschformate - FLV

... MathML XHTML RDF

2. XML 2.1 XML 1.0 und XML Schema. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit

XML 1. Einführung, oxygen. Ulrike Henny. IDE Summer School 2013, Chemnitz

Vorlesung Datenbanken II SS 2006

- Kapselung der Syntax/Semantik Definition. - Wiederverwendung, Standardisierung. - Vereinfachung der Festlegung von Datenstrukturen

Klaus Schild, XML Clearinghouse Aufbau von XML- Dokumenten

Semistrukturierte Daten. 2. Datenmodellierung mit XML und XML-Schema XML. Lernziele:

XML Vorlesung ETHZ SS XML Vorlesung ETHZ, Sommersemester

3.1 Sinn und Zweck von Namensräumen

Verteilte Anwendungen. Teil 2: Einführung in XML

DTDs und XML-Schema. Robert Tolksdorf Freie Universität Berlin Institut für Informatik Netzbasierte Informationssysteme

XML-Technologie: Grundlegende Syntax

XML. Einführung, XML-Grundlagen und -Konzepte. XPath DTD. XQuery. XML-Schema XSLT XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

XML. Einführung, XML-Grundlagen und -Konzepte. XPath DTD. XQuery. XML-Schema XSLT XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

XML Schema: Validieren statt Programmieren

W3C s XML Schema Die Sprache der Sprachen Mario Jeckle DaimlerChrysler Forschungszentrum Ulm

Hauptseminar Informatik. Die Strukturierung von XML-Dokumenten mit Hilfe von DTDs und XML Schema

Erik Wilde XML Schema

Semistrukturierte Daten

Versuchsziele. 1. Aufgabe. Hochschule Harz FB Automatisierung und Informatik Versuch: XML Thema: Grundkenntnisse in XML mit DTD s und Schemata

Kapitel 5: Datenaustausch mit XML

03 XML Grundlagen. Manuel Burghardt Lehrstuhl für Medieninformatik

Index. Index CDATA 113, 183. Achse 430. child 425. all 191. choice 187, 191, 197, 393. ancestor 428. choose 272. Anwendung 351; Beispiel 302

XML Eine Einführung XML Dokumente Erstellen

Tutorial 3 Einführung in XML

XML. Teil 1: Grundbegriffe. Abteilung Informatik WS 02/03

Fachhochschule Wiesbaden - Fachbereich DCSM. XML Information Set.

Relationales Datenbanksystem Oracle

XML RSS. 1. Einführung 2. Syntax 3. Eigenschaften 4. Validierung 5. Fazit. 1. Einführung 2. Struktur 3. Fazit. Seite 2

<B1>Skript</B1> Skript zur Vorlesung Auszeichnungssprachen Stand: September 2016

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

XML Schema vs. Relax NG

Kapitel DB:IV (Fortsetzung)

XSD - XML Schema Definition

Konzeptionelle Modellierung von XML-Dokumenttypen

Datenbanksysteme. XML und Datenbanken. Burkhardt Renz. Sommersemester Fachbereich MNI Technische Hochschule Mittelhessen

XHTML. Lernfragen zu XHTML. Was ist HTML? Überblick

Einstieg in die Informatik mit Java

XML Eine Einführung XML Dokumente Erstellen

Repräsentation von Struktur

Einführung in XML. Seminar: XML in der Bioinformatik Frank Schönmann WS 2002/03

Diese neuen Gestaltungsmöglichkeiten können nun auf den Web-Anzeigenmarkt angewandt werden: Wissensbaustein»Anzeigenmarkt: CSS-Einsatz«(S.

Elementare Konzepte von

Wo sind wir? Übersicht lexikale Struktur von Java

XML Extensible Markup Language

Web-Programmierung (WPR)

Wie ist die Struktur der Daten? Wie wird die Austauschbarkeit der Daten sichergestellt?

12. Jgst. 3. Kursarbeit Datum: Fach: Informationsverarbeitung (Leistungskurs) & )!!*+,!- -.!-

3 4! 8"!$, ! "! ' () * &, -.% /-0111 % = ; - ; ' :05

XML, XHTML und MathML

XML-Schema (SCH) Sie erhalten einen Überblick über alle für XML-Schema relevanten Spezifikationen

XML Extensible Markup Language

5.1 Mehr Basistypen. (Wie viele Werte kann man mit n Bit darstellen?)

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Universität Augsburg, Institut für Informatik WS 2009/2010 Prof. Dr. W. Kießling 06. Nov Dr. A. Huhn, F. Wenzel, M. Endres Lösungsblatt 2

Validierung von XML Dokumenten

Gliederung. Service Oriented Architecture - XML Technologies. 1 von 11

XML-Übersicht. Von HTML zu XML

XML-Übersicht. Von HTML zu XML. Nutzen von XML. Geschichte von XML. Eigenschaften von XML. Nutzen von XML (extensible Markup Language)

Aufbau von XML- Dokumenten. Syntax wohlgeformter. XML-Dokument. Heutige Vorlesung. Wiederholung: Was ist XML?

XML-Namensräume (NSP)

ASN.1 <-> XML TRANSLATION

Webseite in XML Kurzeinführung

XML Extensible Markup Language

XML. Steffen Staab ISWeb Informationssysteme & Semantic Web

Einführung in XML. Arthur Brack FHDW Hannover. 1. Oktober 2009

XML exemplarisch. nach: André Bergholz, Extending Your Markup: An XML Tutorial IEEE Internet Computing, Jul./Aug. 2000, 74 79

Semantic Web Technologien

Kapitel DB:IV (Fortsetzung)

Variablen, Konstanten und Datentypen

Transkript:

4 XML und Datenbanken XML wird von Internet Explorer ab Version 5.0 und von Netscape ab Version 6 unterstützt. XML-Datenbanken mit der Anfragesprache XQuery sind z.b. Tamino von der Software AG (erste kommerzielle Implementierunmg von XQuery in Version 4.1, Dez. 2002) und IBM DB2-Xperanto (geplant für 1. Halbjahr 2003). 4.1 XML als Dokumentbeschreibungssprache Die Grundidee von Dokumentbeschreibungssprachen (markup language) ist die unabhängige Beschreibung von Struktur (z.b. Kapitel, Unterkapitel, Absätze), Inhalt (der eigentliche Text, Bilder) und Aussehen (z.b. Textschrift, Textstil, Textgröße, Position des Bildes) eines Dokuments. Dafür wurde schon 1986 SGML (standard generalized markup language) genormt. Von SGML leiten sich sowohl HTML (hypertext markup language) als auch XML (extensible markup language) (www.w3.org/xml/) ab. XML wurde 1996 von einer Arbeitsgruppe unter Jon Bosik entwickelt und ist seit 1998 eine Empfehlung (recommendation) des World Wide Web Consortiums (W3C). XML dient zur Strukturierung, Speicherung und Austausch nicht zur Darstellung von Information. Ein XML-Dokument tut nichts (führt keine Anweisungen aus). XML basiert auf Unicode; daher sind in XML-Dokumenten viele Zeichen erlaubt, deutsche Umlaute genauso wie chinesische Zeichen. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 179

Einschub: Unicode Die Zeichenmenge Unicode hat zum Ziel, alle auf der Welt gängigen Schriften und Zeichen zu umfassen. Die ersten 128 Zeichen von Unicode stimmen mit US-ASCII überein; die ersten 256 Zeichen entsprechen ISO-8859-1 (Latin-1), dem Zeichensatz für die meisten europäischen Sprachen. Ein Code aus Unicode wird mit der Notation U+xxxx geschrieben; dabei ist xxxx eine vierstellige Hexadezimalzahl. Z.B. steht U+0020 für ein Leerzeichen, U+000A ist der Zeilenumbruch (line feed) und U+20AC für das -Symbol. Zwei gängige Codierungen von Unicode sind UTF-8 und UTF-16. In UTF-8 werden alle Codes kleiner als 128 in einem Byte codiert (damit ist jeder US-ASCII-Text auch UTF-8 codiert), andere Zeichen mit zwei, drei oder vier Bytes. In UTF-16 werden alle Codes kleiner als 65536 in zwei Bytes codiert, alle anderen Zeichen mit vier Bytes. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 180

Einschub: Unterschiede zwischen XML und HTML XML wurde zur Beschreibung von Daten entworfen, HTML zur Darstellung von Daten. Elemente sind in HTML vordefiniert, in XML müssen sie erst definiert werden. In XML haben alle Elemente eine Endmarke. In HTML gibt es Elemente ohne Endmarke (z.b. <HR>) oder mit optionaler Endmarke (z.b. <P>). XML unterscheidet anders als HTML bei Elementen und Attributen zwischen Groß- und Kleinschreibung. Argumente von Attributen müssen stets in Anführungsstriche gesetzt werden; in HTML sind Anführungsstriche nur notwendig, wenn das Argument Sonderzeichen enthält. Mehrere Leerzeichen werden in XML nicht wie in HTML zu einem Leerzeichen zusammengefasst. Eine neue Zeile wird in XML stets wie in Unix durch ein LF (line feed) dargestellt, nicht durch ein CR (carriage return) wie im Mac OS oder durch CR LF wie in Windows. Ein fehlerhaftes XML-Dokument wird nicht bearbeitet, ein fehlerhaftes HTML-Dokument wird dagegen i.d.r. oft sogar richtig angezeigt. XML basiert auf Unicode; Umlaute können daher direkt statt des umständlichen ä bzw. ß dargestelt werden. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 181

4.1.1 Elemente und Attribute Ein XML-Dokument ist in XML-Elemente gegliedert. Ein Element wird durch Marken (tags) begrenzt; Marken werden in spitze Klammern eingeschlossen, um sie vom normalen Text zu unterscheiden: <XXX>. Der Name der Marke XXX darf Buchstaben, Ziffern und Sonderzeichen enthalten, aber nicht mit einer Ziffer, einem Sonderzeichen oder XML (in allen Groß- und Kleinschreibvarianten) beginnen. Einige Zeichen ( -. : ) können manchmal zu Komplikationen führen und sollten daher nicht im Namen enthalten sein. Da die Attribute einer Datenbank oft mit den Elementen eines XML-Dokuments korrespondieren, sollte man auch die Namensregeln des Datenbanksystems berücksichtigen. Ein Element beginnt mit einer Anfangsmarke <XXX> und endet stets mit einer Endmarke </XXX>. Dazwischen liegt der Inhalt (content) des Elements; der Inhalt kann aus einfachem Text und/oder weiteren Elementen bestehen, er kann auch leer sein. Elemente können dadurch hierarchisch geschachtelt werden. Anfangsmarken können ein oder mehrere XML-Attribute enthalten, die durch Zwischenraum getrennt werden. Ein Attribut kann ein Argument haben, das direkt nach dem Attribut und einem Gleichheitszeichen stets in doppelte oder einfache Anführungsstriche eingeschlossen angegeben wird, z.b. <XXX YYY="zzz">. Ein leeres Element, d.h. ein Element mit Anfangsmarke, leerem Inhalt und Endmarke: <XXX YYY="zzz"> </XXX> darf auch kurz <XXX YYY="zzz"/> geschrieben werden (auch ohne Attribute). Die Reihenfolge der Elemente in einem Dokument, die Dokumentenreihenfolge (document order), hat oft eine Bedeutung. Dagegen ist die Reihenfolge der Attribute in einer Anfangsmarke stets irrelevant. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 182

In XML sind die Marken nicht vordefiniert wie in HTML, sondern müssen in einer Dokumenttypdefinition (DTD, document type definition) oder einem XML Schema definiert werden. XML-Dokumente sind erweiterbar; das Hinzufügen von neuen Elementen stört vorhandene Anwendungen nicht. Ein XML-Dokument besteht aus einem (optionalen) Prolog, einer (optionalen) DTD oder Schema und einem einzigen Element, dem Wurzelelement, das weitere Elemente enthalten kann. Außerdem können (ungeschachtelte) Kommentare <!-- text --> und Verarbeitungsanweisungen (processing instruction) <? anweisung?> vorkommen. Beispiel: <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE note SYSTEM "order.dtd"> <!-- über dieser Zeile steht eine externe DTD --> <order> <customer>schmidt</customer> <position> <isbn>1-234-56789-0</isbn> <number>2</number> <price currency="euro">30.00</price> </position> </order> Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 183

Ein XML-Dokument kann vorteilhaft als Baum dargestellt werden: order customer position Schmidt isbn number price 1-234-56789-0 2 30.00 @currency Euro Die Kinder eines Element(knoten)s können z.b. Text-, Element- oder Attrributknoten sein. Attributknoten sind hier mit dem Präfix @ gekennzeichnet. Die Baumdarstellung legt folgende Redeweise nahe: Das erste Element eines XML-Dokuments heißt Wurzelelement. Bei geschachtelten Elementen heißt das äußere Element Elternelement, das innere Element Kindelement. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 184

Die gleichen Daten können in Attributen oder als Kindelement gespeichert werden. <person sex="female"> <firstname>anna</firstname> <lastname>smith</lastname> </person> <person> <sex>female</sex> <firstname>anna</firstname> <lastname>smith</lastname> </person> Da Attribute insbesondere keine strukturierten Werte enthalten können und nicht einfach erweiterbar sind, sind Kindelemente i.d.r. (außer für künstliche Schlüssel) vorzuziehen. Eine Faustregel ist: Daten sollten durch Elemente dargestellt werden, Metadaten durch Attribute. Ein XML-Dokument heißt wohlgeformt (well-formed), wenn es syntaktisch korrekt ist. Am Anfang des Dokuments nennt man dazu die XML-Version und den verwendeten Zeichensatz: <?xml version="1.0" encoding="iso-8859-1"?> Ein XML-Dokument heißt gültig (valid), wenn es semantisch korrekt ist, d.h. zu den Regeln seiner DTD oder seinem XML Schema passt. Dazu gibt man am Anfang des Dokument den Dateinamen der DTD an: <!DOCTYPE note SYSTEM "order.dtd"> In der DTD sind insbesondere die Namen der definierten Elemente angegeben. XML-Dokumente sollten validiert werden (z.b. www.w3schools.com/dom/dom_validate.asp), da sie sonst nicht bearbeitet werden können. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 185

Texte, die vom XML-Prozessor unverändert als textueller Inhalt (nicht als Marke!) übernommen werden sollen, können als CDATA-Abschnitt gekennzeichnet werden. <![CDATA[ text ]]> CDATA-Abschnitte lassen sich nicht schachteln. Formatanweisungen (entities) dienen zur Formatierung einzelner Zeichen. Sie werden durch die Zeichen & und Semikolon ; geklammert. In XML sind folgende fünf Entities vordefiniert: lt (für <), gt (für >), amp (für &), quot (für ") und apos (für '). Analog kann man z.b. das Unicode-Zeichen U+00FF hexadezimal als ÿ oder dezimal als ÿ schreiben. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 186

4.1.2 Kanonische Form von XML-Dokumenten In XML kann dieselbe Information auf verschiedene Art syntaktisch formuliert werden: Ein leeres Element kann auf zwei verschiedene Arten notiert werden. Ein Attributwert kann in einfache oder doppelte Anführungszeichen eingeschlossen werden. Die Attributreihenfolge ist beliebig. Attributwerte können über eine Vorbelegung oder durch explizite Zuweisung auf denselben Wert gesetzt werden. Die Kodierung von XML-Dokumenten kann unterschiedlich sein. Ein Zeichen kann direkt, als dezimale Zeichenreferenz oder als hexadezimale Zeichenreferenz dargestellt sein. Daten können in oder außerhalb von CDATA-Abschnitten vorliegen. Für denselben Namensraum können verschiedene Kürzel verwendet werden. Namensraumdefinitionen können redundant und/oder an verschiedenen Stellen vorgenommen werden. Diese syntaktische Vielfalt erschwert es festzustellen, ob zwei Dokumente logisch äquivalent sind. Für diesen Zweck führt man die kanonische Form von XML-Dokumenten (Canonical XML) ein, indem bestimmte Regeln auf Elemente, Attribute, Namensräume etc. angewendet werden, z.b.: Alle Wertebelegungen (z.b. durch Vorbelegung) werden zu expliziten Attributen. Die Attribute eines Elements werden alphabetisch sortiert. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 187

4.2 Beschreibung der Datenbankwerte in XML Eine relationale Datenbank (als Menge von Mengen von Tupeln) kann z.b. wie folgt in XML modelliert werden: <db> <relation1> <tupel-relation1> <attribut1>wert1</attribut1> <attribut2>wert2</attribut2> </tupel-relation1> <tupel-relation1> <attribut1>wert1</attribut1> <attribut2>wert2</attribut2> </tupel-relation1> </relation1> <relation2> </relation2> </db> Eine logische Datenbank (als Menge von Grundfakten) kann z.b. in XML wie folgt modelliert werden: <db> <grundfakt1> <attribut1>wert1</attribut1> <attribut2>wert2</attribut2> </grundfakt1> <grundfakt2> </grundfakt2> </db> Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 188

4.3 Vokabular und Schema Im Gegensatz zu HTML sind in XML die Typen der Elemente nicht vorab festgelegt, die in einem Dokument vorkommen können. Insbesondere müssen die Namen der Elemente und der Attribute, das Vokabular, festgelegt werden. Im einfachsten Fall geschieht dies ohne Schema durch Benutzung der Elemente und Attribute im (wohlgeformten) XML-Dokument selbst. Stets müssen folgende Eindeutigkeitsbedingungen erfüllt sein: Die Namen der Elementtypen müssen innerhalb des Dokuments eindeutig sein. Die Namen der Attribute müssen innerhalb eines Elements eindeutig sein. Systematischer kann die Festlegung des Vokabulars durch eine Schemadefinition geschehen: durch eine Dokumenttypdefinition wie generell in SGML oder durch ein XML Schema Dokument. Jedes XML Dokument bestimmt aber (im Gegensatz zu Datenbanken) selbst, ob und falls ja, welches Schema es hat. Natürlich können mehrere Dokumente das gleiche Vokabular benutzen. Dazu beziehen sich die Dokumente am einfachsten auf die gleiche (externe) DTD oder XML Schema-Definition. Manchmal möchte man sogar in einem Dokument verschiedene Vokabulare (vielleicht sogar mit z.t. gleichen Namen und verschiedener Bedeutung) benutzen. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 189

Mengen von Namen können zu Namensräumen zusammengefasst werden: Ein Namensraum (name space, ns) ist eine URI (z.b. eine URL). In einem Dokument wird innerhalb eines Elements mit dem Attrribut xmlns auf einen Namensraum verwiesen: xmlns:kürzel="datei" Dabei wird für einen Namensraum ein Kürzel festgelegt, das nur innerhalb dieses Dokuments gültig ist. Alle Element- und Attributnamen, die dieses Kürzel als Präfix haben, beziehen sich auf diesen Namensraum. Das Kürzel und der eigentliche Name werden durch einen Doppelpunkt getrennt; insgesamt entsteht ein qualifizierter Name: [kürzel : ] lokaler_name Der Namensraum mit dem leeren Kürzel (ε) (default name space) xmlns="datei" gilt für alle Elementnamen ohne Präfix; nicht jedoch für Attributnamen. Der Gültigkeitsbereich einer Namensraumdefinition ist das Element, in dem die Namenraumdefinition steht mit allen Unterelementen, sofern dort das Kürzel nicht umdefiniert wird. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 190

4.4 Dokumenttypdefinition (DTD) Eine (interne) Dokumenttypdefinition hat folgenden Rahmen: <!DOCTYPE Dokumenttypname [ ]> In einer Dokumenttypdefinition können Elementtypen und Attributtypen beschrieben werden. Die Reihenfolge der Definitionen in der DTD spielt keine Rolle. Alle Definitionen in der DTD sind global. 4.4.1 Elementtypen Bei der Definition eines Elementtyps wird sein Name und eingeschlossen in runden Klammern sein möglicher Inhalt festgelegt. <!ELEMENT name (content)> Der Inhalt (content) kann aus Zeichenketten (#PCDATA (parsed character data)) oder Elementtypen bestehen oder leer (EMPTY) sein. Beispiel: <!ELEMENT artikel (name, hersteller)> <!ELEMENT name (#PCDATA)> <!ELEMENT hersteller (#PCDATA)> Ein Element vom Typ artikel hat name und hersteller als Unterelemente. Dabei gibt es folgende Strukturierungsmöglichkeiten zur Beschreibung des Inhalts: Eine Liste (sequence) von Elementtypen element1, element2,, elementn beschreibt, dass ein Elementtyp genau n Unterelemente hat, die genau einmal und in der vorgegebenen Reihenfolge vorkommen. Eine Auswahl (choice) von Elementtypen element1 element2 elementn beschreibt, dass ein Elementtyp ein Unterelement hat, entweder element1 oder element2 oder elementn. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 191

Die Häufigkeit des Auftretens von Unterelementen kann durch Postfixe festgelegt werden (analog zur regulären Ausdrücken): ein Unterelement darf höchstens einmal angegeben werden (0 1):? ein Unterelement kann beliebig oft angegeben werden (0 n): * ein Unterelement muss mindestens einmal angegeben werden (1 n): + Beispiele für die Häufigkeit der Unterelemente B eines Elements A: für eine (0,1)-Häufigkeit: <!ELEMENT A (B?)> für eine (0,n)-Häufigkeit: <!ELEMENT A (B*)> für eine (1,1)-Häufigkeit: <!ELEMENT A (B)> für eine (1,n)-Häufigkeit: <!ELEMENT A (B+)> für eine (2,5)-Häufigkeit: <!ELEMENT A (B, B, (B, (B, B?)?)?)> Beispiel: <!ELEMENT Anschrift (((Straße, Hausnr?) Postfach), PLZ, Ort)> Eine Anschrift kann aus Straße und evtl. Hausnummer oder aus einem Postfach bestehen; in beiden Fällen müssen zusätzlich Postleitzahl und Ort angegeben sein. Direkte oder indirekte Rekursion ist möglich. <!ELEMENT Knoten (Knoten*)> Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 192

4.4.2 Attributtypen Schließlich können in der DTD auch die für ein Element zulässigen Attribute definiert werden. In einer Attributliste kann man mehrere Attributtypen eines Elements definieren: <!ATTLIST elementname attrname Typ Häufigkeit/Vorbelegung attrname Typ Häufigkeit/Vorbelegung > Beispiel: Ein Attributtyp status wird definiert, das als Wert drei Konstanten annehmen kann (Standardwert ist normal). <!ATTLIST artikel status (normal neuheit angebot) "normal"> Folgende Typen kann man in einer Attributliste verwenden. Zeichenketten (CDATA), den Identifikatortyp ID. Die Werte aller ID-Attribute müssen im Dokument eindeutig sein (selbst wenn es sich um verschiedene Attribute handelt), den Referenztyp auf den Identifkatortyp IDREF (bei Listen von Referenzen IDREFS), ein einzelnes Token (eine Folge von Buchstaben, Zahlen und bestimmten Sonderzeichen, aber ohne Leerzeichen) NMTOKEN (name token) (bei Listen von Token NMTOKENS), Aufzählungstypen, deren einzelne Werte durch senkrechten Strich getrennt und in runde Klammern eingeschlossen sind und die Token sein müssen. Außerdem kann man noch Angaben zur Häufigkeit und Vorbelegung machen. Da derselbe Attributname innerhalb eines Elements höchstens einmal vorkommen darf, bleibt bzgl. der Häufigkeit nur zu klären, ob ein Attribut vorkommen muss oder nicht. #REQUIRED bedeutet, dass das Attribut vorkommen muss; in allen anderen Fällen ist das Attribut optional. #IMPLIED bedeutet, dass das Attribut keinen Vorbelegungswert hat, falls es nicht angegeben wird. "Vorbelegungswert" bedeutet, dass das Attribut diesen Vorbelegungswert hat, falls es nicht angegeben wird. #FIXED bedeutet, dass der Attributwert als Konstante angesehen wird. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 193

Verweise innerhalb desselben Dokuments können mit Hilfe von Attributen des Typs IDREF erfolgen. Das Verweisziel benötigt ein Attribut des Typs ID. Beispiel: <!ELEMENT artikel (name, beschreibung?)> <!ATTLIST artikel id ID #REQUIRED> <!ELEMENT bestellposition (name, anzahl, gesamtpreis)> <!ATTLIST bestellposition artikel IDREF #REQUIRED> <artikel id="01"> <name>bohrmaschine</name> <beschreibung> </beschreibung> </artikel> <bestellposition artikel="01"> <name>bohrmaschine</name> <anzahl>1</anzahl> <gesamtpreis>299</gesamtpreis> </bestellposition> Diese Verweise können nicht typisiert werden, d.h. man kann bei einem IDREF-Attribut nicht angeben, zu welchem Elementtyp das referenzierte ID- Attribut gehört.. 4.4.3 Entitydefinitionen In einer DTD können als Entities auch häufig genutzte Textbausteine definiert werden: <!ENTITY SGDH "Sehr geehrte Damen und Herren,"> Auch binäre Daten, wie z.b. Bilder, können als Entity definiert werden: <!ENTITY Ziege SYSTEM "Bilder/Ziege.gif" NDATA gif> Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 194

4.5 XML Schema XML Schema bietet allgemeiner als DTDs Möglichkeiten zur Verwendung von Datentypen, Strukturierung durch komplexe Datentypen, Kardinalitäten und Elementdeklarationen, Spezifikation von Integritätsbedingungen (Eindeutigkeit, Schlüssel, Fremdschlüssel), Wiederverwendung (Schemadokumentation, Modularisierung, Erweiterung). Außerdem entspricht ein XML Schema-Dokument im Gegensatz zur DTD der XML-Syntax. Das Vokabular von XML Schema wird festgelegt durch den Namensraum http://www.w3.org/2001/xmlschema (oft mit dem Präfix xs). In unseren Beispielen verzichten wir aus Platzgründen auf die Angabe dieses Präfixes. Schema-bezogene Attribute aus dem Namensraum http://www.w3.org/2001/xmlschema-instance dürfen in jedem XML-Dokument stehen (oft mit Präfix xsi). Insbesondere die Einbettung einer Schemadefinition erfolgt für einen XML- Teilbaum mit Hilfe dieses Namensraums: <marke xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xsi:schemalocation="namensraumdefinition"> bzw. ohne Namensraumdefinition <marke xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xsi:nonamespaceschemalocation="file:"> Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 195

Wie bei einer Dokumenttypdefinition gibt es auch in XML Schema Konstrukte für die Deklaration von Elementen und Attributen: <element name="elementname" type="typname" /> <attribute name="attrname" type="typname" /> Für Attribute und für Elemente mit einfachen Typen können Standardwerte mittels default vergeben werden. Konstante Werte können als fixed gekennzeichnet werden. Attribute haben stets einen einfachen Typ. Bei Attributen kann festgelegt werden, ob sie wahlweise (use="optional") angegeben werden können oder stets erforderlich sind (use="required"). Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 196

4.5.1 Datentypen in XML Schema XML Schema unterscheidet zwischen einfachen und komplexen Typen. Die Werte einfacher Typen bestehen aus nur einem Textknoten (PCDATA). Elemente mit Unterelementen können durch komplexe Typen beschrieben werden. XML Schema beschreibt einfache Typen durch ihren Wertebereich (value space), ihre Repäsentation (lexical space) in XML-Dokumenten und ihre (fundamentalen und einschränkenden) Eigenschaften (facet). Fundamentale Eigenschaften wie Gleichheit, Ordnung, obere und untere Schranken, Kardinalität sind unveränderlich. Einschränkende Eigenschaften können zur Ableitung neuer Typen benutzt werden. 4.5.1.1 Einfache Datentypen in XML Schema Einfache Typen in XML Schema sind (neben Listen- und Vereinigungstypen) folgende atomare Typen: Der Typ Boolean umfasst die Werte "true" und "false" (ohne Ordnung). Der Typ String bescheibt Zeichenketten mit Zeichen aus dem kompletten Unicode-Zeichenvorrat. Eine Ordnungsrelation ist nicht festgelegt, da sie sprachabhängig wäre, aber für Anwendungen definierbar. Der Typ anyuri ist der Typ für Uniform Resource Identifier wie URLs. diverse numerische Datentypen: Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 197

double (64 Bit) float (32 Bit) nonpositiveinteger negativeinteger decimal integer long ( 2 63 2 63 1) int ( 2 31 2 31 1) short ( 2 15 2 15 1) byte ( 2 7 2 7 1) nonnegativeinteger unsignedlong (02 64 1) unsignedint (02 32 1) unsignedshort (02 16 1) unsignedbyte (02 8 1) positiveinteger Die oberen Datentypen haben einen unbegrenzten Wertebereich zur Beschreibung von Zahlen mit beliebiger Genauigkeit, bei den unteren Datentypen ist der Wertebereich begrenzt. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 198

Ebenso gibt es vielfältige temporale Datentypen zur Beschreibung von Zeitpunkten, wiederkehrenden Zeitpunkten und Zeitdauern: Zeitpunkte wiederkehrende Zeitpunkte Zeitdauer datetime date (CCYY MM DD) gyearmonth (CCYY MM) gyear (CCYY) time (HH:MM:SS.SSSS[ZHH:MM]) gmonthday ( MM DD) gmonth ( MM ) gday ( DD) duration ([ ]PnYnMnDTnHnMnS) Die Repräsentation für den Typ datetime ist CCYY-MM-DDTHH:MM:SS.SSSSZHH:MM CC steht dabei für das Jahrhundert, YY für das Jahr, MM für den Monat, DD für den Tag, HH für die Stunden (0-23), MM für die Minuten, SS.SSSS für die Sekunden(bruchteile) und HH:MM für die Zeitzonendifferenz (ggf. mit Vorzeichen). Weitere XML-spezifische einfache Datentypen sind normalizedstring (Zeichenketten ohne Zeilenumbrüche und Tabulatoren), token (Zeichenketten ohne Zeilenumbrüche, Tabulatoren, keine Leerzeichen am Anfang und Ende sowie mehrfache Leerzeichen sonst), language (Typ für die zweibuchstabigen Standardsprachidentifikatoren (ISO 639)), Name (Typ für alle in XML erlaubten Bezeichner), NCName (für alle erlaubten Namensraumbezeichner), QName (für alle Bezeichner mit einem Namensraumpräfix), Notation (für alle Notationsbezeichner), Entity (für alle Entitätsbezeichner), ID und IDREF(S) sind Typen für die Schlüssel bzw. Fremdschlüssel. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 199

4.5.1.2 Durch Einschränkungen abgeleitete einfache Datentypen Durch einschränkende Eigenschaften können ausgehend von einem Basistyp neue einfache Typen definiert werden mit der gleichen Ordnung und Repräsentation, aber kleinerem Wertebereich. Folgende Einschränkungen (restriction) stehen zur Verfügung: enumeration gibt eine Menge von abschließend aufgezählten Werten vor, length, minlength, maxlength legt bei Zeichenketten die (exakte, minimale, maximale) Anzahl der (Unicode-)Zeichen fest, bei Listen die Anzahl der Listenelementen, mininclusive, minexclusive, maxexclusive, maxinclusive legt bei numerischen Typen Unter- bzw. Obergrenzen fest; mit xxxinclusive lassen sich abgeschlossene Intervalle, mit xxxexclusive offene Intervalle beschreiben, totaldigits, fractiondigits legt bei numerischen Datentypen mit beliebiger Genauigkeit Beschränkungen für die maximale Anzahl der Ziffern bzw. für die Anzahl der Nachkommastellen fest, pattern beschreibt bei Zeichenketten den Wertebereich durch einen regulären Ausdruck (Perl-ähnlich), whitespace beschreibt den Umgang mit Leerraum. Die Option preserve lässt Leerraum unverändert, durch die Option replace werden Tabulatoren und Zeilenumbruch durch ein Leerzeichen ersetzt, collapse bewirkt, dass führende, mehrfache und endständige Leerzeichen entfernt werden. Beispiele: Ein Typ Währung soll beliebig große Beträge, aber nur zwei Nachkommastellen zulassen: <simpletype name="waehrung"> <restriction base="decimal"> <fractiondigits value="2" /> </restriction> </simpletype> Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 200

Ein Typ Telefonnummer soll internationale Telefonnummern im Format +Landeskennzahl (Ortskennzahl) Anschluss zulassen (d steht für Ziffer): <simpletype name="telefonnummer"> <restriction base="string"> <pattern value="\+\d+\(\d+\)\d+" /> </restriction> </simpletype> Ein Typ Bundesland soll nur die deutschen Bundesländer zulassen: <simpletype name="bundesland"> <restriction base="string"> <enumeration value="baden-württemberg" /> <enumeration value="bayern" /> </restriction> </simpletype> Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 201

4.5.2 Komplexe Typen Komplexe Typen sind erforderlich, falls ein Element Attribute, Kindelemente oder einen leeren Inhalt haben soll. Definitionen von komplexen Typen beginnen mit dem complextype- Element. Um die Kindelemente festzulegen, werden innerhalb der Definition Typkonstruktoren verwendet. Durch den Typkonstruktor sequence wird ein kartesisches Produkt von Elementtypen definiert. Ein Element dieses Typs ist dann eine (geordnete) Liste der angegebenen Elemente. Durch den Typkonstruktor choice wird eine Vereinigung von Elementtypen definiert. Ein Element dieses Typs ist dann ein Element eines dieser Elementtypen. Durch den Typkonstruktor all wird festgelegt, dass bestimmte Elemente vorkommen müssen, aber in beliebiger Reihenfolge. Innerhalb des all-konstruktors sind keine weiteren Konstruktoren erlaubt und keine wiederholbaren Elemente. Die Typkonstruktoren sequence und choice können beliebig geschachtet werden, der Konstruktor all ist nur auf der obersten Ebene zulässig. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 202

4.5.2.1 Kardinalitäten Für jedes Element kann festgelegt werden, wie oft ein Element auftreten darf. Die Attribute minoccurs und maxoccurs können als Werte natürliche Zahlen annehmen oder den Wert unbounded ( ). Insbesondere lässt sich so festlegen, ob ein Element optional (minoccurs=0) und/oder wiederholbar (maxoccurs>1) ist. Der Standardwert für minoccurs und maxoccurs ist 1! Beispiel: <complextype name="katalog"> <sequence> <element name="eintrag" type="katalogelement" /> minoccurs="0" maxoccurs="unbounded" /> </sequence> </complextype> <complextype name="katalogelement"> <sequence> <element name="name" type="string" /> <element name="beschreibung" type="string" minoccurs="0" maxoccurs="1" /> </sequence> <attribute name="katalogelementid" type="integer" /> </complextype> Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 203

4.5.2.2 Abgeleitete komplexe Typen Von einem komplexen Typ können weitere komplexe Typen abgeleitet werden, einerseits durch Einschränkung der Instanzen (restriction), andererseits als Erweiterung durch Hinzufügen weiterer Elemente (extension). Aus der Beziehung zwischen abgeleiteten Typen und ihren Basistypen entsteht eine Ableitungshierarchie. Da nur jeweils ein Basistyp angegeben werden kann, gibt es keine Mehrfachvererbung: die Typen bilden einen Baum. Dabei gilt jeder komplexe Typ als von anytype abgeleitet, jeder einfache Typ als von anysimpletype. Die Restriktion eines Typs ist durch folgende Einschränkungen möglich: Verschärfung der Kardinalitäten: Durch Heraufsetzen von minoccurs oder Herabsetzen von maxoccurs werden für den abgeleiteten Typ weniger Instanzen zugelassen. Attributvorkommen: Ein im Basistyp optionales Attribut wird (durch use="prohibited") weggelassen. Attributwert: Dem Attribut wird ein Standardwert oder ein konstanter Wert zugeordnet. Festlegen von Typen, falls für ein Element noch kein Typ festgelegt war. Oder Ersetzen eines einfachen Typs durch eine Einschränkung dieses Typs. Wegfall von Oder-Knoten. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 204

Bei der Erweiterung eines Basistyps können neue Attribute und Elemente (hinten) angehängt werden: Beispiel: <complextype name="artikel"> <extension base="katalogelement"> <element name="hersteller" type="string" /> <element name="lieferzeit" type="duration" /> <element name="bild" type="anyuri" /> <element name="stückpreis" type="währung" /> </extension> </complextype> Die Einschränkung und Erweiterung eines Typs können durch Setzen des Attributs final in der Typdefinition verhindert werden: final="restriction" verbietet weitere Einschränkungen, final="extension" verbietet weitere Erweiterungen, final="#all" verbietet beides. Das Attribut abstract="true" verhindert, dass ein Typ direkt, also ohne abgeleitet worden zu sein, verwendet wird. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 205

4.5.3 Integritätsbedingungen Schlüsseleigenschaften sichern zu, dass eine bestimmte Attributkombination (ohne Nullwerte!) nur ein einziges Mal vorkommt. Fremdschlüssel verweisen auf den (existierenden!) Schlüssel eines Gegenstands. 4.5.3.1 Nullwerte Nullwerte drücken aus, dass für ein bestimmtes Element kein Wert vorhanden ist. Auf Typebene kann ein Nullwert zugelassen werden oder nicht, indem bei dem entsprechenden Element das Attribut nillable auf true oder false gesetzt wird. Einem Element kann dann ein Attribut nil (xsi:nil="true") hinzugefügt werden. 4.5.3.2 Schlüssel- und Eindeutigkeitsbedingungen In XML Schema besteht eine Schlüsseldeklaration aus drei Teilen: dem Kontext, in dem die Schlüsseleigenschaft gelten soll; das ist das Element, wo der Schlüssel definiert wird, der Selektor, der eine Menge von Knoten definiert, die durch den Schlüssel eindeutig identifizierbar sein sollen, und eine Menge von Feldern (Elemente und Attribute), die den Identifikator für jeden der selektierten Knoten festlegen. <element name="kontext"> <key name="schlüsselname"> <selector xpath="selektor" /> <field xpath="schlüsselattribut1" /> <field xpath="schlüsselattribut2" /> </key> </element> Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 206

Beispiel: Personen sind an Hand ihres Namens, Vornamens und Geburtsdatums eindeutig identifizierbar. <complextype name=persontyp"> <element name="name" type="string" /> <element name="vormane" type="string" /> <element name="geburtsdatum" type="date" /> <element name="adresse" type="adresstyp" /> </complextype> <element name="personen"> <complextype> <sequence> <element name="person" type="persontyp" minoccurs="0" maxoccurs="unbounded" /> </sequence> </complextype> <key name="personenschlüssel"> <selector xpath="person" /> <field xpath="name" /> <field xpath="vorname" /> <field xpath="geburtsdatum" /> </key> </element> Ersetzt man key durch unique, so ist die spezifizierte Attributkombination ebenfalls eindeutig, darf aber Nullwerte enthalten. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 207

4.5.3.3. Fremdschlüsselbedingungen Die Fremdschlüsseldefinition ist ähnlich wie die Schlüsseldefinition: <element name="kontext"> <keyref name="fremdschlüsselname" refer="schlüsselname"> <selector xpath="selektor" /> <field xpath="fremdschlüsselattribut1" /> <field xpath="fremdschlüsselattribut2" /> </keyref> </element> Die Reihenfolge der Fremdschlüsselattribute muss dabei zur Reihenfolge der Schlüsselattribute passen. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 208