Mario Jeckle. XML Schema

Ähnliche Dokumente
XML DTD und Schema von Thomas Mangold

Validierung von XML Dokumenten

XML Schema vs. Relax NG

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

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

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

Erhöhung der Datenqualität in XML-Dokumenten von Desktop Applikationen. Alexander Hilliger von Thile - REI/ID

3. Generische Strukturierung von XML-Dokumenten

IT-Zertifikat: Daten- und Metadatenstandards

DTD: Syntax-Zusammenfassung

Strukturierung von Inhalten

XML Grundlagen Teil I

Klausur zur Vorlesung Einführung in XML

Seminar E-Services WS 02/03 WSDL. Web Services Description Language. Moritz Kleine SES 02 - WSDL

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

XSD - XML Schema Definition

Entwurf von XML-Sprachen mit XML-Schema

Kapitel 5: Datenaustausch mit XML

Datenaustauschformate. Datenaustauschformate - FLV

2. Einführung in Datenbanken und XML

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

Web-Programmierung (WPR)

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

Extensible Markup Language (XML) Grammatiken

Model Driven Engineering für XML-Anwendungen

Exkurs: Backus-Naur-Form (BNF) Document Type Definition (DTD) W3C XML Schema (XSD) RELAX NG. Diskussion

Seminar 1912 im Sommersemester XML und Datenbanken. Präsenzphase: 28. und 29. Juni Praktische Informatik IV

XML-Schema. Einordnung

XML Grundlagen. Andreas Rottmann,Sebastian Riedl. 27. August Quit Full Screen Previous Page Next Page GoTo Page Go Forward Go Back

Michel Messerschmidt Diplomarbeit. Entwurf einer Sprache zur Klassifizierung von Malware-Vorfällen

Seminar XML und Datenbanken. Thema: Workflow

XML, XHTML und MathML

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

Daten- und Metadatenstandards Wintersemester 2011 / November 2011 XML II: DTD

XML-Praxis. XML-Grammatiken. Jörn Clausen

ASN.1 <-> XML TRANSLATION

Extensible Markup Language (XML)

Idee des Semantic Web

Verteilte Anwendungen. Teil 2: Einführung in XML

Modell/Metamodell. Generated Source Code. Generator. Model. Fakultät für Informatik und Wirtschaftsinformatik MDSD - SS 2014

XML - die zukünftige Sprache des WWW? Daten im WWW strukturiert speichern, übertragen, darstellen und verketten. Max Riegel XML

... MathML XHTML RDF

XML Eine Einführung XML Dokumente Erstellen

Model Driven Software Development

Semistrukturierte Daten

Seminar: mobile GIS Austausch von Geodaten

03 XML Grundlagen. Manuel Burghardt Lehrstuhl für Medieninformatik

XML Vorlesung FHA SS

(a) Erstellen Sie für die Web-Veröffentlichung eines Artikels die Meta-Informationen nach dem Dublin-Core-Standard.

SQL/XML Aktueller Stand der Standardisierung

Klausur zur Vorlesung Einführung in XML

XML. Basis Syntax. Basis Syntax. XML (extensible Markup Language)

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

XML. XML-Datenmodellierung / XML-Schemasprachen. XPath DTD. XQuery. XML-Schema XSLT XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

XML und Datenmodellierung

1 Was ist XML? Hallo XML! Kommentare in XML 52

Java, OO und UML Fortsetzung

CARL HANSER VERLAG. Dirk Ammelburger XML. Grundlagen der Sprache und Anwendungen in der Praxis

XML Informationsmodelle

Java API for XML Binding

Analyse der Datenkommunikation zur drahtlosen Steuerung eines NAO Roboters durch ein Android Gerät

Java: Kapitel 9. Java und XML. Programmentwicklung WS 2008/2009. Holger Röder

Datenspeicherung mit XML

Präsentation zum Thema XML Datenaustausch und Integration

X-Technologien. XML and Friends. Jörn Clausen 9. Juli 2001

XMI & Java. von Stefan Ocke so3@inf.tu-dresden.de 5.Juli 2001

Web-Services Grundlagen

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

PS Distributed Systems

