sed: XML zur Darstellung in HTML umarbeiten [update] | TechNovelty

Zur Kategorie 'Mehr machen mit dem Mac'? Hier klicken!

Startseite mail me! RSS-Feed

sed: XML zur Darstellung in HTML umarbeiten [update]

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” [update] Aufgrund des Feedbacks, hier eine genauere Erklärung: Es handelt sich hierbei um XML-Schnipsel, also nur fünf bis ca. 40 Zeilen aus den jeweiligen Dateien. Da diese Auszüge keine valide XML-Struktur mehr haben, also nicht “well-formed” sind, ist es einfacher die benötigten Änderungen per 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”. ;-) ) soll in HTML als XML dargestellt, und nicht vom Browser umgewandelt werden. Da HTML nicht – zumindest nicht zuverlässig – das <![CDATA[-Konstrukt unterstützt, welches die unmodifizierte bzw. nicht-interpretierte Darstellung von XML erlaubt, müssen also Tags wie <screenshot> in &lt;screenshot&gt; 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/\\</\\&lt;/g' datei1.xml \
| sed 's/\\>/\\&gt;/g' > datei2.txt

Aufgedröselt macht der Befehl folgendes:

  1. sed wird aufgerufen und
  2. angewiesen, eine Ersetzung (Substitution) s von allen Vorkommen von < nach &lt; global g in datei1.xml vorzunehmen.
  3. Die Ausgabe dieses Befehls wird per | zum zweiten Aufruf von sed weitergeleitet die
  4. eine weitere Ersetzung, wie unter 2. beschrieben, durchführt. Diesmal für das Zeichen >.
  5. Das Resultat wird in die Datei datei2.txt geschrieben.

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: , , ,

| Trackback |

-- Anzeige --

Möglicherweise auch interessant (aber nicht zwingend in diesem Zusammenhang):



Kommentieren (moderiert)

-- Anzeige --