Next: , Previous: Snippets, Up: Die Webseiten


7.5 Das make-Skript

Mit dem Aufruf

     ../zml/tools/make-karman-website.py

aus dem Zeitungs-Verzeichnis heraus wird die Webseite in webpages/ auf den aktuellen Stand gebracht. Bei make-karman-website.py handelt es sich um ein Python-Skript.

Die Schritte, die das Skript durchführt, sind im einzelnen:

  1. Die Bilder zu den Artikeln werden von bilder/ nach webpages/Bilder/original/ kopiert. Das Verzeichnis webpool/ wird nach webpages/pool/ kopiert.
  2. Mittels convert von ImageMagick (PDF) und der Python Image Library (JPEG und PNG) werden Versionen mit definierter Breite von allen Bildern in bilder/ erzeugt. Dabei werden PDFs auf 500px bzw. 100dpi Breite und alle anderen Bitmaps auf 300px Breite getrimmt.
  3. Ab diesem Zeitpunkt werden keine Bitmaps mehr zur Webseite hinzugefügt. Daher werden jetzt für alle Bitmaps in webpages/ und seinen Unterverzeichnissen die Höhe- und Breiteninformationen ermittelt und diese Daten in der temporären Datei webpages/bilder.xml für die XSLT-Prozesse zur Verfügung stellt. Sinn der Übung ist, daß dann in den HTML-Dateien der Webseite alle <img>-Elemente mit width- und height-Attributen ausgestattet werden können.
  4. Nun wird die temporäre Datei ausgaben.lst angelegt, die in webseite.xml eingebunden wird, see webseite.xml. ausgaben.lst enthält bloß eine Auflistung aller bisherigen Ausgaben, ob nur im Web erschienen oder nicht.

    Es folgt der erste XSLT-Prozeß: Das Skript xslt/ausgaben-sammeln.xsl macht sich über die Liste der Ausgaben-Dateien in webseite.xml her.1 Ziel ist es, die temporäre Datei ausgaben.xml zu bauen, welche nicht nur die Ausgaben, sondern auch alle in ihnen erschienen Artikel enthält. Dabei wird auch schon vorsortiert (nur die Artikel innerhalb der Ausgaben, nicht die Ausgaben selber) und gesplittete Artikel durch ihre Gesamtfassung ersetzt.

    Übrigens werden Ausgaben, die noch zu neu für's Web sind, nicht berücksichtigt. Somit wird vermieden, daß eine noch nicht erschienene Ausgabe versehentlich auf der Webseite landet. Die Regel ist, daß der Tag des Skriptaufrufs frühestens der Erscheinungstag sein muß, damit die Ausgabe online geht.

    Somit steht den XSLT-Prozessen, die noch folgen, in ausgaben.xml eine Liste aller Ausgaben und Artikel zur Verfügung. Das ist beispielsweise wichtig, um in der linken Spalte der Webseiten ein Inhaltsverzeichnis anbieten zu können.

  5. Jetzt kommen die Snippets an die Reihe. Anhand von webseite.xml werden die Startseite, die Menüpunkte und das (u.U. mehrseitige) Archiv angelegt.
  6. Nun werden alle Artikel in artikel/ mittels XSLT in ihre endgültige Form gebracht und in webpages/Artikel/ abgelegt (see Saxon-Aufrufe).

    Dabei wird durch einen Aufruf von HTML Tidy sichergestellt, daß es sich auch um gültiges XHTML handelt, das da produziert wird, und daß die Ergebnis-HTMLs maximal Browser-kompatibel und schön formatiert sind. (HTML Tidy kommt auch bei den Snippets zum Einsatz.)

  7. Schließlich werden die Newsfeeds erzeugt. Dafür ist das Skript xslt/destilate-feed.xsl zuständig, welches einen Atom-1.0-Feed in webpages/karman.atom generiert. Atom eignet sich als sehr reichhaltiges, streng XML-basiertes und gut spezifiziertes Feed-Format gut, um als Ausgangspunkt für die anderen Feed-Formate zu dienen. Bislang gibt es allerdings nur deren eines: Mittels xslt/atom2rss10.xsl wird aus dem Atom-Feed ein RSS-1.0-Feed erzeugt. RSS 2.0 wäre auch recht leicht möglich, ist aber noch nicht geschehen. Und auch nicht dringend.
  8. Als allerletztes werden die temporären Dateien weggeräumt.

Fußnoten

[1] Es ist sinnvoll wenn auch nicht nötig, diese Liste in eine eigene XML-Datei zu verschieben, weil die aktuelle Lösung mit einer eingebetteten DTD in webseite.xml Probleme mit einigen XML-Parsern macht.