Akadia Information Technology |
||
René Steiner, Akadia AG, Information Technology,
Arvenweg 4, CH-3604 Thun Phone: +41 33 335 86 22 / Fax: +41 33 335 86 25 / EMail: rene.steiner@akadia.com Einleitung XML findet mehr und mehr Verwendung in unterschiedlichsten Applikationen zur standardisierten, dateibasierten Speicherung und Übertragung von Daten. Von dieser plattformübergreifenden Datenbeschreibungssprache wird ein grosser wirtschaftlicher Nutzen in B2B (Business-to-Business) Anwendungen erwartet. Eine grosse Anzahl zusätzlicher API's und Tools stehen von verschiedensten Herstellern zur Verfügung. In diesem Artikel sind grundsätzliche Erklärungen ausgewählter Themen zu finden. Ergänzend zu unserem Artikel existieren viele weitere Möglichkeiten, die in der Literatur und in Handbüchern detailliert erläutert werden. |
Inhalt Unser Artikel behandelt die folgenden Themen:
XML steht für eXtensible Markup Language und beschreibt den Inhalt eines Dokumentes. Eine XML Datei besteht im wesentlichen aus einzelnen Datenfeldern, zum Beispiel aus den Feldnamen Strasse und Ort in einer Adresse, dazu den Strassennamen und die Ortschaft selbst als Daten. Im Gegensatz zu XML beschreibt HTML die Darstellung von Daten. In HTML werden beispielsweise Absätze <p>, Fonts <font> und Typen von Überschriften <h2> definiert. Mit XML wird der Inhalt von der Darstellung getrennt. Ein XML Client kann die Daten darstellen, sofern dies erwünscht ist. Die Möglichkeiten dazu werden später in diesem Artikel aufgezeigt. XML ist ein plattformunabhängiger Standard des W3C Konsortiums, aktuell ist die XML Version 1.0, zur Zeit auch die einzige, die bisher herausgegeben wurde. XML ist ein Teil der Standard Generalized Markup Language SGML. SGML wurde durch ISO standardisiert und entstand bei IBM zur Formatierung von Dokumenten. SGML ist sehr umfangreich, bei XML, als Subset von SGML, hat man sich auf die wesentlichen Eigenschaften von SGML beschränkt. Aufbau und die Struktur von XML Eine Kundenbestellung als Beispiel soll die wesentlichen Teile erläutern, diese könnte von einem externen System transferiert worden sein. Es handelt sich um eine reine Datenbeschreibung, es fehlen jegliche Anweisungen zur Darstellung. XML Kundenbestellung: Order.xml <?xml version="1.0"
encoding="UTF-8"?> (1) Processing Instruction (Zeile 1) <?xml version="1.0" encoding="UTF-8"?> Die Bestellung beginnt mit der Processing Instruction, welche die XML Version bekannt gibt, in welcher das Dokument verfasst wurde. Solche Instruktionen erkennt man am Fragezeichen zu Beginn und am Ende der Zeile. Document Type (Zeile 2) <!DOCTYPE order SYSTEM "Order.dtd" [ Der Document Type zeigt, dass eine Datei "Order.dtd" existiert, welche die Typendefinitionen enthält, "Order.dtd" wird im folgenden Abschnitt beschrieben. Mittels: auml "ä" wird der Umlaut ä definiert, dieser muss Teil des Unicode UTF-8 Zeichensatzes sein, den wir hier verwenden. Es existieren verschiedene Standards zur Zeichendarstellung, Unicode UTF-8 und UTF-16 werden am meisten verwendet. Wir verwenden im Beispiel hier nicht UTF-16, da dies von den heute zur Verfügung stehenden Browsern nicht unterstützt wird. Body (Zeile 5) <order> Nun beginnt die eigentliche Bestellung, nach dem Kommentar <!-- Auftragsnummer --> folgt Entity (Zeile 9) <article>324-67511</article> 324-67511 wird als Character Data bezeichnet und stellt die Artikelnummer dar. <article> und </article> sind unsere Markup Tags, welche die Daten beschreiben. Einem Start Tag <article> muss immer ein End Tag </article> folgen. Ein einzelnes Tag muss mit einem Schrägstrich abgeschlossen werden, beispielsweise <br/>. Das Datenmodell wird durch eine Document Type Definition DTD in der Datei "Order.dtd" beschrieben. Microsoft hat XML Schemas als neue Technologie eingeführt, dies soll aber an dieser Stelle wegen dem fehlenden Standard nicht verwendet werden. Inhalt von "Order.dtd" <!ELEMENT order (id, item+)+> Alle Elements sind als Parsed Character Data PCDATA deklariert. CDATA hingegen wird vom Parser nicht auf Tags untersucht. Auf die Häufigkeit und Existenz kann man Einfluss nehmen, wie Zeile 3 zeigt: <!ELEMENT item (article, name?, number+, (style | manufacturer*)+)> Ein nachgestelltes " ? " bestimmt, dass dieses Element genau einmal oder gar nicht vorhanden sein darf. Ein " + " dass dieses Element einmal oder mehrmals vorhanden sein muss. Ein " * " hingegen erlaubt eine beliebige Anzahl des Elements oder auch keines. Wird keines der beschriebenen Zeichen nachgestellt, so muss das Element genau einmal vorhanden sein. Mit " | " werden Elemente einer Liste getrennt, die zur Auswahl stehen. Verarbeitung von XML mit einem Parser durch Oracle SAX API für Java Verwendet man XML in einem Programm, so spricht man von einer XML Application. Neben eigenen Applikationen sind Browser, welche die XML Darstellung unterstützen und XML Entwicklungswerkzeuge typische XML Applications. In allen Anwendungen findet ein XML Processor Verwendung. Seine Aufgabe ist es, Dokumente zu lesen, zu verarbeiten und zu schreiben. Ein XML Processor verwendet einen XML Parser, um die Struktur des Dokuments zu analysieren. Die Struktur muss konsequent eingehalten werden, dies garantiert eine hohe Parsing Qualität. Es gibt verschiedene Möglichkeiten XML zu erzeugen und zu lesen, zwei davon sind das
In diesem Artikel soll eine einfache Möglichkeit mit Java und dem Oracle SAX API vorgestellt werden. Das SAX API ist weniger speicherintensiv dafür aber langsamer als DOM. Java findet in Applikationen immer mehr Verwendung und soll auch in unserem Beispiel benutzt werden. Beispiel Kundenbestellung In unserem Beispiel "Kundenbestellung" wird ein XML Parser im eigenen Java Code eingebettet. Sämtliche benötigten Komponenten sind nachfolgend aufgeführt.
Installation JDK 1.3 Der Download des JDK 1.3 ist sehr gross (30,916,766 Bytes), die Installation ist einfach und wird unter http://java.sun.com/j2se/1.3/install-windows.html detailliert beschrieben. Für unser Beispiel "Kundenbestellung" wurde JDK 1.3 unter D:\Jdk1.3 installiert. Dieser Pfad muss allenfalls für Ihr System angepasst werden. Installation Oracle XML Parser Java Der Download erfolgt direkt von Technet oder von unserer Site (siehe obige Links). Das ZIP-File wird beispielsweise in D:\XMLParser entpackt. Parsen der Kundenbestellung Die Datei "XMLParser.java" enthält den Java Code mit dem eingebetteten Oracle XML Parser. In unserem Beispiel wird die XML Datei "Order.xml" eingelesen, geparst und anschliessend werden diverse Status Meldungen ausgegeben. In einer konkreten Anwendung könnten die gelesenen Daten nun via JDBC in eine Bestellungsdatenbank geschrieben werden. Code der Kundenbestellung: XMLParser.java import java.io.*; return new URL("file", "", path); Compilieren der Kundenbestellung mittels Batchdatei: compile.bat D:\Jdk1.3\bin\javac -classpath ".;D:\Jdk1.3\src.jar; Ausführen der Kundenbestellung mittels Batchdatei: run.bat D:\Jdk1.3\bin\java -classpath ".;D:\Jdk1.3\jre\lib\rt.jar; Output der Kundenbestellung setDocumentLocator Darstellung
von XML durch Cascading Style Sheets CSS Möchte man XML Dokumente darstellen, so gibt es zwei Möglichkeiten:
CSS kann sowohl für reine HTML- wie auch für XML-Dokumente verwendet werden. CSS wird heute von vielen Browsern unterstützt. XSL ist mächtiger und transformiert vor der Darstellung XML zu HTML. Es existieren programmähnliche Konstrukte wie Sortieren, Filtern und Suchen. Zur Zeit unterstützen Microsoft Internet Explorer 5 und Netscape Communicator 6 die Darstellung von XML. Die Darstellungsart und Qualität ist stark vom Browser abhängig. Cascading Style Sheets CSS Als erstes ein CSS Beispiel. Wir finden die einzelnen XML Entities wie beispielsweise id, item, article wieder. Dazu Informationen über die gewünschte Darstellung. Die XML-Datei "Order.xml" referenziert mittels href="Order.css" die CSS-Datei "Order.css". Klicken Sie hier, um die "Kundenbestellung" in ihrem Browser anzuzeigen. Soll unsere "Kundenbestellung" mittels Cascading Style Sheets durch einen Browser angezeigt werden, so muss die folgende Zeile in der XML-Datei "Order.xml" hinzugefügt werden: <?xml-stylesheet type="text/css" href="Order.css"?> Datei "Order.css": id { eXtensible Style Language XSL Bei XSL erscheinen HTML Tags, die zur Transformation notwendig sind. Soll unsere "Kundenbestellung" mittels eXtensible Style Language XSL durch einen Browser angezeigt werden, so muss die folgende Zeile in der XML-Datei "Order.xml" hinzugefügt werden. Klicken Sie hier, um die "Kundenbestellung" in ihrem Browser anzuzeigen. <?xml-stylesheet type="text/xsl" href="Order.xsl" ?> Mit der Schleife <xsl:for-each select="order/item"> über alle Daten innerhalb order und item werden die Daten gelesen und mit value-of select angesprochen. Durch XML Namespaces XMLNS können gleiche Bezeichner in verschiedenen Namespaces wiederverwendet werden. Wir benutzen hier die Standard Bezeichner aus dem XML Namespace. Die Browser kennen diesen URL und machen keinen Download von irgendwelchen Informationen. Als Bezeichner wählen wir xsl und referenzieren deshalb Tags über diesen Bezeichner <xsl:value-of select="number"/> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> Datei "Order.xsl" <?xml version="1.0"?> XML basiert auf einem einfachen Ansatz, ASCII Dateien mit Tags zu versehen. Die Tags haben eine bestimmte Bedeutung und können interpretiert werden. Die Interpretation wird sehr strikte gehandhabt und sollte frei von herstellerabhängigen Erweiterungen bleiben. Dies ermöglicht ein plattformunabhängiges Arbeiten und stärkt XML auf seinem Erfolgskurs. XML hat bereits eine breite Unterstützung von verschiedenen Herstellern erhalten, darunter auch Oracle. Es stehen eine grosse Anzahl verschiedenster Produkte zur Verfügung, welche bei der Entwicklung helfen und diese vereinfachen. Die vielen Zusatzprodukte machen XML zu einem mächtigen Werkzeug, welches zur Lösung verschiedenster Anwendungen herangezogen werden kann.
Weitere Informationen René Steiner, Akadia AG, Arvenweg 4, CH-3604 Thun, |