XPath in FrameMaker praktisch nutzen

(Vortrag auf der tekom Jahrestagung 2011, Mi 19.10.2011, 11:15 Uhr; nahezu nutzlose Folien)

Dieser Beitrag ist quasi die Fortsetzung von »XPath: XML-Dokumente effizient nutzen« von der tekom Jahrestagung 2009. Diesmal geht es um die praktische Nutzung von XPath in strukturierten FrameMaker-Dokumenten und -Büchern.

Wann XML-Daten mit FrameMaker bearbeiten?

»FrameMaker-Dokumente sind doch keine XML-Daten!« Sicherlich bieten strukturierte FrameMaker-Dokumente nicht die Möglichkeiten Dateien so zu bearbeiten, wie es in XML- oder sogar Text-Editoren möglich ist. Ausgefuchste Anwender verwenden für spezielle Operation schon seit vielen Jahren das MIF-Format. Aber all diese Methoden ›unter der Motorhaube‹ bergen das Risiko dabei das Dokument zu beschädigen und sind ganz sicher nichts für die technisch weniger erfahrerenen Kollegen.

Aber wir wollen unsere Kollegen auch nicht beim stundenlangen, stupiden ›Herummausen‹ beobachten müssen. Muss es dann immer gleich eine FDK- oder Skript-Programmierung sein? Vor einigen Jahren hätte ich das ganz und gar nicht abwegig gefunden, heute möchte ich Ihnen eine Alternative vorstellen.

Sie werden Ihre XML-strukturierten Dokumente immer dann nach Möglichkeit direkt in FrameMaker bearbeiten wollen, wenn diese Dokumente Ihre Datenquelle darstellen, wenn FrameMaker Ihr primärer Editor ist.

Aber Vorsicht: Alle wirklich leistungsfähigen Werkzeuge sind gleichzeitig auch komplex! Das Bearbeiten von XML-strukturierten Dokumenten ist komplex, aber durch die Reduktion auf ein Daten-Modell (XML), eine Abfragesprache (XPath) und eine geführte Benutzersteuerung meiner Meinung nach beherrschbar.

Tools und Prozesse, die XPath unterstützen

Xalan
Der Vollständigkeit halber sei erwähnt, dass XPath als Lokalisierungssprache auch Bestandteil jeder XSL-Programmierung ist. Und seit FrameMaker 7.2 (erschienen 2005) wird der XSL-Prozessor Xalan mitgeliefert und eine XSL-Transformation kann beim Import vom XML-Daten (XSL Preprocessing) und beim Speichern als XML (XSL Postprocessing) dazwischen geschaltet werden. Thema diese Beitrags ist die Nutzung von XPath in FrameMaker und die Verwendung von Xalan erfolgt quasi unsichtbar.

AXCM
Das kostenlose Plug-in AXCM ermöglicht seit vielen Jahren (zuvor unter den Namen Sourcerer und ABCM) das Attribute-basierte Filtern von Dokumenten. Dabei werden die nicht relevante Teile eines Dokuments auf Basis von Attributwerten ausgeblendet (oder gelöscht). Dies ist nicht zu vergleichen mit dem manuellen Zuweisen von Textbedingungen, denn hier erfolgt dies durch das Plug-in auf Basis von festen Regeln und ist beliebig kontrollierbar und wiederholbar.

Mit der Version AXCM 2.0 kann die Definition der Filterregeln nicht mehr nur die einfache Übereinstimmung von Attributwerten berücksichtigen sondern per XPath können nahezu beliebige Regeln erstellt werden. Aus pragmatischen Gründen werden die Regeln positiv verfasst; es wird also festgelegt, welche Elemente sichtbar sein sollen, alles andere wird ausgeblendet. Ein einfache Regel zum Anzeigen aller Elemente, die das Produkt »A« betreffen (eingestellt über ein Attribut ›product‹) sähe so aus:

//*[not(@product) or @product="" or @product="A"]

Klartext: Betrachte alle Elemente (*), die kein Attribut ›product‹ haben oder deren Attribut ›product‹ leer ist oder deren Attribut ›product‹ den Wert „A“ hat.

Eine Regel, die alle Elemente außer ›comment‹ einblendet, lautet:

//*[not(self::comment)]

Klartext: Betrachte alle Elemente (*), die nicht ›comment‹ sind.

Regeln zu Elementen und Attributen lassen sich beliebig kombinieren und sowohl zum Ein/Ausblenden als auch zum Einfärben von Dokumentteilen verwenden.

FrameSLT
Das kostenpflichtige Plug-in FrameSLT deutet in seinem Namen die Verwandtschaft zu XSLT an, darin lag wohl auch die ursprüngliche Idee des Technischen Redakteurs und Programmierers Russ Ward. Als viel wichtiger und mächtiger stellte sich das Lokalisieren von Elementen mit Hilfe von XPath-Ausdrücken heraus. In Verbindung mit Element- und Attribut-Aktionen ergibt sich ein leistungsfähiges Suchen/Ersetzen-Werkzeug für strukturierte Dokumente.

