Datenintegration und Datenaustausch mit XML-Techniken Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.1 www.oio.de [email protected] Gliederung • • • eXtensible Markup Language Verarbeitung von XML Datenbeständen XML Datenbestände • Motivation und Ziele • • Syntaktische Grundlagen Namensräume 2 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 1 Markup • Markup bezeichnet jede Menge von Tags (Auszeichner), die zum Inhalt eines Text-Dokuments hinzugefügt werden, um die Bedeutung oder die Darstellung der Daten anzuzeigen. • • • • RTF LaTeX HTML SGML (Standard Generalized Markup Language, ISO, 1970) 3 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH HTML Tags • Physisch: <i>Das ist in italics</i> • Logisch: <em>Das ist wichtig</em> • Die Bedeutung (Semantik) wird durch die Spezifikation bestimmt 4 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 2 Probleme mit HTML • HTML ist speziell an die Darstellung von Information angepaßt, aber nicht an deren Erfassung • HTML hat eine stürmische Entwicklung durchgemacht und ist den Anforderungen nach und nach angepaßt worden Versionen: • 2.0 (1995) 3.2 (1997) 4.0 (1998) Die geringe Strenge der Regeln macht automatische Verarbeitung schwierig 5 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Unterschiede HTML - XML HTML XML Flache Struktur Hierarchien sind möglich Kann nicht erweitert werden Definition eigener Tags möglich Kaum maschinell verarbeitbar Leichte maschinell Verarbeitung Layout steht im Vordergrund Daten und Struktur stehen im Vordergrund 6 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 3 Semantische Tags • Semantische Tags beschreiben den Inhalt eines Elementes <der-darzustellende-text> Hallo </der-darzustellende-text> • Semantische Tags sind frei wählbar und können jede Art von Daten beschreiben 7 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Semantische Tags Beispiele <artikel>Dauerlutscher</artikel> <telefonnummer>0495556666777</telefonnummer> <komponist>Johann Sebastian Bach</komponist> <noten>bach</noten> 8 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 4 XML Definitionen • eXtensible Markup Language • ist eine verallgemeinerte Markupsprache • ist eine Metasprache zur Beschreibung von Markupsprachen • ist eine Untermenge von SGML 9 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Design goals • XML shall be straightforwardly usable over the Internet. • XML shall support a wide variety of applications. • XML shall be compatible with SGML. • It shall be easy to write programs which process XML documents. • The number of optional features in XML is to be kept to the absolute minimum, ideally zero. • XML documents should be human-legible and reasonably clear. • The XML design should be prepared quickly. • The design of XML shall be formal and concise. • XML documents shall be easy to create. • Terseness in XML markup is of minimal importance. 10 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 5 XML Standards XML-Vokabulare MathML SVG XForms Voice-ML XSL XLink Co-Standards SMIL XSLT Schema XHTML XML WML XPath XBRL XPointer Namespaces SOAP XML-EDI CML DocBook XML 11 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH W3C Recommendation Track Recommendation Proposed Recommendation Candidate Recommendation Last Call Working Draft Working Draft 12 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 6 Einfachstes XML-Dokument <?xml version="1.0"?> <hallo> Hallo Welt! </hallo> 13 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Gliederung • • • eXtensible Markup Language Verarbeitung von XML Datenbeständen XML Datenbestände • Motivation und Ziele • • Syntaktische Grundlagen Namensräume 14 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 7 Unicode • XML unterstützt Unicode: http://www.unicode.org • Je nach Kodierung werden bis zu 2 Byte pro Zeichen verwendet • Jedes Unicode-Zeichen kann durch eine Ersetzung referenziert werden: &#code; oder &#xhexcode; • Beispiel: ©-Symbol: &#169; &#x00A9; &#xA9; 15 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH XML Markup • <? ... ?> Processing Instruction • <!-- ... --> Kommentar • <! ... > Document Type Definition • < ... > Element Anfang • </ ... > Element Ende • < ... /> Leeres Element 16 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 8 NMTOKEN • NMTOKEN (name token) sind Kombinationen aus Buchstaben, Zahlen, Punkten, Doppelpunkten, Minuszeichen und Unterstrichen • Elementnamen sind NMTOKEN und beginnen mit einem Buchstaben, einem Doppelpunkt oder einem Unterstrich <_hallo> <:hallo> <Mein-Element:Hallo.Welt> 17 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Verschachtelung • Elemente dürfen verschachtelt werden • Die Verschachtelung muß vollständig sein, und es darf keine Überschneidungen geben • Richtig: Falsch: <a> <a> <b></b> <b></a> </a> </b> 18 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 9 Baumstruktur • Durch die Verschachtelung der Elemente kommt eine Baumstruktur zustande <cdkatalog> cdkatalog <cd> <titel>Ray of Light</titel> cd <interpret>Madonna</interpret> titel </cd> </cdkatalog> interpret 19 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Wohlgeformtheit (Teil) • Prolog: <?xml version="1.0"?> • Es gibt genau ein Wurzel-Element • Elemente müssen vollständig verschachtelt sein • Wenn ein Element nicht leer ist, dann gibt es zu jedem Startelement genau ein Endelement und umgekehrt • Ist ein Dokument nicht wohlgeformt, ist es nicht XML 20 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 10 Attribute • Attribute geben zusätzliche Information zu einem Element • Jedes Start-Tag kann beliebig viele Attribute besitzen • Für Attribute gelten die selben Namensbeschränkungen wie für Elementnamen • Attribute müssen in Anführungszeichen stehen <text farbe="rot" groesse="14pt">Hallo</text> <text farbe='rot' groesse='14pt'>Hallo</text> 21 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Entity References und CDATA • Für besondere Zeichen werden Ersetzungen benutzt &amp; &lt; &gt; &quot; &apos; • & < > " ' In einem CDATA-Bereich werden keine Ersetzungen vorgenommen <![CDATA[ Hier kann alles stehen & < > " ' ]]> 22 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 11 Attribute • Durch Attribute können Varianten von Elementen beschrieben werden <element_A></element_A> <element_B></element_B> <element typ="A"> </element> <element typ="B"> </element> Beispiel: <mitarbeiter geschlecht="weiblich">Schmidt</mitarbeiter> 23 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Attribute • Attribute können Kennzeichner- („Flag“- )Elemente ersetzen <element> <flag/> </element> <element flag="true"> </element> Beispiel: <mitarbeiter wichtig="ja">Thorsten Beyer</mitarbeiter> 24 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 12 Einfaches XML-Dokument <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> <!-- Dies ist ein einfaches XML Dokument --> <seminar> <titel>XML Einführung</titel> <gebucht/> <dauer einheit="Tage">3</dauer> </seminar> 25 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Gliederung • • • • • • eXtensible Markup Language XML Datenbestände Verarbeitung von XML Datenbeständen Aspekte der Integration Web Services The Big Picture • Motivation • • Syntaktische Grundlagen Namensräume 26 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 13 Motivation • Jeder kann seine eigenen Elemente definieren • Mischen von Elementen aus verschiedenen Anwendungen? <artikel>How to use XML</artikel> <artikel>Dauerlutscher</artikel> 27 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH URI • Uniform Resource Identifiers bezeichnen jede adressierbare Resource • URIs sind weltweit eindeutig: http://www.mycompany.com • Sie könnten zur Identifizierung von Vokabularien benutzt werden <www.mycompany.com.artikel> Dauerlutscher </www.mycompany.com.artikel> 28 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 14 XMLNS <?xml version="1.0"?> <katalog xmlns:mc="http://www.sweets.com/ns" xmlns:oio="http://www.oio.de/names"> <mc:artikel>Dauerlutscher</mc:artikel> <oio:artikel>How to use XML</oio:artikel> </katalog> 29 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Lokaler Name und QName • Man unterscheidet den lokalen Elementnamen vom qualifizierten Elementnamen • Der qualifizierte Name (QName) ist durch ein Präfix mit einem Namensraum verbunden qualifizierter Name <oio:artikel> Präfix lokaler Name 30 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 15 Noname-Namespace • Es kann auch ein präfixloser "Noname-Namespace" oder "DefaultNamespace" definiert werden <?xml version="1.0"?> <katalog xmlns="http://www.sweets.com/ns"> <artikel>Dauerlutscher</artikel> </katalog> 31 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Gliederung • • • eXtensible Markup Language • DTD Verarbeitung von XML Datenbeständen XML Datenbestände • • W3C XML Schema XML APIs • • Xpath XSLT 32 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 16 Document Type Definition (DTD) • Die Document Type Definition beschreibt die Struktur des Dokuments mit Hilfe einer eigenen Syntax • Die DTD definiert nicht die Semantik der Elemente, sondern nur, welche Elemente und Attribute wo vorkommen (Struktur bzw. Grammatik) <?xml version="1.0"?> <!DOCTYPE hallo [ <!ELEMENT hallo (#PCDATA)> ]> <hallo>Hallo Welt!</hallo> 33 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Beispiel <?xml version="1.0"?> <!DOCTYPE goodbye [ <!ELEMENT goodbye (text)> <!ELEMENT text (#PCDATA)> ]> <goodbye> <text>Tschuess!</text> </goodbye> 34 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 17 Deklaration von Elementen • <!ELEMENT Name Inhalt> • Der Inhalt kann zusammengesetzt werden (a, b) (a | b) (a?) (a+) (a*) a gefolgt von b a oder b optionales a mindestens ein a kein, ein oder mehrere a <!ELEMENT name (vorname+, nachname)> 35 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Inhaltsmodelle • Ein Element kann folgende Inhaltsmodelle haben: andere Elemente (vorname+, nachname) Text ("parsed character data") (#PCDATA) nichts EMPTY beliebig ANY "mixed content" (#PCDATA | fett)* <!ELEMENT text (#PCDATA)> <!ELEMENT leer EMPTY> 36 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 18 Deklaration von Attributen • <!ATTLIST elem_name att_name att_type default> <!ATTLIST person typ CDATA "non grata" geschlecht (mann|frau) #REQUIRED> <person typ="gratissima" geschlecht="mann" > Weihnachtsmann </person> 37 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Attributtypen • Für Attribute gibt es eine beschränkte Zahl von Typen CDATA ID IDREF IDREFS NMTOKEN NMTOKENS ENTITY ENTITIES • Text Im Dokument eindeutiger Schlüssel Referenz auf eine ID Liste von ID-Referenzen Nametoken Liste von Nametokens Entität Liste von Entitäten Aufzählung von Nametokens: (mann|frau) 38 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 19 Attribut-Default • Für ein Attribut kann ein Default-Wert angegeben werden • Das Attribut kann weiter eingeschränkt werden #REQUIRED #FIXED #IMPLIED Der Wert muß angegeben werden Das Attribut hat einen festen Wert Der Wert ist implizit • <!ATTLIST katalog id ID jahr CDATA besitzer CDATA version CDATA #REQUIRED #IMPLIED "Orientation in Objects" #FIXED "1.0"> 39 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Externe DTD • Eine DTD kann in eine externe Datei ausgelagert werden • Dazu wird das Schlüsselwort SYSTEM verwendet <?xml version="1.0"?> <!DOCTYPE hallo SYSTEM "hallo.dtd"> <hallo>Hallo Welt!</hallo> 40 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 20 PUBLIC DTD • Mit einer PUBLIC-DTD wird auf ein Standard verwiesen • DTD muß erreichbar oder aber bekannt sein – Vergleiche EntityResolver und OASIS XML Catalog <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> 41 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Entitäten Entity DTD: Parameter % XML: General & extern / intern Parsed Unparsed extern / intern nur extern 42 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 21 Pseudotypen • Parameterentitäten können dazu benutzt werden, Pseudotypen zu definieren <!ENTITY % string "#PCDATA"> <!ENTITY % date "#PCDATA"> <!ELEMENT name (%string;)> <!ELEMENT ankunft (%date;)> 43 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Einfache Ersetzung • Mit generellen Entitäten können einfache Textersetzungen vorgenommen werden <!ENTITY text "Hallo Welt!"> <hallo> &text; </hallo> <hallo> Hallo Welt! </hallo> 44 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 22 Externe Ersetzung • Mit Entitäten können auch ganze Dateien eingebaut werden <!ENTITY text SYSTEM "botschaft.txt"> <hallo> &text; </hallo> <hallo> Hallo aus einer anderen Welt! </hallo> 45 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Notation • Nicht-XML kann über Notationen referenziert werden <!NOTATION gif PUBLIC "image/gif"> <!ENTITY myimage SYSTEM "myimagefile.gif" NDATA gif> <!ELEMENT image (#PCDATA)> <!ATTLIST image source ENTITY #REQUIRED> <image source="myimage">Dies ist mein Bild</image> 46 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 23 Namensräume und DTD • DTDs unterstützen Namespaces nicht, da es in DTDs keine Unterscheidung zwischen lokalen und qualifizierten Namen gibt • Workaround: <!ELEMENT oio:katalog (...)> <!ATTLIST oio:katalog xmlns:oio #FIXED "http://www.oio.de/names"> 47 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Nachteile von DTD • Unhandliche (auf Maschinenlesbarkeit gerichtete) Syntax • Reine Strukturbeschreibung • "Flacher" Aufbau • Keine Typen • Keine Objektorientierung 48 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 24 Eigenschaften von XML-Dokumenten • Wohlgeformtheit – Dokument syntaktisch korrekt? • Konformität – Dokument entspricht der DTD? • Gültigkeit – Wohlgeformtheit und Konformität gegeben? 49 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Gliederung • • • eXtensible Markup Language • DTD Verarbeitung von XML Datenbeständen XML Datenbestände • • W3C XML Schema XML APIs • • Xpath XSLT 50 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 25 Motivation • Überwinden der Schwächen von DTD • XML Syntax • Datentypen • Objektorientierung 51 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH W3C XML Schema • Umfangreiche und komplexe XML-Anwendung • Große Zahl an Datentypen • Verschiedene Mechanismen zur Erstellung eigener Typen: – Beschränkung von einfachen Typen – Ableitung von komplexen Typen durch Erweiterung, Beschränkung • Polymorphie durch Ersetzungsgruppen 52 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 26 Hierarchie der Datentypen 53 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Hallo-Welt-Schema <?xml version="1.0"?> <hallo>Hallo Welt!</hallo> <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="hallo" type="xsd:string"/> </xsd:schema> 54 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 27 Schema-Instance <?xml version="1.0"?> <hallo xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="hallo.xsd"> Hallo Welt! </hallo> 55 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Komplexe Typen <!ELEMENT Adresse (Vorname,Nachname,Strasse,Wohnort,PLZ)> <xsd:element name="Adresse"> <xsd:complexType> <xsd:sequence> <xsd:element name="Vorname" type="xsd:string"/> <xsd:element name="Nachname" type="xsd:string"/> <xsd:element name="Strasse" type="xsd:string"/> <xsd:element name="Wohnort" type="xsd:string"/> <xsd:element name="PLZ" type="xsd:integer"/> </xsd:sequence> </xsd:complexType> </xsd:element> 56 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 28 Einfache Typen 10000 <= PLZ < 99999 ... <xsd:element name="PLZ"> <xsd:simpleType> <xsd:restriction base="xsd:positiveInteger"> <xsd:minInclusive value="10000"/> <xsd:maxExclusive value="99999"/> </xsd:restriction> </xsd:simpleType> </xsd:element> ... 57 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Komplexe vs. Einfache Typen • Einfache Typen: beschreiben den Inhalt von Textknoten und Attributwerten (? Primitive) Beispiel: xsd:string oder Postleitzahl • Komplexe Typen: beschreiben den Inhalt von Elementen (? Klassen) Beispiel: Adresse 58 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 29 Anonyme vs. Benannte Typen • Benannte Typen: "flacher Entwurf" – Aufbau wie DTD: Elementname ? Inhaltsmodell – erlauben Wiederverwendung von Modellen • Anonyme Typen: "Puppe in der Puppe" – erlauben kontextabhängige Inhaltsmodelle: person firma name vorname name Text nachname 59 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Attributdeklaration <!ATTLIST adresse art CDATA #REQUIRED> <xsd:element name="adresse"> <xsd:complexTyp> <xsd:sequence> <xsd:element name="Vorname" type="xsd:string"/> ... ... </xsd:sequence> <xsd:attribute name="art" use="required" type="xsd:string"/> </xsd:complexType> </xsd:element> 60 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 30 Attributdeklaration <!ATTLIST adresse art (geschäftlich|privat) #REQUIRED> <xsd:attribute name="art" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="geschäftlich"/> <xsd:enumeration value="privat"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> 61 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Gliederung • • • eXtensible Markup Language • DTD Verarbeitung von XML Datenbeständen XML Datenbestände • • W3C XML Schema XML APIs • • Xpath XSLT 62 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 31 XML - Databinding Schema Klasse Dokument Objekt 63 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Was ist SAX? (1) • Simple API for XML (SAX2) – aktuelle Version ist SAX2 – defacto Standard der XML-DEV Mailingliste – ursprünglich reine Java API • Event basierte Parser API – Events lösen bestimmte Callback Methoden aus – Parser „pusht“ (drückt) Events in die Callback Methoden der Handler – Parser kann dabei auch Validierung durchführen • Dokumente werden einmal (!) von Anfang bis Ende durchlaufen – Schnell und ohne großen Speicherverbrauch – Kein Random Access auf XML - Dokumente 64 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 32 Was ist SAX? (2) • Verarbeitung geschieht über Handler – Handler für Content- und Fehlerverarbeitung – Aufbauen von Verarbeitungspipelines mittels Filterketten möglich • Integration in Java durch Sun – Teil der Java API for XML Processing (JAXP) – Fester Teil von J2SE seit JDK 1.4 • Homepage und Informationen – http://www.saxproject.org – http://sourceforge.net/projects/sax/ 65 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Übersicht JAXP Architektur JAXP SAX Implementierung (Crimson, Xerces, ...) 66 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 33 Gesamtübersicht SAX2 inklusive JAXP Content Handler SAXParser Factory Error Handler SAXParser Default Handler XML Reader DTD Handler XML Entity Resolver 67 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Simple API for XML startElement( „kunde“) <warenkorb > <kunde>5873</kunde> <position nr="1“> <artikel nr="4501"> <beschreibung>Ltscher </beschreibung> </artikel> </position> <position nr="2" menge="2"> <artikel nr="5860"> <beschreibung>Earl Grey</beschreibung> </artikel> </position> </warenkorb> Handler endElement( „kunde“) 68 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 34 Selbst XML Dokumente erzeugen • Zum Erzeugen von eigenen XML Dokumenten bietet sich eine Baum Struktur an Document DocumentType Element Element Text Attribut Element Attribut EntityReference Attribut Element Text Text Comment Element Text 69 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Composite Design Pattern 70 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 35 Document Object Model 71 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Was ist DOM? (1) • Document Object Model (DOM) – aktuelle Version ist DOM Level 2 (DOM Level 3 ist in Arbeit) – Standard des W3C (World Wide Web Consortium) – Interface Definition Language (IDL) Standard • Baum basierte Document API – Schwerpunkt liegt auf Erzeugung und Manipulation des Inhalt und der Struktur von Dokumenten • Dokumente stehen vollständig zur Verfügung – Random Access auf sämtlich Dokument Teile – Erhöhter Speicherbedarf und eventuell Performancenachteile 72 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 36 Was ist DOM? (2) • DOM ist aufgeteilt in verschiedene Module – Kernfunktionalität im „DOM Level 2 Core“ – Weitere Module verfügbar (Events, Traversal, etc.) • Integration in Java durch Sun – Teil der Java API for XML Processing (JAXP) – Fester Teil von J2SE seit JDK 1.4 • Homepage und Informationen – http://www.w3.org/DOM/ 73 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Übersicht Architektur JAXP TrAX DOM SAX Implementierung (Crimson, Xerces, Xalan, ...) 74 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 37 Gliederung • • • eXtensible Markup Language • DTD Verarbeitung von XML Datenbeständen XML Datenbestände • • W3C XML Schema XML APIs • • XPath XSLT 75 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH XPath • Spezifiziert Adressierung eines XML-Dokumentes • Enthält 13 Achsenbezeichner (AxisName) • Es existieren Kurz- und Langformen zur Adressierung • W3C Recommendation seit 16. November 1999 76 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 38 Axis Names - eine kleine “Baumschule” <cdliste > <erstelldatum >14.01.2001</erstelldatum> <listentitel>OIO CD-Liste </listentitel> <beschreibung >Diese CD-Liste ist... </beschreibung> <cd id="65" jahr="2000"> <titel >Music</titel> <interpret>Madonna </interpret> <hersteller >BMG</hersteller> <preis >19.99</preis> <track id="01“> <titel >Music</titel> <laenge>4:35</laenge> </track> ... </cd> ... 77 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Achsen (Auszug) cdliste parent preceding-sibling cd following-sibling cd child tracks track track cd titel titel interpret preis track 78 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 39 Location step 1 Ein Step besteht aus Achsennamen und Knotentest AxisName::NodeTest cdliste parent::cdliste parent::node() cd cd tracks track track cd titel titel interpret preis track 79 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Location step 2 Ein Step besteht aus Achsennamen und Knotentest AxisName::NodeTest cdliste following-sibling::cd following-sibling::node() cd dvd tracks track track cd titel titel interpret preis track 80 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 40 Location step und Location path Location step Location path Location step <xsl:value-of select="/cdliste/cd/hersteller"/> <xsl:value-of select="/cdliste/child::cd/child::hersteller"/> <xsl:value-of select="/descendant::hersteller"/> 81 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Location Paths • Relative Location Paths – Geht vom Context Node aus – Besteht aus einer oder mehreren Teilwegbeschreibungen (Location Step) – Location Steps werden mit „/“ getrennt • Absolute Location Paths – Geht vom Root-Knoten aus – Wird mit „/“ eingeleitet – Darauf folgt ein relativer Location-Path ausgehend vom Root-Knoten 82 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 41 NodeSet • Eine Menge von Knoten des Dokumentes • Listet Knoten eines XPath-Ausdruckes auf node set <xsl:for-each select="cd"> 83 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Context Node Node Namespace Text Attribute1 Attribute3 Attribute2 <seminar von="1" bis="2" mit="3">Das Sem...</seminar> 84 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 42 Prädikate Gefiltertes Node Set Menge aller CD Elemente mit Interpret Madonna cd[interpret=‘Madonna‘] Menge aller CD Elemente Node Set des NodeTestes 85 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Kontext in einem Prädikat //cd[interpret=‘Madonna‘] Context = gesamter Baum Context = aktuelle cd 86 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 43 Kurzschreibweisen Short Version // ElementName @AttName . .. [n] Long Version /descendant-or-self::node()/ child::ElementName attribute::AttName self::node() parent::node() [position()=n] 87 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Gliederung • • • eXtensible Markup Language • DTD Verarbeitung von XML Datenbeständen XML Datenbestände • • W3C XML Schema XML APIs • • XPath XSLT 88 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 44 Motivation XSL • Trennung von Daten und ihrer Darstellung • Austausch zwischen XML Anwendungen • Viele andere Standards: HTML, CSV, PostScript, PDF • Gibt es eine Möglichkeit all dies miteinander zu verbinden? 89 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Von XSL zu XSLT XSL XSL XSL 21.04.99 XSLT XSLT Formatierung XSL 1.0 Transformation XSLT 1.0 Rec => XSLT 2.0 WD => 16.11.99 4.04.05 09.07.99 XPATH Selektion: XQuery Selektion: XPATH 1.0 Rec => 16.11.99 XPATH 2.0 WD => 04.04.05 XQuery 1.0 WD => 04.04.05 90 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 45 Von XSL zu XSLT • Durch neue Working Draft im April 1999 erfolgt Aufgliederung: – XSLT spezifiziert den Transformationsmechanismus – XSL spezifiziert die reinen Formatierungsobjekte • Adressierung im XML-Baum muß möglich sein: – XPath beschreibt Syntax zur Adressierung eines XML-Dokument – XSLT beschreibt die Transformationsanweisungen • Status der Spezifikationen: – XSLT 1.0 und XPath seit November 1999 als Recommendation – XSL seit 16.10.2001 final Recommendation • Neu: XSLT 2.0, XPath 2.0 und XQuery 1.0 kurz vor der Verabschiedung ? 91 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH XSL – Familie Spezifikationen: www.w3c.org 3 Teile: • Transformationssprache XSLT – Ändern der Struktur – Hinzufügen von Formatierungsanweisungen • Navigationssprache XPATH • Präsentationssprache XSL-Fo – Adressieren von XML-Elementen XSLT XPATH XSL – auf den Millimeter genaue Formatierung von Dokumenten XSL Transformation XSL Formatierer (Xalan, Saxon, MSXML) (FOP, RenderX) Quellbaum PDF ... Zielbaum 92 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 46 XSLT • eXtensible Stylesheet Language: Transformations • ist eine XML-Anwendung • ist eine Sprache zur Transformation von XML-Dokumenten • Da ein XML-Dokumente ein Baum darstellt, ist XSLT eine Sprache zur Transformation von Bäumen • Die Transformation geschieht durch einen XSLT-Prozessor 93 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH XSLT im Detail • Was ist XSLT (nicht)? – XSLT ist eine funktionale Sprache, um XML-Dokumente zu transformieren – XSLT ist erweiterbar – „XSLT makes XML useful for non-programmers“ (James Clark) • Ein XSLT-Dokument ist – selbst ein XML-Dokument – Eine Anleitung (Stylesheet), wie ein XML-Quelldokument in ein Ergebnisdokument zu transformieren ist 94 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 47 XSLT Processoren (1) • SAXON von Michael Kay – – – – • „The XSLT and XQuery Processor“ Unterstützt XSLT 2.0 und XPath 2.0 Autor von XSLT 2nd Edition (Wrox Press) Maßgeblich beteiligt an XSLT, XPath, XQuery ... saxon.sourceforge.net – 2 Versionen • Basic XSLT Processor (frei) • Schema Aware XSLT Processor (kommerziell) 95 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH XSLT Processoren (2) • XML Spy (Altowa) – „Eingebaut“ im XML Spy – XSLT Prozessor auch einzeln und kostenlos erhältlich – Unterstützt XSLT 2.0 und XPath 2.0 (Version 2005) • Xalan – – – – http://xml.apache.org/xalan-j/ XSLT 1.0 frei Der populärste Prozessor (Verbreitung) 96 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 48 XSLT Baumtransformation Stylesheet Stylesheet Serialisierung XSLT Processor XML Dokument Output File Source Result 97 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH XSLT Transformations-Pipeline news.xml include .xsl page.xsl news.htm kontakt.xml XSLT Processor XSLT Processor site.xml kontakt.htm *.xml *.htm sitemap.xml 98 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 49 Das Grundgerüst von XSLT <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-Hier stehen die Regeln bzw. Templates --> </xsl:stylesheet> 99 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH XSLT Namespace • • • Deklariert einen Namensraum für Elemente Wird durch URI gekennzeichnet (ausschlaggebend) Dienen der Zuordnung Element => Anwendung – XSLT-Prozessor wertet nur Elemente diesen Namespaces aus <... xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> Der Präfix (hier xsl) spielt keine Rolle, die URI ist ausschlaggebend 100 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 50 Regelbasiert • • Verarbeitung basiert auf Regeln, so genannte Templates Beispielregel: Triffst du auf Element XYZ erzeuge ein FOO Block Element mit den angegebenen Attributen und fahre mit der Bearbeitung aller Kindknoten fort. <xsl:template match="XYZ"> <fo:block font-family="Arial" font-size="24pt" break-after="page"> <xsl:apply-templates/> </fo:block> </xsl:template> 101 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Muster + Schablone <xsl:template match=“[Muster]"> <fo:block font-family="Arial" font-size=“48pt" break-after="page"> e n o l b a h Sc Hello Formatting Objects! </fo:block> </xsl:template> 102 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 51 Transformationsmodel • Der Prozessor geht den Eingabebaum durch und sucht für alle Knoten eine passende Regel • Bei mehreren passenden Regeln wird die "am besten passende" Regel ausgesucht • Ist eine Regel gefunden, wird sie ausgeführt 103 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Ablauf des Processing Model • Liste von Knoten wird der Reihenfolge nach verarbeitet • Für den Knoten werden passende Template Rules gesucht • Die beste (genaueste) Regel wird ausgewählt Stichwort Prädikate • Der entsprechende Knoten wird zum Context Knoten • Schablone wird instanziiert und • Bearbeitung wird an den Kind-Knoten fort gesetzt. 104 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 52 <xsl:template match=“xyz” > • Kindelement von <xsl:stylesheet> auf • Besteht aus zwei Bestandteilen – Ein Pattern, ein Muster, welches auf Knoten des Sourcetrees angewandt wird – Ein Template, eine Schablone, welches instanziiert werden kann, damit es Bestandteil des Resulttrees wird Matchpattern <xsl:template match=“/"> <b>CD-Liste</b> </xsl:template> Ausgabe 105 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH <xsl:template match="foo|bar"> Sollen mehrere Elemente genau gleich verarbeitet werden? • • Eine Regel kann auch auf mehrere Elemente angewandt werden Die Trennung erfolgt durch das Pipe-Symbol Matchpattern <xsl:template match=“interpret | titel"> <b> <xsl:value-of select="."/> </b> </xsl:template> Ausgabe 106 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 53 Vordefinierte Regeln <xsl:template match="* | /"> <xsl:apply-templates/> </xsl:template> <xsl:template match="text() | @*"> <xsl:value-of select="."/> </xsl:template> 107 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Build-In Template Rules Eher lästig: / <xsl:template match="* | /"> <xsl:apply-templates/> </xsl:template> Ganz nett: <xsl:template match="text() | @*"> <xsl:value-of select="."/> </xsl:template> 108 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 54 Build In Template Rules überschreiben • Den XSLT Prozessor unter Kontrolle bringen: – Die „Main“-Methode: <xsl:template match="/"> <xsl:apply-templates/> </xsl:template> – Die Bearbeitung aller anderen Knoten stoppen <xsl:template match="*"/> – Text und Attributwerte weiterhin ausgeben <xsl:template match=“text() | @*"> <xsl:value-of select=“."/> </xsl:template> 109 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Document Order - Leserichtung / 1 2 9 3 4 5 6 8 10 11 12 7 110 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 55 <xsl:value-of select=“xyz”> • Gibt den Wert eines Knoten zurück <xsl:template match="cd"> <p> <xsl:value-of select="Interpret"/> </p> </xsl:template> 111 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH <xsl:apply-templates/> • Anweisung für Prozessor mit Transformation bei den Kindelementen fortzufahren • • Alle Regeln für Kindelemente werden gesucht und abgearbeitet Keine Regel = Keine Verarbeitung / <xsl:template match="cd"> <p> <xsl:apply-templates/> </p> </xsl:template> <xsl:template match="hersteller"> <b>Ein Hersteller</b> </xsl:template> 112 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 56 <xsl:apply-templates select="foo"/> • Problem: – Immer alle Kind-Knoten bearbeiten?! – Wie steuere ich den XSLT Prozessor? • Anweisung für Prozessor mit Transformation fortzufahren • Attribut select=“...” wählt die Child-Knoten aus <xsl:template match=“cdliste"> <h1> <xsl:apply-templates select=“interpret"/> </h1> <xsl:apply-templates select=“tracks"/> </xsl:template> 113 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH <xsl:value-of select=“xyz”> • <xsl:value-of select="..."/> gibt den Wert (value) eines Knotens zurück • • Wert = alle Text-Knoten des Elements Mit dem Attribut “select” wird der Knoten ausgewählt • • text() @* • . => Text-Knoten => Jeden Attribut-Knoten => Der aktuelle Knoten <xsl:template match=“text() | @*"> <xsl:value-of select=“."/> </xsl:template> Text 114 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 57 <xsl:for-each select=“xyz”> • Über Mengen von Knoten kann mit for-each iteriert werden <xsl:for-each select="cd"> mach dies mach das </xsl:for-each> 115 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH <xsl:if test=“xyz”> • <xsl:if> ist analog zum if-Ausdruck in Programmiersprachen <xsl:if test="position()=last()"> mach dies mach das </xsl:if> 116 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 58 <xsl:choose> • Mehrere Bedingungen können mit choose abgefragt werden <xsl:choose> <xsl:when test="test1"> mach dies </xsl:when> <xsl:when test="test2"> mach das </xsl:when> <xsl:otherwise> mach was anderes </xsl:otherwise> </xsl:choose> 117 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Gliederung • • • eXtensible Markup Language • Architekturelles Umfeld Verarbeitung von XML Datenbeständen XML Datenbestände • • Datenexport Datenimport 118 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 59 XML Dateien als DBMS? Pro: • • • • Speicherung von Daten im XML-Format XML-Schemas Abfragesprachen APIs Contra: • • • • Indizierung Sicherheit Transaktionen und Integrität Multi-user Zugriff 119 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH XML als Datenformat • Vorteile: – selbstbeschreibend – Portabilität (Unicode) – Daten liegen als Baumstruktur vor • Nachteile: – sehr textlastig – langsamer Zugriff (Parsen und Textumwandlung) 120 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 60 XML Dateien als DBMS? Schlussfolgerung: In Umgebungen mit kleinen Datenmengen, wenigen Benutzern und geringern Anforderungen an die Performance ist der Einsatz von XML als DBMS sinnvoll. ? Warum soll man dann überhaupt XML als Datenbasis in Betracht ziehen? 121 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Sinnvoller Einsatz von XML • XML als Austauschformat für e-commerce Anwendungen • Struktur der Daten sehr regelmäßig • Entities und Encodings von Bedeutung ? Herkömmliche DB sind hier deutlich unterlegen. 122 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 61 Sinnvoller Einsatz von XML • Vorteile gegenüber herkömmlichen DB: – Bewahrung der physischen Struktur des Dokuments – Transaktionen auf Dokumentebene – Spezielle Abfragesprache für XML-Daten 123 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Typen von XML Dokumenten Es gibt zwei Typen von XML-Dokumenten: – data-centric – document-centric 124 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 62 Beispiel: Data-centric document <SalesOrder SONumber=„42“> <Customer CNumber=„42-2“> <Name>Adams</Name> <Street>Nostreet 10</Street> ... </Customer> <OrderDate>10.10.1998</OrderDate> <Item number=„1“> <Part number=„2802“> ... </SalesOrder> 125 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Beispiel: Document-centric document <Product> <Name>Turkey Wrench</Name> <Developer>Full Fabrication Labs, Inc.</Developer> <Summary>Like a monkey wrench, but not as big.</Summary> <Description> <Para>The turkey wrench,... </Para> <Para>You can:</Para> <List> ... <Item><Link URL="Order.html">Order your own wrench</Link></Item> </List> ... </Product> turkey 126 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 63 Unterscheidung der Dokumenttypen • Unterscheidung zwischen den beiden Dokumenttypen ist nicht immer klar und eindeutig – Data-centric Dokumente können auch grobkörnige Daten (z.B. Bauteilbeschreibungen) – Document-centric Dokumente können auch strukturierte Daten enthalten (z.B. die Autor- oder Erscheinungsdaten eines Buches) • Unterscheidung der Dokumenttypen hilft bei der Auswahl der Datenbank 127 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH XML Datenbanken • Unterscheidung: – Native XML Datenbanken – XML - aware / enabled Datenbanken • Beide werden als XML Datenbanken bezeichnet, aber nicht immer ist die zu Grunde liegende Struktur XML 128 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 64 Definitionsversuch: native XML Datenbank • Zu Grunde liegende logische Einheit ist ein XML Dokument (bei „traditionellen DB“ sind das Spalten) • Definition eines logischen Modells für XML Dokumente sowie Speicherung und Abfrage von Dokumenten diesem Modell entsprechend 129 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Definitionsversuch: XML-enabled Datenbank • Zu Grunde liegt eine relationale Datenbank wie MS SQL Server, Oracle oder IBM DB/2 • Erweiterung um die Fähigkeit, XML Dokumente einzulesen und zu speichern ( eigene Funktionen und Datentypen ) • Geschieht durch sogenanntes Mapping von XML Dateien • Teilweise auch die Möglichkeit der Abfrage über gespeicherte XML Dokumente 130 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 65 Gliederung • • • eXtensible Markup Language • Architekturelles Umfeld Verarbeitung von XML Datenbeständen XML Datenbestände • • Datenexport Datenimport 131 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Interorganisationaler Datentransfer mit XML XML-Struktur XML XML-Struktur DBMS ort exp n te Da XML output Datenimport DTD validieren validieren Da ten exp ort DTD-Austausch validieren DBMS DTD XML TRANSFORMATOR XSL 132 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 66 XML Generationstechniken Generierung aus RDBMS Vollständiger DB-inhalt Individuelle Transformation Anfrageinhalte 133 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Vollständiger DB-Inhalt Artikel-Nr Artikelname 1 Chai 2 Chang Aniseed 3 Syrup Lieferant Exotic Liquids Exotic Liquids Exotic Liquids Kategorie Getränke Getränke Gewürze Liefereinheit Einzelpreis Lagerbestand Bestellte Einheiten Mindestbestand Auslaufartikel 10 Kartons x 20 Beutel 18,00 DM 39 0 10 FALSCH 24 x 12-oz19,00 DM 17 40 25 FALSCH Flaschen 12 x 550-mlFlaschen 10,00 DM 13 70 25 FALSCH Chef Anton's New Orleans Cajun Cajun 4 Seasoning Delights Gewürze 48 x 6-ozGläser New Orleans Chef Anton's Cajun 5 Gumbo Mix Delights Gewürze Grandma's Grandma Boysenberry Kelly's 6 Spread Homestead Gewürze 36 Kartons 12 x 8-ozGläser 22,00 DM 53 0 21,35 DM 0 0 0 WAHR 25,00 DM 120 0 25 FALSCH Datenbank: betrachtet als dreistufige Hierarchie von • Datenbank - Relation - Attributen Darstellung im XML-Dokument durch Elemente und Attribute 0 FALSCH <Import> - <Row> <Artikel-Nr>1</Artikel-Nr> <Artikelname>Chai</Artikelname> <Lieferanten-Nr>1</Lieferanten-Nr> <Kategorie-Nr>1</Kategorie-Nr> <Liefereinheit>10 Kartons x 20 Beutel</Liefereinheit> <Einzelpreis>18</Einzelpreis> <Lagerbestand>39</Lagerbestand> <BestellteEinheiten>0</BestellteEinheiten> <Mindestbestand>10</Mindestbestand> <Auslaufartikel>0</Auslaufartikel> </Row> - <Row> <Artikel-Nr>2</Artikel-Nr> <Artikelname>Chang</Artikelname> ... 134 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 67 Anfrage-inhalte 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Chai 18 Chang 19 Aniseed Syrup 10 Chef Anton&apos;s Cajun Seasoning 22 Chef Anton&apos;s Gumbo Mix 21,35 Grandma&apos;s Boysenberry Spread 25 Uncle Bob&apos;s Organic Dried Pears 30 Northwoods Cranberry Sauce 40 Mishi Kobe Niku 97 Ikura 31 Queso Cabrales 21 Queso Manchego La Pastora 38 Konbu 6 Tofu 23,25 Genen Shouyu 15,5 Pavlova 17,45 Alice Mutton 39 <Import> <Artikel> <Einzelpreis>18</Einzelpreis> <Artikelname>Chai</Artikelname> </Artikel> <Artikel> <Einzelpreis>19</Einzelpreis> <Artikelname>Chang</Artikelname> </Artikel> <Artikel> <Einzelpreis>10</Einzelpreis> <Artikelname>Aniseed Syrup</Artikelname> </Artikel> ... SELECT Einzelpreis,Artikelname FROM [Artikel] 135 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Individuelle Transformation 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Chai 18 Chang 19 Aniseed Syrup 10 Chef Anton&apos;s Cajun Seasoning 22 Chef Anton&apos;s Gumbo Mix 21,35 Grandma&apos;s Boysenberry Spread 25 Uncle Bob&apos;s Organic Dried Pears 30 Northwoods Cranberry Sauce 40 Mishi Kobe Niku 97 Ikura 31 Queso Cabrales 21 Queso Manchego La Pastora 38 Konbu 6 Tofu 23,25 Genen Shouyu 15,5 Pavlova 17,45 Alice Mutton 39 <Import> <Artikel> <Einzelpreis>18</Einzelpreis> <Artikelname>Chai</Artikelname> </Artikel> <Artikel> <Einzelpreis>19</Einzelpreis> <Artikelname>Chang</Artikelname> </Artikel> <Artikel> <Einzelpreis>10</Einzelpreis> <Artikelname>Aniseed Syrup</Artikelname> </Artikel> ... Diese meist zweigeteilt: • SQL-Anfrage zur Auswahl der dazustellenden Daten (=relevanten Anteile) • XML-QL oder X-Query-ähnliche Darstellung zur Bestimmung der Syntax des Zielformates (CONSTRUCT) Spezifikation der Syntax des entstehenden XML-Dokumentes • 136 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 68 Comma Separated Values CSV CSV Export Nr;Bezeichnung;Menge;Preis 1;Dauerlutscher;10;1,99 2;Kaffee;2;3,8 3;Kuli;100;0,8 137 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Konverter (XMLSpy) 138 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 69 Gliederung • • • eXtensible Markup Language • Architekturelles Umfeld Verarbeitung von XML Datenbeständen XML Datenbestände • • Datenexport Datenimport 139 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH XML Persistenztechniken Files/CLOB Volltextindizierung Datenbanken Volltext und XML Indizierung Verwendung der Baumstruktur Strukturelles Mapping Graphen Vollständig DOM-Modell individuell 140 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 70 Volltextindizierung TERM REFERENZ cdliste erstelldatum cd Madonna Music preis track <cdliste> <erstelldatum>14.01.2001</erstelldatum> <listentitel>OIO CD-Liste</listentitel> <beschreibung>Diese CD-Liste ist... </beschreibung> <cd id="65" jahr="2000"> <titel>Music</titel> <interpret>Madonna</interpret> <hersteller>BMG</hersteller> <preis>19.99</preis> <track id="01“> <titel>Music</titel> <laenge>4:35</laenge> </track> ... </cd> ... 141 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Volltext und XML-Indizierung TERM REFERENZ cdliste erstelldatum cd Madonna Music preis track ELEMENT REFERENZ cdliste erstelldatum cd preis track interpret titel PARENT / cdliste cdliste cd cd cd track <cdliste> <erstelldatum>14.01.2001</erstelldatum> <listentitel>OIO CD-Liste</listentitel> <beschreibung>Diese CD-Liste ist... </beschreibung> <cd id="65" jahr="2000"> <titel>Music</titel> <interpret>Madonna</interpret> <hersteller>BMG</hersteller> <preis>19.99</preis> <track id="01“> <titel>Music</titel> <laenge>4:35</laenge> </track> ... </cd> ... 142 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 71 Vollständiges Mapping RDBMS pk fk beschreibung erstelldatum tistentitel 1 0 Diese CD-Liste ist... 14.01.2001 OIO CD-Liste pk 1 2 3 fk 1 1 1 id jahr 65 2000 215 1998 26 1988 cd_fk tracks_fk 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 hersteller BMG BMG BMG pk 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 interpret Madonna U2 R.E.M fk number 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 10 1 11 1 12 2 1 2 2 2 4 2 5 laenge 04:35 05:10 04:20 03:50 04:15 03:56 04:57 06:20 03:25 04:47 04:29 04:15 03:01 05:58 03:45 preis 19.99 21.49 19.49 titel Music The Best Of 1980-1990 Green titel Music Impressive Instant Runaway Lover I Deserve It Amazing Nobody's Perfect Don't Tell Me What It Feels Like For A Girl Paradise (Not For Me) Gone American Pie Pride (In The Name Of Love) New Year's Day With Or Without You With Or Without You <cdliste> <erstelldatum>14.01.2001</erstelldatum> <listentitel>OIO CD-Liste</listentitel> <beschreibung>Diese CD-Liste ist... </beschreibung> <cd id="65" jahr="2000"> <titel>Music</titel> <interpret>Madonna</interpret> <hersteller>BMG</hersteller> <preis>19.99</preis> <track id="01“> <titel>Music</titel> <laenge>4:35</laenge> </track> ... </cd> ... 143 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Vollständiges Mapping OODBMS listentitel erstelldatum beschreibung cd id jahr titel interpret hersteller preis tracks track number titel laenge 144 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 72 Individuelles Mapping id interpret 65 Madonna 215 U2 26 R.E.M cd_id number 65 1 65 2 65 3 <cdliste> <erstelldatum>14.01.2001</erstelldatum> <listentitel>OIO CD-Liste</listentitel> <beschreibung>Diese CD-Liste ist... </beschreibung> <cd id="65" jahr="2000"> <titel>Music</titel> <interpret>Madonna</interpret> <hersteller>BMG</hersteller> <preis>19.99</preis> <track id="01“> <titel>Music</titel> <laenge>4:35</laenge> </track> ... </cd> titel Music The Best Of 1980-1990 Green laenge 04:35 05:10 04:20 titel Music Impressive Instant Runaway Lover ... 145 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Baumstruktur als Graphen I ELEMENT cdliste erstelldatum cd preis track interpret titel Type VALUE PARENT String 19.99 String String Madonna Music 14.01.2001 ELEMENT ATTRIBUTE id jahr id VALUE 65 2000 1 <cdliste> <erstelldatum>14.01.2001</erstelldatum> <listentitel>OIO CD-Liste</listentitel> <beschreibung>Diese CD-Liste ist... </beschreibung> <cd id="65" jahr="2000"> <titel>Music</titel> <interpret>Madonna</interpret> <hersteller>BMG</hersteller> <preis>19.99</preis> <track id="01“> <titel>Music</titel> <laenge>4:35</laenge> </track> ... </cd> ... 146 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 73 Baumstruktur als Graphen II ELEMENT Type String String String String VALUE 14.01.2001 19.99 Madonna Music <cdliste> <erstelldatum>14.01.2001</erstelldatum> <listentitel>OIO CD-Liste</listentitel> <beschreibung>Diese CD-Liste ist... </beschreibung> <cd id="65" jahr="2000"> <titel>Music</titel> <interpret>Madonna</interpret> <hersteller>BMG</hersteller> <preis>19.99</preis> <track id="01“> <titel>Music</titel> <laenge>4:35</laenge> </track> ... </cd> ELEMENT PARENT cdliste erstelldatum cd preis track interpret titel ELEMENT ATTRIBUTE id jahr id VALUE 65 2000 1 ... 147 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH XML Persistenztechniken Files/CLOB Volltextindizierung Datenbanken Volltext und XML Indizierung Verwendung der Baumstruktur Strukturelles Mapping Graphen Vollständig Dokumentenzentriert DOM-Modell Unvollständig Datenzentriert 148 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 74 Datentypen • XML unterstützt keine Datentypen • Sämtliche Daten eines XML Dokumentes, ausgenommen „unparsed entities“, sind Text • Datenübertragungssoftware konvertiert Daten von Text zu anderen Datentypen und umgekehrt 149 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Binärdaten • Zwei Möglichkeiten Binärdaten zu speichern: – unparsed Entities – Base64 encoding • Regeln für das Senden von Binärdaten an und Empfangen aus Datenbanken sind sehr strikt • Es gibt keine XML Notation, die anzeigt, dass Base64 encoded Data enthalten ist im Dokument ? Probleme mit der Software sind vorprogrammiert 150 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 75 Character Sets • XML Dokumente können jeglichen Unicode darstellen mit Ausnahme einiger Kontrollzeichen • Viele DB bieten keine oder nur ungenügende Unterstützung bei der Behandlung von nicht-ASCII Zeichen 151 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH Processing Instructions und Kommentare • Nicht Teil der XML Daten • Werden von Datentransfersoftware meistens nicht behandelt • Nur schwer in ein Tabellenschema zu mappen 152 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH 76 Markup - Entities • Beim Speichern von mixed content wird markup mitspeichert • Wie unterscheidet man markup von nicht-markup ? • Nicht-Markup wird gespeichert durch lt, gt, amp, quot und apos Entitäten • nicht XML-Abfragesprachen (SQL) können nicht zwischen markup und Entities unterscheiden 153 Datenintegration und Datenaustausch mit XML-Techniken © 2005 Orientation in Objects GmbH ? ? ? ?? ? ? ? ? Fragen ? Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.1 www.oio.de [email protected] 77 Vielen Dank für Ihre Aufmerksamkeit ! Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.1 www.oio.de [email protected] 78