Home. 
.

transparent

transparent

transparent

Wiederverwendung von Inhalt mit OOXML & XSLT in XMLSpy

Der folgende XMLSpy-Tipp stammt aus dem Blog von Altova CEO Alexander Falk.

Zwar ist Open XML noch kein ISO-Standard, doch von ECMA wurde der Standard bereits übernommen. Was noch wichtiger ist: Alle mit Office 2007+ erstellten Dokumente werden bereits standardmäßig in Open XML gespeichert, d.h. es gibt eine Unzahl von Dokumenten, deren Inhalt nun viel einfacher und effizienter als je zuvor weiterverwendet werden kann. Anstatt nun auf die Entscheidung der ISO-Abstimmung zu warten oder all den politischen Querelen rund um das Format allzu viel Aufmerksamkeit zu zollen, möchte ich Ihnen zeigen, wie Sie bereits jetzt Open XML (manchmal auch als OOXML oder Office Open XML bezeichnet) optimal nutzen können.

Dies ist der erste Artikel in einer Reihe von Blog-Postings, die ich über praktische Tipps & Tricks zu Open XML zu schreiben plane. Am besten Sie abonnieren mein XML Aficionado Blog (über RSS oder E-Mail), wenn Sie das noch nicht getan haben. Damit erhalten Sie Artikel aus dieser Reihe in Zukunft automatisch nach dem Posting.

Sehen wir uns ein Open XML-Dokument einmal in unserem Lieblings-XML Editor an. In diesem Beispiel wird ein WordprocessingML-Dokument (.docx) verwendet, das mit Microsoft Office Word 2007+ erstellt wurde. Wenn ich die .docx. Datei in XMLSpy öffne, sehen ich sofort den Inhalt der Paketdatei, die gemäß der Open Packaging Convention strukturiert ist.

Einfach ausgedrückt handelt es sich hierbei um eine ZIP-Datei, die bestimmte Dateien und Verzeichnisse enthält, die den Inhalt, die Struktur, die Stile, Beziehungen und andere Bestandteile des Dokuments definieren. Mit der integrierten XMLSpy-Funktion zum Öffnen jedes Archivs im ZIP-Format kann ich alle Verzeichnisstrukturen innerhalb des ZIP-Pakets anzeigen, neue Dateien zum Paket hinzufügen oder im Paket enthaltene XML-Dateien öffnen.

ooxml editor

Um den Inhalt dieser WordML-Beispieldatei wiederverwenden zu können, werde ich die Datei 'document.xml', die den Inhalt des Dokuments enthält, öffnen.

Wenn ich im ZIP-Archiv auf die Datei doppelklicke, wird die XML-Datei wie jedes andere XML-Dokument in einem separaten Fenster angezeigt, und ich kann die XML-Daten mit Hilfe der umfangreichen Funktionen der Grid- oder der Text-Ansicht anzeigen oder bearbeiten (manchmal kann es nützlich sein, die Pretty-Print-Funktion in der Textansicht aufzurufen, um die Datei leichter lesen zu können):

ooxml editor

Dies ist natürlich eine Live-Bearbeitungsansicht, d.h. Sie können die Open XML-Daten nicht nur anzeigen, sondern auch Änderungen daran vornehmen und die Datei wieder in der Paketdatei speichern.

Aber sehen wir uns nun an, wie man Inhalt aus diesem Open XML-Dokument ganz einfach unter Verwendung von XSLT wiederverwenden kann. Mit XMLSpy werden einige Open XML-Beispieldokumente sowie XSLT-Beispiel-Stylesheets für diesen Zweck mitgeliefert. Werfen wir einen Blick in das 'docx2html.xslt' Stylesheet, das ein WordML-Dokument nimmt und alle Absätze daraus extrahiert, um sie ins HTML-Format zu konvertieren. Dieses Beispiel-Stylesheet ist keinesfalls als fertig definiertes Tool für die Konvertierung von .docx-Dateien in HTML-Dokumente gedacht, sondern soll einfach als Vorlage dafür dienen, wie man Inhalt aus einer docx.-Datei wiederverwenden kann und lässt sich offentlich als Ausgangsdokument für die Entwicklung Ihres eigenen Stylesheets verwenden.

Als Kern des XSLT-Stylesheet benötigen wir eine <xsl:for-each>-Schleife, um durch alle <docx:p>-Elemente zu iterieren, die in einfache HTML <p>-Absätze verwandelt werden. Der Text in den Absätzen ist in Zeichenabschnitte gruppiert, die gemeinsame Attribute haben. Wir benötigen daher eine innere <xsl:for-each>-Schleife, um durch diese <docx:r>-Elemente zu iterieren und den Text aus deren <docx:t>-Textnode-Child-Elementen zu extrahieren. Die einfachste Methode, Inhalt wiederzuwenden, wobei der Text aus allen Absätzen extrahiert wird, sieht somit folgendermaßen aus:

ooxml editor