Agenda GRUNDKURS INFORMATIK 8 BESCHREIBUNG VON DATEN XML. Von SGML zu XML. Grundbegriffe XML Dokument. XML Beispiel

Übungsbeispiel 1 Erstellen Sie eine Homepage für Ihre Gruppe in XML und überprüfen Sie die Wohlgeformtheit in einem Editor/Browser.

1969 GML Generalized Markup Language IBM Research Lab. XML version 1.0 Feb W3C Rcommendation. Java Apache XML (JAX) Lektion 8: XML I

Vorgetragen von. Sanaz Mostowfi Anna Polovets Mandy Neumann

Elementare Konzepte von

Transportdateien und die XML

Transkript:

Mario Jeckle XML Schema

Inhaltsübersicht Warum? benötigt XML noch eine Sprache zur Grammatikdefinition Wozu? kann XML-Schema eingesetzt werden Wie? funktioniert XML-Schema Was? nützt Ihnen der Einsatz von XML-Schema 2

Der DTD-Mechanismus pkw nummer line rad farbe name gewicht leergewicht zulgesamtgewicht 3

Der DTD-Mechanismus <?xml version="1.0" encoding="utf-8"?> pkw <pkw xmlns = "schema:www.daimlerchrysler.com" nummer nummer = "S-NE 4229" line = "avantgarde"> <rad>... </rad> <rad>... </rad> <rad>... </rad> <rad>... </rad> <farbe name = "Amethystviolett"/> <gewicht> rad farbe name gewicht <leergewicht>1485</leergewicht> <zulgesamtgewicht>1935</zulgesamtgewicht> </gewicht> line leergewicht zulgesamtgewicht 4

Der DTD-Mechanismus <!ELEMENT pkw (rad+, farbe, gewicht)> <!LIST pkw nummercdata #REQUIRED line CDATA #REQUIRED> <!ELEMENT rad ANY> <!ELEMENT farbe EMPTY> <!LIST farbe name CDATA #REQUIRED > <!ELEMENT gewicht (leergewicht, zulgesamtgewicht)> <!ELEMENT leergewicht (#PCDATA)> <!ELEMENT zulgesamtgewicht (#PCDATA)> 5

Der DTD-Mechanismus <!NOTATION non-empty SYSTEM "javascript:currentnode.value.length()>0;"> <!ELEMENT pkw (rad, rad, rad, rad?, farbe, gewicht)> <!LIST pkw nummer NOTATION (non-empty) "non-empty" line CDATA #REQUIRED> <!ELEMENT rad ANY> <!ELEMENT farbe EMPTY> <!LIST farbe name (Dunkelbau Firnweiß Magmarot...) #REQUIRED > <!ELEMENT gewicht (leergewicht, zulgesamtgewicht)> <!ELEMENT leergewicht (#PCDATA)> <!ELEMENT zulgesamtgewicht (#PCDATA)> 6

Der DTD-Mechanismus <!NOTATION non-empty SYSTEM "javascript:currentnode.value.length()>0;"> <!ELEMENT pkw (rad, rad, rad, rad?, farbe, gewicht)> <!LIST pkw nummer NOTATION (non-empty) "non-empty" line CDATA #REQUIRED> <!ELEMENT rad ANY> <!ELEMENT farbe EMPTY> <!LIST farbe name (Dunkelbau Firnweiß Magmarot...) #REQUIRED > <!ELEMENT gewicht (leergewicht, zulgesamtgewicht)> <!ELEMENT leergewicht (#PCDATA)> <!ELEMENT zulgesamtgewicht (#PCDATA)> 7

Der DTD-Mechanismus Festlegung der Dokumentstruktur Elemente Attribute Notationen Entitäten (Textmakro auf Dokumentebene) Parametrische Entitäten (Textmakro auf DTD-Ebene) Festlegung des Inhaltsmodells Datentypen Zeichenketten-artig Vorgabewerte Auswahltypen Schlüssel/Referenzen 8

