Daten im XML-Format exportieren und weiterverarbeiten

André Minhorst, Duisburg

XML hat in vielen Bereichen Einzug gehalten, doch zu sehen ist es eigentlich nirgendwo: Hier eine Export-Möglichkeit, dort ein Webdienst, der Daten im XML-Format ausgibt, aber XML für eigene Zwecke einsetzen Sie sind sicher nicht der Einzige, der jetzt zustimmend nickt. Grund genug, mal eine der vielen Möglichkeiten von XML näher zu beleuchten – beispielsweise den Export von Daten aus Access nach XML und von dort aus direkt weiter in das gewünschte Zielformat – wie zum Beispiel CSV oder HTML.

XML (Extensible Markup Language) ist ein universelles Format zum Speichern von Daten in strukturiertem, von Mensch und Maschine lesbarem Textformat. Sie werden vermutlich bereits einmal Kontakt mit XML gehabt oder zumindest davon gehört haben – neuerdings gibt es kaum noch eine Anwendung, die Daten nicht im XML-Format speichern kann.

Das schließt beispielsweise weite Teile des Office-Pakets ein – Word kann es, Excel auch, und eine Access-Datenbank giert praktisch danach, die Daten der enthaltenen Tabellen schön strukturiert im XML-Format auszugeben.

Die Frage, die Sie sich vermutlich stellen, lautet: Was mache ich nun also mit den ganzen im XML-Format gespeicherten Daten Die beiden Haupteinsatzgebiete sind die Verwendung als Austauschformat zwischen zwei Anwendungen und als Grundlage für mit verschiedenen Methoden formatierte Ausgabeformate wie beispielsweise HTML.

Letzteres zeigt einen der Grundzüge von XML: In diesem Format vorliegende Daten enthalten niemals Informationen über deren Anzeigeformat, sondern nur die Daten selbst und ihre Struktur.

Zur Formatierung für die Ausgabe gibt es andere Mittel, zum Beispiel XSL-Dateien. XSL ist die Abkürzung für Extensible Stylesheet Language und dient zum Formatieren und Transformieren des Inhalts von XML-Dateien. Eine XSL-Datei enthält Informationen darüber, wie der Inhalt einer XML-Datei darzustellen ist. Zusammen bringen Sie die beiden meist über einen Eintrag in der XML-Datei, der die für die Ausgabe zu verwendende XSL-Datei angibt.

Nun haben Sie aber hier kein XML-, sondern ein Access-Magazin in der Hand und deshalb wollen wir nicht tiefer in die Theorie einsteigen. Statt dessen schreiten wir direkt zum praktischen Teil und sehen uns dabei den einen oder anderen theoretischen Aspekt genauer an.

Access und XML sind seit Access 2000 Freunde – zumindest gibt es seitdem die ersten Exportmöglichkeiten für Daten im XML-Format.

Um mit einer aktuelleren Version von Access den Inhalt einer Tabelle in eine XML-Datei zu exportieren, sind nur wenige Mausklicks erforderlich. Am schnellsten geht es folgendermaßen:

Bild 1: Auswahl der Export-Art

