- III -
Inhaltsverzeichnis
Inhaltsverzeichnis III
1 Einleitung. 1
2 Die Extensible Markup Language (XML) 1
2.1 Grammatiken für XML-Dokumente 2
2.2 XPath. 3
2.3 XML Stylesheet Language 3
2.4 Namensräume 4
2.5 Processing Instructions 5
2.6 Whitespaces 5
3 XML-Verarbeitung mit SAX. 5
3.1 SAX-Interfaces. 6
3.1.1 Das Interface XMLReader 7
3.1.2 Das Interface ContentHandler 7
3.1.3 Weitere Interfaces. 10
3.2 Weitere hilfreiche Möglichkeiten von SAX 11
4 XML-Verarbeitung mit DOM. 12
4.1 Einlesen der XML-Daten. 13
4.2 Manipulieren von XML-Dokumenten. 15
5 XML-Verarbeitung mit Stylesheets. 17
6 XML-Verarbeitung mit JDOM 18
6.1 Einlesen und Ausgeben der XML-Daten. 18
6.2 Manipulieren von XML-Dokumenten. 18
7 Fazit und Ausblick 19
Erg änzende Literatur 20
Anhang. 21
A Beispieldokument „dvdsammlung.xml“ 21
B Beispieldokument “dvdsammlung.dtd“ 22
C Beispieldokument „dvdsammlung.xsl“ 23
D Beispielklasse „cHandler.java“ 24
E Beispielklasse „DOMBeispiel.java“ 25
F Beispielklasse „JDOMBeispiel java “ 26
- 1 - 1 Einleitung
In den vergangenen Jahren hat die Verwendung der Extensible Markup Language („XML“) als Datenformat für die Speicherung und Weitergabe von Informationen zune hmend an Bedeutung gewonnen. Vor allem die Plattformunabhängigkeit verhalf XML zu seiner großen Bedeutung. Um die XML-Dateien auch automatisiert erstellen, manipulieren, auswerten und speichern zu können, wurden Schnittstellen und APIs entwickelt, standardisiert und implementiert. Insbesondere zeichnet sich Java durch einen Vielzahl von Möglichkeiten für die Behandlung von XML-Dokumenten aus.
Zunächst sollen die Grundlagen von XML aufgezeigt werden, um ein Verständnis für das Konzept dieser Sprache zu entwickelt. Danach soll die Arbeitsweise von SAX und DOM als derzeit populärste APIs für die XML-Verarbeitung vorgestellt werden, sowie anscha uliche Beispiele für die Umsetzung dieser Ansätze in Java gegeben werden. 1 Anschließend wird noch kurz auf die XML-eigene Transformationssprache XSL und deren Verwendung in Java sowie einen neueren, Java-speziellen Ansatz für die XML-Verarbeitung (JDOM) eingegangen.
2 Die Extensible Markup Language (XML)
Die Extensible Markup Language („XML“) ist eine Metasprache. 2 Durch sie sollen Sprachelemente einer anderen Sprache definiert werden. Dieses geschieht mit Hilfe von Auszeichnungselementen („Tags“), welche die Struktur eines XML-Dokuments bestimmen. Da jedes geöffnete Tag auch wieder geschlossen werden muss und das bei Verschachtelungen genau in der umgekehrten Reihenfolge des Öffnens, entsteht in jedem XML-Dokument eine Baumstruktur.
Ein XML-Dokument besteht aus einer Menge von Elementen. Ein Element besteht immer aus einem Anfangs- und einem End-Tag sowie sämtliche n Daten zwischen diesen beiden Tags. Diese Daten können einfacher Text (konkrete Daten) oder wiederum weitere Unterelemente („Kindelemente“) sein. Darüber hinaus kann ein Element auch mit Attributen (definiert im Anfangs- Tag) versehen werden. Im Kopf eines XML-Dokuments können
1 Die Beispiele sind einfach strukturiert, um die Verständlichkeit zu sichern, z.B. wurde auf eine ausführliche Exception-Behandlung verzichtet. 2 Derzeit aktuelle Version ist XML 1.1, vgl. http://www.w3.org/TR/REC-xml/
- 2 - formaleAngaben über ein Dokument (z. B. Versionsnummer, Kodierung etc.) angegeben werden. 3
XML hat sich als das führende Format für den Datenaustausch etabliert. Dies liegt zunächst einmal daran, dass XML so gut wie keine Einschränkungen an die Struktur und den Inhalt eines Dokumentes definiert. So können alle zu transportierenden Daten in der am besten für den Austausch geeigneten Struktur formatiert werden. Da des Weiteren jedes XML-Dokument ein reines Textdokument i st, können XML-Dateien hervorragend über unterschiedlichste Übertragungswege transportiert werden. Zudem ist XML dadurch vollkommen plattformunabhä ngig.
2.1 Grammatiken für XML-Dokumente
Um XML-Dateien sinnvoll und effektiv verarbeiten können, ist es notwendig, dass die Struktur der Datei bekannt ist (z.B. für den Datenaustausch zwischen 2 Unternehmen). Hierzu besteht die Möglichkeit, eine Grammatik für ein XML-Dokument zu definieren. Die zuvor herausgestellte Freiheit bei der Gestaltung von XML-Dokumenten leidet keineswegs darunter, da auch bei der Festlegung der Grammatik nahezu uneingeschränkte Gestaltungsfreiheit für den Anwender besteht. Die Document Type Definition („DTD“) ist eine einfache und die derzeit noch die verbreitetste Möglichkeit, eine solche Grammatik zu definieren. In ihr können die Struktur des Dokuments (z.B. die Verschachtelung der Elemente) sowie die erlaubten Elemente und deren Eigenschaften (z.B. Attribute, Art der Daten etc.) festgelegt werden. Anhand seiner DTD kann man das XML-Dokument auf seine Gültigkeit überprüfen. 4 Die DTD wird entweder als externe Datei bereitgestellt und über ein DOCTYPE-Element in die XML-Datei eingebunden oder direkt in das Dokument integriert, was sich allerdings der Übersichtlichkeit wegen weniger empfiehlt. 5
DTDs bieten also eine sehr einfache und schnelle Möglichkeit, eine Grammatik für XML-Dokumente festzulegen. Diese Einfachheit bringt aber auch einige Nachteile mit sich. So verwenden DTDs selbst keine XML-Syntax und passen daher schlecht zu dem Ziel, eine plattformunabhängige und hochportable Spezifikation zu schaffen. Zum anderen können DTDs nur sehr einfache Datenstrukturen definieren und nutzen so die Möglichkeiten von XML bei weitem nicht aus (z.B. exakte Datentypisierung, Definition von Namensräumen 6
3 Ein beispielhaftes XML-Dokument findet sich in Anhang A („dvdsammlung.xml“). Dieses wird auch für die Verarbeitung durch die später folgenden Programmbeispiele herangezogen. 4 Ein zu seiner DTD konformes XML-Dokument bezeichnet man somit als „gültiges Dokument“. Dies ist eine Steigerung zu einem lediglich syntaktisch korrekten Dokument, welches als „wohlgeformt“ bezeichnet wird. 5 Als Beispiel findet sich in Anhang B eine mögliche DTD („dvdsammlung.dtd“) für das XML-Dokument aus Anhang A. 6 zum Begriff Namensräume siehe Kapitel 2.4.
- 3 - u.v.m.).Als weit mächtigere Möglichkeit, eine Grammatik zu definieren, wurden daher die XML-Schemata entwickelt. Diese sind sehr viel komplexer als DTDs und daher auch we-niger einfach zu erstellen und zu verstehen. Dafür können XML-Dokumente aber auch viel exakter definiert werden. XML-Schemata sind selbst gültige XML-Dokumente und daher sind sämtliche verfügbare XML-Techniken auf diese anwendbar. Auf eine detaillierte Be-trachtung von XML-Schemata wird an dieser Stelle jedoch verzichtet, da derzeit DTDs noch weit häufiger zur Definition einer Grammatik benutzt werden und daher noch besser unterstützt werden.
2.2 XPath
Mit Hilfe der XML Path Language („XPath“ 7 ) wird es möglich, innerhalb eines XML-Dokuments zu navigieren oder auf Daten (also Elemente, Attribute oder konkrete Datensätze) z uzugreifen. Dies geschieht durch die Angabe eines Pfades, welcher durch die Baumstruktur führt. Dies kann sowohl ausgehend vom Wurzelelement des Dokuments als auch relativ zum „aktuellen Standort“ im Dokument geschehen. Die Syntax von XPath ähnelt der für Pfadangaben in Unix/Linux. Es ist außerdem möglich, Beschränkungen („Constraints“) für die Elementauswahl festzulegen, z.B. über den Wert von Attributen oder die geforderte Existenz von Kindelementen.
2.3 XML Stylesheet Language
Ein wesentliches Merkmal von XML ist die strikte Trennung von Inhalt und Layout. Eine XML-Datei speichert lediglich eine Datenstruktur mit Informationen, aber keinerlei Angaben über die Darstellung dieser Daten. Um trotzdem die Information eines XML-Dokuments anschaulich darstellen zu können, wird die Extensible Stylesheet Language („XSL“ 8 ) verwendet. Eine XSL-Datei enthält Formatierungsanweisungen für die Darstellung einer XML-Datei. So kann die Darstellung des Dokuments einfach und schnell geändert werden, ohne dass dabei das Dokument selbst verändert werden müsste. Ausserdem
7 Derzeit aktuelle Version ist XPath 1.0, vgl. http://www.w3.org/TR/xpath 8 Derzeit aktuelle Version ist XSL 1.0, vgl. http://www.w3.org/TR/xsl
- 4 - könnenalternative Darstellungen für das gleiche XML-Dokument bereitgestellt werden. Wichtigster Bestandteil von XSL ist die Extensible Stylesheet Language Transformation („XSLT“). Mit dieser Technik können neben „optischen“ Formatierungen auch komple tte Transformationen der XML-Dokumentstruktur vorgenommen werden. So können mit Hil-fe von XSLT nicht benötigte Daten ausgeblendet werden oder neue Dokumente mit einer vom Quelldokument komplett unterschiedlichen Struktur generiert werden. Hierzu bedient sich XSLT unter anderem der schon erwähnten Technik XPath, um auf die Daten der Que lle zuzugreifen. 9 Des Weiteren stehen umfangreiche Möglichkeiten für Werteabfragen, Schleifen, Variablendeklarationen u.v.m. zur Verfügung.
2.4 Namensräume
Wie schon erwähnt gibt es kaum Einschränkung bei der Gestaltung von XML-Dokumenten. So kann auch die Bezeichnung von Elementen nahezu beliebig erfolgen. 10 Solange ein Dokument ausschließlich für sich allein betrachtet und verarbeitet wird, ist dies auch nicht weiter ein Problem. Ist dies nicht der Fall, kann es allerdings zu Namenskonflikten kommen, z.B. wenn in zwei Dokumenten gleichnamige Elemente existieren, welche unterschiedliche Merkmale bezeichnen. Hier schafft das Konzept der Namensräume („Namespaces“) Abhilfe. Durch die Festlegung eines oder auch mehrerer Namensräume wird ein abgeschlossener Bereich festgelegt (in etwa vergleichbar mit lokalen Variablen), in welchem die Bezeichner der Elemente einmalig sind. Durch die Zuordnung zu einem jeweils eigenen Namensraum können nun auch gleichnamige Elemente eindeutig voneinander unterschieden werden. Es ist ebenfalls möglich innerhalb eines Dokuments mehrere Namensräume zu definieren und sogar innerhalb eines Namenraums einen weiteren Namensraum festzulegen. Die Einzigartigkeit eines Namensraums wird in der Namensraumdeklaration durch den Verweis auf einen URI sichergestellt. Um nun die einzelnen Elemente einem Namensraum zuzuordnen, wird die Vorsilben-Notation verwendet, d.h. jeder Elementbezeichnung wird die Be zeichnung des Namensraums vorangestellt (durch Doppelpunkt getrennt). Um sich viel Tipparbeit zu ersparen und das Dokument übersichtlich zu halten, besteht auch die Möglichkeit der Deklaration eines Default-Namensraums. Diesem Namensraum gehören dann alle Elemente des Dokuments an, sofern sie nicht explizit einem anderen Namensraum zugeordnet werden.
9 Als Beispiel findet sich in Anhang C eine mögliche Stylesheet-Datei („dvdsammlung.xsl“) für das XML-Dokument aus Anhang A. 10 Einschränkungen bestehen im Grunde nur durch geschützte Namen und die Beschränkung der Menge der erlaubten Zeichen.
2.5 Processing Instructions
Processing Instructions („PIs“) sind Verarbeitungshinweise für die das XML-Dokument verarbeitende Applikationen (z.B. Parser). Der Dokumentenkopf ist zum Beispiel eine PI, in der die XML-Version oder der Zeichensatz des Dokuments (also Meta-Informationen) mitgeteilt werden. PIs werden durch Fragezeichen innerhalb der spitzen Klammern definiert.
2.6 Whitespaces
Whitespaces sind nicht sichtbare Zeichen wie Zeilenumbrüche, Tabulatoren, Einrückungen und Leerzeichen. Teilweise sind diese Zeichen nicht Teil des Elementinhaltes sondern dienen nur zur Formatierung eines XML-Dokuments, um dieses für das menschliche Auge besser lesbar zu machen. Siee haben also keinen Informationswert und können bei der Verarbeitung des XML-Dokuments ignoriert werden. Die Entscheidung, ob ein Whitespace ignoriert werden kann oder zu den Nutzdaten gehört, kann der Parser nur durch Hinzunahme einer Grammatik (DTD oder XML-Schema) fällen.
3 XML-Verarbeitung mit SAX
Die Simple API for XML ( „SAX“ 11 ) ist eine weit verbreitete Möglichkeit, XML-Dokumente zu verarbeiten. Dabei ist SAX nicht als konkreter XML-Parser zu verstehen, sondern besteht aus einer Menge von Empfehlungen, welche die Arbeitsweise eines SAX-Parsers beschreiben. Daher ist der SAX-Standard auch nicht beschränkt auf eine bestimmte Plattform oder eine bestimmte Programmiersprache. So existieren für alle gängigen Systemkonfigurationen Parser, die nach dem SAX-Prinzip arbeiten. Die für die Java-Plattform geläufigste SAX-Implementierung ist das Paket „Xerces“ von der Apache Group, welches kostenlos erhältlich ist 12 und auch für die folgenden Be ispiele verwendet wird. SAX wird
11 Derzeit aktuelle Version ist SAX 2.0.2, vgl. http://www.saxproject.org 12 Derzeit aktuelle Version ist Xerces2 2.6.2, vgl. http://xml.apache.org/xerces2-j/
- 6 - tatsächlichvon keiner Organisation explizit unterstützt, ist durch seine weite Verbreitung in der Praxis aber allgemein akzeptiert.
Die Verarbeitung eines XML-Dokuments mit SAX funktioniert nach einem ereignisorientierten Prinzip. Das Dokument wird Schritt für Schritt eingelesen und jedes Mal, wenn der Parser auf ein XML-Konstrukt (Elementanfang oder -ende, konkrete Daten usw.) trifft, wird ein bestimmtes Event ausgelöst, welches dann anwendungsabhängig weiterverarbeitet werden kann. Der XML-Parser arbeitet sich also sukzessiv linear durch das Dokument.
Für folgendes XML-Fragment würden z.B. die u.a. Events ausgelöst werden:
Nachdem ein Event ausgelöst wurde, wird der verwendete Speicher wieder freigegeben, der XML-Parser „vergisst“ also sofort wieder die eingelesenen Daten. Dies ist einer der Hauptgründe für die häufige Verwendung von SAX, da das zu parsende Dokument (im Gegensatz zum DOM-Modell) für die Verarbeitung nicht vollständig im Speicher des Rechners abgelegt werden muss, was insbesondere bei sehr großen Dokumenten problematisch sein kann (z.B. bzgl. Speicherverfügbarkeit oder Verarbeitungsgeschwindigkeit).
3.1 SAX-Interfaces
Die vom SAX-Parser ausgelösten Events müssen nun von der jeweiligen Applikation ve rarbeitet werden. Hierzu ist die Implementierung einer Reihe von Event-Methoden („EventHandler“) notwendig. Diese Schnittstellen zum XML-Parser werden im Paket org.xml.sax bereitgestellt und müssen, genau wie der verwendete Parser, in die Anwendung importiert werden. Die folgende Tabelle zeigt die wichtigsten i n diesem Paket zur Verfügung stehenden Interfaces.
Tab. 3.1: Interfaces im Paket org.xml.sax
Arbeit zitieren:
Stefan Heß, 2004, XML-Verarbeitung mit Java, München, GRIN Verlag GmbH
Dieser Text kann über folgende URL aufgerufen und zitiert werden:
Einbetten
DOI
Potentiale der Old Economy durch E-Commerce und daraus resultierende O...
Geowissenschaften / Geographie - Wirtschaftsgeographie
Magisterarbeit, 139 Seiten
Darstellung der Aufgaben, Inha...
BWL - Beschaffung, Produktion, Logistik
Hausarbeit (Hauptseminar), 29 Seiten
Grundlagen Abschreibungsverfahren: Methodik, Ziele, Probleme
BWL - Rechnungswesen, Bilanzierung, Steuern
Seminararbeit, 38 Seiten
Six Sigma - Prozeßsteuerung bei deutschen Banken
BWL - Unternehmensführung, Management, Organisation
Hausarbeit, 38 Seiten
Stefan Leutloff hat den Text XML-Verarbeitung mit Java veröffentlicht
Stefan Leutloff hat einen neuen Text hochgeladen
Professionelle XML-Verarbeitung mit Word
WordML und SmartDocuments
Manuel Montero Pineda, Jürgen Sieben
Processing XML with Java(tm): A Guide to Sax, Dom, Jdom, Jaxp, and Tra...
Elliote Rusty Harold
Building Web Services with Java: Making Sense of XML, SOAP, WSDL, and ...
Making Sense of XML, SOAP, WSD...
Stephen Graham, Simeon Simeonov, Glen Daniels
0 Kommentare