Der DTD-Mechanismus Streng hierarchische Sichtweise Die-ganze-Welt-ist-ein-Dokument-Sicht (von SGML übernommen)... mit entsprechenden Auswirkungen auf Referenzen Keine (praktisch verwendbare) Namespace Unterstützung DTD ist keine XML-Sprache => zusätzliche Werkzeuge notwendig es existiert keine DTD für DTDs => Grammatik kann nicht validiert werden Angebotene Datentypen unzureichend Angebotene Strukturprimitiven unzureichend => Notwendige Konstrukte zum Ausdruck mächtigerer Semantik müssen aufwendig und proprietär realisiert werden 9

Der DTD-Mechanismus Strukturell... Inhaltlich...... Erweiterungsforderungen Namespace Integration (und damit XML 2 nd edition) Steuerung der Auftretensreihenfolge (Beschränkung und kontrollierte Freigabe) Vererbung (Kopier- und Substitutionssemantik) Wiederverwendungsunterstützung Praktisch einsetzbarer Referenzierungsmechanismus Primitive Datentypen (int, float, boolean,...) Binärstrukturen Komplexe Datentypen (date, Elemente, Strukturen,...) Eigendefinierte lexikalische Datentypen Konsistenzsichernde Einschränkungen 10

Der DTD-Mechanismus pkw nummer line... Erweiterungsforderungen Selbstdefinierte Typen (reguläre Ausdrücke) Kontextbezogene Einschränkung rad farbe name gewicht leergewicht Beschränkung der Auftretenshäufigkeit (Kardinalität) Auswahl aus vorgegebener Liste (selbst definierter Aufzählungstyp) Einschränkung des zulässigen Wertebereichs (Domänenrestriktion) zulgesamtgewicht Beliebige Reihenfolge 11

Ein Schema für XML Datentypen... Validierung Vereinfachte Applikationsprogrammierung Separiertes Typkonzept Namespaces... Keine Unterstützung in DTDs Notwendig für integrierte Anwendung verschiedener XML-Sprachen Syntax... DTD-Syntax ist nicht XML Keine Meta-DTD Gesteigerte Ausdrucksmächtigkeit... Strukturen die nicht durch DTD-Mechanismen ausdrückbar sind 12

Lösungsalternativen Erweiterungen des bestehenden (SGML-/XML-)DTD-Mechanismus Data Types for DTD (DT4DTD) Wissensbeschreibung Document Content Description for XML (DCD) (RDF basierte Weiterentwicklung von XML-Data) Inspiriert durch XML-API-Entwicklung Schema for Object oriented XML (SOX) XML-Sprachen zur Inhaltsbeschreibung Document Definition Markup Language/XSchema (DDML) Schematron (XSL-basierte Auswertung der Dokumentstruktur) XML-Data/XML-Data Reduced (XDR) (erster Ansatz noch vor Verabschiedung XML 1.0) Document Structure Description (DSD) 13

XML-Schema Zwei konkurrierende Philosophien: Regelbasiert Definiert Validierungsregeln Bekannteste Implementierung: Schematron Reguläre Grammatik Definiert alle gültigen Dokumentstrukturen explizit Bekannt aus Programmiersprachen Implementierungen: XSD, XML-Data, XDR, DSD,... Stand 1998/9: Viele verschiedene (konkurrierende) Sprachen Zunehmend kaum noch erkennbare inhaltliche Unterschiede Ab Mai 1999: W3C Arbeitsgruppe entwickelt eigenen Ansatz Trennung zwischen Struktur und Datentypen Berücksichtigt (nahezu) alle bedeutenden Vorgänger (explizit: DCD, DDML, SOX, XDR, XML-Data) 14

XML-Schema... Mächtigkeit Attribute und Elemente (wie in DTDs) Namespace-Unterstützung Atomare Datentypen (int, float, boolean,...) Anwenderdefinierte atomare Datentypen Einschränkung des Wertebereichs (Domänenrestriktion) lexikalische Muster (reguläre Ausdrücke) Aufzählungstypen Mengentypen komplexe Datentypen (complextype) Vererbung Restriktion und Erweiterung Substitution Erweiterter Schlüsselmechanismus NULL-Werte 15

XSD Component Data Model Benannte Komponente mit target namespace Unbenannte Komponte cf. XML-Schema Part 1: Structures, PR 2001-03-30, Appendix E 16