Bild 2: In HTML transformierte XML-Ausgabe von Access

  • Klicken Sie die zu exportierende Tabelle oder Abfrage im Datenbankfenster an.
  • Wählen Sie aus dem Kontextmenü dieser Tabelle den Eintrag Exportieren… aus.
  • Im nun erscheinenden Dialog stellen Sie den Dateityp auf XML (*.xml) ein (siehe Bild 1).
  • Klicken Sie im nächsten Dialog zusätzlich die Option Präsentation Ihrer Daten (XSL) an und schließen Sie den Export ab. (
  • Access hat nun vier Dateien mit den Endungen .htm, .xml, .xsl und .xsd erstellt. Interessant ist zunächst die .html-Datei.

    Die schauen Sie sich am besten im Internet Explorer an, denn zur Anzeige sind einige Zeilen VBScript notwendig – der Firefox etwa kann hiermit nichts anfangen.

    Der Export einer Abfrage mit vier Zeilen der Artikel-Tabelle sieht recht gelungen aus (siehe Bild 2).

    Interessant für diese Art der Ausgabe ist der Export von fertig formatierten Access-Berichten.

    Die Ausgabe eines Rechnungsberichts aus der Nordwind-Datenbank beispielsweise ist recht ansehnlich (siehe Bild 3).

    Bei diesem kurzen Einblick in die assistentgesteuerten XML-Exportmöglichkeiten von Access soll es zunächst bleiben. Exakt die Ergebnisse, die Sie vom Export von Access-Daten und vor allem von der resultierenden Anzeige erwarten, bekommen Sie nämlich nur schwer.

    XML und XSL bilden gemeinsam ein Team, das Daten in jedem beliebigen Format ausgeben kann. Dabei enthält eine XML-Datei die Daten und Informationen zu deren Struktur und die XSL-Datei Informationen über das Ausgabeformat der Daten.

    Bild 3: Ausgabe eines Berichts im XML-Format mit Transformation

    <xml version="1.0" encoding="iso-8859-1" > 
    <Kategorien>
        <Kategorie>
            <Kategorie-Nr>1</Kategorie-Nr>
            <Kategoriename>Getränke</Kategoriename>
        </Kategorie>
        <Kategorie>
            <Kategorie-Nr>2</Kategorie-Nr>
            <Kategoriename>Gewürze</Kategoriename>
        </Kategorie>
        ...
    </Kategorien>

    Quellcode 1

    Nachvollziehen lässt sich das am besten anhand eines kleinen Beispiels. Dazu verwenden Sie die sehr einfach aufgebaute XML-Datei aus Quellcode 1. Der Prolog der Datei gibt die verwendete XML-Version sowie die verwendete Zeichensatzkodierung an.

    Die eigentlichen Daten hält immer das Wurzelelement zusammen. In diesem Fall besteht das Wurzelelement aus dem öffnenden <Kategorien> und dem schließenden </Kategorien>. Dazwischen befinden sich Daten aus der Kategorien-Tabelle der Nordwind-Datenbank, und zwar jeweils die Kategorienummer und der Kategoriename. Die Daten sind je Datensatz durch ein öffnendes <Kategorie> und ein schließendes </Kategorie> eingeschlossen.

    Das Gleiche gilt für die Daten selbst. Wenn Sie diese XML-Datei im Browser öffnen, erscheint eine zwar gut strukturierte, aber dennoch wenig übersichtliche Ansicht der Daten (siehe Bild 4).

    Hier kommt XSL ins Spiel: Mit einer geeigneten XSL-Datei können Sie die im XML-Format gespeicherten Daten in beliebigen Formaten anzeigen.

    Beginnen Sie mit einem leichten Beispiel: der Anzeige der Kategorien in einer durch Semikolons getrennten Liste.

    Die XSL-Datei enthält eine Beschreibung, wie die einzelnen Elemente einer XML-Datei formatiert werden sollen.

    Dabei können Sie mit einer solchen Datei die Daten der XML-Datei auslesen und beispielsweise durch Hinzufügen von Anführungszeichen, Semikolons und Zeilenumbrüchen in ein von Excel lesbares CSV-Format überführen.

    Das Ergebnis soll so aussehen:

    Kategorie-Nr;Kategoriename
    1;"Getränke"
    2;"Gewürze"
    3;"Süßwaren"
    4;"Milchprodukte"
    5;"Getreideprodukte"
    6;"Fleischprodukte"
    7;"Naturprodukte"
    8;"Meeresfrüchte"

    Bild 4: Anzeige einer XML-Datei im Internet Explorer

    <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="text"/>
      <xsl:template match="Kategorien">
        <xsl:text>Kategorie-Nr;Kategoriename</xsl:text>
        <xsl:text>
    </xsl:text>
        <xsl:apply-templates select="Kategorie" />
      </xsl:template>
      <xsl:template match="Kategorie">
        <xsl:value-of select="Kategorie-Nr" />
        <xsl:text>;"</xsl:text>
        <xsl:value-of select="Kategoriename" />
        <xsl:text>"</xsl:text>
        <xsl:text>
    </xsl:text>
      </xsl:template>
    </xsl:stylesheet>

    Quellcode 2

    Die XSL-Datei aus Quellcode 2 sorgt für die entsprechende Umwandlung. XSL-Dateien sind mit XML-Dateien bezüglich des Aufbaus identisch, beinhalten aber in der Regel keine Daten, sondern Anweisungen zur Formatierung der Daten einer XML-Datei.

    Nach dem Prolog mit der Angabe von XML- und XSL-Version folgt ein Element namens xsl:output. Es legt die Ausgabemethode fest.

    Die Methode xsl:template leitet die Ausgabe der überschrift ein. Es sucht nach dem Element Kategorien, was dem Wurzelknoten des XML-Dokuments entspricht, und führt die nachfolgenden Methoden für jedes Auftreten des Wurzelelements je einmal aus – was genau einem Aufruf entspricht. Die nachfolgende xsl:apply-templates-Anweisung legt fest, dass an dieser Stelle noch ein Template mit weiteren Informationen auszugeben ist. Diese betreffen die in den Kategorie-Elementen enthaltenen Daten.

    Diese Ausgabe erfolgt in dem mit <xsl:template match=”Kategorie”> eingeleiteten Teil. Die <xsl:value-of>-Anweisungen geben jeweils die in den Elementen Kategorie-Nr und Kategoriename enthaltenen Daten aus. Dazwischen werden mit der <xsl:test>-Methode noch die Semikolons, Anführungszeichen und Seitenumbrüche (vertreten durch die Zeichenfolge ) eingefügt.

    Fehlt nur noch, dass Sie das XML-Dokument auf das zu verwendende XSL-Dokument aufmerksam machen: Das erledigen Sie durch Einfügen einer einzigen Zeile in die XML-Datei – und zwar direkt hinter der ersten Zeile aus Quellcode 1:

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

    Wenn Sie beide Dateien wie angegeben erstellt und in einem gemeinsamen Verzeichnis gespeichert haben, erhalten Sie die weiter oben vorgegebene Ausgabe.

    Was Sie im vorigen Kapitel kennen gelernt haben, sind lediglich die Grundlagen zu den in diesem und den folgenden Kapiteln vorgestellten Techniken. Sie werden vermutlich kaum die Daten einer Access-Tabelle oder -Abfrage manuell exportieren wollen und diese dann – durch ein entsprechendes XSL-Dokument formatiert – anzeigen lassen. Darum lernen Sie nun einige Prozeduren kennen, mit denen Sie die relevanten Daten per Knopfdruck nicht nur im gewünschten Format anzeigen lassen, sondern auch speichern können.

    Voraussetzung: Verweis auf die MSXML-Bibliothek

    Für die folgenden Schritte sind einige Objekte und Anweisungen der Bibliothek MSXML erforderlich. Immerhin soll die Formatierung der XML-Datei mit der XSL-Datei nicht durch den im Browser integrierten XSLT-Prozessor durchgeführt werden, sondern mit einer entsprechenden Anweisung innerhalb der verwendeten VBA-Prozeduren.

    Zum Erstellen des Verweises aktivieren Sie den VBA-Editor (am schnellsten per Strg+g) und wählen den Menüeintrag Extras/Verweise ….

    Dort finden Sie unter anderem den Eintrag Microsoft XML, v3.0 – markieren Sie ihn und schließen Sie den Dialog (siehe Bild 5).

    Bild 5: Verweis auf die MSXML-Bibliothek festlegen

    Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

    den kompletten Artikel im PDF-Format mit Beispieldatenbank

    diesen und alle anderen Artikel mit dem Jahresabo

    Schreibe einen Kommentar