XML

XML (http://www.xml.org, http://xml.apache.org) ist eine Technologie zur Darstellung, Verarbeitung und Transformation von Objekt-Daten und anderen strukturierten Daten.

Für jeden Sachverhalt, z. B. den Sachverhalt Adresse, lassen sich entsprechende Daten definieren, deren Struktur in einer Document Type Definition (Dateiextension .dtd) oder Schema-Definition (Dateiextension .xsd) hinterlegt sind. Solche XML-Formate (eigentlich spezielle XML-Sprachen) sind sehr ähnlich den physischen und logischen Dateien auf iSeries oder den Tabellen von SQL einschließlich den DDS bzw. SQL DDL Tabellendefinitionen, nur dass deren Struktur nicht auf Records beschränkt sind, sondern OO-gemäß Baumstrukturen darstellen.

So könnte das die Datei Adresse.xml aussehen:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!
DOCTYPE Adresse SYSTEM "Adresse.dtd" >
<
Adresse>
  <Anrede>Leitwolf</Anrede>
  <Name>
   <Vorname>Wolfgang</Vorname>
   <Mittelname>W.</Mittelname>
   <Nachname>Wolf</Nachname>
  </Name>
  <Lokation>
   <Land>DE</Land>
   <PLZ>38448</PLZ>
   <Ort>Wolfsburg</Ort>
   <Strasse>Wolfssteig</Strasse>
   <Nummer>99</Nummer>
  </Lokation>
  <Bemerkung>Wolfshöhle</Bemerkung>
</
Adresse>

Die Schema-Definition wird durch die Schema-Definitionssprache, eine XML-Sprache für den Sachverhalt Schema-Definition) beschrieben. Die zu Adresse.xml gehörende Schemadefinition  Adresse.xsd sieht dann etwa so aus:

<?xml version="1.0" encoding="ISO-8859-1"?>
<
xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <xsd:element name="Adresse">
       <xsd:complexType>
           <xsd:sequence>
               <xsd:element ref="Anrede"/>
               <xsd:element ref="Name"/>
               <xsd:element ref="Lokation"/>
               <xsd:element ref="Bemerkung"/>
           </xsd:sequence>
       </xsd:complexType>
   </xsd:element>
   <xsd:element name="Anrede" type="xsd:string"/>
   <xsd:element name="Bemerkung" type="xsd:string"/>
   <xsd:element name="Land" type="xsd:string"/>
   <xsd:element name="Lokation">
       <xsd:complexType>
           <xsd:sequence>
               <xsd:element ref="Land"/>
               <xsd:element ref="PLZ"/>
               <xsd:element ref="Ort"/>
               <xsd:element ref="Strasse"/>
               <xsd:element ref="Nummer"/>
           </xsd:sequence>
       </xsd:complexType>
   </xsd:element>
   <xsd:element name="Mittelname" type="xsd:string"/>
   <xsd:element name="Nachname" type="xsd:string"/>
   <xsd:element name="Name">
       <xsd:complexType>
               <xsd:element ref="Vorname"/>
               <xsd:element ref="Mittelname"/>
               <xsd:element ref="Nachname"/>
           </xsd:sequence>
       </xsd:complexType>
   </xsd:element>
   <xsd:element name="Nummer" type="xsd:string"/>
   <xsd:element name="Ort" type="xsd:string"/>
   <xsd:element name="PLZ" type="xsd:string"/>
   <xsd:element name="Strasse" type="xsd:string"/>
   <xsd:element name="Vorname" type="xsd:string"/>
</
xsd:schema>

XML-Daten können in allen gängigen Sprachen verarbeitet werden, auch in ILE RPG, wo der C++ Parser benutzt wird. Am einfachsten und leistungsfähigsten ist das Parsen in Java mit dem Apache Referenz-Parser Xerces und vielen weiteren XML API. Das Xerces erweiternde IBM Produkt ist XML4J.

