WordML, w:pict oder “Ach du liebes Twips”
Wie konnte mir nur das (der?) Twips entgehen? Ein Twip ist nichts anderes als “ein Zwanzigstel Punkt” und das Ganze entspricht in WordML der Einheit dxa. 1 dxa also ein Zwanzigstel Punkt oder 1/1440 Inch oder anders 0,0018 cm. Es gibt noch andere kleinere Wahnsinnigkeiten, die WordML bereit hält, uns am Begriff Standard zweifeln zu lassen, während es einem gleichzeitig eine beispielhafte Implementierung des Adjektivs proprietär vorführt …
Ein paar Erkenntnisse.
Grundsätzliches
WordML ermöglicht es, XML Dateien in Word darzustellen, indem via XSLT XML in WordML überführt wird. Leider kein triviales Thema, denn WordML ist nicht nur prorpietär, sondern auch recht umfassend und nochdazu nicht sonderlich offensichtlich dokumentiert.
Die Aufgabe bei XML to Word besteht also darin, ein geeignetes XSLT Stylesheet zu basteln, das die Konvertierung von einem ins andere Format übernimmt.
Da WordML und XML (also das Zusammenspiel von Word und XML) vor allem im Cross Media Publishing und in der technischen Dokumentation eine Rolle spielen, sind dies alles Features, die einem nicht sonderlich häufig unterkommen. Meist spielen im Hintergrund XML Standards wie DITA oder DocBook eine Rolle und natürlich gibt es für diese Standards bereits eine Reihe von Lösungen. Manchmal müssen diese Standards allerdings auch erweitert oder angepasst werden…
Die Aufgabenstellung
Die Aufgabenstellung ist so simpel, wie man sie sich nur vorstellen kann: eine zweispaltige Tabelle, in der links ein Bild in Originalgröße stehen soll und rechts ein Erläuterungstext.
Zum Warmlaufen kann man sich zunächst in Word eine optimale Tabelle basteln, das Dokument als XML (WordML) abspeichern und in einem Texteditor zu öffnen. Leider hilft das zunächst lediglich, in das Konstrukt Tabelle und Bild hineinzuwachsen. Insgesamt gilt nämlich, dass WordML im Gegensatz zu vielen anderen Microsoft Produkten und Funktionalitäten recht rudimentär dokumentiert ist - Try and Error ist also gefragt oder der Griff zur Suchmaschine und die Übernahme der Word XML Tabelle einfach 1:1 ins XSLT zu übernehmen führte zumindest bei mir nicht zum gewünschten Ergebnis. Trotzdem hilft das Grundgerüst bei den ersten Schritten schon mal weiter, sich überhaupt über die Syntax von WordML im Klaren zu werden.
Internet sei also auch Dank, dass ich doch noch einige wertvolle Infos finden konnte, die mich weitergebracht haben, denn nur die Elementreferenz ist nicht wirklich hilfreich.
Die Tabellenbreite
Die erste Hürde ist die Tabellenbreite. Als Maßeinheit sieht WordML drei Varianten vor: auto (klar - eine automatische Tabellenbreite - Achtung, angeblich relativ zum Satzspiegel! ), pct (Prozent) und dxa (jenes Twips, das einen zunächst vor einige Rätsel stellt).
Bei meinen ersten Tests mit Word und Speichern als XML Datei offenbarten sich, dass Prozentangaben offenbar irgendwie (genau, mehr kann ich dazu nicht sagen…) anders gehandhabt werden, als wir Web, HTML und CSS Leute so vermuten würden: meine auf 100% definierte Tabelle hatte die Breitenangabe:
<w:tblPr>
<w:tblW w:w="5000" w:type="pct"/>
<w:tblLook w:val="04A0"/>
</w:tblPr>
Verwirrend… Ich kann übrigens weder bestätigen, dass auto die volle Breite nutzt, noch kann ich bestätigen, dass Prozentwerte, die ich erwarten würde, zu sinnvollen Ergebnissen führen. Nach einigen Fehlversuchen musste ich mich also dann doch auf dxa einlassen - es geht also ans Rechnen. Inzwischen weiß ich, dass ein Din A4 Blatt Hochformat mit 100% Tabelle auf einen Breitenwert von ca. 10.000 hinausläuft - je nach Rand. Ich muss zugeben: im Moment bin ich einfach nur froh, dass es funktioniert.
Das Bild
Abenteuerlicher hingegen das Bild. Alle Bilder sollten in Originalgröße angezeigt werden. Der CSS Coder weiß: entweder gibt man dem Bild also gar keine Breiten- und Höhenangaben mit oder man setzt diese auf 100%. Leider bewirkt das in WordML nichts oder bessergesagt,
- height: 100%; bzw. width: 100%; bewirkt, dass jedes Bild auf eine Höhe bzw. Breite von ungefähr einem Inch gesetzt wird
- lässt man Styleangaben weg oder setzt beide Werte auto, so bewirkt das, dass jedes Bild quadratisch angezeigt wird, auch auf ungefähr ein Inch
Natürlich ist es möglich, dem Bild fixe Breiten oder Höhen in cm Angaben mitzugeben (Achtung: wir sind hier im Print, daher die cm Angaben!), was aber hier nicht der Aufgabenstellung entspricht.
Fragen zum Thema gibt es im Web viele, Antworten leider weniger viele. Nach einigen Stunden des Googlens mit verschiedenen Suchbegriffen, meist im Kontext v:shape (dies entspricht der Box, in die WordML das Bild packt und für diese Box können Größenangaben gemacht werden), wurde ich dann endlich fündig:
die Originalgröße eines Bilds wird dann verwendet, wenn height und width auf 0 (sic!) gesetzt werden. Eine mögliche, recht simple XSLT Anweisung für in Originalgröße anzuzeigende Bilder lautet also
<w:pict>
<v:shape alt="{Bild}" style="height:0; width:0;visibility:visible;">
<v:imagedata src="{Bild}"/>
</v:shape>
</w:pict>
wobei “Bild” dem Namen des XML Tags für das Bild entspricht.
Fazit?
WordML ist gewöhnungsbedürftig. Vielleicht ist es sogar von Vorteil, wenn man nicht aus der Webdesigner Welt kommt, - dan nämlich ist man wahrscheinlich weniger befangen, weniger irritiert und oft auch weniger genervt, weil alles, was man gelernt hat, hier einfach seine Gültigkeit zu verlieren scheint.
WordML ist generell relativ wenig dokumentiert, die Treffer reduzieren sich auf einige wenige wirklich gute Quellen. Die Fragen zum Thema scheinen sich zu wiederholen, die Antworten kommen von einigen wenigen netten Menschen, die offenbar die Energie hatten, sich freundlicherweise durch WordML durchzubeißen.
Wer sich mit WordML auseinandersetzen möchte oder muss, braucht Zeit und Geduld. Geduld sollte man mehr auf Internet-Recherche verwenden als auf reines Try and Error. Ich bin mir immer noch nicht sicher, ob es nicht auf Effekte gibt, die von Rechner zu Rechner (und wahrscheinlich auch von Drucker zu Drucker) andere Ergebnisse liefern.
Wer sich gerne deutschsprachig ins Thema einlesen möchte, sei auf die Website verwiesen. Die Macher haben auch ein Buch zu WordML verfasst: , eine gelungene Anschaffung für jeden WordML Einsteiger.
Sollten die obigen Twips, Inch und Zentimeter Berechnungen übrigens nicht korrekt sein, so liegt dies wahrscheinlich auch an der teils widersprüchlichen Dokumentation der Geschichte, allgemein kann ich dazu nur sagen, dass diese Angaben meinen Erfahrungswerten der letzten Tage entsprechen.
Ich freue mich trotz allem darauf, in den nächsten Tagen mit einem größeren Projekt rund um XML und Word anzufangen. Die Technologie ist dann doch wirklich mächtig und wie immer ist vieles davon einfach eine Frage von Erfahrung und harter Arbeit.
Andi
Sehr schöner Beitrag