Informationsmanagement mit XML Voraussetzungen Î Web-Technologien, HTML, CSS, Java, C++ Lehrform Î Î Î Vorlesung Übungen zu den Grundlagen Workshop zur Anleitung und Betreuung der Praktischen Hausarbeit Hilfestellung zum wissenschaftlichen Arbeiten Leistungsnachweis im WS0607 Î Praktische Arbeit und Referat, benotet 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 1 Inhalt Einführung in XML Grundlegende Technologien Î - Syntax, Namenräume, DTD, XML-Schema Transformation von XML Dokumenten Î XSL, XPath Übungen am Rechner Workshop zur Praktischen Arbeit und Referaten 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 2 1 Zeitplanung Fr. 6.10 13.10. 20.10 27.10. 3.11. 10.11 17.11. 24.11. 1.12. 8.12 15.12. 22.12. 12.1. 19.1. 26.1. 10/8/2006 Einführung Vorlesung Grundlagen xml Vorlesung xslt, xpath Themen für Referate / Praktische Arbeit vergeben Übung zu Grundlagen XML Übung zu Grundlagen XML Workshop Workshop Kurzvorstellung „Stand der Hausarbeit“ Workshop Workshop Referate Referate Referate Referate Rückblick, Ausblick, Evaluation Prof. Dr. S. Keller / Multimedia-Technik 3 Themen für Praktische Arbeiten und Referate Analyse und Vergleich der Programmiermodelle und -Programmierschnittstellen ( DOM. SAX, …. ) Layoutbeschreibung XSL-FO; Cocoon XML-Datenbanken Multimedia und XML XML-Anwendungen Î Î Î Recherche, Übersicht, Bewertung, Demos Forschungsprojekte Industrieprojekte Semantic Web Î 10/8/2006 RDF, RDF-Schema, OWL Prof. Dr. S. Keller / Multimedia-Technik 4 2 Literatur Rainer Eckstein, Silke Eckstein: XML und Datenmodellierung. dpunkt.verlag, 2004 Meike Klettke, Holger Meyer: XML und Datenbanken. dpunkt.verlag, 2003 Erik T. Ray: Einführung in XML, O'Reilly Brett McLaughlin: XML und Java, O'Reilly Steve Holzner: Inside XML , XML, DTDs, XML Schema, CSS, XSL, XSLT, Xlink, XPointer, XHTML, New Riders ILIAS-Lernmodul: Learning XML Æ www.ilias.fh-weingarten.de Diplomarbeit / Lernmodul : Learning XML Æ 141.69.53.96/steur_lms (nur an FH) Originalunterlagen zu xml-Technologien unterÆ www.w3.org 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 5 Woher kommt XML ? SGML SGML ist Untermenge Standard Generalized Markup Language) Metasprache, mit deren Hilfe man verschiedene Auszeichnungssprachen (engl. markup languages) für Dokumente definieren kann. ISO-Standard: ISO 8879: 1986 Information Processing — Text and Office Systems — Standard Generalized Markup Language (SGML). ist eine Anwendung XML XML Extensible Markup Language 1998 Version 1 W3C ( World Wide Web Consortium ) 10/8/2006 Hypertext Markup Language 1993 HTML HTML Prof. Dr. S. Keller / Multimedia-Technik 6 3 Konzepte von SGML Validierung Dokument Dokumenttyp enthält wird dargestellt Logische Struktur + Inhalt Austausch • Plattformunabhängiger Austausch von Dokumenten Layout Version 1 •Trennung von Struktur/Inhalt vom Layout Autor Benutzergruppe 10/8/2006 XML Prof. Dr. S. Keller / Multimedia-Technik 7 Konzept XML Metasprache Syntax wellformed XMLvalid Dokument Struktur 10/8/2006 DokumenttypBeschreibung Inhalt ( Text ) Layout Prof. Dr. S. Keller / Multimedia-Technik 8 4 XML Eigenschaften Markup Language Auszeichnungsprache Textdokument mit Auszeichnungselementen Metasprache Legt eine Sprachsyntax für eine Dokumentenbeschreibungssprache fest Extensible Auszeichnungen sind erweiterbar Vom Anwender werden die Sprachelemente frei definiert. Lesbar von Menschen und Maschine Plattformunabhängig Open Standard des W3C Integritätsprüfung ( Validierung ) Jedes XML-Dokument kann auf seine Korrektheit überprüft werden ( Parser ) Internationalität Erstellbar mit einem Texteditor. Als Zeichensatz wird Unicode ( 16-Bit ) verwendet, der länderspezifische Sonderzeichen enthält 10/8/2006 XML Prof. Dr. S. Keller / Multimedia-Technik 9 Anwendungsgebiete Dokumente Plattformunabhängiger Datenaustausch Datenaustausch zwischen Web-Server und Client 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 10 5 XML- Familie 10/8/2006 Übersicht Prof. Dr. S. Keller / Multimedia-Technik 11 XML Idee Markierung von logischen Elementen mit Information als Inhalt durch Einfügen von markup‘s XML definiert das Aussehen der Markierungen Mit XML kann die Struktur getrennt vom Inhalt und dem Layout beschrieben werden Vom Anwender können den Markierungen bedeutungstragende und damit selbsterklärende Bezeichnungen gegeben werden Die Logischen Elemente des Dokumentes können hierarchisch verschachtelt und damit baumartig strukturiert werden. 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 12 6 Konzepte von XML Instanzen XMLDokument Dokumenttyp XML-Schema DTD Layout Inhalt Logische Struktur XSL, CSS Markierungen Æ Baumstruktur 10/8/2006 Inhalt des Dokumentes Æ Text Darstellung auf einem Medium wie Papier oder Bildschirm Prof. Dr. S. Keller / Multimedia-Technik 13 Logische Struktur eines Dokumentes Dokumenttyp - Geschäftsbrief Adresse Datum Abschnitt 2 Anrede Unterschrift Abschnitt 1 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 14 7 XML Logische Struktur Baumstruktur Brief Seite 1 Logo Adresse Bild Text 10/8/2006 Datum Anrede Seite 2 Abschnitt 1 Abschnitt 2 Unterschrift Inhalt Prof. Dr. S. Keller / Multimedia-Technik XML 15 Beispiel - Dokument XML-Dokument Prolog CSS XSL extern Layout ( Dokumenteigenschaften) Dokumentypdefinition (intern/extern) Daten ( Inhalt ) 10/8/2006 extern DTD XML-Schema Logische Struktur Referenz ( entity ) XMLDokument Prof. Dr. S. Keller / Multimedia-Technik 16 8 XML Korrekte XML-Syntax Wohlgeformte Dokumente ( well formed ) Gültige Dokumente ( valid ) Das Dokument besteht aus einem Prolog und mindestens einem Element Es existiert genau ein Root-Element Alle weiteren Elemente sind Kinder des Root-Elementes und überlappen sich nicht Die Definition von Elementen und Attributen entsprechen der XMLSpezifikation Entspricht den Regeln der DTD oder XML-Schema Das Dokument ist wohlgeformt Es existiert eine DTD oder ein XML-Schema Das Dokument entspricht den Regeln der DTD oder des XML-Schemas 10/8/2006 XML Prof. Dr. S. Keller / Multimedia-Technik 17 Wohlgeformtes Dokument <?xml version="1.0" encoding="UTF-8" standalone="yes"?> Prolog <FH StudAnz="1" ProfAnz="1"> <NAME>FH-Weingarten</NAME> Root <STUDENTEN> Element <STUD> mit Attributen <NAME>Weber</NAME> <VORNAME>Frank</VORNAME> <ADR>Weingarten</ADR> <TEL>0751 / 456376</TEL> Child-Element von STUD <E-MAIL>[email protected]</E-MAIL> </STUD> </STUDENTEN> <PROFESSOREN> Inhalt <PROF> <NAME>Keller</NAME> <VORNAME>Dr. Silvia</VORNAME> <BUERO>T108</BUERO> <TEL>0751 / 501 9734</TEL> </PROF> </PROFESSOREN> 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 18 </FH> 9 XML Wohlgeformte Dokumente Sollten einen Prolog besitzen XML-Deklaration Î <?xml Attribute ?> Attribute: Æ Æ Æ Version: Version des xml-Standards Encoding: Unicode-Codierung UTF-8 / UTF-16 / UCS-2 Standalone: Yes Æ Das Dokument ist in einer Datei gespeichert No Æ Zum Dokument gehören mehrere Dateien Muss genau ein Root-Element besitzen Î Î muss das erste Element in einem Dokument sein kann weitere (Unter-) Elemente enthalten 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik XML 19 Elemente Elemente Î Î Ein Element beginnt mit einem Start-Tag und endet mit einem Ende-Tag <Elementname> </Elementname> Elementnamen sind frei definierbar Sie können Buchstaben, Ziffern und die Sonderzeichen ”-” “ .” “ _” enthalten Müssen immer mit einem Buchstaben oder _ beginnen dürfen nicht mit xml (or XML or Xml ..) beginnen dürfen keine Leerzeichen und keinen „:“ enthalten Î Elementnamen sind case senstive <STUD> und <stud> sind unterschiedliche Elementnamen 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 20 10 XML Elemente Ein Element kann Textdaten ( simple Content ) enthalten <NAME> FH-Weingarten </NAME> weitere Kind-Elemente enthalten ( Æ Baumstrukur ) <PROF> <NAME>Keller</NAME> <VORNAME>Dr. Silvia</VORNAME> <BUERO>T108</BUERO> <TEL>0751 / 501 9734</TEL> </PROF> Eine Kombination aus Textinhalt und weiteren Kindelementen enthalten <Prof> Prof. dr. S. Keller <email> [email protected] </email> Betriebssysteme </Prof> oder aber ohne Inhalt, d.h. leeres Element sein. <STUDENTEN /> Elemente müssen korrekt ineinander verschachtelt werden. Sie dürfen sich nicht überlappen 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik XML 21 Element-Attribute Ein Element kann zusätzlich noch Attribute besitzen. Attribute sind Name-Werte-Paare und besitzen keine weitere Unterstruktur Form: Attributname= “ Attributwert “ Stehen nur im Start-Tag eines Elementes oder in einem Leeren Tag Attributwerte müssen immer in Anführungszeichen „“ oder ‚‘ stehen und müssen immer angegeben werden. <FH StudAnz="1" ProfAnz="1"> 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 22 11 XML Kommentare Syntax ist analog HTML <!-- This is a comment --> 10/8/2006 XML Prof. Dr. S. Keller / Multimedia-Technik 23 Document Type Definition DTD DTD beschreibt die logische Struktur eines Dokumenttyps Wird in SGML definiert Wird normalerweise extern definiert Î Î Î Es können mehrere Instanzen ( XML-Dokumente ) eines Dokumenttyps implementiert werden Mit Schlüsselwort SYSTEM wird eine private DTD eingebunden Mit Schlüsselwort PUBLIC wird eine globale DTD eingebunden 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 24 12 XML Document Type Definition DTD DTD zu einem Dokument wird nach dem Prolog als Referenz auf eine externe Datei ( privat ) oder URL ( global ) angegeben Î <!DOCTYPE Rootelementname SYSTEM „URL der DTD/dateiname.dtd“> Î Beispiel: <?xml version="1.0" encoding="UTF-8" standalone=" no"?> <!DOCTYPE FH SYSTEM "personen.dtd " > 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik XML 25 DTD Element-Definitionen Elemente werden in DTD-Anweisungen beginnend mit <!Element .... definiert Î <!Element Name Beschreibung > Name: Name des Elementes Beschreibung: Gibt an, wie ein Element aufgebaut ist. Æ Möglich ist dabei die Angabe einer in Klammern definierte Liste mit Unterelementen oder, Æ falls das Element keine weiteren Unterelemente enthält, den Datentyp #PCDATA ( string ) Æ Die Reihenfolge, in der die Elemente definiert werden ist beliebig 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 26 13 XML Î DTD Element-Definitionen ( Liste mit Child-Elementen) Die Liste mit Child-Elementen gibt die Reihenfolge an, in der die Unterelemente im definierten Element vorkommen müssen. Die Child-Elemente werden durch Komma getrennt angegeben und können mit Optionen genauer spezifiziert werden Æ Optionen: + Das Element muss mindestens einmal oder mehrmals vorkommen * Das Element kann keinmal oder mehrmals vorkommen ? Das Element darf keinmal oder genau einmal vorkommen Æ Mit Klammern können Gruppen gebildet und diese logisch verknüpft werden 10/8/2006 XML Prof. Dr. S. Keller / Multimedia-Technik 27 DTD Attribut-Definition Attribute werden in DTD-Anweisungen definiert Î <!ATTLIST Elementname Attributname Datentyp Default-Wert > Elementname: Name des Elementes, zu dem das Attribut gehört Datentyp: Gibt den Wertebereich des Attributs an. Æ Ein Vorgabewert kann in Anführungszeichen angegeben werden. Dieser Wert wird im Dokument übernommen, falls kein anderer Wert angegeben ist. Æ Wird eine Wertangabe explizit verlangt, muss dies durch #REQUIRED definiert werden. Æ #IMPLIED Die Angabe eines Wertes ist nicht zwingend 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 28 14 XML DTD Entity-Definition Entities sind Referenzen auf weitere Bestandteile eines Dokumentes. Î Damit kann man ein Dokument aus mehreren Dateien zusammensetzen Entities kann man auch verwenden um vordefinierte Daten in ein Dokument einzufügen ( analog einem Makro ) Interne Referenzen /externe Referenzen 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik XML 29 DTD Entity-Definition Interne Referenzen Î <!ENTITY Entityame "Ersetzungstext " > Name: Name der Entity-Refernz Ersetzungstext: Æ Gibt den Text an, der bei Auftreten der Referenz im Dokument mit &Entityname; die Entity ersetzt. Beispiel: In DTD: <!ENTITY FHW “ Fachhochschule Ravensburg-Weingarten“> Im Dokument: <NAME>&FHW;</NAME> wird ersetzt durch <NAME>Fachhochschule Ravensburg-Weingarten</NAME> 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 30 15 XML DTD Entity-Definition Externe Referenzen Î <!ENTITY Entityname SYSTEM "URL/dateiname.xml " > Bei Auftreten der Referenz im Dokument &Entityname wird die Referenz durch den Inhalt der Datei ersetzt 10/8/2006 XML Prof. Dr. S. Keller / Multimedia-Technik 31 DTD Beispiel „personen.dtd“ <?xml version="1.0" encoding="UTF-8"?> <!ELEMENT FH (NAME, STUDENTEN, PROFESSOREN, Signatur)> <!ATTLIST FH StudAnz CDATA #REQUIRED ProfAnz CDATA #REQUIRED > <!ELEMENT STUDENTEN (STUD*)> <!ELEMENT PROFESSOREN (PROF+)> <!ELEMENT STUD (NAME, VORNAME, ADR, TEL, E-MAIL)> <!ATTLIST STUD MatNr CDATA #IMPLIED > <!ELEMENT PROF (NAME, VORNAME, BUERO, TEL)> <!ATTLIST PROF PersNr CDATA #IMPLIED > <!ELEMENT NAME (#PCDATA)> <!ELEMENT VORNAME (#PCDATA)> <!ELEMENT ADR (#PCDATA)> <!ELEMENT TEL (#PCDATA)> <!ELEMENT E-MAIL (#PCDATA)> <!ELEMENT BUERO (#PCDATA)> <!ENTITY FHW "Fachhochschule Weingarten"> <!ENTITY SIG SYSTEM "signatur.xml"> <!ELEMENT Signatur (Autor, Datum)> <!ELEMENT Autor (#PCDATA)> <!ELEMENT Datum (#PCDATA)> 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 32 16 XML DTD Beispiel „ signatur.xml“ <?xml version="1.0" encoding="UTF-8"?> <Signatur> <Autor>Silvia Keller</Autor> <Datum>25. 3. 2001 </Datum> </Signatur> 10/8/2006 XML Prof. Dr. S. Keller / Multimedia-Technik 33 Gültige XML-Instanz <?xml version="1.0" standalone="no"?> <!DOCTYPE FH SYSTEM "personen.dtd"> <FH StudAnz= " 0" ProfAnz="1"> Wird ersetzt durch Text <NAME>&FHW;</NAME> Fachhochschule <STUDENTEN> </STUDENTEN> Ravensburg-Weingarten <PROFESSOREN> <PROF> <NAME>Keller</NAME> <VORNAME>Dr. Silvia</VORNAME> <BUERO>T108</BUERO> <TEL>0751 / 501 9734 </TEL> </PROF> </PROFESSOREN> Wird ersetzt durch Inhalt der Datei signatur.xml &SIG; </FH> 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 34 17 XML- Namensraum Elemente und Attribute können bei unterschiedlichen Anwendungen den gleichen Namen besitzen. Beispiel: Anwendung FH definiert das Element Dozent Anwendung MM-Akademie definiert das Element Dozent Anwendung BFA verarbeitet xml-Dokumente von FH und MM-Akademie. Î 10/8/2006 Es entsteht ein Namenskonflikt Prof. Dr. S. Keller / Multimedia-Technik 35 XML- Namensraum Idee ÎZu jeder Anwendung wird ein eindeutiger Namensraum definiert. ÎFür verschiedene Namensräume wird in der Anwendung BFA verschiedene Kennzeichner ( prefix ) definiert. Î Î Über den zusammengesetzten Bezeichner prefix:Elementname ist eine eindeutige Unterscheidung möglich. Beispiel: FH:Dozent, Dornier:Dozent Ein Namensraum wird in XML durch eine URL definiert. URL‘s sind eindeutig. 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 36 18 XML- Namensraum Namensräume deklarieren Î Schlüsselwort: xmlns xmlns:FH="www.fh-weingarten.de/FHSchema" PREFIX Name des Namesraums Default Namensraum ist ein Namensraum ohne prefix Î Schlüsselwort: xmlns xmlns="www.fh-weingarten.de/FHSchema" Name des Namesraums 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 37 XML- Namensraum In XML sind mehrere Namensräume vordefiniert Î Î Namensraum xsi URL="www.w3.org/2001/XMLSchema-Instance" Dieser Namensraum definiert folgende Attribute: xsi:SchemaLocation="URL-Namensraum URL / Ort des Schemas„ Der 1. Wert gibt den Namensraum für das Schema, der 2. Wert den Ort des Schemas an. Æ Beispiel: xsi:SchemaLocation="http://www.fh-weingarten.de/FH http://www.fh-weingarten.de/FH.xsd" xsi:NoNameSpaceSchemaLocation="URL/ Ort des Schemas„ Mit dem Attribut noNamespaceSchemaLocation wird nur der Ort des Schemas definiert, ein Namensraum für das Schema wird nicht angegeben. Æ 10/8/2006 Beispiel: xsi: NoNameSpaceSchemaLocation="fh.xsd„ Prof. Dr. S. Keller / Multimedia-Technik 38 19 XML- Schema Vorteil gegenüber DTD Î XML-Syntax Î Definition von Datentypen für Elemente möglich XML-Schema Typdefinitionen EinfacheTypen Komplexe Typen 10/8/2006 Strukturdefinitionen Elemente Attribute Prof. Dr. S. Keller / Multimedia-Technik 39 XML-Schema Schema wird analog einer XML-Datei in XML-Syntax, also als TextDatei angelegt. Die Datei erhält die Endung *****.xsd Es muss der vordefinierte Namensraum für ein XML-Schema http://www.w3.org/2001/XMLSchema eingebunden werden. Î In diesem Namensraum sind alle Schema-Elemente und –Attribute, die man verwenden darf definiert. Das Element <schema> muss genau einmal als Wurzelelement vorkommen. Als Unterelemente von Schema können die Elemente <element>, <attribute>, <simpleType> und <complexType> vorkommen Î Mit diesen Elementen wird die Baumstruktur des XML-Dokumentes definiert. 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 40 20 XML-Schema Attribute dürfen nur simple Typen zugeordnet werden Elemente können Attribute enthalten und Unterelemente besitzen, also eine Struktur besitzen und somit den Typ complexType besitzen. Über Beschränkungsangaben wie minOccur und maxOccur kann die Anzahl der Elementvorkommen im XML-Dokument eingeschränkt werden Î 10/8/2006 Beispiel: <element name="STUD" minOccurs="1„ maxOccurs="5000"> Prof. Dr. S. Keller / Multimedia-Technik 41 Einfache Typen ( simple Type ) http://www.w3.org/TR/xmlschema-2/#built-in-datatypes Î Î Î Î Î Î 10/8/2006 string, boolean decimal,Float, double duration dateTime, time , date , gYearMonth , gYear, gMonthDay, gDay, gMonth hexBinary anyURI Prof. Dr. S. Keller / Multimedia-Technik 42 21 Komplexe Typen ( complex type ) Das Element ist strukturiert und enthält weitere Unterelemente Möglichkeiten zur Angabe der Unterelemente sequenze Æ Gibt eine vorgeschriebene Reihenfolge von Unterlelementen an. Alle Unterelemente müssen im xml-Dokument in der angegeben Reihenfolge vorkommen all Æ Alle Unterelemente müssen vorkommen. Die Reihenfolge spielt aber keine Rolle choise Æ 10/8/2006 Es müssen nicht alle Unterelemente vorkommen. Auch die Reihenfolge spielt keine Rolle Prof. Dr. S. Keller / Multimedia-Technik 43 XML-Schema Default Namespace <?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/1999/XMLSchema" targetNamespace="http://www.innovations.de/FH" xmlns:fh="http://www.innovations.de/FH"> Ziel Namespace Prefix <annotation> <documentation> Schemadefinition für das XML-Dokument "FH-Adressen.xml" </documentation> </annotation> Im default Namespace sind die Elemente und Attribute der Schemadefinition festgelegt z.B. schema, tragetNamespace, annotation .... 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 44 22 XML-Schema <element name="FH" type="fh:FHType"/> <element name="NAME“ type="string“> <complexType name="FHType"> <sequence> <element ref="NAME"/> <element name="STUDENTEN" type="fh:StudentenType"/> <element name="PROFESSOREN„ type="fh:ProfessorenType"/> </sequence> <attribute name="StudAnz" type="int"/> <attribute name="ProfAnz" type="int"/> </complexType> 10/8/2006 XML-Schema Prof. Dr. S. Keller / Multimedia-Technik 45 Komplexe Typen <complexType name="StudentenType"> <element name="STUD" minOccurs="1" maxOccurs="5000"> <complexType> <sequence> <element ref="NAME" /> <element name="VORNAME" type="string"/> <element name="ADR" type=“string"/> <element name="TEL" type="string"/> <element name="E-MAIL" type="string„ minOccurs="0"/> </sequence> <attribute name="MatNr" use="optional"/> </complexType> </element> </complexType> 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 46 23 XML-Schema Komplexe Typen In der Definition eines komplexen Typs wurden Unterelemente deklariert. Î Î Diese Element-Deklarationen haben einen Namen mit einer bestehenden Typdefinition assoziiert. Manchmal ist es jedoch vorzuziehen, ein bestehendes Element zu verwenden, anstatt ein neues zu deklarieren, zum Beispiel: <element ref=„NAME" /> Î Î Diese Deklaration referenziert ein bestehendes Element NAME, welches an anderer Stelle im Schema deklariert wurde. Der Wert des ref-Attributs muss ein globales Element referenzieren, also eines, das unterhalb von schema deklariert wurde und nicht als Teil der Definition eines komplexen Typs ist 10/8/2006 XML-Schema Prof. Dr. S. Keller / Multimedia-Technik 47 Einbindung in Dokument Änderung des Prologs im XML-Dokument <?xml version="1.0" encoding="UTF-8"?> <FH StudAnz="2" ProfAnz="1" xmlns="http://www.fh-ravensburg-weingarten.de/FH" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:schemaLocation="http://www.fh-ravensburg-weingarten.de/FH personen.xsd"> xmlns="http://www.fh-ravensburg-weingarten.de/FH" Es wird ein Namensraum ohne Prefix deklariert xmlns:xsi=" http://www.w3.org/1999/XMLSchema-instance " xsi:schemaLocation="http://www.fh-ravensburg-weingarten.de/FH personen.xsd"> Deklariert den von XML vorgegebenen Namensraum xsi. In diesem Namensraum ist das Attribut schemaLocation definiert mit dem man den Ort der Schema-Datei angeben kann. Erster Wert ist der Namensraum des Schemas (URL) zweiter Wert ist der Ort der Schema Datei 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 48 24 XML Layoutdefinition Analog HTML mit Cascading Style Sheets CSS Î Einfache Syntax, aber keine XML-Syntax Î eingeschränkte Funktionalität In XML Syntax mit XSL ( Extensible Stylesheet Language ) Î XML-Syntax Î Zwei Sprachkomponenten XSLT Transformation von Objekten in andere Datenformate XSL-FO Formatierung von Objekten 10/8/2006 XML Prof. Dr. S. Keller / Multimedia-Technik 49 Layoutdefinition Cascading Style Sheets ( CSS )werden für die Formatierung von HTML- Seiten eingesetzt Standard Level 1 1996 Standard Level 2 19.. Vorteile / Einsatzbereiche Î Layout wird getrennt vom Inhalt definiert Î Gemeinsames Layout für mehrere HTML-Seiten Î Mehr Gestaltungsmöglichkeiten, als HTML bietet Nachteil: Ältere Browser unterstützen kein CSS 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 50 25 Transformation von XMLDokumenten XSLT Datenaustausch XML-Anwendung XMLDokument Anwendung XSL-Prozessor Anderes Daten-/ Dokumentformat XSL-Stylesheet Dokument 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 51 XSLT XML-Syntax Transformationssprache zur Transformation von XML-Dokumenten in andere Formate Die Transformation übernimmt ein XSLT-Prozessor Eine XSL-Datei ( Stylesheet ) enthält Steueranweisungen für den XSLT-Prozessor Î 10/8/2006 xsl-Anweisungen im XSLT-Dokument Prof. Dr. S. Keller / Multimedia-Technik 52 26 XSLT XSLT-Prozessor Einlesen des XML-Dokumentes und Aufbau eines Eingabebaumes Î Dieser Eingabebaum repräsentiert das XML-Dokument Suche nach Mustern im Eingabebaum. Î Î die zu suchenden Muster werden im Stylesheet ( XSLT-Datei ) definiert Der Baum / Teilbäume wird rekursiv durchlaufen. Findet der XSL-Prozessor Übereinstimmungen, so gibt der Prozessor die im Stylesheet definierte Vorgabe aus und erzeugt einen Ausgabebaum Î Î Der Ausgabebaum kann eine vollkommen andere Struktur besitzen Das Ausgabedokument muss nicht zwingend xml-Syntax besitzen Das resultierende Dokument kann bestehen aus Î Î Î eigenen Auszeichnungen Daten aus dem ursprünglichen XML-Baum, die in die Vorlage kopiert werden sonstigen Daten 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 53 XSLT Die Reihenfolge der Daten muss nicht der ursprünglichen Reihenfolge entsprechen. Î Das Ausgabe-Dokument besitzt also nicht zwingend die gleiche Struktur Für das Aufsuchen von Teilbäumen im XML-Dokument verwendet XSLT einen weiteren Standard. Î Dieser Standard heißt XPath und ermöglicht die Selektion von Knoten und Teilbereichen im XML-Objektbaum. 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 54 27 XSLT Zur Transformation stehen in XSL Anweisungen und Operatoren für die Auswahl von Knoten und die Umwandlung des Baums zur Verfügung. Die Regeln für die Transformation werden in XSL-Stylesheets in XML-Syntax formuliert Eine Regel wird in „xsl:template“-Elementen beschrieben. Î Mit dem Präfix „xsl:“ wird der Namensraum für die XSLStylesheets beschrieben. 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 55 XSLT XML-Dokument XML-Browser XSL-Stylesheet mit integriertem XSLT-Prozessor Für die Transformation nach HTML übernimmt ein XML-fähiger Browser die Aufgabe des XSL-Prozessors Î Im Internet Explorer 5.5 von Microsoft können XML-Dokumente mit Hilfe eines XSL-Stylesheets direkt angezeigt werden. 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 56 28 XSLT Beispiel: Stylesheet <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <!-- hier beginnt eine Regel --> <!-- ein template ( regel ) ist nicht schachtelbar --> <xsl:template match="/"> Regel für <html> rootElement <head> <title>Personenverzeichnis FH-Weingarten</title> </head> <body> <xsl:apply-templates select="FH"/> </body> Besuche alle </html> Child-Knoten </xsl:template> mit Name <!-- hier endet eine Regel --> "FH". 10/8/2006 Dieser Text wird in das Ausgabedokument übernommen Prof. Dr. S. Keller / Multimedia-Technik XSLT 57 Regeln Regeln im Stylesheet Î Syntax: <xsl:template match="Knotennamen=Pfad in XPath"> <!-- hier steht was in der Regel zu tun ist --> </xsl:template> Î Î 10/8/2006 Regeln dürfen nicht geschachtelt werden Die Reihenfolge der Regeln spielt keine Rolle Prof. Dr. S. Keller / Multimedia-Technik 58 29 xslt apply-template Mit der xsl-Anweisung <xsl:apply-templates > </xsl:template> wird der Baum rekursiv abgearbeitet, indem alle Kindknoten des aktuellen Knoten besucht werden. Î 10/8/2006 xslt Die Anweisung wendet dann alle Regeln im Stylesheet an, die für die gefundenen Child-Knoten gültig sind. Prof. Dr. S. Keller / Multimedia-Technik 59 apply-template Mit dem select-Attribut <xsl:apply-templates select="Knoten"> </xsl:template> werden nur die child-Knoten besucht, die in select angegeben sind. 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 60 30 xslt value-of Mit der <xsl:value-of > Anweisung werden Werte von Elementen oder Attributen in den Ausgabebaum (= Ausgabedokument) übernommen. Î das Element oder Attribut, dessen Wert berechnet werden soll, wird mit dem select-Attribut angegeben <xsl:value-of select="NAME"> <xsl:value-of select="@StudAnz" Der Wert eines Elementes ist normalerweise eine Zeichenkette. Der Wert eines Attributes wird mit @Attributname ausgewählt. 10/8/2006 xslt Prof. Dr. S. Keller / Multimedia-Technik 61 value-of Werte von Knoten sind z.B. Î Î Î Î Element Text Attribute Comment 10/8/2006 Eine Zeichenkette. Diese Zeichenkette enthält hintereinander alle Zeichen, die zum Element selbst gehören und allen Zeichenketten seiner Kindknoten Der Text des Knoten Der Attributwert Der Kommentartext Prof. Dr. S. Keller / Multimedia-Technik 62 31 xslt for-each Anweisungen sollen mehrmals ausgeführt werden ( Æ Schleife ) <xsl:for-each select=„Pfadangabe“> Mit select wird die Bedingung der Schleife angegeben <xsl:for-each select=„thema“> <xsl:value-of select=„@name/> <br> </xsl:for-each> Es wird für jedes <thema>-tag im Dokument der Name ausgegeben und ein Zeilenumbruch nach dem Name erzeugt 10/8/2006 Xslt Prof. Dr. S. Keller / Multimedia-Technik 63 Bedingungen Mit dem Tag <xsl:if test=„..“> werden die folgenden Anweisungen nur durchgeführt wenn der test einen Wahrheitswert true ergibt Î Einen else-Zweig gibt es nicht 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 64 32 Xslt Bedingungen Mit dem Konstrukt <xsl:choose > <xsl:when test=„…“> </xsl:when> <xsl:otherwise> </xsl:otherwise> </xsl:choose> kann ein if-else realisiert werden. Î Î Falls der test in when den Wert true ergibt werden die Anweisungen unter when ausgeführt und die Anweisungen unter otherwise übersprungen. Bei false werden die Anweisungen in otherwise ausgeführt die unter when nicht. 10/8/2006 XSLT Prof. Dr. S. Keller / Multimedia-Technik und 65 Beispiel: Stylesheet 43 <xsl:template match="FH"> <h1 align="center"> <xsl:value-of select="NAME"/> </h1> <hr/> <table> <thead> <tr> <th align="left">Personen</th> <th align="center">Professoren</th> <th align="center">Studenten</th> </tr> </thead> <tbody> <tr> <th align="left">Anzahl</th> <td align="center"><xsl:value-of select="@ProfAnz"/></td> <td align="center"><xsl:value-of select="@StudAnz"/></td> </tr> </tbody> </table> <hr/> <xsl:apply-templates select="PROFESSOREN"/> <xsl:apply-templates Prof. select="STUDENTEN"/> 10/8/2006 Dr. S. Keller / Multimedia-Technik </xsl:template> 66 33 XSLT Beispiel: Stylesheet <xsl:template match="PROFESSOREN"> <h4 align="left">Professoren:</h4> <xsl:for-each select="PROF"> <table> <thead> <tr> <th align="left">Name</th> <th align="left">Büro</th> <th align="left">Telefon</th> </tr> </thead> <tbody> <tr> <td align="left"> <xsl:value-of select="VORNAME"/> <xsl:value-of select="NAME"/> </td> <td align="left"><xsl:value-of select="BUERO"/></td> <td align="left"><xsl:value-of select="TEL"/></td> </tr> </tbody> </table> </xsl:for-each> <hr/> </xsl:template> <xsl:template match="STUDENTEN"> <h4 align="left">Studenten</h4> <table> <colgroup> <col width="150"/> <col width="200"/> </colgroup> <thead> <tr> <th align="left">Name</th> <th align="left">e-Mail</th> </tr> </thead> <tbody> <xsl:for-each select="STUD"> <tr> <td align="left"> <xsl:value-of select="VORNAME"/> <xsl:value-of select="NAME"/> </td> <td align="left"><xsl:value-of select="EMAIL"/></td> </tr> </xsl:for-each> </tbody> </table> <hr/> </xsl:template> </xsl:stylesheet> 10/8/2006 XML Prof. Dr. S. Keller / Multimedia-Technik 67 XPath XPath ist eine Syntax, um Teile von XML-Dokumenten beschreiben zu können Î beschreibt eine Navigation in einem XML-Dokument Adressierungsschema, das in mehreren XML-Spezifikationenen Verwendung findet Î XSL, XPointer, XML-Query-Language Wird in XSL benötigt, um Elemente und Attribute zu beschreiben, die Steueranweisungen enthalten, auf die der XSLT-Prozessor reagieren soll 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 68 34 XML XPath Definiert Ausdrücke, mit denen man Elemente, Attribute oder ganze Teilbäume adressieren kann Das XML- Dokument wird in XPath als Baum repräsentiert. Die Knoten des Baumes haben unterschiedlichen Typ. Pfadausdrücke sind ähnlich von Pfadangaben in Dateisystemen z.B. /FH/STUDENTEN/STUD[2] Î zweiter Student in der Liste der Studenten 10/8/2006 XML Prof. Dr. S. Keller / Multimedia-Technik 69 XPath - Knotentypen Wurzelknoten ( root node ) Î Ausgangspunkt des Dokumentenbaumes. Er ist nicht identisch dem Wurzel-Element-Knoten ( z.B. FH-Element ) im XML-Dokument. Der Wurzelknoten besitzt keinen Namen. Element-Knoten ( element node ) Î Repräsentiert ein XML-Element im XML-Dokument. Name ist der Tag-Name.. Der Wert des Knoten entspricht der Verkettung aller Text-Werte aller Textknoten, die Nachkommen des Elementes sind. Text-Knoten ( text node ) Î Wird für Text im XML-Dokument erzeugt, der nicht zu einem Markup gehört. Textknoten haben keinen Namen. Wert ist die Zeichenkette. Attribut-Knoten ( attribute node ) Î 10/8/2006 für jedes Attribut im XML-Dokument wird ein Attributknoten erzeugt. Name ist der Attributname. Wert ist der Attributwert. Prof. Dr. S. Keller / Multimedia-Technik 70 35 XML Xpath - Knotentypen Namensraum-Knoten ( namespace node ) Î wird für jedes Namensraum-Präfix erzeugt. Name ist der Präfix. Wert ist die URL. Elementknoten, zu dem der Präfix gehört ist der Vaterknoten. Verarbeitungsanweisungen ( processing instruction node ) Î Name ist der Bezeichner nach dem <?. Wert ist der folgende Text. Kommentare ( comment node ) Î 10/8/2006 XML Besitzt keinen Namen. Wert ist der Kommentartext Prof. Dr. S. Keller / Multimedia-Technik 71 XPath - Standortpfade Der aktuelle Knoten im Eingabebaum wird current node bezeichnet Davon ausgehend können alle anderen Knoten im Baum beschrieben werden, durch eine absolute Pfadangabe oder relativ zum aktuellen Knoten durch Angabe von: Î Î Î Î Î Î 10/8/2006 self parent node child node anchestor ( Vorfahren ) descandant ( Nachfahren ) siblings ( Geschwister ) Prof. Dr. S. Keller / Multimedia-Technik 72 36 XML XPath Syntax einer Pfadangabe ein Pfad besteht aus mehreren "location steps", die durch / getrennt sind. Î ein location step besteht aus zwei Teilen axis-identifier :: node-test Æ node-Test ist entweder der Name eines Knoten oder aber die Prüfung eines Knotentyps. Æ Die Knotentyp-Prüfung wird durch die Funktionen text(), comment(), processing-instruction() oder node() für einen beliebigen Knoten erreicht. 10/8/2006 XML z.B. child::node() bezeichnet alle Kindknoten das aktuellen Knotens. Prof. Dr. S. Keller / Multimedia-Technik 73 XPath Prädikate Î Schränken die Knotenselektion ein Î erscheinen in [ ] Î werden direkt an die node-tests angefügt z.B. /child::FH/child::STUDENTEN/child::STUD[ position()=1] 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 74 37 XML XPath Eine abgekürzte Schreibweise ist möglich Î Î Î Î Î 10/8/2006 XML bei Verwendung von Child:: kann man auf den axis-identifier verzichten z.B. /FH/STUDENTEN/STUD[1] attribute:: wird abgekürzt durch @ self::node() wird abgekürzt durch . parent::node() durch .. [position()=3] durch [3] Prof. Dr. S. Keller / Multimedia-Technik 75 XPath - Beispiele //thema[unterthema] Î Das Prädikat wählt alle <thema>-Tags aus, die als Unterelement ein tag mit Namen <unterthema> besitzen // bedeutet Regel soll global auf das gesamte Dokument angewendet werden. /thema/unterthema Î Ausdruck wählt ein Element <unterthema> aus, welches ein Elternelement <thema> besitzt thema/[unterthema][2] Î Wählt vom <thema> tag des aktuellen knoten das zweite Element aus, das das Kindelement <unterthema> besitzt. 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 76 38 XML Xpath – axis-identifier self child descandant parent ancestor following sibling, preceeding sibling preceeding, following descandant-or-self ancestor-or-self 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 77 Beispielanwendung: xml-Tutorial Projektarbeit von zwei Studenten Î 1. Teil: Tutorialentwurf Entwurf eines Tutorials zum Thema "xml ++" Das Tutorial soll als xml-Dokument erstellt werden Aufgaebe dazu: Inhalte festlegen Struktur definieren Layout, d.h. grafische Erscheining festlegen Î 2. Teil: Implementierung xml-Schema zum Tutorial erstellen tutorial als xml-Dokument erstellen tutorial in html transformieren d.h. xslt-Datei erstellen und html-Dateien erzeugen. 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 78 39 Beispielanwendung: xml-Tutorial Tutorial tutorial.xml Schema zum Tutorial tutorial.xsd xsl-Prozessor Parser ( Validierung ) index.html start.html webBrowser navigation.html Style Sheet tutorial.xsl tutorial.css 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 79 Beispielanwendung: xml-Tutorial Das Ergebnis: Î Î 10/8/2006 http://erde.fbe.fhweingarten.de/keller/Downloads/mmtech/x ml-tutorial/index.html Die xml-Dateien und die Dokumentation kann man sich runterladen Prof. Dr. S. Keller / Multimedia-Technik 80 40 XML - Bearbeitungsprozesse XMLRegeln TextEditor Autor XMLDokument Parser ( Validierung ) sichtbares Dokument Formatierer Papier Bildschirm ASCII-Textdatei, angereichert mit TAGS CSS XSL DTD Dokumenttyp Layoutbeschreibung Benutzergruppenspezifische Vereinbarungen 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 81 XML - Bearbeitungsprozesse XMLRegeln XMLAnwendung XMLDokument Parser ( Validierung ) XMLAnwendung DTD 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 82 41 XML - Bearbeitungsprozesse XSLT XMLRegeln XMLAnwendung XMLDokum. Parser ( Validierung ) Input Daten Anwendung DTD 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik XML 83 Tools Browser Î Microsoft Internet Explorer ab 5.5 Er ermöglich, XML-Dokumente, die sowohl mit CSS als auch mit XSL formatiert sind, darzustellen. ab Version 6 wird auch eine Gültigkeitsprüfung anhand einer DTD oder eines XML Schemas wird durchgeführt. Î Netscape Browser ab Version 6.0 Editoren Î XML-Spy von der Firma Altova. Æ Æ 10/8/2006 Die grafische Oberfläche dieses Editors ist sehr intuitiv bedienbar und ermöglicht damit die einfache Erstellung von XML-Dokumenten. Er unterstützt bereits neue Standardisierungen, speziell im Bereich von XSL und XML Schema. Als Editierungshilfe führt dieser Editor eine Befehlsergänzung durch. Das bedeutet, daß bei der Eingabe eines Tags der Editor eine Liste passender Ergänzungen als Auswahl zur Verfügung stellt. In dieser Liste sind auch Elemente enthalten, die anhand einer DTD oder eines XML Schemas definiert wurden. Prof. Dr. S. Keller / Multimedia-Technik 84 42 XML Parser Parser werden auch als XML-Prozessoren bezeichnet. Î Î Î Î Ein XML-Parser stellt eine physikalische Verbindung zwischen den XML-Dateien und der übrigen Software her. Softwarekomponente, die im Hintergrund einer Applikation arbeitet und ist somit für den Anwender nicht sichtbar ist wird durch eine Schnittstelle einer Programmiersprache implementiert. weitverbreitesten Parser für XML-Dokumente Piccolo Æ Open-Sorurce ( nur Sax ) Piccolo.sourceforge.net Apache/SUN Æ JAXP, Crimson Xml.apache.org/crimson/index.html Apache Æ Xerces Xml.apache.org/xerxes2-j/index.html Oracle Æ V2 Otn.oracle.com/tech/xml/xdk_java/content.html 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik XML 85 XSLT-Prozessoren XSLT-Prozessoren werden für die Transformation eines xml-Dokuments mit xsl-Stylesheets benötigt Î Î wird durch eine Schnittstelle einer Programmiersprache implementiert Verfügbare Prozessoren SUN Java 2SE 1.4 Æ Xalan xml.apache.org/xalan-j/index.html Saxon Æ saxon.sourceforge.net Oracle Æ 10/8/2006 V2 Otn.oracle.com/tech/xml/xdk_java/content.html Prof. Dr. S. Keller / Multimedia-Technik 86 43 XML Programmierschnittstelle (API) SAX (Simple API for XML) Î Aktuelle Version 2.0 DOM (Document Object Model) Î Î Aktuelle Version DOM Level 3 www.w3.org/DOM/ JDOM Î Î Aktuelle Version 1.0 www.jdom.org 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik XML 87 Programmierschnittstelle (API) DOM (Document Object Model) vom W3C entwickelter Standard Xml-Datei wird als Baumstruktur bearbeitet Plattform- und Programmiersprachen unabhängig. Baum muss vollständig im Speicher liegen ( Ressourcenintensiv ) Parsen geht sehr langsam Das xml Dokument kann verändert werden. Es kann auch ein xml-Dokument erzeugt werden SAX (Simple API for XML) Ereignisorientierte Schnittstelle Xml-Dokument kann nur sequentiell abgearbeitet werden Parsen geht sehr schnell Dokument liegt nicht vollständig im Speicher und ist daher Ressourcensparend. Es kann kein xml-Dokument verändert oder erzeugt werden. 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 88 44 Java und xml JDOM Î Î Vereinfachtes Java-API für das Einlesen, Validieren, Bearbeiten und Erzeugung von xmlDokumenten Project Status JDOM 1.0 http://www.jdom.org/ Î Vergleich DOM mit JDOM http://www.fh- wedel.de/~si/seminare/ss01/Ausarbeitung/4.domjdom/do m0.htm 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 89 Java und xml Java stellt Klassen für SAX und DOM zu Verfügung Î 10/8/2006 JAXP (Java API for XML Parsing 1.1.1) Prof. Dr. S. Keller / Multimedia-Technik 90 45 Java SAX-Parser package: javax.xml.parsers Klassen: Î SAXParserFactory Diese Klasse stellt den SAXParser über Fabrikobjekte zu Verfügung. Ein Factory-Objekt wird über die Klassenmethode newInstance() erzeugt. Das Factory-Objekt stellt dann die Methode newSaxParser() zu Verfügung. Î SAXParser eigentlicher Parser, der nur über die Factory erzeugt werden kann. Dieser stellt die Methode parse() zu Verfügung, mit dem das parsen der xml-Datei gestartet wird. 10/8/2006 Java Prof. Dr. S. Keller / Multimedia-Technik 91 SAX-Parser Der SAX-Parser geht das xml-Dokument zeilenweise durch und erzeugt dabei verschiedene Ereignisse, die an einen Ereignis-Handler geschickt werden. Ereignisse sind z.B. wenn der Parser den Anfang des Dokumentes erkennt, das Starttag eines xmlElementes , das Ende-Tag eines Elementes, … Zum parsen eines xml-Dokumentes wird daher ein Ereignis-Handler benötigt, der auf die Ereignisse reagiert. Dieser „DefaultHandler“ muss beim Aufruf der Methode parse() übergeben werden. 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 92 46 Java SAX-Parser package: javax.xml.sax.helpers Klassen: Î DefaultHandler Diese Klasse stellt Methoden für die Ereignisbehandlung des Sax-Parser zu Verfügung. Æ Æ Æ Æ Æ 10/8/2006 startDocument() startElement() tags endDocument() endElement() error() Parser erkennt den Dokumentanfang Parser erkennt den Anfang eines StarParser erkennt das Dokumentende Fehler beim parsen erkannt Prof. Dr. S. Keller / Multimedia-Technik 93 DOM-Modell DOM ist eine objektorientierte Programmierschnittstelle für wohlgeformte XML-Dokumente. Î Î DOM definiert die logische Struktur dieser Dokumente die Möglichkeiten des Zugriffs und der Manipulation dieser Dokumente. DOM ist eine Spezifikation des W3C, die plattform- und sprachneutrale Schnittstellen umfasst. Î 10/8/2006 Zusätzlich werden Sprachbindungen zur Verfügung gestellt. Im Falle von Java umfasst diese Sprachbindung einige JavaSchnittstellen, die im Paket org.w3c.dom zusammengefasst sind. Prof. Dr. S. Keller / Multimedia-Technik 94 47 DOM-Modell Für die Verarbeitung von XML in eigenen Programmen, reichen diese Schnittstellen nicht aus. Î Vielmehr benötigt man eine konkrete DOM-Implementierung durch einen Parser Ein solcher Parser umfasst eine Reihe von Klassen, welche die Schnittstellen implementieren. Aus der hierarchischen Struktur der Elemente des XML-Dokuments baut der Parser einen Baum auf. Î Î Î Dieser Baum ist das eigentliche Dokumentenobjekt und wird im Speicher der virtuellen Maschine verwaltet. Die Knoten dieses Baums sind Objekte der erwähnten Klassen. Möchte man die Informationen des Originaldokuments bearbeiten, arbeitet man nicht direkt auf der XML-Datei, sondern mit dem Dokumentenobjekt im Speicher. 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 95 DOM-Modell Da alle DOM-Parser dieselben Schnittstellen implementieren, macht man sich als Programmierer nicht von einem bestimmten Parser abhängig und kann diesen im Zweifel mit minimalen Codeänderungen austauschen Î Î 10/8/2006 Es existieren bereits eine Reihe von DOM-Implementierungen für Java, die öffentlich freigegeben sind. Der am häufigsten verwendete DOM-Parser wird im Rahmen des "Apache Xerces Projekts" entwickelt und ist samt Quelltext für die Öffentlichkeit frei verfügbar. Prof. Dr. S. Keller / Multimedia-Technik 96 48 Java DOM-Parser package: javax.xml.parsers Klassen: Î DocumentBuilderFactory Diese Klasse stellt den DOM-Parser über Fabrikobjekte zu Verfügung. Ein Factory-Objekt wird über die Klassenmethode newInstance() erzeugt. Das Factory-Objekt stellt dann die Methode newDocumentBuilder() zu Verfügung. Î DokumentBuilder eigentlicher Parser, der nur über die Factory erzeugt werden kann. Dieser stellt die Methode parse() zu Verfügung, mit dem das parsen der xml-Datei gestartet wird. 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 97 Java und xml Der DOM-Parser liest das xml-File ein und erstellt einen DOM-Baum für das komplette Dokument im Speicher. Jedes Element, Attribut und als auch Textinhalt eines Elementes wird im DOM-Baum als Knoten repräsentiert. Über die JAXP kann man auf jeden Knoten zugreifen dessen Eigenschaften und Inhalt abfragen, den Baum umstrukturieren oder auch neue Knoten erzeugen 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 98 49 Java und xml Package Interfaces Î org.w3c.dom Document Repräsentiert den gesamten DOM-Baum Ermöglich den Zugriff auf alle Knoten im Baum. Über die Methode documentElement() erhält man das root-Element des xml-Dokumentes. Î Element Î Node Repräsentiert ein Element im xml-Dokument Repräsentiert einen Knoten im xml-Dokument. Mit der Methode int getNodeType() kann der Knotentyp ermittelt werden. Î Nodelist 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 99 Node nodeName() nodeValue() attributes Attr name of attribute value of attribute null 2 CDATASection #cdata-section content of the CDATA Section null 4 Comment #comment content of the comment null 8 Document #document null null 9 DocumentFragment #document-fragment null null 11 DocumentType document type name null null 10 Element tag name null NamedNodeMap 1 Entity entity name null null 6 EntityReference name of entity referenced null null 5 Notation notation name null null 12 ProcessingInstruction target entire content excluding the target null 7 Text #text of the text null Prof. Dr. S. Kellercontent / Multimedia-Technik 3 100 10/8/2006 node nodeType() 50 Java JDOM JDOM nutzt alle Sprachmöglichkeiten von Java und ist dadurch für den Programmierer einfacher und von der Performanz wesentlich effizienter als DOM JDOM versucht Teile des Dokuments erst bei Bedarf zu interpretieren. Optimale Zusammenarbeit von JDOM mit SAX und DOM Î Die Pakete org.jdom.input und org.jdom.output enthalten Klassen, mit denen es möglich ist, ein JDOM-Dokument aus diversen Quellen zu erzeugen und an diverse Empfänger auszugeben. 10/8/2006 Java Prof. Dr. S. Keller / Multimedia-Technik 101 JDOM Schnittstellen zu SAX/DOM 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 102 51 Java JDOM Klassen SAXBuilder Î Î Erzeugung eines JDOM-Dokuments Verwendet eine SAX-Implementierung DOMBuilder Î Mit der Methode Document build(DOMDocument), wird ein existierendes DOM-Dokument in ein JDOM-Dokument umgeformt Klasse XMLOutputter Î ein JDOM-Dokument wird als XML in einen beliebigen Ausgabestrom ausgegeben . SAXOutputter Î Löst entsprechend der Struktur des Dokuments SAX-Ereignisse aus, die von einer anderen Komponente interpretiert werden können. 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik Java JDOM 103 Klassen Document Î Diese Klasse repräsentiert das gesamte XML-Dokument. Jedes Objekt enthält daher zwingend ein Wurzelelement Element Î Diese Klasse ist repräsentiert ein komplettes XML-Tag Attribute Î Î 10/8/2006 Durch diese Klasse werden die Attribute von Elementen repräsentiert. Für das Auslesen der Werte stehen diverse Methoden zur Verfügung, die die Strings in das benötigte Format transformieren. Prof. Dr. S. Keller / Multimedia-Technik 104 52 Java JDOM Klasse Document Wichtigste Methode Î Element getRootElement() Liefert eine Referenz auf das Wurzelelement des Dokuments. 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik Java JDOM 105 Klasse Element Wichtige Methoden Î Î Î Î String getContent() Liefert den Textinhalt des Elements. Ist keiner vorhanden, wird eine leere Zeichenkette zurückgeliefert. List getChildren(String name); Element getChild(String name) Zugriff auf bestimmte Kindelemente eines Elements List getChildren() Liefert in einer Liste alle Kindknoten List getAttributes() Liefert in einer Liste alle Attributes eines Elements. 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 106 53 Java JDOM Klasse Attribut Wichtige Methoden Î String getName() Liefert den Namen eines Attributes Î String getValue() Liefert den aktuellen Wert des Attributs. Attribute setValue(String value) Î Setzt den Wert eines Attributes Î int getAttributeType() Liefert den Datentyp eines Attributes Î int getIntValue() Liefert den int-Wert eines als int definierten Attributs. Wirft ein DataConversionException falls der Attributwert kein int ist …. 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik Java 107 DOM-Parser package: javax.xml.parsers Klassen: Î DocumentBuilderFactory Diese Klasse stellt den DOM-Parser über Fabrikobjekte zu Verfügung. Ein Factory-Objekt wird über die Klassenmethode newInstance() erzeugt. Das Factory-Objekt stellt dann die Methode newDocumentBuilder() zu Verfügung. Î DokumentBuilder eigentlicher Parser, der nur über die Factory erzeugt werden kann. Dieser stellt die Methode parse() zu Verfügung, mit dem das parsen der xml-Datei gestartet wird. 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 108 54 XML und Hyperlinks Mit der XML Linking Language (xlink) können XML-HyperlinkElemente definiert werden In xlink können sowohl unidirektionale 1:1 Bezüge als auch sehr komplexe Relationen zwischen unterschiedlichen Ressourcen definiert werden Î So können 1:n Hyperlinks realisiert werden zu jedem Hyperlink Metainformationen angegeben werden Hyperlink-Elemente als eigenständige XML-Element separat von Anker und Ziel-Ressourcen definiert werden Ziel eines Hyperlink kann sein ein XML-Dokument, ein Bild eine Datenbankabfrageergebnis oder ein Programm 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 109 XML und Hyperlinks Zur Definition von Hyperlinks stellt XML im Namensraum xlink Elementattribute zu Verfügung, mit Hilfe derer man jedes beliebige XML-Element zu einem Hyperlink machen kann Definition eines Hypertext-Elementes in XML Î Das XML-Element besitzt ein type-Attribut aus dem Namensraum xlink Xlink Namensraum Î http://www.w3.org/1999/xlink 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 110 55 XML und Hyperlinks type-Attribut Î Î Elemente, die dieses Attribut besitzen sind Hyperlink-Elemente möglicher Attributwert simple Es wird ein einfacher 1:1 Hyperlink definiert extended Komplexer Link , 1:n ist möglich arc Das XML-Element kennzeichnet eine Verbindung zwischen zwei Resourcen das XML-Element ist ein Verweis auf ein externes Zielobjekt das XML-Element ist ein lokales Ziel-Objekt und damit Unterelement des extended LinkElementes locator resource 10/8/2006 XLINK Prof. Dr. S. Keller / Multimedia-Technik 111 extended Links ( Quelle: http://www.w3.org/TR/xlink ) 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 112 56 XML und Hyperlinks href-Attribut Wert ist die URL des Zielobjektes, falls type=locator oder type=simple title-Attribut Wert ist ein Text, der die Bedeutung des Link beschreibt show-Attributwert gibt an, wie der Hperlink dargestellt wird Mögliche Werte: new, replace, embed, none actuate-Attribut Wert gibt an wie der Hyperlink abgerufen wird Mögliche Werte: onLoad, onRequest, none 10/8/2006 XLINK Prof. Dr. S. Keller / Multimedia-Technik 113 simple Link Beispiel <STUD> <STUDNR>236</STUDNR> <NAME xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="../kfz/kfz.xml" xlink:titel="Dokument kfz" xlink:show="replace" xlink:actuate="onRequest" >Kunze</NAME> <VORNAME>Emil</VORNAME> <MAIL>[email protected]</MAIL> </STUD> 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 114 57 xlink simple Link <PROF> <PERSNR>123</PERSNR> <NAME xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="lucky.jpg" xlink:titel="Bild keller" xlink:show="new" xlink:actuate="onLoad" >Keller</NAME> <TEL>0751 501 9734</TEL> </PROF> 10/8/2006 xlink Prof. Dr. S. Keller / Multimedia-Technik 115 extended link Beispiel Student_1 ( local resource ) Professor ( local resource ) Mentoring Student_n 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 116 58 Xml-Anwendungen SMIL( Synchronized Multimedia Integration Language ) Î Î W3C recommendation für die Beschreibung von multimedialen Präsentationen. Ermöglicht die Darstellung und Synchronisation von Medien wie Text, Bild, Audio, Video, and Animationsen. http://www.w3.org/TR/REC-smil. MathML (Mathematical Markup Language) Î Î W3C recommendation zur Darstellung von Mathematischen Formeln http://www.w3.org/TR/REC-MathML. SVG (Scalable Vector Graphics) Î Î W3C working draft zur Beschreibung von Vektorgrafiken http://www.w3.org/TR/WD-SVG. DrawML (Drawing Meta Language) Î Î W3C note that covers 2D images for technical illustrations. It also addresses the problem of updating and refining such images. http://www.w3.org/TR/NOTE-drawml. 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 117 eCommerce Standards in XML Ziel dieser Standards ist XML einzusetzen in den Bereichen Î business-to-business (B2B) und business-to-consumer (B2C) commerce. ICE (Information and Content Exchange) Î ICE is a protocol for use by content syndicators and their subscribers. It focuses on "automating content exchange and reuse, both in traditional publishing contexts and in business-to-business relationships". Î http://www.w3.org/TR/NOTE-ice. ebXML (Electronic Business with XML) Î This standard aims at creating a modular electronic business framework using XML. It is the product of a joint initiative by the United Nations (UN/CEFACT) and the Organization for the Advancement of Structured Information Systems (OASIS). Î For more information on ebXML, see http://www.ebxml.org/. Cxml (Commerce XML) cxml is a RosettaNet (www.rosettanet.org) standard for setting up interactive online catalogs for different buyers, where the pricing and product offerings are company specific. Includes mechanisms to handle purchase orders, change orders, status updates, and shipping notifications. Î http://www.cxml.org/ CBL (Common Business Library) Î CBL is a library of element and attribute definitions maintained by CommerceNet (www.commerce.net). 10/8/2006 Prof. Dr. S. Keller / Multimedia-Technik 118 Î http://www.commerce.net/projects/currentprojects/eco/wg/eCo_Framework_Specificati ons.html. Î 59