XML - Erweiterbare Beschreibungssprache

Informationen in lesbarer Form

Der Austausch von Informationen erfordert auch auf elektronischem Weg eine gegenseitige Vereinbarung über die Interpretation der Informationen zwischen Sender und Empfänger. Ansonsten wird eine versendete Information beim Empfänger nicht verstanden und erzeugt nicht die gewünschte bzw. keine Wirkung.

Die technischen Einschränkungen (Speicherplatz, Übertragungskapazitäten) führten in der Vergangenheit oft zu schwer verständlichen Formen des Informationsaustauschs, da zahlreiche Abkürzungen und Codierungen verwendet wurden. Mit der zunehmenden Vernetzung in und zwischen den Unternehmen (unterstützt durch Konzepte wie SOA) und der Verfügbarkeit von Breitband-Technologie wuchs das Bedürfnis von einfacheren Beschreibungssprachen für den Daten- und Informationsaustausch.

Als tragfähiger Lösungsansatz wurde «XML» entwickelt und international standardisiert. Die Sprach-Definition XML bedeutet «Extended Markup Language». Auch XML basiert - wie HTML - auf SGML-Konzepten.

Der Grundgedanke von XML liegt in der Strukturierung von Informationen bzw. in der klaren Trennung von Information und Gestaltungs- / Anzeige-Anweisungen. Dabei sind XML-Dokumente für den Menschen aufgrund ihrer Struktur und den verwendeten «Tags» (Strukturelemente) gut lesbar.

Trennung von Inhalt und Gestaltung

In XML können die Anwender selbst Strukturelemente definieren, daraus entstehen dann eigene, spezielle «HTML-Dialekte». XML wird auch auf lange Zeit die Sprache HTML nicht verdrängen sondern allenfalls ergänzen.

Ein Hauptproblem der Seitenbeschreibungssprache HTML besteht darin, dass ein HTML-Dokument nur über sogenannte META-Tags oder Kommentare Informationen über den Inhalt aufweisen kann. Es existieren keine HTML-Tags (Befehle) welche den Inhalt eines Dokumentes oder Teile davon klassifizieren.

