XML-Datenmodellierung / XML-Schemasprachen
Transcription
XML-Datenmodellierung / XML-Schemasprachen
XML-Datenmodellierung / XML-Schemasprachen XML-Abfragesprachen XML-Schemasprachen XPath DTD XQuery XML-Transformationssprache XML-Schema XSLT ... XML Relationale DBMS 38 XML in DBMS Dedizierte XML-DBMS XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen 2. XML-Datenmodellierung / XML-Schemasprachen - 39 Warum XML-Schemasprachen? Document Type Definition (DTD) XML-Schema alternative Ansätze (Relax NG und Schematron) XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Warum XML-Schemasprachen? <vorlesung titel="XML ..." <teilnehmer matrikel="4711"> <name>Mustermann</name> Fakultät <student matrikel="4712"> Fakultät 1 <vorname>Max</vorname> <name>Normalverbraucher</name> <semester>5</semester> <vorname>Otto</vorname> <studienfach>8</studienfach> <semester>6</semester> </teilnehmer> <studienfach>10</studienfach> </vorlesung> <lehrveranstaltungen> <vorlesung titel="XML ..."/> </lehrveranstaltungen> <vorlesung titel="XML ..." </student> <teilnehmer> <matNr>4713</matNr> <name>Erika Mustermann</name> <semester>7</semester> <studienfach>Inf</studienfach> </teilnehmer> </vorlesung> unterschiedliche Struktur bei gleichartigem Informationsgehalt Fakultät 3 40 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen 2 XML-Datenmodellierung / XML-Schemasprachen Probleme - kein einheitliches Schema systematischer Zugriff kaum möglich Informationen vorhanden, aber unbrauchbar verständlicher Datenaustausch (fakultätsübergreifend) nicht realisierbar Warum dann überhaupt XML? Weil es auch XMLSchemasprachen gibt 41 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Woher kennen wir „Schemas“ schon? E/R-Diagramm (konzeptionelles Schema) Vorname Matrikel Name Student Studienfach 42 Titel * * Vorlesung Semester XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Übertragen auf die „XML-Welt“ (am Bsp. XML-Schema) <?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="vorlesung"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="teilnehmer"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string" /> <xs:element name="vorname" type="xs:string" /> <xs:element name="semester" type="xs:int" /> <xs:element name="studienfach" type="xs:int" /> </xs:sequence> <xs:attribute name="matrikel" type="xs:int" use="required" /> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="titel" type="xs:string" use="required" /> </xs:complexType> </xs:element> </xs:schema> 43 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen möglicher Einsatz von XML-Schemasprachen <vorlesung titel="XML ..." <teilnehmer matrikel="4711"> <name>Mustermann</name> <vorname>Max</vorname> Fak <semester>5</semester> <studienfach>8</studienfach> </teilnehmer> </vorlesung> Validierung Ergebnis .1 Fak. 2 <vorlesung titel="XML ..." <teilnehmer> <matNr>4713</matNr> <name>Erika Mustermann</name> Fak <semester>7</semester> <studienfach>Inf</studienfach> </teilnehmer> </vorlesung> .3 44 DTD, XML-Schema, … <student matrikel="4712"> <name>Normalverbraucher</name> <vorname>Otto</vorname> <semester>6</semester> <studienfach>10</studienfach> <lehrveranstaltungen> <vorlesung titel="XML ..."/> </lehrveranstaltungen> </student> XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Document Type Definition (DTD) - „alter“ Standard aus SGML-Spezifikation (80er Jahre), der in vereinfachter Form durch XML-Spezifikation aufgegriffen wurde - definiert eine Klasse strukturell ähnlicher XML-Dokumente - im Detail definierbar • Elementreihenfolge • Verschachtelung von Elementen • Inhalt von Attributen 45 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Document Type Definition (DTD) - DTDs müssen stets am Anfang von XML-Dokumenten definiert werden Wurzelelement im XML-Dokument Beginn <!DOCTYPE vorlesung[ <!ELEMENT vorlesung (teilnehmer+)> <!ATTLIST vorlesung titel CDATA #REQUIRED> <!ELEMENT teilnehmer (name, vorname, semester, studienfach)> <!ATTLIST teilnehmer matrikel NMTOKEN #REQUIRED> Attributliste <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT Elementtyp Ende 46 name (#PCDATA)> vorname (#PCDATA)> semester (#PCDATA)> studienfach (#PCDATA)> ]> XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Elementtyp - definiert Name (dokumentweit eindeutig) und Inhaltsmodell eines Element Name Inhaltsmodell <!ELEMENT teilnehmer (name, vorname, semester, studienfach)> - Inhaltsmodell wird von runden Klammern umschlossen und besteht aus • EMPTY – leeres Element • #PCDATA – nicht näher definierte Daten • ANY – beliebiger Inhalt (nicht näher definierter Text oder beliebiges in der DTD definiertes Element) • weiteren Elementtypen mit Angabe deren Kardinalität (Häufigkeit) 47 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Elementtyp - Definition weiterer Elementtypen im Inhaltsmodell per • Sequenz (",") – alle Elemente in angegebener Reihenfolge oder • Auswahl ("|") – ein Element aus Aufreihung - Kardinalitäten (eines Elementtyps) • "*" – beliebig häufiges Vorkommen, einschließlich keinmal • "+" – mehrfaches Vorkommen, mindestens einmal • "?" – optionales Vorkommen, maximal einmal • keine Angabe – genau einmaliges Vorkommen - aus unserem Beispiel • eine Vorlesung hat beliebig viele, mindestens jedoch einen Teilnehmer <!ELEMENT vorlesung (teilnehmer+)> 48 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Attributliste - definiert für einen bestimmten Elementtyp eine Liste von Attributen mit jeweils Name (eindeutig innerhalb Element), Typ und Verhalten Elementtyp Name Typ Verhalten <!ATTLIST vorlesung titel CDATA #REQUIRED> Attributtyp - Attributliste kann mehrere Attributtypen für ein Element definieren (einzelne Typdefinition nur durch Leerzeichen oder Umbruch getrennt) - pro Element können ebenfalls mehrere Attributlisten definiert werden 49 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Attributliste - Typen • CDATA – beliebige Zeichendaten Bsp.: beschreibung="Wir lernen die DTD kennen!" • NMTOKEN (Namens-Token) – eine einzelne zusammenhängende Zeichenkette Bsp.: rolle="Student" • NMTOKENS – eine Liste mehrerer NMTOKEN Bsp.: spez="DTD XML-Schema Relax_NG Schematron" 50 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Attributliste - Typen • ID – eindeutiger Bezeichner dessen Wert innerhalb des ganzen Dokuments eindeutig sein muss Bsp.: stud_ID="inf4711" • Aufzählungsliste – Liste von NMTOKEN, aus denen das Attribut genau ein Wert annehmen kann Bsp. für Definition: (Mo | Di | Mi | Do | Fr | Sa | So) • ... 51 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Attributliste - Verhalten • "Standardwert" – Standardwert zuweisen Bsp.: <!ATTLIST inf_student geschlecht(m | w) "m"> • #IMPLIED – optionales Attribut Bsp.: <!ATTLIST teilnehmer zweiter_vorname CDATA #IMPLIED> • #REQUIRED – zwingend erforderliches Attribut Bsp.: <!ATTLIST teilnehmer matrikel NMTOKEN #REQUIRED> • #FIXED – unveränderbar vorbelegtes Attribut Bsp.: <!ATTLIST vorlesung lehrstuhl CDATA #FIXED "DBIS"> 52 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Auslagerung einer DTD - Referenzieren externer DTD-Datei statt Definition der DTD im XMLDokument möglich vorlesung.dtd <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE vorlesung[ <!ELEMENT vorlesung (teilnehmer+)> ... ]> <vorlesung titel="XML ..."> ... 53 <!DOCTYPE vorlesung[ <!ELEMENT vorlesung (teilnehmer+)> ... <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE vorlesung SYSTEM ".../vorlesung.dtd" []> <vorlesung titel="XML ..."> ... XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Modularisierung einer DTD - Zerlegung einer DTD in logische und übersichtliche Einheiten (Module) - Einbinden der Module mittels Parameter Entities teilnehmer.mod Deklaration <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE vorlesung[ ... <!ENTITY % teilnehmer SYSTEM "teilnehmer.mod"> ... %teilnehmer ]> <vorlesung titel="XML ..."> ... <!ELEMENT teilnehmer (name, vorname, semester, studienfach)> <!ATTLIST teilnehmer matrikel NMTOKEN #REQUIRED> <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT name (#PCDATA)> vorname (#PCDATA)> semester (#PCDATA)> studienfach (#PCDATA)> Import 54 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Was kann eine DTD noch? - 55 Referenzen beschreiben (mittels ID und IDREF bzw. IDREFS) weitere Formen von Entities (zum Zweck der Wiederverwendbarkeit) Notationen (zur Formatangabe für externe „XML-fremde“ Daten) rekursive Beziehungen abbilden XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Nachteile von DTDs - funktionale Beschränktheit • kaum Datentypen (keine Zahlen, Datum, etc.) • keine Unterstützung für Namespaces • dokumentweite Eindeutigkeit von Elementen und IDs • keine Sonderzeichen für Aufzählungstyp zulässig - Syntax • DTDs sind selbst keine XML-Dokumente • zusätzliche Editoren zur Bearbeitung nötig - ... 56 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen DTD 57 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen XML-Schema - Nachteile der DTD förderten seit 1999 Standardisierungsbestrebungen zu einer „XML-spezifischeren“ Schemasprache - Entwurfsziele • Fähigkeiten von DTD einschließen • umfangreiches Typsystem bereitstellen • Unterstützung von Namespaces • lokale Definition von Elementen • Verwendung von XML-Syntax - 2001 Verabschiedung der W3C Recommendation „XML-Schema“ (sehr komplex* und daher 3-teilig) * Wir werden uns aufgrund der erwähnten Komplexität auf die Grundlagen der XML-Schema-Spezifikation beschränken. 58 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen XML-Schema-Dokument - XML-Schemas werden durch XML-Schema-Dokumente beschrieben* XML-SchemaDokument Vorlesung.xsd <?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="vorlesung"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="teilnehmer"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string" /> <xs:element name="vorname" type="xs:string" /> <xs:element name="semester" type="xs:int" /> <xs:element name="studienfach" type="xs:int" /> </xs:sequence> <xs:attribute name="matrikel" type="xs:int" use="required" /> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="titel" type="xs:string" use="required" /> </xs:complexType> </xs:element> </xs:schema> * Vereinfachung: Wir werden die Begriffe XML-Schema und XML-Schema-Dokument teilweise synonym füreinander verwenden. 59 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Charakteristik von XML-Schema-Dokumenten - XML-Schema-Dokumente ⊂ XML-Dokumente - Besonderheiten von XML-Schemas • umschließendes schema-Element (nach XML-Deklaration) • Namespace "http://www.w3.org/2001/XMLSchema" • Namespace-Präfix häufig xs oder xsd <?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="vorlesung"> ... 60 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Deklaration von Elementen - per Element <xs:element> und damit verbundenen Attributen • name – Elementname • type – zugeordneter Typ • minOccurs – min. Vorkommen eines Elements • maxOccurs – max. Vorkommen ("unbounded" für beliebig oft) • ... <xs:element name="vorlesung" type="xs:string" /> 61 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Deklaration von Elementen - alternative Form der Typdefinition: „anonyme Typdefinition“ • Typdefinition ohne Name direkt innerhalb des Elements • keine Möglichkeit zur Wiederverwendung <xs:element name="vorlesung" > [anonyme Typdefinition] </xs:element> 62 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Deklaration von Attributen - per Element <xs:attribute> und damit verbundenen Attributen • name – Attributname • use – Verwendung ("required", "optional", "prohibited") • default – Standardwert (nur erlaubt bei use="optional") • fixed – fixer Wert vorausgesetzt (nicht in Verbindung mit default ) • ... <xs:attribute name="matrikel" type="xs:int" use="required" /> - anonyme Typdefinition (siehe Elemente) auch bei Attributen möglich 63 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Vordefinierte Typen Legende 64 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Vordefinierte Typen - insgesamt 44 vordefinierte (einfache) Typen für unter anderem • Zeichenketten (bspw. "xs:string", "xs:language") • Zahlen (bspw. "xs:int", "xs:float") • Zeit- und Datumsangaben (bspw. "xs:date", "xs:datetime") - vordefinierte Typen unterscheiden sich in • Urtypen • primitive Typen • (von Primitivtypen) abgeleitete Typen - DTD-Datentypen aus Kompatibilitätsgründen weitgehend übernommen 65 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Erzeugung eigener Typen - zusätzlich zu vordefinierten Datentypen lassen sich eigene Typen erzeugen Typen ohne (Kind-) Elemente und Attribute einfache Typen komplexe Typen einfacher Inhalt ohne (Kind-) Elemente 66 umfassen (Kind-) Elemente oder Attribute komplexer Inhalt mit (Kind-) Elementen XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Die Typen im Detail – einfache Typen - Verwendung für Attributwerte oder Textinhalt von Elementen - Komponenten • Wertebereich (value space) • Repräsentationsraum (lexical space) – Repräsentationen für Werte • Aspekte (facets) – Eigenschaften von Typen über die eingeschränkt werden kann - oft gibt es zu einem Wert mehrere Repräsentationen (Bsp.: 100 = 1.0E2) 67 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Die Typen im Detail – einfache Typen - einschränkende Aspekte (facets) • Unter-/Obergrenzen für geordneten Wertebereich minInclusive, minExclusive, maxInclusive, maxEclusive • Längenbeschränkungen - für Zeichenketten length, minLength, maxLength - für Listen length, minLength, maxLength - für Dezimalzahlen totalDigits – maximale Gesamtanzahl der Dezimalstellen, fractionDigits – Anzahl der Nachkommastellen 68 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Die Typen im Detail – einfache Typen - einschränkende Aspekte (facets) • Aufzählung der erlaubten Werte (enumeration) • Reguläre Ausdrücke (pattern) zur Einschränkung des Repräsentationsraums (und damit indirekt auch des Wertebereichs) • Behandlung von Whitespace (Leerzeichen, Tabulator, Zeilenende/Wagenrücklauf) preserve – Whitespace wird beibehalten replace – Tabulator und Zeilenende/Wagenrücklauf werden durch Leerzeichen ersetzt collapse – wie replace, zusätzlich werden jedoch führende und folgende Leerzeichen abgeschnitten sowie Folgen von Leerzeichen auf ein je einmaliges Vorkommen beschränkt 69 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Die Typen im Detail – komplexe Typen - Verwendung für Elemente - Unterscheidung • einfacher Inhalt – Inhalt ohne (Kind-) Elemente • komplexer Inhalt – Inhalt umfasst (Kind-) Elemente - per Reihung (sequence) – (Kind-) Elemente müssen in angegebener Reihenfolge vorkommen - per Auswahl (choice) – nur eines der angeführten (Kind-) Elemente darf vorkommen - per Konjunktion (all) – alle aufgeführten (Kind-) Elemente dürfen maximal einmal in beliebiger Reihenfolge vorkommen 70 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Die Typen im Detail – komplexe Typen - besonderer komplexer Inhalt • anyType - wird einem Element der Typ anyType zugeordnet, so ist für dieses Element beliebiger (komplexer) Inhalt erlaubt <xs:element name="irgendetwas" type="xs:anyType" /> • gemischter Inhalt (mixed content) - komlexer Inhalt mit Text wird durch das Attribut mixed="true" im Element complexType gekennzeichnet <xs:element name="Element_mit_gemischtem_Inhalt"> <xs:complexType mixed="true"> ... </xs:complexType> </xs:element> 71 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Die Typen im Detail – komplexe Typen - besonderer komplexer Inhalt • leerer Inhalt - komplexer Inhalt ist „standardmäßig“ Inhalt ohne Text - Inhaltsmodell (leer) kann bei Definition daher vernachlässigt werden <xs:element name="Element_ohne_Inhalt"> <xs:complexType> <xs:attribute name="nur_ein_Attribut" type="xsd:string" /> </xs:complexType> </xs:element> 72 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Ableitungsmechanismen - Vererbungsmechanismen • Einschränkung (restriction) - Ableitung eines Typs von einem Basistyp unter Verwendung von beliebig vielen beschränkenden Aspekten - Ergebnis ist einfacher oder komplexer Typ <xs:simpleType name="Telefonnummer"> <xs:restriction base="xs:string"> <xs:pattern value="0[0-9]+/[0-9]+"/> <xs:maxLength value="25"/> </xs:restriction> </xs:simpleType> 73 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Ableitungsmechanismen - Vererbungsmechanismen • Erweiterung (extension) - Erweiterung eines bestehenden Typs um neue Attribute oder Elemente - Ergebnis ist stets ein komplexer Typ <xs:complexType name="Telefonnummer_erweitert"> <xs:simpleContent> <xs:extension base="Telefonnummer"> <xs:attribute name="Funktion" type="xs:string"/> </xs:extension> </xs:simpleContent> </xs:simpleType> 74 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Ableitungsmechanismen - Aggregationsmechanismen • Listenbildung (list) - Ableitung eines einfachen Typs zu einer Liste einfacher Typen - Liste selbst ist ebenfalls einfacher Typ <xs:simpleType name="Telefonnummern"> <xs:list itemType="Telefonnummer"/> </xs:simpleType> 75 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Ableitungsmechanismen - Aggregationsmechanismen • Vereinigung (union) - Vereinigung der Wertebereiche und Repräsentationsräume von einfachen Typen - Ergebnis ist stets ein einfacher Typ <xs:simpleType name="Kontakt"> <xs:union memberTypes="Telefonnummer eMail"/> </xs:simpleType> 76 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Was kann XML-Schema noch? - Gruppen von Elementen und/oder Attributen (zum Zweck der Wiederverwendbarkeit) - offene Schemata (Einschränkungen nur in Abhängigkeit zu Namespaces) - gezielte Eindeutigkeiten und Referenzen beschreiben - Unterstützung für Namespaces - Ersetzungsgruppen definieren - Import von XML-Schema-Dokumenten - ... 77 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen XML-Schema 78 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen alternative Ansätze - Regular Language Description for XML New Generation (RELAX NG) • aus den Schemasprachen RELAX und TREX hervorgegangen • grammatikorientierter Ansatz (geschlossener Schemaformalismus) - nur die Konstrukte sind erlaubt, die sich anhand der Produktionsregeln der Grammatik von RELAX NG ableiten lassen - analog zum XML-Schema-Konzept • Entwurfsziele - kompakte, einfache und verständliche Schemasprache - Beschränkung auf strukturelle Beschreibung - Verwendung von XML-Syntax - Unterstützung von Namespaces 79 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen alternative Ansätze - Schematron • regelbasierten Ansatz (offener Schemaformalismus) - alle Konstrukte sind erlaubt, die nicht explizit verboten wurden - Ausschließen von Unzulässigkeiten per Regeln • Besonderheiten - durch Regeln (in XML-Syntax) lassen sich umfangreiche Zusammenhänge beschreiben (bspw. inhaltliche Abhängigkeiten) - Gesamtheit aller strukturellen Zusammenhänge wiederum lässt sich nur sehr aufwändig mit Regeln fixieren - Schematron daher weniger als eigenständige Schemasprache, sondern vielmehr als Ergänzung zu grammtikorientierten Sprachen zu verstehen 80 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML-Datenmodellierung / XML-Schemasprachen Zusammenfassung - es existieren verschiedene Schemasprachen in unterschiedlicher Mächtigkeit zur Beschreibung von XML-Dokumenten - DTDs sind historische „Überbleibsel“ der SGML-Spezifikation, die den XML-Spezifika nur wenig gerecht werden - XML-Schema ist zum heutigen Zeitpunkt die de facto XMLSchemasprache mit enormer Mächtigkeit - der funktionale Umfang von XML-Schema wird durch eine hohe Komplexität erkauft - alternative Ansätze (bspw. RELAX NG) versuchen beispielsweise dieser Komplexität wiederum entgegenzuwirken oder bieten erweiterte Möglichkeiten zur Prüfung inhaltlicher Abhängigkeiten (Schematron) 81 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen