Da ich den Vorgang gerade für ein Projekt benötige, hier ein kurzer Tip für die Benutzung des Stream Editors, unter *NIX auch als sed bekannt.
Eine XML-Datei (genauer gesagt, eine Untermenge der XML-Datei, also nicht “well-formed” sed durchzuführen. Wenn vollständige Dateien benötigt werden, kann man auch XSLT benutzen und die Transformation mit xsltproc o.ä. durchzuführen. Allerdings ist das kürzeste Stylesheet für eine derartige Umsetzung immer noch mindestens doppelt so lang wie die Skript-Variante. Wir sprechen also vom “Weg des geringsten Widerstands”.
<![CDATA[-Konstrukt unterstützt, welches die unmodifizierte bzw. nicht-interpretierte Darstellung von XML erlaubt, müssen also Tags wie <screenshot> in <screenshot> umgewandelt werden. Kein Problem, Texteditor der Wahl öffnen, “Suchen & Ersetzen”, speichern, fertig. Den Vorgang noch 200 mal wiederholen und wir sind fertig. Das sollte sich doch auch einfacher bewerkstelligen lassen, oder? Richtig, zumindest unter *NIX oder cygwin (für die Windows-Fraktion).
Kommen wir also zu sed:
sed 's/\\</\\</g' datei1.xml \
| sed 's/\\>/\\>/g' > datei2.txt
Aufgedröselt macht der Befehl folgendes:
sedwird aufgerufen und- angewiesen, eine Ersetzung (Substitution)
svon allen Vorkommen von<nach<globalgindatei1.xmlvorzunehmen. - Die Ausgabe dieses Befehls wird per
|zum zweiten Aufruf vonsedweitergeleitet die - eine weitere Ersetzung, wie unter 2. beschrieben, durchführt. Diesmal für das Zeichen >.
- Das Resultat wird in die Datei
datei2.txtgeschrieben.
Dann kann man Auszüge wie
<figure>
<title>Tags Window</title>
<screenshot>
<mediaobject>
<imageobject>
<imagedata fileref="pictures/ch03/ch03-02tagswindow1.png"
format="PNG" />
</imageobject>
</mediaobject>
</screenshot>
</figure>
<para>The menu of the <quote>Tags</quote> window
allows us to create a new tag.</para>
einfach in den HTML-Editor hineinkopieren. Manchmal muss es eben die Command-Line sein. (Zumindest für faule Menschen wie mich.
)
Das ganze, in einer etwas aufwendigeren Version in ein Skript verpackt, hat mir schon beim Schreiben der Survival Guide einiges an Nerven gespart.
Listening to: ‘Ending Theme’ by ‘Pain of Salvation’ (Remedy Lane)
Technorati Tags: unix, linux, sed, convert XML