Die Suche nach Informationen über Suchmaschinen wird dadurch stark erschwert, ein Beispiel verdeutlicht dies: Die Suche nach einem Gemälde von  Vincent van Gogh das eine Vase mit Steinen beinhaltet mit einer Suchmaschine läuft wie folgt ab:

  • Starten der Suchmaschine (Beispiel: http://www.google.ch)
  • Eingabe des Suchbegriffes: Vincent van Gogh +Vase +Sonnenblume +Oelbild

Die Suchmaschine listet Suchergebnisse mit rund 42'000 Einträgen (Dezember 2011) aus Prospekten, Online-Shops, News-Groups usw. auf. Durch die UND-Verknüpfung (+) kann erreicht werden, dass nur Ergebnisse angezeigt werden, welche alle Stichworte enthalten.
  • Suchergebnisse im Web mit rund 42'000 Treffern in HTML-Dokumenten
Die Suchmaschine kann in HTML somit nur nach den Stichworten suchen, mit Hilfe von XML können nun Seiteninhalte strukturiert und qualifiziert werden:

<?xml version="1.0" ?>
<AUCTIONBLOCK>
  <ITEM>
    <TITLE>Sonnenblumen in Vase</TITLE>
    <ARTIST>Vincent van Gogh</ARTIST>
    <DIMENSIONS>20x30 cm</DIMENSIONS>
    <MATERIALS>Oel auf Leinwand</MATERIALS>
    <YEAR>1888</YEAR>
    <DESCRIPTION>Stilleben</DESCRIPTION>
    <PREVIEW-SMALL src="12sonnenblumen_klein.jpg" width="300" height="194" alt="Sonnenblumen in Vase"/>

  <BIDS>
    <BID>
      <PRICE>6000</PRICE>
      <TIME>3:02:22 PM</TIME>
      <BIDDER>Chris</BIDDER>
      <TIMESTAMP>1307</TIMESTAMP>
    </BID>

    <BID>
      <PRICE>5700</PRICE>
      <TIME>2:58:42 PM</TIME>
      <BIDDER>John</BIDDER>
      <TIMESTAMP>1315</TIMESTAMP>
    </BID>
  </BIDS>

<TIMESTAMP>1315</TIMESTAMP>
</ITEM>
</AUCTIONBLOCK>

Dieses Beispiel zeigt eine XML-Seite von einem Auktionshaus mit 2 Bietern (Chris und John). Diese XML-Definitionen sind frei von Formatierungen oder Darstellungen, es wird der Inhalt des Dokuments klassifiziert bzw. in einzelne Attribute unterteilt. Die Gestaltung erfolgt mit Hilfe von Style-Sheets in der XSL-Sprache, in der XML-Datei sind lediglich entsprechende Verweise auf die zu verwendende Style-Definition eingetragen. Da XML mehr Wert auf Strukturen legt als HTML ergeben sich folgende Unterschiede:

  • alle Tags müssen abgeschlossen (<ITEM> ... </ITEM>) sein
  • die Reihenfolge von öffnenden Tags muss beim Schliessen eingehalten werden
  • alle Attribute zu einem Tag (src="12sonnenblumen_klein.jpg" oder width="300")  müssen mit Anführungszeichen eingefasst sein
  • XML-Tags unterscheiden die Gross/Kleinschreibung (<CITY> ist ungleich zu <City>) 

XSL für Gestaltungsangaben

Eine XSL-Definition ist ähnlich aufgebaut wie eine CSS-Definition für HTML. In einer XSL-Datei werden Gestaltungselemente zentral verwaltet. XSL bedeutet «Extensible Stylesheet Language». XSL bietet zusätzlich zu gewohnten Gestaltungs-Defintionen wie «font-familiy» oder «font-size» auch Möglichkeiten zur Sortierung von Tabellen («order-by»). Zudem können Style-Definitionen auch gleichzeitig für mehrere XML-Tags (siehe Beispiel oben: AUCTIONBLOCK/ITEM/BIDS/BID) definiert werden.

<?xml version="1.0"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">

<TABLE STYLE="border:1px solid black">
   <TR STYLE="font-size:12pt; font-family:Verdana; font-weight:bold; text-decoration:underline">
     <TD>Price</TD>
     <TD STYLE="background-color:lightgrey">Time</TD>
     <TD>Bidder</TD>
   </TR>

   <xsl:for-each select="AUCTIONBLOCK/ITEM/BIDS/BID" order-by="BIDDER">
   <TR STYLE="font-family:Verdana; font-size:12pt; padding:0px 6px">
     <TD>$<xsl:value-of select="PRICE"/></TD>
     <TD STYLE="background-color:lightgrey"><xsl:value-of select="TIME"/></TD>
     <TD><xsl:value-of select="BIDDER"/></TD>
   </TR>
</xsl:for-each>
</TABLE>

</xsl:template>
</xsl:stylesheet>

Die Einbindung einer externen XSL-Definition in ein XML-Dokument wird über einen Referenz-Befehl vorgenommen:

<?xml-stylesheet type="text/xsl" href="review.xsl" ?>

Die Kombination von XML als Struktur- und XSL als Gestaltungsformate erfordert für eine Anzeige von Dokumenten im Browser folgende Komponenten:

Interpretation von XML und XSL

Durch die Konvertierung über den XSL-Prozessor werden die Struktur- und Gestaltungsdaten von XML und XSL zu einer HTML/CSS-Datei verschmolzen und können auf zahlreichen Endgeräten (Browser auf PC oder Smartphone, Tablet-Computer usw.) angezeigt werden. Die Datenquelle (XML) bleibt dabei immer identisch, durch Anwendung unterschiedlicher XSL-Definitionen wird die Gestaltung je nach End-Gerät angepasst.

XML-Schema für Typbeschreibungen

Bei der konsequenten Trennung von Inhalt und Gestaltung in XML ergibt sich die Herausforderung, dass Inhalte bezüglich Datentypen spezifiziert werden müssen. Für diesen Zweck wird «XML-Schema» verwendet (früher DTD, die «Document Type Definition»). XML-Schema wird abgekürzt als XSD (XML Schema Definition) bezeichnet.

XML-Schema bietet die  Möglichkeit, die Struktur von XML-Dokumenten zu beschreiben sowie den Inhalt von Elementen und Attributen zu beschränken, z. B. auf bestimmte Datentypen wie Zahlen, Datumsangaben oder Texte. Ein XML-Schema ist selbst ein XML-Dokument, welches erlaubt, komplexere (auch inhaltliche) Zusammenhänge zu beschreiben.

Das folgende Beispiel definiert einen neuen Typ «monatInt», der für XML-Dokumente, welche das XML-Schema einbinden eine Liste mit gültigen Monatsnummern zur Verfügung stellt:

<xs:simpleType name="monatInt">
  <xs:restriction base="xs:integer">
    <xs:minInclusive value="1"/>
    <xs:maxInclusive value="12"/>
  </xs:restriction>
</xs:simpleType>

<xs:simpleType name="monate">

  <xs:list itemType="monatInt"/>
</xs:simpleType>
 
Eine Verwendung des neuen Typs («monatInt») in einem XML-Dokument könnte wie folgt aussehen:

<monate>
   1 2 3 4 5 6 7 8 9 10 11 12
</monate>
 
Die einzelnen Elemente einer Liste (im Beispiel die Monatsnummern) werden durch Leerzeichen (auch «Whitespaces» genannt) getrennt.