Einführung in die Informatik II eXtensible Markup Language XML. Die Lingua Franca des Internets und einige ihrer Anwendungsgebiete Prof. Dr. Nikolaus Wulff Information und Dokumente • Aus Anwendersicht findet Datenaustausch, nicht per TCP/IP sondern durch Dokumente statt. • Ein Dokument besteht aus dem eigentlichen Text – der Information –, der (logischen) Struktur und der Formatierung. • Diese werden von den meisten Textverarbeitungssystemen in einem properitäten Dateiformat gespeichert. Format Struktur Dokument Prof. Dr. Nikolaus Wulff Inhalt Informatik II 2 Die MIME-Typen • Zum Dateiaustausch muss deren Typ bekannt sein. • Festgelegt wurden im RFC 2045 die MIME-Typen (Multipurpose Internet Mail Extensions). • MIME-Typen spezifizieren im HTTP Header die Art des ausgetauschten Dokumentes und den Schriftsatz: Content-Type: Haupttyp/Subtyp *(; parameter) • Beispiele: Content-Type: application/pdf Content-Type: text/plain; charset=us-ascii Content-Type: text/html; charset=UTF-8 Content-Type: text/xml siehe die Screenshots Content-Type: image/jpeg von Wireshark HTTP Prof. Dr. Nikolaus Wulff Informatik II 3 Ein einheitliches Datenformat • Einige Datenformate wie MS-Worddokumente oder Adobe pdf-Dateien sind quasi Standards geworden. • Gewünscht wurde eine plattformneutrale, generelle Auszeichnungssprache die beliebig erweiterbar ist. 1950: Hypertext 1986: Standard Generalized Markup Language 1989: HTML 1994: Cascading Style Sheets 1998: Extensible Markup Language 1998: Extensible Style Language Prof. Dr. Nikolaus Wulff Informatik II Entwicklung der Theorie SGML als ISO 8879 (zu schwerfällig...) Entwickelt am CERN XML 1.0 als Standard XSL+XSLT zur Verarbeitung von XML Dokumenten 4 Ein XML Beispiel <bundespraesidenten> <bundespraesident> <amtsperiode von="1959" bis="1969"/> <name> <vorname>Heinrich</vorname> <nachname>Lübke</nachname> </name> </bundespraesident> <bundespraesident> <amtsperiode von="1969" bis="1974"/> <name> <titel>Dr. </titel> <vorname>Gustav</vorname> <nachname>Heinemann</nachname> </name> <bundespraesident> <!-- viele weitere folgen ... --> </bundespraesidenten> Prof. Dr. Nikolaus Wulff Informatik II XML sieht aus wie ein besser lesbares „sauberes HTML“ 5 Strukturierung von XML • XML Dokumente bilden eine hierarchische Baumstruktur mit genau einer Element-Wurzel. • In XML können eigene (sprechende) Markup-Tags / Elemente definiert werden. • Gross- und Kleinschrift wird unterschieden. • Alle Elemente (Tags) müssen geschlossen werden. • Attribute müssen Schlüssel-Wert-Paare enthalten, diese werden in einfache oder doppelte Anführungszeichen gesetzt. • Elemente müssen korrekt verschachtelt werden: <b><i>richtig</i></b> Prof. Dr. Nikolaus Wulff <b><i>falsch</b></i> Informatik II 6 Fehlerfreies XML • XML ist eine Meta-Sprache, mit ihr werden konkrete Sprachen wie (X)HTML oder XSL beschrieben. • XML Dokumente müssen „wohlgeformt“ sein, d.h. allen XML Regeln genügen. • „Gültige“ XML Dokumente werden durch eine Dokumenttyp-Definition (DTD) oder neuerdings zunehmend durch eine XML-Schema Definition (XSD) definiert, die festlegen was in dem Dokument vorkommen darf und was nicht. • Durch diese Definition ist es möglich Dokumente eindeutig automatisch mit einem Parser zu validieren. Prof. Dr. Nikolaus Wulff Informatik II 7 Beispiel interne DTD • Das einfachste wohlgeformte und gültige XMLDokument: <?xml version="1.0" standalone="yes" ?> <!DOCTYPE beispiel [ <!ELEMENT sayhello (#CDATA)> ]> <sayhello> Hello World geht immer... </sayhello> • Die DTD ist direkt innerhalb des Dokuments integriert und beschreibt alle Elemente. • CDATA steht für beliebige Zeichen, PCDATA bedeutet die Zeichen werden geparsed... Prof. Dr. Nikolaus Wulff Informatik II 8 DTD Beispiel <!ELEMENT bundespraesidenten (bundespraesident+)> <!ELEMENT bundespraesident (amtsperiode, name) > <!ELEMENT name (titel*, vorname, nachname)> <!ELEMENT titel (#PCDATA)> <!ELEMENT vorname (#PCDATA)> <!ELEMENT nachname (#PCDATA)> <!ELEMENT amtsperiode EMPTY> <!ATTLIST amtsperiode von CDATA #REQUIRED bis CDATA #REQUIRED > • Alle Elemente der Bundespräsidenten XML Liste sind genau spezifiziert. • Allerdings ist eine DTD wieder in einem eigenständigen zu erlernenden Format geschrieben ... Prof. Dr. Nikolaus Wulff Informatik II 9 XML + DTD Beispiel <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE bundespraesidenten SYSTEM "bundespraesidenten.dtd"> <bundespraesidenten> <bundespraesident> <amtsperiode von="1959" bis="1969"/> <name> <vorname>Heinrich</vorname> <nachname>Lübke</nachname> </name> </bundespraesident> <bundespraesident> <amtsperiode von="1969" bis="1974"/> ... • Deklaration als XML Version 1.0 und Angabe der externen DTD im Systempfad des Dokumentes... Prof. Dr. Nikolaus Wulff Informatik II 10 (X)HTML per DTD • Eine (nicht vollständige) Definition eines gültigen HTML Dokuments könnte so aussehen: <!ELEMENT html (head, body)> <!ELEMENT hr EMPTY> <!ELEMENT br EMPTY> <!ELEMENT p (#PCDATA | p | ul | ol | dl | table | pre | hr | h1|h2|h3|h4|h5|h6 | blockquote | address | fieldset)*> <!ELEMENT dl (dt|dd)+> • Elemente werden innerhalb der Klammern definiert. • Komma erzwingen eine Reihenfolge, das Zeichen | eine Auswahl und + und * beschreiben die Kardinalitäten (1:n) (0:n). Prof. Dr. Nikolaus Wulff Informatik II 11 XHMTL Beispiel • Auch XHTML wird per DTD beschreiben <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C/DTD/ XHML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>XHTML Beispiel</title> </head> <body> <h1>XHTML</h1> XHML als Nachfolger von HTML ist XML konform. <br/> </body> </html> • XHTML ist wohlgeformt und per DTD als gültiges XML Dokument validierbar. • Alle Elemente werden klein geschrieben... Prof. Dr. Nikolaus Wulff Informatik II 12 XML + XSLT • Mit Hilfe von XSL bzw. den entsprechenden XSLT Transformatoren lassen sich XML Dokumente in andere Formate überführen, z.B. von XML nach (x)HTML: XSLT Prozessor XML HTML DTD XSL Prof. Dr. Nikolaus Wulff Informatik II 13 MV(C) mit XML/XSLT • Die XML/XSLT Technologie erlaubt eine ganz neue Form des MV(c) Musters. • Das XML Dokument dient als Datenbasis (Modell). • Per XSLT werden entsprechende Views für die unterschiedlichen Zielplattformen generiert z.B. PDF, XHTML oder WML für wireless Handys. • Es müssen für ein und dasselbe Dokument nur verschiedene XSL Transformationsvorschriften definiert werden. Diese sind auch XML Dateien. • Viele Web-Portale arbeiten mit dieser Technologie. Prof. Dr. Nikolaus Wulff Informatik II 14 Beispiel: Die Lab4Inf Web-Site • Die aktuellen Inhalte (das Modell) der Lab4Inf WebSite sind in XML definiert: <lab4inf> <category id='lectures' name='Lectures'> <mapping name='Informatik I' url='index.php/lecture.cmd?subject=info_1'/> <mapping name='Informatik II' url='index.php/lecture.cmd?subject=info_2'/> <mapping name='Prog. in C' url='index.php/lecture.cmd?subject=prog_in_c'/> <mapping name='Prog. in Java' url='index.php/lecture.cmd?subject=prog_in_java'/> • Hieraus wird dann die HTML Web-Seite generiert... Prof. Dr. Nikolaus Wulff Informatik II 15 Vom XML zum HTML • Die XML-Definition wird als Menuliste angezeigt: Prof. Dr. Nikolaus Wulff Informatik II 16 Simple API for XML • XML Dokumente sind als hierarchischer Baum aufgebaut, der von einem Parser analysiert wird. • Die am häufigsten eingesetzte Methode hierzu ist die Simple API for XML (SAX) , die für verschiedene Programmiersprachen wie Java, C++, PHP etc. implementiert wurde. • Ein SAX Parser verwendet eine sogenannte Callback Schnittstelle, den org.xml.sax.ContentHandler, die vom Parser gerufen wird bei den Ereignissen: – start/endDocument – start/endElement – characters Prof. Dr. Nikolaus Wulff Informatik II 17 SAX mit PHP function startElement($namespaceURI, $localName, $qName, $attributes) { switch($qName) { case ('lab4inf'): break; case ('category'): $id = $attributes['id']; $name = $attributes['name']; $this->item = new Category($id,$name); break; case ('lecture'): $id = $attributes['id']; $name = $attributes['name']; $this->item = new Lecture($id,$name); break; • Auszug aus dem Lab4Inf Configurator in PHP • Ob PHP oder Java, das Prinzip bleibt das Selbe... Prof. Dr. Nikolaus Wulff Informatik II 18 Das Document Object Model • SAX analysiert das Dokument sequentiell im nur Lesemodus, im Gegensatz zum Document Object Model (DOM), das es erlaubt den gesamten DOMBaum im Speicher zu laden und in beliebiger Reihenfolge zu modifizieren. • Die Wurzel ist das org.w3c.dom.Document, eine Spezialisierung der org.w3c.dom.Node Schnittstelle. • Alle Elemente sind daher ebenfalls Knoten des XMLDokumentes und bieten eine Baum-Schnittstelle mit Methoden wie append/removeChild(Node x). • Sowohl SAX als auch DOM sind Bestandteil des JDK ab der Version 1.4. Prof. Dr. Nikolaus Wulff Informatik II 19 XPath • XPath definiert einen Mechanismus, um Teile eines XML-Dokuments zu anzusprechen. – XSLT verwendet XPath um gezielt Element- oder Attributknoten in einem Dokument aufzufinden. • XPath wird nicht in XML ausgedrückt, sondern entspricht eher der Navigation innerhalb eines Dateisystems. • Beispiel alle Namen der Bundespräsidenten: – bundespraesidenten/bundespraesident/name • Bestimmte(r) Bundespräsident(en): – .../bundespraesident/name[child::vorname='Heinrich'] Prof. Dr. Nikolaus Wulff Informatik II 20 XSLT • XSL bietet die Möglichkeit Templates für XML Dokumente zu entwicken und gezielt aufzurufen. <xsl:template match='/bundespraesidenten'> <xsl:apply-templates select='bundespraesident' /> </xsl:template> <xsl:template match='bundespraesident'> Name: <xsl:value-of select='name[vorname="Heinrich"]' /> </xsl:template> • Die match und select Ausdrücke werden mit XPath formuliert und gelten immer relativ zum aktuellen Knoten ('/' ist die Dokumentwurzel). Prof. Dr. Nikolaus Wulff Informatik II 21 Ein Java XSLT Beispiel • Eine (XML) Liste von Definitionen soll in eine HTML Tabelle transformiert werden. • Zur XSLT Transformation werden zwei EingabeDateien benötigt: – Die XML Modell Eingabedatei – Die Datei mit den XSLT Anweisungen – Optional eine DTD bzw. XSD Schema Datei • Das Java Paket javax.xml.transform enthält die wichtigen Klassen für eine XSLT Transformation. Prof. Dr. Nikolaus Wulff Informatik II 22 Das XML Dokument <?xml version='1.0' encoding='ISO-8859-1' ?> <definitions> <definition> <key>Java</key> <value>Eine Programmiersprache</value> </definition> <definition> <key>HTTP</key> <value>Ein TCP/IP basiertes Protokoll</value> </definition> <definition> <key>XML</key> <value>Eine Markup Sprache</value> </definition> <definition> <key>JUnit</key> <value>Ein Testframework</value> </definition> </definitions> Prof. Dr. Nikolaus Wulff Informatik II 23 Ein XMLTransformater import javax.xml.transform.*; public class XMLTransformer { // und weitere Pakete... public void transform(Writer writer, InputStream xml, InputStream xslt) throws TransformerException { TransformerFactory factory = TransformerFactory.newInstance(); Result result = new StreamResult(writer); Source source = new StreamSource(xml); Source trafo = new StreamSource(xslt); Transformer trans = factory.newTransformer(trafo); trans.transform(source, result); } } • Benötigt werden zwei Eingabeströme und ein Ausgabemedium. • Einfacher geht es nicht... Prof. Dr. Nikolaus Wulff Informatik II 24 Die XSLT Transformation <?xml version='1.0' encoding='ISO-8859-1' ?> <xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> <xsl:output method='html' /> <xsl:template match='/'> <html><head><title>XSLT Beispiel</title></head> <body><h1>Tabellenausgabe</h1> <table border='0'> <tr><th>Key</th><th>Value</th></tr> <xsl:apply-templates select='definitions/definition' /> </table> </body></html> </xsl:template> <xsl:template match='definition'> <tr><td> <xsl:value-of select='key' /></td> <td> <xsl:value-of select='value'/></td></tr> </xsl:template> </xsl:stylesheet> Prof. Dr. Nikolaus Wulff Informatik II 25 Die HTML Ausgabe <html> <head> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>XSLT Beispiel</title> </head> <body> <h1>Tabellenausgabe</h1> <table border="0"> <tr> <th>Key</th><th>Value</th> </tr> <tr> <td>Java</td><td>Eine Programmiersprache</td> </tr> <tr> <td>HTTP</td><td>Ein TCP/IP basiertes Protokoll</td> </tr> ... • Aus dem XML Dokument entsteht eine gültige HTML Datei... Prof. Dr. Nikolaus Wulff Informatik II 26 Persistenz per XML • JAXP (Java XML Processing) definiert eine ganze Reihe von APIs zum Verarbeiten von XML Dokumenten mit Hilfe von Java Bibliotheken. • Java Objekte können ihren internen Status als Bytestream per Serialisierung binär in einer Datei oder mit Hilfe von JAXB (Java XML Binding) als XML Dokument abspeichern (bzw. aus dem Dokument als Objekthierarchie wieder aufgebaut werden). • Dies ist nicht so performant wie bei der Serialisierung aber als XML Dokument leicht lesbar und portabel. • Es gibt inzwischen auch für Datenbanken XML Extender... Prof. Dr. Nikolaus Wulff Informatik II 27 Java = XSD + XSLT + XML • Mit Hilfe von XSD und der JAXB API lassen sich Java Klassen generieren (oder aus Java Klassen XSD Beschreibungen). Das Objektmodell kann dann direkt aus einem XML Dokument Ein- und Ausgelesen werden. XSD XAXB Java XML Prof. Dr. Nikolaus Wulff Informatik II 28 XSD für eine Java Klasse <?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:complexType name="FuzzyRule"> <xsd:sequence> <xsd:element name="Description" type="xsd:string" minOccurs="0" maxOccurs="1" /> <xsd:element name="Input" type="FuzzyVariable" minOccurs="1" maxOccurs="unbounded" /> <xsd:element name="Output" type="FuzzyVariable" minOccurs="1" maxOccurs="unbounded" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" /> <xsd:attribute name="enable" type="xsd:boolean" use="optional" /> </xsd:complexType> • Der Schema-Auszug definiert die Klasse FuzzyRule mit den Attributen und deren Kardinalitäten. Prof. Dr. Nikolaus Wulff Informatik II 29 Die generierte Java Klasse // This file was generated by the JavaTM Architecture for XML (JAXB) public class FuzzyRule { @XmlElement(name = "Description") protected String description; @XmlElement(name = "Input", required = true) protected List<FuzzyVariable> input; @XmlElement(name = "Output", required = true) protected List<FuzzyVariable> output; @XmlAttribute protected Boolean enable; @XmlAttribute(required = true) protected String name; • Die Elemente der XSD Beschreibung werden zu Attributen der Klasse und für den XML-(De)Encoder mit Java-Annotations als @XmlElement markiert. Prof. Dr. Nikolaus Wulff Informatik II 30 Daten der Fuzzy Regelbasis <?xml version="1.0" encoding="UTF-8"?> <FuzzyRuleBase name="Beispiel Regeln" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FuzzyRule.xsd"> <FuzzyRule name ="Rule 1"> <Input partition="velocity" variable="slow" /> <Input partition="distance" variable="small" /> <Input partition="asphalt humidity" variable="dry" /> <Output partition="acceleration" variable="neutral" /> </FuzzyRule> <FuzzyRule name ="Rule 2"> <Input partition="velocity" variable="normal" /> <Input partition="distance" variable="small" /> <Input partition="asphalt humidity" variable="dry" /> <Output partition="acceleration" variable="light brake" /> </FuzzyRule> Prof. Dr. Nikolaus Wulff Informatik II 31 XML Nachrichten • XML ist mittlerweile das Format, um Nachrichten auszutauschen. • „Record Layout Identifier“, Segmente und ähnliche Konstrukte gehören der Vergangenheit an. • XML beinhaltet nicht nur die nackte Nachricht, sondern zugleich mit den Auszeichnungen (Markup) die nötigen Informationen, um die Elemente im richtigen Kontext zu verstehen. • Die Markups können für Sender und Empfänger per DDL oder XMLSchema einheitlich und verbindlich festgelegt werden. Prof. Dr. Nikolaus Wulff Informatik II 32 HTTP als Middleware Every DAD needs a MOM • Während für CORBA oder EJB Architekturen geeignete Infrastruktur zur Verteilung benötigt wird, ist für Webanwendungen per HTTP schon fast alles vorhanden. • Ein nicht zu unterschätzender Kostenvorteil! DAD: Distributed Application Development MOM: Message oriented Middleware Prof. Dr. Nikolaus Wulff Informatik II 33 SOAP • XML ist eine reine Auszeichnungssprache zum Austausch von Nachrichten. • XML enthält keine Möglichkeit die Kommunikation zwischen Sender und Empfänger zu initiieren oder zu steuern. • Das Simple Object Access Protokol (SOAP) schließt diese Lücke. • SOAP ist ein XML basiertes Nachrichtenformat, das es gestattet z. B. per HTTP Protokoll Methoden des Servers aufzurufen und mit entsprechenden SOAP Nachrichten zu parametrisieren. Prof. Dr. Nikolaus Wulff Informatik II 34 Ab geht die Post... • SOAP funktioniert wie die Post: – Das Versenden ist unabhängig vom Inhalt nur gesteuert durch die entsprechenden Angaben von Adressat und Adressenten. – Die eigentliche Nachricht wird in den entsprechend frankierten Briefumschlag gesteckt • SOAP erfüllt zwei Aufgaben: – Methodenaufruf per XML basiertem RPC – Datenaustausch per XML basiertem EDI Prof. Dr. Nikolaus Wulff Informatik II 35 SOAP Struktur <?xml version="1.0"?> <s:Envelope xmlns:s="http://www.w3.org/2001/12/soap-envelope"> <s:Header> </s:Header> <s:Body> </s:Body> </s:Envelope> • Ein SOAP Nachricht besteht ähnlich wie HTML aus einem Header und einem Body eingebettet in einen Umschlag (Envelope). Prof. Dr. Nikolaus Wulff Informatik II 36 Beispiel eine SOAP Nachricht <?xml version="1.0"?> <s:Envelope xmlns:s="http://www.w3.org/2001/12/soap-envelop <s:Header> <m:RequestID xmlns:m="http://www.lecture-db.de/soap"> a3f5c109b </m:RequestID> </s:Header> <s:Body> <m:DbResponse xmlns:m="http://www.lecture-db.de/soap"> <m:title value="DOM, SAX und SOAP"> <m:Choice value="1">Informatik</m:Choice> <m:Choice value="2">Datenbanken</m:Choice> </m:title> </m:DbResponse> </s:Body> </s:Envelope> Prof. Dr. Nikolaus Wulff Informatik II 37 Apache SOAP RPC • Ein Call wird mit Parametern per invoke an eine Server URL+URI geschickt. • Der entsprechende Server Aufruf erzeugt einen Response. • Dieser wird als Rückgabewert der invoke Methode an den Client zurückgegeben. Prof. Dr. Nikolaus Wulff Informatik II 38 Web Services • Web Services sind nichts weiter als spezielle Web Anwendungen (i.A. Servlets), die entsprechende Nachrichten entgegennehmen und verarbeiten. • In einer mehrschichtigen Architektur bilden die Web Services lediglich eine dünne Fassade vor bereits existierende Anwendungen, an die die Nachrichten - nach einem eventuellen Transformationsprozess - weiter gereicht werden. • Web Services bieten eine einfache Integrationsmöglichkeit, mit HTTP als Nachrichtenprotokoll, ohne weitere aufwendige Middleware installieren zu müssen. Prof. Dr. Nikolaus Wulff Informatik II 39 EAI Herausforderungen für WS • Um Anwendungsintegration mit Web Services zu erreichen gilt es zwei generelle Probleme zu lösen: – Moderne Anwendungen arbeiten objektorientiert, Altanwendungen arbeiten transaktionsorientiert mit entsprechenden Copy-Strecken als Structs. Die SOAP/XML Nachrichten müssen in entsprechende Formate der Anwendung transformiert werden. – Altanwendungen sind nicht derart modular aufgebaut, dass an beliebiger Stelle Methodenaufrufe erfolgen können. Entsprechende Slots müssen eingebaut werden werden. Prof. Dr. Nikolaus Wulff Informatik II 40 UML und Web Services • Vernünftiger Weise werden die entsprechenden Anpassungen und Services in UML modelliert. • Die entsprechende Web Service Schnittstelle und die Nachrichten werden mit der Web Service Description Language (WSDL) deklariert. • WSDL ist die Schema Definition für WS. • Es zeigt sich jedoch, das SOAP/XML Nachrichten nicht adäquat in UML abgebildet werden können. • Objekte werden meist mit UML modelliert und deren Status muss dann in ein XML Format transformiert werden. Prof. Dr. Nikolaus Wulff Informatik II 41 Service Fassade • Die eigentlichen SOAP Nachrichten werden hinter einer Abstraktionsschicht verborgen. • Clients verwenden eine Proxy Instanz, welche entsprechende parametrisierte Methoden anbietet und die Nachrichten vor dem Versandt aufbereitet. • Serverseitig werden die XML Nachrichten wieder ausgepackt und in Objekte der jeweiligen Zielplattform transformiert. • Es gilt ein Optimum zwischen Nachrichtengröße und Häufigkeit des Nachrichtenversands zu finden Prof. Dr. Nikolaus Wulff Informatik II 42 Ein- und Auspacken... • Axis ist eine SOAP Implementierung für Web Services. • (De) Marshalling ist bei Client und Server symmetrisch aufgebaut Prof. Dr. Nikolaus Wulff Informatik II 43 SOAP und Web-Services • Auch das Simple Object Access Protokol (SOAP), zum Remote-Aufruf entfernter Dienste bedient sich des XML Formats als Aufsatz auf HTTP. • Web-Services sind Dienste die per XML/SOAP Datenaustausch über TCP/IP aufgerufen werden. • Meist wird mit XSLT entsprechender „Glue-Code“ generiert, um Methoden (der Java Objekte) per HTTP Protokoll ansprechen zu können. • Es erscheint so, als lägen diese Objekte im lokalem Adressraum der eigenen virtuellen Maschine. • Lediglich das Laufzeitverhalten ist anders... Prof. Dr. Nikolaus Wulff Informatik II 44 Weitere XML Beispiele • Aktuelle News-Feeds, die per Rich Site Summary bzw. Really Simple Syndication (RSS) abonniert werden, sind XML basierte Dienste. • Viele Build-Skripte, wie z.B. für Ant oder Maven, basieren auf XML Dokumenten. • Deployment Deskriptoren für Web-Anwendungen oder Java Enterprise Applikationen werden in XML verfasst. • XML eignet sich, um Betriebssystem unabhängig und und sprachneutral Nachrichten auszutauschen oder Dienste verteilt aufzurufen. Prof. Dr. Nikolaus Wulff Informatik II 45