Nachdem wir diese Schleifen erstellt haben, können wir uns nun daran machen, eventuell Stilinformationen zu extrahieren und wiederzuverwenden. Zu diesem Zweck geben wir nun für jeden <docx:r>-Zeichenabschnitt ein <span>-HTML-Element mit einem Stil-Attribut aus, dessen Wert vom <docx:rPr>-Element abhängig ist; wir verwenden also <xsl:apply-templates>, um festzulegen, welcher HTML-Stil auf die <span>-Elemente angewendet werden soll:

ooxml editor

Die entsprechenden Templates für die drei gebräuchlichsten Stile (fett, kursiv, unterstrichen) sind kinderleicht zu erstellen und sehen folgendermaßen aus:

ooxml editor

Mit nur wenigen Zeilen XSLT und wenigen Templates haben wir bereits ein Stylesheet erstellt, das die Absätze und die wichtigsten Stile aus einem WordML-Dokument extrahiert und diese in ein HTML-Dokument konvertiert, das in der Browser-Ansicht angezeigt werden kann. Hier sehen Sie das Ergebnis, das Sie erhalten, wenn Sie das obige XSLT-Stylesheet am WordML-Beispieldokument ausführen, das Sie im XMLSpy examples-Verzeichnis finden:

ooxml editor

Auf ähnliche Weise können Sie das Stylesheet auch ganz einfach erweitern, um Metainformationen, andere Stile oder Bildinformationen aus dem WordML-Dokument zu extrahieren und den Inhalt für jedes beliebige moderne Applikationsszenario von Web Publishing über HTML, RSS oder Social Media-Formate bis zu mobilen Webapplikationen usw. weiterzuverwenden.

"Moment! Wie kann ich ein XSLT-Stylesheet auf ein XML-Dokument anwenden, das in einer ZIP-Datei gespeichert ist?", fragen Sie sich vielleicht.

Natürlich können Sie alle XML-Dateien auch mit einem regulären ZIP-Programm extrahieren, es gibt aber eine viel bessere Lösung: Bei Verwendung der XSLT 2.0 document()-Funktion in XMLSpy oder unserem lizenzgebührenfreien XSLT-Prozessor AltovaXML können Sie Dateien in einem ZIP-Archiv direkt mit Hilfe des "|zip" Pipe-Operators im Dateinamen aufrufen, so ruft z.B. "MyDocument.docx|zip\_rels\.rels" die Beziehungsdatei ".rels" im Archivverzeichnis "\_rels" im ZIP-Paket mit der Datei "MyDocument.docx" auf.

Die Vorteile der Verwendung von XSLT für die Wiederverwendung von Inhalt aus Open XML-Dokumenten liegen auf der Hand: Da XSLT ein grundlegender Bestandteil der XML-Standards des W3C ist, können Sie Ihr gesamtes XML-, XPath- und XSLT-Know-how anwenden und dabei die hervorragenden Tools, die es für diese Standards gibt, verwenden. So können Sie z.B. Ihr XSLT-Stylesheet ganz leicht mit Hilfe des leistungsstarken XSLT-Debuggers in XMLSpy erstellen und debuggen. Damit können Sie eine Transformation Schritt für Schritt überprüfen, Breakpoints an XSLT-Anweisungen oder sogar Daten-Nodes in Ihrem Open XML-Dokument setzen, die teilweise generierte Ausgabe anzeigen und den Status des XSLT-Prozessors im Detail überprüfen, während das Ausgabedokument erstellt wird.

ooxml editor

Der XSLT-Debugger erspart Ihnen eine Menge mühsamer Arbeit, die normalerweise mit der Entwicklung von XSLT-Stylsheets verbunden ist, und ermöglicht eine sehr iterative Herangehensweise beim Erstellen und Verbessern von Stylesheets zur einfacheren Wiederverwendung und Umwidmung von Dokumenteninhalt.

Zusammenfassend ist die Weiterverwendung von Open XML-Dokumenten für die verschiedensten Webapplikationen, mobilen Szenarios oder Social Media und Web 2.0-Zwecke ganz einfach und lässt sich mit Standard-XML-Technologie wie z.B. XSLT bewerkstelligen.

Nähere Informationen zu Open XML und den Möglichkeiten, den bereits in diesem Format verfügbaren Inhalt zu nutzen, finden Sie auf den folgenden Seiten:


Download Klicken Sie hier um eine kostenlose 30-Tage Testversion von Altova XMLSpy mit dem vollen Funktionsumfang, herunterzuladen!



transparent
Print
Mail
Like It
.

Lesen Sie den Altova Blog
Read the Altova Blog!

.

Im Altova Blog lesen Sie über die neuesten Altova-Produktankündigungen, neue Produktfunktionen, technische Tipps und Informationen über die Branche. Registrieren Sie sich jetzt!

.
Akronymophobie
.

Substantiv. Zustand, der durch eine unübersehbare Anzahl an technischen Abkürzungen, Akronymen und Schlagwörtern verursacht wird. Lässt sich mit dem Altova-Glossar gut behandeln.

.
.

transparent

transparent