XSD -- Datentyphierarchie Ur-typ Vordefinierter Primitivtyp Vordefinierter abgeleiteter Typ Typeinschränkung Aggregierter Typ cf. XML-Schema Part 2: Datatypes, PR 2001-03-30, chap. 3 17

18 XML XML-Schema Schema Primitive Datentypen: Primitive Datentypen: Abgeleitete Datentypen: Abgeleitete Datentypen: integer nonpositiveinteger negativeinteger long int short byte nonnegativeinteger unsignedlong unsignedint unsignedshort unsignedbyte positiveinteger normalizedstring token language IDREFS ENTITIES NMTOKEN NMTOKENS Name NCName ID IDREF ENTITY gyearmonth gyear gmonthday gday gmonth hexbinary base64binary anyuri QName NOTATION string boolean decimal float double duration datetime time date

XML-Schema Datentypen: <xsd:element name = "gewicht"> <xsd:complextype> <xsd:sequence> <xsd:element name="leergewicht" type = "xsd:positiveinteger"/> <xsd:element name="zulgesamtgewicht" type="xsd:positiveinteger"/> </xsd:sequence> </xsd:complextype> </xsd:element> pkw... am Beispiel nummer line rad farbe gewicht name Integer > 0 leergewicht zulgesamtgewicht 19

XML-Schema Eigene Datentypen: Definition: <simpletype name="pkwzulgesamtgewichttype"> <restriction base="decimal"> <maxinclusive value="7500"/> <mininclusive value="0"/> </restriction> </simpletype> Verwendung: <element name = "leergewicht" type = "xsd:positiveinteger"/> <element name = "zulgesamtgewicht" type = "dcx:pkwzulgesamtgewichttype"/> pkw... am Beispiel nummer line rad farbe gewicht name leergewicht zulgesamtgewicht 7500 >= zulgesamtgewicht >= 0 20

XML-Schema Eigene Datentypen (Vorgabewerte) <xsd:element name = "farbe"> <xsd:complextype> <xsd:attribute name="name" use="required"> <xsd:simpletype> (Vorgabewerte): <xsd:restriction base="xsd:string"> <xsd:enumeration value = "Dunkelblau"/> <xsd:enumeration value = "Firnweiß"/>... </xsd:restriction> </xsd:simpletype> </xsd:attribute> </xsd:complextype> </xsd:element> pkw... am Beispiel nummer line rad farbe gewicht name leergewicht zulgesamtgewicht 21

XML-Schema... am Beispiel Eigene Datentypen (lexikalische Ausdrücke): Definition: <xsd:simpletype name = "autonummertype"> <xsd:restriction base = "xsd:string"> <xsd:pattern value="[a-z]{1,3}-[a-z]{1,2} \d{1,4}"/> </xsd:restriction> </xsd:simpletype> Verwendung: <xsd:element name = "nummer" type = "autonummertype"/> pkw nummer line rad farbe gewicht name leergewicht zulgesamtgewicht Definition eigener spezialisierter Typen erhöht Sicherheit und Wiederverwendbarkeit 22

XML-Schema Eigene komplexe Typen: Definition: <complextype name="gewichttype"> <all> <element name = "leergewicht" type = "xsd:positiveinteger"/> <element name = "zulgesamtgewicht" type = "dcx:pkwzulgesamtgewichttype"/> </all> </complextype> Verwendung: <element name = "nummer" type = "dcx:autonummertype"/> <element name = "gewicht" type = "dcx:gewichttype"/> pkw... am Beispiel nummer line rad farbe gewicht name leergewicht zulgesamtgewicht Definition eigener spezialisierter Typen erhöht Sicherheit und Wiederverwendbarkeit 23

XML-Schema Strukturen (Auftretenshäufigkeit): <xsd:element name = "pkw"> <xsd:complextype> <xsd:sequence> <xsd:element name = "rad" minoccurs = "4" maxoccurs = "5"/>... </xsd:sequence> pkw... am Beispiel nummer line rad farbe gewicht name leergewicht zulgesamtgewicht 24

