Büro-Dokumente @ XML

Büro-Dokumente im XML-Format

Zielgruppe sind StudentInnen und ambitionierte Informatik-Amateure

Grundkenntnisse der Informatik werden vorausgesetzt, solche von HTML oder XML sind hilfreich.






Um diese Aufgabe durchzuführen, wurden mehrere unterschiedliche Verfahren entwickelt. Zur Unterscheidung werden die jeweiligen Dateien meist mit besonderen Endungen bezeichnet. Das ist allerdings nur auf Windows wirklich notwendig.
Auf dieser Seite werden die aktuell verwendeten Datei-Formate *.odt und *.docx in einem Experiment vorgestellt.

Test-Aufgabe

Der Text ist so formuliert, dass man die 3 'Worte' auch in einer großen und unübersichtlichen Textverarbeitungs-Datei leicht findet.

Im Beispiel (links) wurde der Test in einer eigenen Mini-Webseite xyz.html gespeichert. Das ist zwar kein Datei-Format für ein Textverarbeitungs-Programm, wird hier jedoch zum Vergleich verwendet.
Mit diesem Link wird die ↗ Mini-Webseite in einem eigenen Browser-Tab geöffnet.
Mit diesem Link wird der ↗ HTML-Quelltext angezeigt: Aus diesem Text hat ihr Browser das Bild der Test-Seite erzeugt.


Sie können diesen oder einen ähnlichen Test selbst mit eigenen Textverarbeitungs-Programmen ausführen.

Vergleich von Datei-Formaten


Der zu speichernde Text enthält 11 Zeichen (9 Buchstaben, 2 Leerzeichen) und 2 verschiedene Formatierungen.


HTML

ist kein Textverarbeitungs-Format, weil Webseiten für die Ausgabe an einem Bildschirm optimiert sind. Der Vergleich ist trotzdem interessant: Die Test-Datei xyz.html ist nur ca. 300 Bytes groß.
Der HTML-Quelltext ist mit jedem Text-Editor lesbar und folgt dem → XML-Standard.
Die automatische Herstellung von 'dynamischen' HTML-Dateien ist weit verbreitet. Die automatische Analyse funktioniert gut und ist die Grundlage aller Such-Maschinen.

ODT

ist ein freier Standard Open Document Format, der nahe mit HTML verwandt ist.
Das Format wird von LibreOffice und OpenOffice bevorzugt. Mit MS-Office muss man für ODT-Dateien Zusatz-Module verwenden. Das Test-Beispiel ist ca. 9kiB groß.
Die Aufgabe wird mit mehreren Dateien gelöst, die gemeinsam in ein ZIP-Archiv verpackt und als *.odt Datei gespeichert werden.
Man kann das Archiv auspacken und die darin enthaltenen → XML-Dateien mit jedem Text-Editor lesen.
Die automatische Verarbeitung (z.B. mit → XSL-Programmen) ist Bestandteil aller modernen Textverarbeitungs-Programme.

DOCX

stammt von Microsoft und wurde mittlerweile ebenfalls als Standard Open Office XML publiziert. Es bietet gegenüber dem freien Standard ODT keine erkennbaren Vorteile, unterscheidet sich jedoch erheblich von HTML.
Das Format wird von allen modernen MS-Programmen bevorzugt und auch von LibreOffice unterstützt.
Aus den aktuellen Versionen von OpenOffice wurde dieses Format aus unbekannten Gründen wieder entfernt.
Das Test-Beispiel wird von MS-Word mit ca. 10kiB gespeichert, von LibreOffice mit ca. 4kiB.
Es werden ebenfalls mehrere Dateien verwendet und in einem ZIP-Archiv gespeichert. Nach dem Auspacken sind die → XML-Dateien mit jedem Text-Editor lesbar.
Die automatische Verarbeitung ist ebenso wie bei ODT Stand der Technik.



Alle neueren Programme verwenden den → Unicode-Zeichensatz, meist in seiner komprimierten Form UTF-8.
Dieser Standard erlaubt die gleichzeitige Verwendung von ca. 2 Mio Zeichen (in einfachen Programmen mindestens 65000 Zeichen) aus allen Sprachen und Kulturen.