Zum Beispiel bei der Suche nach allen Elementen ›b‹ die wiederum in ›b‹ stecken (doppelt fett, sozusagen):

//b[parent::b]

Klartext: Suche alle Elemente ›b‹, deren Eltern-Element ›b‹ ist.

Mit der Element-Aktion ›Unwrap‹ wird die fehlerhafte Auszeichnung korrigiert.


»FrameSLT Node Wizard« mit XPath-Suche und Element-Aktion

Eine derartige Bereinigungsaktion kann dann über ganze Dokumente oder Bücher durchgeführt werden.

Derartige Aktionen können zu Befehlssequenzen (»Scripts«) zusammengefasst und bei Bedarf erneut abgerufen werden. Die Konfiguration erfolgt geführt in einem FrameMaker-Dokument, die Auswahl und der Start erfolgen über den Dialog »FrameSLT Node Wizard Scripts«. Neben Element- und Attributaktion sind hier auch Aktionen möglich, mit denen FrameMaker-Eigenschaften beeinflusst werden können (zum Beispiel Tabellenformate, Spaltenbreiten, Markentexte, Querverweisangaben). Mit dieser Funktion erschließt sich dann der ganze Funktionsreichtum des Plug-ins.


»FrameSLT Node Wizard Scripts«

Konkrete Anwendungsbeispiele für FrameSLT

Im Rahmen des Vortrags werden die Konfiguration solcher Anwendungen und deren Ausführung gezeigt.

Fehlersuche in Dokumenten

Haupteinsatzfeld für diese Art von »Reparaturen« sind die Migration von unstrukturierten zu strukturierten Dokumenten, weil dabei oft eine Vielzahl nicht komplett durch die Konvertiertabelle lösbarer Probleme übrig bleiben. Ein anderes Feld ist die Bearbeitung der Dokumente durch mangelhaft geschulte Mitarbeiter (z.B. im vermeintlich billigeren Ausland), die dann wieder repariert werden müssen.

Konsistenzprüfungen

Wenn zum Beispiel bestimmte Begriffe gesondert ausgezeichnet sind und diese auch in einer Übersichtstabelle vorkommen sollen, kann überprüft werden, ob dem so ist. Für jeden gefundenen Begriff würde das Vorhandensein in der Übersichtstabelle geprüft werden. Umgekehrt kann auch geprüft werden, ob die in der Übersichtstabelle aufgezählten Begriffe auch tatsächlich im Dokument vorkommen. Auf diese Weise können falsche Schreibungen und fehlende Auszeichnungen ermittelt werden.

Umbau von Dokumenten

Es ist möglich, die per XPath gefundenen Elemente auch in die Zwischenablage zu kopieren und von dort aus an anderen Stellen einzusetzen. Darüberhinaus kann ein solche Skript selbst beliebige strukturierte Inhalte enthalten, die in die zu bearbeitenden FrameMaker-Dokumente eingefügt und dort angepasst werden können.

Verzeichnisse innerhalb von Dokumenten erstellen

Der meiner Ansicht nach offenkundigste Nutzen ist die Erstellung strukturierter Verzeichnisse innerhalb von Dokumenten. Da die Informationen der „einzusammelnden“ Elemente ja vorliegen, ist es ohne weiteres möglich daraus mit Querverweisen ein Kapitelinhaltsverzeichnis oder Abbildungsverzeichnis zu erzeugen.

Fazit

Wer die vielfältigen Möglichkeiten XML-strukturierter FrameMaker-Dokumente ausschöpfen möchte, kommt um FrameSLT nicht herum.

Bezugsquelle für die genannten Plug-ins ist http://www.weststreetconsulting.com/

Informationen auf Deutsch finden Sie auf http://www.fminit.eu/axcm/ und http://www.fminit.eu/frameslt/

Stand: 12.10.2011

Eine Antwort zu XPath in FrameMaker praktisch nutzen

  1. Heute kamen die Vortragbewertungen und ich möchte mich bei allen Besuchern für die Freundliche Bewertung bedanken:

    Referent/in Gesamteindruck: 1,22
    Inhalt (Durchschnitt): 1,76
    Qualität (Durchschnitt): 1,23
    Neutralität (Durchschnitt): 2,51
    Gesamtbewertung (Durchschnitt): 1,42

    Zum Thema Neutralität will ich gerne zugeben, dass ich das Plug-in FrameSLT von http://www.weststreetconsulting.com/ heftig gelobt habe. Aus gutem Grund, meine ich.

Kommentare sind geschlossen.