XML-Schema Strukturen ((beliebige) Reihenfolge): <xsd:element name="gewicht"> <xsd:complextype> <xsd:all> <xsd:element name = "leergewicht type = "xsd:positiveinteger"/> <xsd:element name = "zulgesamtgewicht" type = "xsd:positiveinteger"/> </xsd:all> </xsd:complextype> </xsd:element> Alle Elemente einer all-gruppe können in beliebiger Reihenfolge auftreten. pkw... am Beispiel nummer line rad farbe gewicht name leergewicht zulgesamtgewicht 25

XML-Schema XML-Dokument:... Namespaces <?xml version = "1.0" encoding = "UTF-8"?> <pkw xmlns = "schema:www.daimlerchrysler.com" xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation = "schemas.dcx.com?name=example?type=xsd" nummer = "S-NE 4229" line = "Avantgarde"> <rad/> <rad/> <rad>... </rad> <rad>... </rad> <farbe name="amethystviolett"/> <gewicht> <leergewicht>1485</leergewicht> <zulgesamtgewicht>1935</zulgesamtgewicht> </gewicht> </pkw> 26

XML-Schema XML-Schema:... Namespaces <schema xmlns = "http://www.w3.org/2001/xmlschema" targetnamespace = "schema:www.daimlerchrysler.com" xmlns:dcx = "schema:www.daimlerchrysler.com" xmlns:xsd = "http://www.w3.org/2001/xmlschema" elementformdefault = "qualified"> <simpletype name="autonummertype">...</simpletyple> <element name = "nummer" type = "dcx:autonummertype"/> <element name = "gewicht"> <complextype> <all> <element name="leergewicht" type="xsd:positiveinteger"/> <element name="zulgesamtgewicht" type="dcx:pkwzulgesamtgewichttype"/> </all> </complextype> </element>... </schema> 27

XML-Schema Konsistenzregeln: farbe/@name = "Amethystviolett" => line = "Avantgarde" pkw... Grenzen nummer line rad leergewicht <= zulgesamtgewicht XSD erlaubt als reguläre Sprache keine inhaltsabhängigen Konsistenzregeln farbe name gewicht leergewicht zulgesamtgewicht 28

XML-Schema farbe/@name = "Amethystviolett" => line = "Avantgarde"... Grenzen, und ihre Überwindung <?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> <schema xmlns='http://www.ascc.net/xml/schematron'> <ns prefix='dcx' uri='schema:www.daimlerchrysler.com'/> <pattern name = 'Farbe Test'> <rule context = "dcx:pkw"> <assert test = "@line ='Avantgarde' and (//dcx:farbe/@name='amethystviolett' or //dcx:farbe/@name='dunkelblau' or //dcx:farbe/@name='firnweiß'... )">Farbe Amethystviolett ist nur für Line Avantgarde zugelassen</assert> </rule> </pattern> </schema> Beispiel in der Schemasprache Schematron 29

XML-Schema leergewicht <= zulgesamtgewicht... Grenzen, und ihre Überwindung <?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> <schema xmlns='http://www.ascc.net/xml/schematron'> <ns prefix='dcx' uri='schema:www.daimlerchrysler.com'/> <pattern name = 'Gewicht Test'> <rule context = "dcx:gewicht"> <assert test = "leergewicht > zulgesamtgewicht"> Leergewicht übersteigt zulässiges Gesamtgewicht </assert> </rule> </pattern> </schema> Beispiel in der Schemasprache Schematron 30

Referenzen W3C s XML-Schema: Part 0: Primer: http://www.w3.org/tr/xmlschema-0/ Part 1: Structures:http://www.w3.org/TR/xmlschema-1/ Part 2: Datatypes:http://www.w3.org/TR/xmlschema-2/ Einige Schema-Ansätze: DT4DTD: DCD: SOX: DDML: XML-Data: XDR: DSD: Schematron: http://www.w3.org/tr/dt4dtd http://www.w3.org/tr/note-dcd http://www.w3.org/tr/note-sox/ http://www.w3.org/tr/note-ddml http://www.w3.org/tr/1998/note-xml-data/ http://www.ltg.ed.ac.uk/~ht/xmldata-reduced.htm http://www.brics.dk/dsd/ http://www.ascc.net/xml/resource/schematron/schematron.html 31