In allen Mitgliedern der → XML-Familie wird fast ausschließlich UTF-8 verwendet, z.B. auch in ODT, DOCX oder HTML.
Auch moderne Text-Editor-Programme wie die meisten Linux Editor-Programme oder auf Windows Notepad++ bieten an, Dokumente in diesem Zeichensatz zu speichern.

Archiv-Dateien



In diesem Kapitel wird beschrieben, wie man eine Textverarbeitungs-Datei ODT oder DOCX in ihre Bestandteile zerlegen kann.

Sie können dieses Experiment mit eigenen Mitteln am eigenen Arbeits-PC selbst durchführen.

Fortgeschrittene EntwicklerInnen können sich Anregungen holen, um mit eigenen Programmen Büro-Dokumente systematisch herzustellen, zu analysieren oder zu ändern.


Im hier beschriebenen Beispiel wird dieser formatierte Text verwendet:
XXX YYY ZZZ
Speichern sie das Dokument in einem der Datei-Formate *.odt oder *.docx



Packen sie das ZIP-Archiv aus: Jedes moderne Betriebssystem enthält dazu geeignete Programme.
Das Ergebnis ist ein Verzeichnis (Ordner), der ca 1 Dutzend Dateien enthält.
Die meisten Dateien enthalten zwar einfachen Text, sind jedoch nur schwer lesbar, weil sie extrem lange Zeilen ohne Umbruch enthalten.



Windows + Text-Editor

Nur ein gutes Editor-Programm ist brauchbar, z.B. Notepad++ (kostenfrei)
Öffnen sie die Datei und achten sie darauf, dass die EinfügeMarke (Cursor) am Anfang steht.
Verwenden sie das Menü Suchen / Ersetzen
Tragen sie in das Feld Suchen (Find) diesen Text ein: ><
Tragen sie in das Feld Ersetzen (Replace) diesen Text ein: >\n<
Ersetzen sie alle Treffer und speicherrn sie die Datei.
Tipp: Diese Option kann man auch auf mehrere Dateien anwenden, wenn diese gleichzeitig mit Notepad++ geöffnet sind.

MS-Word

Mit älteren Word-Versionen kann man die Aufgabe lösen.
Öffnen sie die Datei und achten sie darauf, dass die EinfügeMarke (Cursor) am Anfang steht.
Verwenden sie das Menü Bearbeiten / Ersetzen
Tragen sie in das Feld Suchen (Find) diesen Text ein: ><
Tragen sie in das Feld Ersetzen (Replace) diesen Text ein: >^p<
Ersetzen sie alle Treffer und speicherrn sie die Datei.

Mit neueren Versionen von MS-Word ist die Aufgabe schwierig, evtl. gar nicht lösbar. Word öffnet die Datei in einer speziellen Ansicht als hierarchischen Baum. Das ist zwar für andere Zwecke praktisch, die gewünschten Zeilen-Umbrüche kann man damit jedoch offenbar nicht einfügen.



Die Dokumente aller modernen Büro-Programme sind komprimierte (ZIP)-Archive. Man kann sie daher - wenn überhaupt - nur unwesentlich weiter komprimieren.

Ein ZIP-Archiv aus einem oder mehreren Office-Dokumenten kann trotzdem sinnvoll sein: Jeder Web-Provider erlaubt die Verwendung von *.zip Dateien, auch zum Download. Als Mail-Beilage kann man ein einziges ZIP-Archiv besser versenden als mehrere einzelne Büro-Dokumente.

Analyse von ODT


So wie in allen Dateien der XML-Familie enthält jede XML-Datei nur einfachen lesbaren Text.

Jede XML-Text-Datei besteht aus 'Auszeichnungs-Elementen' in spitzen < > Klammern und aus Daten (=dem gesamten übrigen Text).

Details zu → XML



Der XML-Quelltext wurde gekürzt und aufbereitet, damit die wesentlichen Elemente erkennbar sind.

Alle zur Formatierung verwendeten → CSS-Regeln sind im Element <office:automatic‑styles> definiert, z.B. die Regeln mit den Namen 'T1' und 'T2'

Die Text-Daten folgen im Element <office:body>

Der Text des Beispiels ist in einem Absatz enthalten. Das ODF-Element <text:p> entspricht dem HTML-Element <p> (Paragraph, Absatz).

Das Wort XXX ist ohne weitere Formatierung enthalten.