Beim Parsen gibt es zwei Verfahren:

  • gemäß SAX (Simple API of XML):
    Das Dokument wird sequentiell durchlaufen und die Exits an jeweils Beginn, Body und Ende der Knoten ausgeführt. Dies entspricht sehr gut dem RPG Zyklus.
  • gemäß DOM (Document Object Model):
    Das Dokument wird in den Hauptspeicher geladen und programmgesteuert per Pfad-Definitionssprache XPATH verarbeitet.

XML-Daten können aber auch transformiert werden in andere XML-Formate (so wird EDI mit XML zum Kinderspiel!), XHTML (HTML 4 als XML), WML, PDF, RTF, Torten- und Balkendiagramme, Barcode, Braille-Schrift, SQL-Tabellendaten usw.. Das Prinzip ist bei iSeries mit den Display und Printer Files schon altbekannt, mit XML allerdings unendlich leistungsfähiger.

Die Transformationsvorschriften sind mit XML beschrieben. Sie werden von entsprechenden Prozessoren verarbeitet, von denen der Referenz-Prozessor Xalan aus dem Apache Projekt der bekannteste ist. Xalan wird durch das IBM Produkt LotusXSL erweitert.

Eine solche Transformationsvorschrift, ein so genanntes Stylesheet, für Adresse.xml könnte etwa so aussehen:

<?xml version="1.0" encoding="UTF-8"?>
<
xsl:stylesheet
  
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  
version="1.0"
  
xmlns:xalan="http://xml.apache.org/xslt">
<
xsl:output method="xml" encoding="ISO-8859-1"
  
indent="yes" xalan:indent-amount="2"/>
<
xsl:strip-space elements="*"/>
  <xsl:template match="/">
   <xsl:apply-templates select="/Adresse"/>
  </xsl:template>
  <xsl:template
     match="*|@*|comment()|
           processing-instruction()|text()"
>
   <xsl:copy>
     <xsl:apply-templates select="*|@*|comment()|
                 processing-instruction()|text()"
/>
   </xsl:copy>
  </xsl:template>
</
xsl:stylesheet>

Für das Editieren und auch Generieren der verschiedensten XML-Dateien gibt es diverse Tools am Markte. Eine fast vollständige Sammlung der außerordentlich leistungsfähigen IBM Tools ist in WSAD bzw. WDSC enthalten.

XML als Technologie von Beschreibungssprachen und Transformationsvorschriften für objektorientierte Daten findet inzwischen eine breite Verwendung in der DV, besonders in Verbindung mit der Java Technologie. Hier eine “kleine” Auswahl von Anwendungsmöglichkeiten:

  • Formatierungsfreie Dateninhaltsbeschreibung beliebiger Daten, insbesondere jedoch objektorientierter Daten (Trennung von Daten und deren Formatierung, von iSeries wohlbekannt)
  • Formatierungsvorschriften der v. g. formatierungsfreien Daten
    • Formatierung in allen möglichen Formaten
    • Formatierung dynamisch “on the fly”
    • Formatierung braucht nicht über das Web übertragen zu werden
    • Konsument kann Formatierung bestimmen
  • Browser-Anzeigesprachen (XHTML, WML)
  • Konfigurationsdaten von Tools (z. B. WebSphere Application Server)
  • Projekt-Metadaten von Entwicklungsumgebungen, z. B. WSAD, WDSC
  • Kommunikationsprotokolle und Beschreibungssprachen für Web Services
  • OO-Daten-Interface für objektrelationale Datenbanken (XML Erweiterungen für DB2 UDB)

UBHartung berät Sie über die Einsatzmöglichkeiten von XML und realisiert dies in dem von Ihnen gewünschten Umfang, ggf. zusammen mit Ihren Entwicklern.

[Willkommen] [Das Unternehmen] [Produkte & Services] [Sachgebiete] [Anwendungsmigration] [Refacing] [Java] [EGL] [XML] [RPG] [DB2 UDB] [Entwicklungs-Tools] [Application Server] [Webanwendungen] [Web Services] [Leistungs-Übersicht] [Partner & Referenzen] [Publikationen] [Kontakt]