Java und XML Seminarbeitrag von Ralph-Peter Noll 22. Januar 2001 Gliederung 1. 2. 3. 4. 5. Grundlagen XML und Java Parsing in Java Transformationen Datenaustausch Tools 1. Grundlagen XML (Extensible Markup Language) ? Regelsystem zur Definition von HTMLähnlichen, formal verifizierbaren Syntaxen für jede Art von strukturierten Daten Java ? OO-Sprache, setzt in akzeptabler Weise folgende Ansprüche um: einfach, objektorientiert, robust, sicher, portabel, performant (...) XML in 7 Punkten XML ist ein Verfahren, strukturierte Daten in Textdokumente zu verpacken. XML sieht zwar aus wie HTML, ist aber anders. XML ist Text, wird aber normalerweise nicht von Menschen gelesen. XML umfaßt eine ganze Sammlung von Technologien. XML ist ausführlich, aber das ist kein Problem. XML ist neu, aber nicht zu neu. XML ist kostenlos, plattformunabhängig und weit verbreitet. XML Beispiel <order> <customer>Bob</customer> <part>Anvil <id>982362</id> <quantity>15</quantity> </part> </order> Java Objektorientierte Sprache C/C++ Syntax unter Verzicht auf fehlerträchtige Merkmale interpretiert (ggf. dynamisch optimiert) plattformunabhängig modern: netzwerk-/weborientiert, multithreaded, enthält Sicherheitsmechanismen Häufigste Anwendungen der Kombination Konverter XML nach XML, HTML, PDF... XML zum Datenaustausch (Stichwort eCommerce, B2B) Datenpersistenz mit XML (neue „einfache“ Dateiformate) Vorteile der Kombination XMLJava Portabilität, Allgemeinheit Standardisierte Programmier-Interfaces mit austauschbaren Implementationen Netzwerkorientierung standardisierter Datenaustausch mit anderer Software leichte Erweiterbarkeit um Web-Interface Suns XML-Tools als neuer Bestandteil der ‚Java Plattform‘ weit verbreitet 2. Parsing SAX - Ereignisgesteuertes Parsen DOM - Dokument-Baum, sprach-unabhängig JAXP - SAX + DOM + Ergänzungen JDOM - DOM erweitert, für Java optimiert SAX (Simple API for XML) Ereignisgesteuerter Ansatz: Parser liest sequentiell den Eingabestrom Prüfung auf Korrektheit der Eingabe Aufruf von Callback-Methoden bei bestimmten Ereignissen Ziel der Standardisierung solcher Parser: Austauschbarkeit der Parser geringe Lernerfordernisse, Wissenstransfer SAX Interfaces Parser DocumentHandler AttributeList ErrorHandler Locator DTDHandler EntityResolver SAX Version 2 Neuerungen Unterstützung von Namespaces. Filterung erweiterte Parsersteuerung Diskussion von SAX Vorteile: einfach, effizient bzgl. Speicher und Rechenzeit geeignet für große Datenmengen geringer Overhead bei Verarbeitung eines geringen Anteils der Daten Nachteile: kein Mechanismus zum Schreiben von XML spezifiziert DOM (Document Object Model) Ansatz: Erstellung eines baumförmigen Modells der Dokumentstruktur (XML oder HTML) Auswertung und Manipulation dieser Struktur über Methoden der Objekte im Baum Sammlung von Klassen („Interfaces“), die im Baum verwendet werden DOM Interfaces Node (mit Name, Typ, Wert, Kontext im Baum) Document Element Attribute CharacterData Entity, EntityReference Hilfsklassen Diskussion von DOM Vorteile: einheitlicher Zugriff in verschiedenen Sprachen gezielter und schneller Zugriff geringerer Programmieraufwand als bei SAX besser geegnet zur Generierung dynamischen Inhalts Diskussion von DOM (2) Nachteile: Schreiben von XML nicht enthalten automatisches Durchschreiten des Baumes nicht enthalten in Corba-IDL spezifiziert, Java-API ausgeschlossen konsequente Baumorientierung umständlich zunächst hoher Overhead für Baumerstellung DOM Level 2 Neuerungen Stylesheets Views Range Traversal Events Detailverbesserungen , z.B. bessere Suchfunktionen JAXP (Java API for XML Parsing) „Komplettlösung“ für die meisten Java-XMLProjekte Komponenten: Parser (namentlich SAX 1.0) Objektmodell (DOM Level 1) einheitliche Schnittstellen zur Erzeugung von Objekten (Factories) JAXP 1.1 mit XSL, SAX 2 und DOM 2 ‚available soon‘ JDOM (Java Document-Object Model) Ziel: kompaktes API, das nur die Stärken von SAX und DOM vereint kann auch auf vorhandenen SAX und DOM Parsern aufsetzen Ausgabe von XML möglich 3. Transformation als Anwendung häufige Anwendung: on-the-fly Generierung von Webseiten Probleme: Effizienz Zielformate (HTML-Versionen, XML etc...) dynamische Inhalte Transformation mit SAX und DOM SAX Ausgabe während Scanner-Durchlauf, einfache Transformationen möglich DOM Parsing, Aufbau eines Parsebaums Manipulation dieses Baums rekursive Generierung anhand Dokumentstruktur XSL (Extensible Stylesheet Language) Stylesheet-Sprache für XML, besteht aus XSLT: Transformationsprache XML nach XML XSL-FO: XML-Vokabular für Formatierungen Java-Unterstützung JAXP 1.1, diverse Tools JSP und Java Servlets Ansatz: Java Programm läuft im Server Servlet Java-Programm aus JSP-Dokument generiert Integration in XML über ‚Processing Instructions‘ Dynamic Content Processing (DCP): Manipulationen auf DOM-Objekten vor der Transformation 4. Datenaustausch als Anwendung Begriff Enterprise Application Integration (EAI) Begriff Electronic Data Interchange (EDI) SOAP und JAXM XML-RPC Begriffe EDI und EAI EAI (Enterprise Application Integration) Abstrakter betriebswirtschaftlicher Oberbegriff für betriebswirtschaftlich geprägte Vorgänge der Kopplung vorhandener Anwendungen und Integration in neuen Anwendungen EDI (Electronic Data Interchange ) System zur Festlegung von normierten Formaten für den Austausch von Daten zwischen kommerziellen Datenverarbeitungsprogrammen (Stichwort B2B) zunehmend über das Internet SOAP und JAXM (Simple Object Access Protocol, Java API for XML Messaging) Ziel: Austausch strukturierter, typisierter Daten über Standardprotokolle wie HTTP, FTP, SMTP mittels ‚einfacher‘ Mechanismen. Robustheit, schnelle Entwicklung Bestandteile des W3C Protokolls SOAP: Nachrichtenformat: Envelope, Header, Body in XML Kodierung / Serialisierung von Typen und Klassen RPC Konventionen für remote Prozeduraufrufe JAXP ist ein konkurrierender Standard von Sun mit stärkerer Ausrichtung auf eBusiness. 5. Tools Parser XSLT-Prozessoren sonstige Java-XML-Tools Parser Apache XML Parser ‚Xerces‘ IBM XML Parser ‚ XML4J‘ Oracle XML parser Sun XML parser (s.o.) XP - freier XML parser von James Clark XSLT Prozessoren Apache XML Prozessor ‚ Xalan‘ (Java und C++) Lotus LotusXSL, auf dem Xalan aufbaut XT - freier XSLT-Prozessor von James Clark's Sun XSLT-to-Java Compiler sonstige Java XML Tools IBM XML + Web Services Entwicklungsumgebung Apache Cocoon und Xang - Framework zur Generierung dynamischer Webseiten aus XML mit Java und Javascript 6. Ausblick JAXB (API for XML Data Binding): direktes Mapping von XML-Strukturen auf Java-Klassen Ziel: keine Parser mehr verwenden, sondern direkt XML-Schemata als Java-Klassen einbinden. Letzter fehlender Baustein von Suns JAX (Java API for XML) bestehend aus JAXP, JAXM und JAXB