Das Wort YYY ist von einem ODF-Element <text:span> umschlossen, das dem HTML-Element <span> entspricht. Damit wird die CSS-Regel mit dem Namen 'T1' auf das Wort angewendet.

Das Wort ZZZ ist ähnlich codiert wie YYY, jedoch mit der CSS-Regel 'T2'



◀   Links ist der komplette HTML-Quelltext jener Datei eingebettet, welche das gleiche Test-Beispiel als Mini-Webseite codiert.
Mit diesem ↗ Link wird das Beispiel als HTML-Webseite in einem eigenen Browser-Tab angezeigt.

Man kann unschwer die enge Verwandtschaft der beiden Standards ODT und HTML erkennen:

Alle verwendeten CSS-Regeln sind im <style> Element definiert, z.B. die Regeln 't1' und 't2'

Die Daten folgen im Element <body>
Der Text des Beispiels ist in einem <p> Absatz-Element enthalten

Das Wort XXX ist ohne weitere Formatierung enthalten.

Das Wort YYY ist von einem <span>-Element umschlossen. Damit wird die CSS-Regel mit dem Namen 't1' auf das Wort angewendet.

Das Wort ZZZ ist ähnlich codiert wie YYY, jedoch mit der CSS-Regel 't2'


Die Standard XML-Struktur erlaubt mit relativ geringem Aufwand die automatisierte Herstellung, Analyse oder Änderung von ODF-Dateien.
Beispiel: → XSL-Programme sind besonders gut zur Umwandlung von Text-Dateien geeignet. Es gibt u.a. zahlreiche fertig programmierte XSL-Programme zur Umwandlung von ODF-Dateien in andere Datei-Formate.

Analyse von DOCX


Man öffnet die XML-Text-Dateien mit einem guten Editor-Programm, z.B. auf Linux mit gedit, kwrite, kate oder auf Windows mit Notepad++



Der XML-Quelltext wurde gekürzt und aufbereitet, damit die wesentlichen Elemente erkennbar sind.

Der Text ist in einem Absatz enthalten. Das DOCX-Element <w:p> entspricht dem HTML-Element <p> (Paragraph, Absatz).

Das Wort XXX ist in einem DOCX <w:r> Element enthalten.

Das Wort YYY ist in einem DOCX <w:r> Element enthalten. Dieses enthält zusätzlich ein <w:Pr> Element zur Angabe der Formatierung. Darin befindet sich ein alleinstehendes Element <w:b/> als Kennzeichen für Fett (Bold).

Das Wort ZZZ ist in einem DOCX <w:r> Element enthalten. Dieses enthält zusätzlich ein <w:Pr> Element zur Angabe der Formatierung. Darin befindet sich ein alleinstehendes Element <w:color/> mit Angabe der Farbe. Der hexadezimale Code FF0000 entspricht der → RGB-Farbe Rot.


Auch für DOCX-Dateien gibt es Programme zur automatischen Herstellung, Analyse oder Verarbeitung, darunter z.B. jene → XSL-Programme, die von LibreOffice oder OpenOffice zur Umwandlung der Datei-Formate verwendet werden.

Änderung von Büro-Dateien


Dieses einfache Verfahren funktioniert fast immer.

Wenn nicht, muss man evtl. die zur Lesbarkeit eingefügten Zeilen-Umbrüche (\n) nach der Änderung des Inhalts und vor dem Komprimieren wieder entfernen.


Alternativ kann man alle anderen modernen Programmiersprachen verwenden: Man muss jede Büro-Datei in ihre XML-Text-Dateien zerlegen, diese bearbeiten und danach wieder zu einem ZIP-Archiv komprimieren.

Zur Verarbeitung von XML-Text kann man die für einfache Text-Dateien angebotenen Methoden der jeweiligen Programmiersprache verwenden.

Besser geeignet sind spezielle DOM-Parser-Programme und -Module. Damit kann man direkt den hierarchischen Objekt-Baum eines XML-Dokuments bearbeiten.
Diese Methode erfordert fortgeschrittene Kenntnisse der Objekt-orientierten Programmierung.


Erweitertes Beispiel mit größerer Praxis-Nähe:
Erstellen sie ein Programm, welches folgende Vorgaben einholt: Danach soll das Programm die gewünschten Änderungen in allen betroffenen Dateien durchführen und ein Protokoll (Log-Datei) über alle durchgeführten Änderungen anlegen.