Die XML-DTD

Die XML-Dateien sind konform zur XML-DTD travelog.dtd. Der emacs XML-Modus versteht keine XML-Schemen, und ich so ganz nebenbei auch nicht. Für XML-DTDs hingegen ist der beste Editor der Welt in jedem Linux-System vorhanden: vi. Wenn man ein Schema mit vi schreiben will, schreibt man sich einen Wolf.

Die erste der eingebundenen XML-Dateien enthält eine hierarchische Beschreibung der Welt (d.h., aller Orte und Länder, die in meinen Berichten erwähnt werden). Dazu dient das Element location:

<!ELEMENT location (name,flag?,(map|gmap)?,extinfo*,extlink*,location*) >
<!ATTLIST location loc-id ID #REQUIRED
                   gloc CDATA #IMPLIED  >

Eine location hat also einen Namen, ggf. eine Flagge, eine Karte (z.B., wenn es sich um ein ganzes Land handelt), Links auf externe Ressourcen (extinfo für "Weitere Informationen", extlink für "Sonstige Links") und u.U. weitere locations, die darin enthalten sind. Es gibt zwei Arten von Karten: map basiert auf Karten, die als Datei auf dieser Website vorliegen, während gmap Karten von Google Maps einbinden. Jede location hat ausserdem eine eindeutige XML-ID, mit der sie im Rest des Dokuments verwendet wird. Für die Verwendung mit Google Maps kann außderdem im Attribut gloc angegeben werden, wie Google diesen Ort beschreibt. Es folgt im wesentlichen der Syntax von Google Maps: ein Ort kann mit einem Namen angegeben werden, z.B. gloc="Kuala+Lumpur" oder durch Google-Koordinaten, z.B. gloc="0,0".

Nach der Abbildung der Welt als XML-Element folgen zwei Arten von Reisebeschreibungen:

  1. Ein Element für Reisebeschreibungen, die gut geografisch und zeitlich eingeteilt werden können. Dies ist eine dreistufige Hierarchie aus Reisesegmenten und Orten.

    <!ELEMENT country-segment (name, conversion-factor*, general-info?, (region-segment+|(place-segment|nonplace-segment)+)) >
    <!ATTLIST country-segment from CDATA #REQUIRED
                              to CDATA #REQUIRED >
    
    <!ELEMENT region-segment (name, conversion-factor*, general-info?, (place-segment|nonplace-segment)+ ) >
    <!ATTLIST region-segment from CDATA #REQUIRED
                             to CDATA #REQUIRED >
    <!ELEMENT place-segment (conversion-factor*,(loc-ref|%pcontent;)*) >
    <!ATTLIST place-segment from CDATA #REQUIRED
                            to CDATA #IMPLIED
                            location IDREF #REQUIRED
                            int-id ID #IMPLIED >
    <!ELEMENT nonplace-segment (name,(%pcontent;)+) >
    <!ATTLIST nonplace-segment from CDATA #REQUIRED
                               to CDATA #IMPLIED
                               location IDREF #REQUIRED
                               int-id ID #IMPLIED >
    
    
    

    Jeder Eintrag bezieht sich auf eine location und hat einen Zeitraum. Dieses Element habe ich für die lange Reise nach Südostasien verwendet.

  2. Ein Element für Reisebeschreibungen, die eher thematisch oder zumindest nicht so klar geografisch zuzuordnen sind.

    <!ELEMENT tale (name,conversion-factor*,origin?,copyright-note?,intro?,tale-segment+) >
    <!ATTLIST tale from CDATA #REQUIRED
                   to CDATA #REQUIRED
                   location IDREF #REQUIRED >
    <!ELEMENT tale-segment (name, lead-in?, (section+ | ((%pcontent;)+, section*))) >
    <!ATTLIST tale-segment int-id ID #IMPLIED
                           location IDREF #IMPLIED >
    

    Dieses Element hat eine gewöhnliche Kapitelstruktur, jedoch können jedem Kapitel ebenfalls optional Orte zugewiesen werden. Dieses Element habe ich für die alte Maus-Reisebeschreibung für Rußland verwendet.

Zum Schluß gibt es eine Ansammlung von "Features" für andere Teile von REIS.

<!ELEMENT feature (name, (section+ | ((%pcontent;)+, section*) | map )) >
<!ATTLIST feature feature-id ID #IMPLIED >

Diese Seite ist z.B. ein Feature, ebenso die Garuda-Galerie. Features werden über eine XML-ID identifiziert, damit eine XSL-Transformation gezielt auf einzelne Features zugreifen kann.




This page has been created on Donnerstag 19. Dezember 2013 from travelog.xml using travelog.xsl.