<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="/pool/xslt_ht.xslt" type="application/xml"?>
<xsl:stylesheet
  xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
  xmlns:l = "http://herbaer.de/xmlns/20141210/localization"
  xmlns:ht = "http://www.w3.org/1999/xhtml"
  xmlns:is = "http://herbaer.de/xmlns/20080705/imgshow"
  xmlns:ti = "http://herbaer.de/xmlns/201500703/transinfo/"
  xmlns:d = "http://herbaer.de/xmlns/20051201/doc"
  xmlns:tm = "http://herbaer.de/xmlns/20130628/transformation_attributes"
  xmlns = "http://www.w3.org/1999/xhtml"
  exclude-result-prefixes = "d is ht ti tm"
  version = "1.0"
  xml:lang = "de"
>
<d:info xmlns="http://herbaer.de/xmlns/20051201/doc">
  <title>desktop.xslt</title>
  <subtitle>XHTML-Darstellung einer "Bildergeschichte" für Desktop-Geräte</subtitle>
  <date>2013-06-18</date>
  <author>
    <personname>
      <firstname>Herbert</firstname>
      <surname>Schiemann</surname>
    </personname>
    <email>h.schiemann@herbaer.de</email>
  </author>
</d:info>

<d:section xmlns="http://herbaer.de/xmlns/20051201/doc" role="stylesheet">
<section>
  <title>Schiebeleisten</title>
  <para>
Eine "Schiebeleiste" ist ein rechteckiger Bereich (Inhaltsbereich),
der für die vollständige Anzeige zu hoch sein kann.
Man kann sich vorstellen, dass über dem Bereich ein Sichtfenster liegt,
durch das ein Ausschnitt des darunter liegenden Bereichs sichtbar ist.
Das Sichtfenster und der Inhaltsbereich sind gleich breit.
Wenn das Sichtfenster höher ist als der Inhaltsbereich,
dann wird der Inhaltsbereich in das Sichtfenster eingepaßt.
Er kann im Sichtfenster gestreckt und zentriert oder am oberen Rand
angeordnet werden.
  </para>
  <para>
In den meisten Fällen ist aber der Inhaltsbereich wahrscheinlich
höher als das Sichtfenster.
Oberhalb und unterhalb des Sichtfensters werden dann "Bewegungs-Schaltflächen"
angezeigt. Wenn der Mauszeiger auf die obere Schaltfläche zeigt,
dann wird der Inhaltsbereich "unter dem Sichtfenster" nach unten verschoben,
bis die obere Kante des Inhaltsbereichs und des Sichtfensters zusammenfallen.
Wenn der Mauszeiger auf die untere Schaltfläche zeigt,
dann wird der Inhaltsbereich unter dem Sichtfenster nach oben verschoben,
bis die Unterkanten des Inhaltsbereichs und des Sichtfensters zusammenfallen.
Ein Mausklick auf eine Schaltfläche hält die Bewegung des Inhaltsbereichs an
und startet sie wieder.
Ein Doppelklick auf eine Schaltfläche zeigt den oberen oder den unteren Rand
des Inhaltsbereichs an.
  </para>
  <para>
Die genannten rechteckigen Bereiche
(Inhaltsbereich, Sichtfenster und die beiden Bewegungs-Schaltflächen)
bilden zusammen einen umfassenden Bereich.
Eine Schiebeleiste ist somit eine Gruppe von fünf Bereichen.
Jeder Bereich entspricht einem HTML-Element mit einem
<tag class="attribute">id</tag>-Attribut.
Die <tag class="attribute">id</tag>-Werte sind zusammengesetzt
aus einem Präfix, das die Gruppe bezeichnet,
und einem Suffix, das das Element innerhalb der Gruppe bezeichnet.
Durch eine Konvention sind den fünf Elemente die folgenden Suffixe
zugeordnet:
  </para>
  <variablelist>
    <varlistentry>
      <term><literal>_main</literal></term>
      <listitem>
        <para>
Der umfassende Bereich, der die Bewegungs-Schaltflächen und das Sichtfenster und
"darunter" den Inhaltsbereich enthält.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><literal>_frame</literal></term>
      <listitem>
        <para>
Das Sichtfenster.
Zusammen mit den Bewegungs-Schaltflächen füllt es den umfassenden Bereich aus.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><literal>_up</literal></term>
      <listitem>
        <para>
Die obere Bewegungs-Schaltfläche
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><literal>_down</literal></term>
      <listitem>
        <para>
Die untere Bewegungs-Schaltfläche
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><literal>_content</literal></term>
      <listitem>
        <para>
Der Inhaltsbereich.
Er ist als HTML-Element im Sichtfenster enthalten.
        </para>
      </listitem>
    </varlistentry>
  </variablelist>
  <para>
In einer Schiebeleiste wirken die Dokument-Struktur,
Cascading Stylesheets und JavaScript zusammen.
Die Bewegungs-Schaltflächen sind durch das Wort "<literal>mover</literal>"
im Attribut <tag class="attribute">class</tag> gekennzeichnet.
Sie können aktiv oder inaktiv sein. Eine aktive Schaltfläche hat das Wort
"<literal>active</literal>" im Attribut <tag class="attribute">class</tag>,
ein inaktive Schaltfläche das Wort "<literal>inactive</literal>".
Der anfängliche Zustand ist inaktiv.
  </para>
  <para>
Hier werden zwei Schiebeleisten verwendet:
die Abschnittsliste, Präfix <literal>ix_</literal>,
mit Verweisen auf die einzelnen Inhalts-Abschnitte
und die Leiste der Vorschaubilder, Präfix <literal>sl_</literal>.
  </para>
</section>

<section role="stylesheet">
  <title>Popup</title>
  <para>
Ein "Popup" kombiniert mehrere Elemente,
die ähnlich wie die Schiebeleisten durch ein gemeinsames Präfix
der <tag class="attribute">id</tag>-Werte miteinander verbunden sind.
Die Suffixe sind:
  </para>
  <variablelist>
    <varlistentry>
      <term><literal>_link</literal></term>
      <listitem>
        <para>
Bezeichnet den Knopf, der das eigentliche "Popup"-Fenster öffnet (anzeigt).
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><literal>_frame</literal></term>
      <listitem>
        <para>
Das "Popup"-Element, das angezeigt wird, wenn der Anwender den Knopf drückt.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><literal>_close</literal></term>
      <listitem>
        <para>
Der Knopf, der das Popup-Fenster schließt (verbirgt).
        </para>
      </listitem>
    </varlistentry>
  </variablelist>
  <para>
Es ist möglich, dass derselbe Knopf ein Popup-Fenster öffnet und schließt.
Ich gehe hier von dem folgenden Anwendungsmuster aus:
Der Öffner (Schaltknopf <literal>_link</literal>) ist anfangs aktiv,
das Popup-Fenster wird nicht angezeigt. Beim Drücken des Öffners wird
das Popup-Fenster aktiv und der Öffner selbst inaktiv. Der Schließknopf
ist ein Teil des Popup-Fensters.
Bei einem Klick auf den Schließknopf
wird das Popup-Fenster inaktiv und der Öffner wieder aktiv.
  </para>
  <para>
Die <tag class="attvalue">class</tag> - Wörter
<tag class="attvalue">popact</tag> und
<tag class="attvalue">popinact</tag> zeigen den Zustand der Popup-Elemente
an. Weitere <tag class="attvalue">class</tag> - Wörter bezeichnen
die Funktion eines Popup-Elements (Öffner, Popup-Fenster, Schließer).
  </para>
  <variablelist>
    <varlistentry>
      <term><literal>popact</literal></term>
      <listitem>
        <para>
Dieses Wort im Wert des Attributs <tag class="attvalue">class</tag>
kennzeichnet einen "Öffner" oder ein Popup-Fenster als aktiv.
Von einem "Popup" ist entweder der Öffner oder das Popup-Fenster aktiv.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><literal>popinact</literal></term>
      <listitem>
        <para>
Kennzeichnet einen Popup-Öffner oder ein Popup-Fenster als inaktiv.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><literal>popup</literal></term>
      <listitem>
        <para>
Kennzeichnet ein Popup-Fenster.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><literal>close</literal></term>
      <listitem>
        <para>
Kennzeichnet einen Schließknopf eines Popups.
        </para>
      </listitem>
    </varlistentry>
  </variablelist>
  <para>
Der "Schließen"-Knopf wird als Teil des Popup-Fensters
nicht zwischen "aktiv" und "inaktiv" umgeschaltet.
  </para>
  <para>
Hier verwende ich drei Popups:
  </para>
  <variablelist>
    <varlistentry>
      <term><literal>set</literal></term>
      <listitem>
        <para>
Das Präfix <literal>set</literal> bezeichnet ein Popup, in dem der Anwender
Einstellungen vornehmen kann.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><literal>about</literal></term>
      <listitem>
        <para>
Das Präfix <literal>about</literal> bezeichnet ein Popup
mit Information über die Verantworlichen für die Website.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><literal>help</literal></term>
      <listitem>
        <para>
Das Präfix <literal>help</literal> bezeichnet ein Popup
mit einer kurzen Hilfe zu Tasten-Befehlen.
        </para>
      </listitem>
    </varlistentry>
  </variablelist>
</section>

<section>
  <title>Attribute im erzeugten XHTML-Dokument</title>
  <para>
In der folgenden Liste steht der Platzhalter <replaceable>[section]</replaceable>
für die Kennung eines <tag class="element">is:section</tag> - Elements
im Format <literal>s9+</literal>, wobei 9+ für die laufende Nummer des Abschnitts steht.
<replaceable>[jpg]</replaceable> steht für die Kennung eines
<tag class="element">is:jpg</tag> - Elements,
den Bilddateinamen ohne die Endung <filename class="extension">.jpg</filename>.
  </para>
  <para>
Das erzeugte XHTML-Dokument verwendet die folgenden
<tag class="attribute">id</tag>-Attribute:
  </para>
  <variablelist>
    <varlistentry>
      <term><tag class="attvalue">audio</tag></term>
      <listitem>
        <para>
Das <tag class="element">audio</tag>-Element zur Klangwiedergabe.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">header</tag></term>
      <listitem>
        <para>Leerer Abschnitt, Kopf der Seite</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">ix_main</tag></term>
      <listitem>
        <para>Abschnittsliste (eine Schiebeleiste)</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">ix_up</tag></term>
      <listitem>
        <para>
          Die obere Bewegungs-Schaltfläche der Abschnittsliste zur Bewegung nach oben
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">ix_frame</tag></term>
      <listitem>
        <para>Das Sichtfenster der Abschnittsliste</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">ix_content</tag></term>
      <listitem>
        <para>Der Inhaltsbereich der Abschnittsliste</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">ix_down</tag></term>
      <listitem>
        <para>
          Die untere Bewegungs-Schaltfläche der Abschnittsliste zur Bewegung nach unten
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term>
        <tag class="attvalue">li_<replaceable>[section]</replaceable></tag>
      </term>
      <listitem>
        <para>
          Der Eintrag zum Abschnitt <replaceable>[section]</replaceable>
          in der Abschnittsliste.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">sl_main</tag></term>
      <listitem>
        <para>Leiste der Vorschaubilder (eine Schiebeleiste)</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">sl_up</tag></term>
      <listitem>
        <para>Die obere Bewegungs-Schaltfläche der Vorschaubilder</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">sl_frame</tag></term>
      <listitem>
        <para>Das Sichtfenster der Vorschaubilder</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">sl_content</tag></term>
      <listitem>
        <para>Der Inhaltsbereich der Vorschaubilder</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">sl_down</tag></term>
      <listitem>
        <para>Die untere Bewegungs-Schaltfläche der Vorschaubilder</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term>
        <tag class="attvalue">slides_<replaceable>[section]</replaceable></tag>
      </term>
      <listitem>
        <para>
          Unterabschnitt der Vorschaubider
          mit den Bildern zum Abschnitt <replaceable>[section]</replaceable>.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term>
        <tag class="attvalue">div_<replaceable>[section]</replaceable>_<replaceable
        >[jpg]</replaceable>_<replaceable>[lnr]</replaceable></tag>
      </term>
      <listitem>
        <para>
          Rahmen für das Vorschaubild mit der Datei-Kennung
          (Dateiname ohne "<filename class="suffix">.jpg</filename>")
          <replaceable>[jpg]</replaceable>.
          <replaceable>[lnr]</replaceable> ist die Nummer des Bildes innerhalb
          des Abschnitts, beginnend mit 0.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">div_title</tag></term>
      <listitem>
        <para>
          Die Titel-Leiste.
          Sie besteht aus dem Logo (<tag class="attvalue">div_logo</tag>),
          der Seiten-Überschrift (<tag class="attvalue">div_head</tag>),
          dem Menüfeld (<tag class="attvalue">div_links</tag>)
          und der Ton-Schaltfläche (<tag class="attvalue">div_sound</tag>).
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">div_head</tag></term>
      <listitem>
        <para>Die Seiten-Überschrift in der Titel-Leiste</para>
        <para>
          Damit die voreingestellte Darstellung eines
          <tag class="element">h1</tag>-Elements mit einem oberen Rand
          (<property>margin</property>) die "Geometrie" nicht stört,
          ist das <tag class="element">h1</tag>-Element in einem
          <tag class="element">div</tag>-Element verschachtelt.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">div_logo</tag></term>
      <listitem>
        <para>Feld für das Logo in der Titelleiste</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">div_links</tag></term>
      <listitem>
        <para>Menüfeld mit Verweisen und "Knöpfen"</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">views_link</tag></term>
      <listitem>
        <para>Der Knopf öffnet das Fenster "Ansichten".</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">help_link</tag></term>
      <listitem>
        <para>Der Knopf öffnet das Popup-Fenster "Befehle".</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">div_sound</tag></term>
      <listitem>
        <para>
          Schaltfläche zum Starten und Beenden der Tonwiedergabe.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">div_main</tag></term>
      <listitem>
        <para>
Der Haupt-Inhalt
mit dem Haupttext (ID <tag class="attvalue">mt_main</tag>)
oder dem Haupt-Bild (ID <tag class="attvalue">div_mainimg</tag>)
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">mt_main</tag></term>
      <listitem>
        <para>Das umfassende Element für den Text der Abschnitte (Haupttext)</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">div_mainimg</tag></term>
      <listitem>
        <para>Abschnitt (Rahmen) des Haupt-Bildes</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">img_main</tag></term>
      <listitem>
        <para>Das Haupt-Bild</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term>
        <tag class="attvalue">span_<replaceable>[jpg]</replaceable>_<replaceable
        >[lnr]</replaceable></tag>
      </term>
      <listitem>
        <para>Verweis auf ein Bild im Haupttext</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term>
        <tag class="attvalue">iimg_<replaceable>[jpg]</replaceable>_<replaceable
        >[lnr]</replaceable></tag>
      </term>
      <listitem>
        <para>Ein Inline-Bild am Ende des Haupttextes</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">set_frame</tag></term>
      <listitem>
        <para>Popup-Fenster "Einstellung ..."</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">sel_imagesize</tag></term>
      <listitem>
        <para>Auswahlfeld "Bildgröße" im Fenster "Einstellung ..."</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">sel_view</tag></term>
      <listitem>
        <para>Auswahlfeld "Bilddarstellung" im Fenster "Einstellung ..."</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">sel_imgframe</tag></term>
      <listitem>
        <para>Auswahlfeld "Bildrahmen" im Fenster "Einstellung ..."</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">sel_duration</tag></term>
      <listitem>
        <para
        >Zahl-Eingabefeld "Anzeigedauer bei Bildlauf" im Fenster "Einstellung ..."</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">sel_sequence</tag></term>
      <listitem>
        <para>Auswahlfeld "Bildlauf" im Fenster "Einstellung ..."</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">chk_global</tag></term>
      <listitem>
        <para>Markierungsfeld "Alle Bilder" im Fenster "Einstellung ..."</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">inp_start</tag></term>
      <listitem>
        <para>Schaltfläche "Start" im Fenster "Einstellung ..."</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">sel_slides</tag></term>
      <listitem>
        <para>Auswahlfeld "Vorschaubilder" im Fenster "Einstellung ..."</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">sel_menu</tag></term>
      <listitem>
        <para>Auswahlfeld "Menü" im Fenster "Einstellung ..."</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">sel_evtsect</tag></term>
      <listitem>
        <para>Auswahlfeld "Abschnittwahl" im Fenster "Einstellung ..."</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">sel_evtsl</tag></term>
      <listitem>
        <para>Auswahlfeld "Bildwahl" im Fenster "Einstellung ..."</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">sel_evtlink</tag></term>
      <listitem>
        <para>Auswahlfeld "Verweis" im Fenster "Einstellung ..."</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">about_frame</tag></term>
      <listitem>
        <para>
Info-Fenster: ein Popup-Fenster, das die Menschen hinter der Website nennt.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">help_frame</tag></term>
      <listitem>
        <para>Popup-Fenster "Befehle"</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">views_frame</tag></term>
      <listitem>
        <para>Popup-Fenster "Ansichten"</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">footer</tag></term>
      <listitem>
        <para>Leerer Abschnitt, Fuß der Seite</para>
      </listitem>
    </varlistentry>
  </variablelist>
  <para>
Das erzeugte XHTML-Dokument verwendet neben den "Popup"-Wörtern
die folgenden Wörter in <tag class="attribute">class</tag>-Attributen:
  </para>
  <variablelist>
    <varlistentry>
      <term><tag class="attvalue">slide</tag></term>
      <listitem><para>Rahmen um ein Vorschau-Bild</para></listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">imglink</tag></term>
      <listitem>
        <para>
Verweis auf ein Bild im Text oder ein Inline-Vorschaubild
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">sectlink</tag></term>
      <listitem>
        <para>
Verweis (<tag class="element">span</tag>-Element)
auf einen Abschnitt der Bildergeschichte.
Das zweite Wort das Attributs <tag class="attribute">class</tag>
bezeichnet den Abschnitt, auf den verwiesen wird.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">mover</tag></term>
      <listitem>
        <para>Bewegungs-Schalter in der Vorschau-Leiste oder der Index-Leiste</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">shown</tag></term>
      <listitem>
        <para>
Dieses Wort wird für Elemente verwendet, die ein- und ausgeblendet werden können.
<tag class="attvalue">shown</tag> bedeutet, dass das Element angezeigt werden soll.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">paused</tag></term>
      <listitem>
        <para>
Dieses Wort wird für die Tonwiedergabe-Schaltfläche verwendet.
Es bedeutet, dass die Tonwiedergabe gestartet werden kann.
Javascript ersetzt <tag class="attvalue">paused</tag>
durch <tag class="attvalue">hidden</tag>, wenn der Klang (wahrscheinlich)
nicht abgespielt werden kann,
und durch <tag class="attvalue">playing</tag>,
wenn die Klangwiedergabe läuft.
        </para>
        <para>
Hier wird <tag class="attvalue">paused</tag> zu Anfang eingestellt.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term><tag class="attvalue">machine</tag></term>
      <listitem>
        <para>
Der Wert kennzeichnet Hinweise
(<tag class="element">div</tag>-Elemente) auf die maschinelle Übersetzung.
Jeder Abschnitt kann einen solchen Hinweis enthalten.
        </para>
      </listitem>
    </varlistentry>
  </variablelist>
</section>

<section>
  <title>Von der Element-ID zum Dateipfad der Bilddatei</title>
  <para>
Wenn dieselbe Transformation mehrmals ausgeführt wird, sollten bei jedem Mal
dieselben <d:tag class="attribute">id</d:tag>-Werte erzeugt werden.
Das erleichtert Verweise von "außen" auf bestimmte Elemente.
Die Funktion <function>generate-id</function> ist nicht geeignet.
  </para>
  <para>
Eine ID soll die folgenden Elemente eindeutig bezeichnen:
<itemizedlist>
<listitem><para>den Abschnitt (section im XML-Quelltext)</para></listitem>
<listitem><para>ein Bild</para></listitem>
<listitem><para>einen Verweis auf ein Bild</para></listitem>
</itemizedlist>
  </para>
  <para>
Die Abschnitte werden einfach durchnummeriert.
Eine Kennung <literal>s</literal><replaceable>[lnr]</replaceable> bezeichnet den Abschnitt
Nr. <replaceable>[lnr]</replaceable>: <literal>s12</literal> bezeichnet den 12. Abschnitt.
  </para>
  <para>
Bilder (Bilddateien) sind durch das Attribut
<tag class="element">jpg</tag>
/@<tag class="attribute">src</tag> eindeutig
bestimmt.
  </para>
  <para>
Die <tag class="element">jpg</tag> - Elemente verweisen auf eine Bilddatei.
Mehrere <tag class="element">jpg</tag> - Elemente können auf dieselbe
Bilddatei verweisen. In der Darstellung gibt es zu einem
<tag class="element">jpg</tag> - Element der Quelldatei einen Bildverweis im
Text und ein Vorschaubildchen, das ebenfalls auf das Bild verweist.
Es ist möglich, dass ein Abschnitt der Quelldatei kein
<tag class="element">jpg</tag> - Element enthält.
Oft enthält der erste oder der letzte Abschnitt keinen Bildverweis.
In der Darstellung erscheint zu einem
Abschnitt ohne Bildverweis aber eine Leiste von Vorschaubildchen,
die aus jedem Abschnitt mit einem Bildverweis das erste Bild enthält.
  </para>
  <para>
Die <tag class="attribute">id</tag>-Attribute der XHTML-Elemente,
die auf einem <tag class="element">jpg</tag>-Element beruhen,
sind aus vier Komponenten zusammengesetzt:
  </para>
  <itemizedlist>
    <listitem>
      <para>
        Dem Namen des XHTML-Elements
        (<tag class="element">span</tag> oder <tag class="element">div</tag>).
      </para>
    </listitem>
    <listitem>
      <para>
Der Kennung des Abschnitts in der Form
"<literal>s</literal><replaceable>99</replaceable>".
Dabei steht <replaceable>99</replaceable> für die laufende Nummer des Abschnitts.
      </para>
    </listitem>
    <listitem>
      <para>
Der Kennung der Bilddatei (Dateiname ohne das Suffix <literal>.jpg</literal>)
      </para>
    </listitem>
    <listitem>
      <para>
Der laufenden Nummer des <tag class="element">jpg</tag>-Elements
in der Quell-Datei
      </para>
    </listitem>
  </itemizedlist>
  <para>
Die Komponenten sind durch Unterstriche ("<literal>_</literal>") verbunden.
  </para>
</section>
</d:section><!-- role = 'stylesheet' -->

<d:para>Präfix des Pfades von JavaScript- und CSS-Dateien</d:para>
<xsl:param name="p_styleprefix" select="'/style/'"/>

<d:para>Präfix des Pfades von Bild-Dateien</d:para>
<xsl:param name="p_imgprefix" select="''"/>

<d:para>
Am Ende eines Abschnittstextes, der mehr als einen Bildverweis enthält,
werden einige Vorschaubilder "inline" angezeigt.
Dieses Parameter ist die maximale Anzahl.
</d:para>
<xsl:param name="p_num_inlimg" select="5"/>

<d:para>
Wurzelelement der Bildergeschichte
</d:para>
<xsl:variable name="g_rootelt" select="/*"/>

<d:para>
Sprache ohne weitere Spezifikation
</d:para>
<xsl:variable name="g_lang">
  <xsl:variable name="l" select="$g_rootelt/@xml:lang"/>
  <xsl:choose>
    <xsl:when test="string-length($l) = 0">
      <xsl:text>de</xsl:text>
    </xsl:when>
    <xsl:when test="contains ($l, '-')">
      <xsl:value-of select="substring-before ($l, '-')"/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="$l"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:variable>

<xsl:output method="xml" encoding="utf-8"/>

<d:section>
  <d:para>HTML-Rahmen: Kopf</d:para>
  <d:para>
Ein Web-Browser würde möglicherweise die XHTML-Elemente <tag class="element">title</tag>,
<tag class="element">style</tag> und <tag class="element">script</tag>
direkt interpretieren, deshalb der "Umweg" über
<tag class="element">xsl:element</tag>.
  </d:para>
</d:section>
<xsl:template match="/">
  <html>
    <xsl:copy-of select="*/@xml:lang"/>
    <head>
      <meta name="viewport" content="width=device-width, initial-scale=1"/>
      <xsl:element name="title">
        <xsl:value-of select="is:document/is:title"/>
      </xsl:element>
      <xsl:element name="link">
        <xsl:attribute name="href">
          <xsl:value-of select="concat ($p_styleprefix, 'desktop.css')"/>
        </xsl:attribute>
        <xsl:attribute name="rel">stylesheet</xsl:attribute>
      </xsl:element>
      <xsl:element name="link">
        <xsl:attribute name="href">
          <xsl:value-of select="concat ($p_styleprefix, 'shortcut_icon.png')"/>
        </xsl:attribute>
        <xsl:attribute name="rel">icon</xsl:attribute>
      </xsl:element>
      <xsl:element name="script">
        <xsl:attribute name="src">
          <xsl:value-of select="concat ($p_styleprefix, 'common.js')"/>
        </xsl:attribute>
      </xsl:element>
      <xsl:element name="script">
        <xsl:attribute name="src">
          <xsl:value-of select="concat ($p_styleprefix, 'desktop.js')"/>
        </xsl:attribute>
      </xsl:element>
      <xsl:element name="script">
        <xsl:text tm:content="normal">
var lng = "</xsl:text>
        <xsl:value-of select="$g_lang"/>
        <xsl:text tm:content="normal">";
var prf_img = "</xsl:text>
        <xsl:value-of select="$p_imgprefix"/>
        <xsl:text tm:content="normal">";
var tellabout = {};
tellabout.subject = "</xsl:text>
        <l:ph id="tellabout_betreff"/>
        <xsl:text tm:content="normal">";
tellabout.i_like  = "</xsl:text>
        <l:ph id="tellabout_das_gefaellt_mir"/>
        <xsl:text tm:content="normal">";
onload = function () { initialize (); };</xsl:text>
      </xsl:element>
    </head>
    <xsl:apply-templates select="$g_rootelt"/>
  </html>
</xsl:template>

<para xmlns="http://herbaer.de/xmlns/20051201/doc">
Die Anzeige besteht aus neun Abschnitten
(<tag class="element">div</tag>-Elementen),
die direkt oder indirekt absolut positioniert werden.
Die genauen Positionen werden durch Javascript an das Anzeige-Fenster
angepasst. Die genannten Positionen sind die, die die begleitende
Javascript-Datei <filename>desktop.js</filename> in der Voreinstellung einstellt.
Die <tag class="attribute">id</tag>-Attribute der Abschnitte sind:
<variablelist>
<varlistentry>
<term><tag class="attvalue">div_title</tag></term>
<listitem>
<para>
Die Titelleiste am oberen Rand. Sie besteht aus drei Feldern:
dem "Logo" (ID <tag class="attvalue">div_logo</tag>),
dem Titel (ID <tag class="attvalue">div_head</tag>)
und dem "Menüfeld" (ID <tag class="attvalue">div_links</tag>).
Das Menüfeld enthält ein einziges <tag class="element">div</tag>-Element
mit Innenabständen (<property>padding</property>).
So läßt sich die Höhe (<property>height</property>) des Menüfeldes einfacher
handhaben.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><tag class="attvalue">header</tag></term>
<listitem>
<para>
Der Bereich wird unterhalb des Titelleiste angezeigt,
wenn das Fenster groß genug ist.
CSS-Regeln füllen ihn mit einem Hintergrundbild.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><tag class="attvalue">ix_main</tag></term>
<listitem>
<para>Die Abschnitsliste an der linken Seite</para>
</listitem>
</varlistentry>
<varlistentry>
<term><tag class="attvalue">sl_main</tag></term>
<listitem>
<para>Die Vorschau-Bilder an der rechten Seite</para>
</listitem>
</varlistentry>
<varlistentry>
<term><tag class="attvalue">div_main</tag></term>
<listitem>
<para>
Der Hauptinhaltsbereich:
enthält die Textabschnitte und das aktuelle Bild.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><tag class="attvalue">footer</tag></term>
<listitem>
<para>
Der Bereich wird am unteren Rand angezeigt,
wenn das Fenster groß genug ist.
CSS-Regeln füllen ihn mit einem Hintergrundbild.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><tag class="attvalue">set_frame</tag></term>
<listitem>
<para>Popup-Fenster mit Optionen zur Anzeige</para>
</listitem>
</varlistentry>
<varlistentry>
<term><tag class="attvalue">about_frame</tag></term>
<listitem>
<para>
Das Info-Fenster nennt die Menschen hinter der Website.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><tag class="attvalue">help_frame</tag></term>
<listitem>
<para>Die Schnell-Hilfe zur Tastatur-Bedienung</para>
</listitem>
</varlistentry>
<varlistentry>
<term><tag class="attvalue">views_frame</tag></term>
<listitem>
<para>Das Fenster mit Verweisen zu verschiedenen Ansichten</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<xsl:template match="is:document">
  <body id="body">
    <xsl:element name="audio">
      <xsl:attribute name="id">audio</xsl:attribute>
      <xsl:attribute name="preload">auto</xsl:attribute>
      <source src="{$p_styleprefix}sound.ogg" type="audio/ogg; codecs=vorbis"/>
    </xsl:element>
    <div id="header" class="shown"/>
    <div id="footer" class="shown"/>
    <div id="ix_main" class="shown">
      <div id="ix_up" class="mover inactive">&#x25b2;</div>
      <div id="ix_frame">
        <ul id="ix_content">
          <xsl:apply-templates select="//is:section" mode="index"/>
        </ul>
      </div>
      <div id="ix_down" class="mover inactive">&#x25bc;</div>
    </div>
    <div id="sl_main" class="shown">
      <div id="sl_up" class="mover inactive">&#x25b2;</div>
      <div id="sl_frame">
        <div id="sl_content">
          <xsl:apply-templates select="//is:section" mode="slides"/>
        </div>
      </div>
      <div id="sl_down" class="mover inactive">&#x25bc;</div>
    </div>
    <div id="div_title" class="shown">
      <div id="div_logo">Herbär</div>
      <div id="div_head">
        <h1><xsl:value-of select="is:title"/></h1>
      </div>
      <div id="div_links" class="shown">
        <!-- verschachtelte div-Elemente erleichtern die Positionierung -->
        <div>
          <p>
            <a href="../index.xhtml" target="_top"><l:ph id="start"/></a>
          </p>
          <p>
            <a href="../index.xhtml#section.formal" target="_top"><l:ph id="kontakt"/></a>
          </p>
          <p id="views_link" class="popact"><l:ph id="ansichten"/></p>
          <p>
            <a href="{$p_styleprefix}desktop_help.xhtml.{$g_lang}">
              <l:ph id="hilfe"/>
            </a>
          </p>
          <p id="help_link" class="popact"><l:ph id="mehr"/></p>
        </div>
      </div>
      <div id="div_sound" class="paused">
        <div>&#x266b;</div>
      </div>
    </div>
    <div id="div_main">
      <div id="mt_main" class="active">
        <xsl:apply-templates select="is:section"/>
      </div>
      <div id="div_mainimg" class="inactive transparent">
        <!--
            ein dummy-src-Attribut führt zu einer unnötigen Anfrage
            mit dem Antwort-Code 404 (nicht gefunden)
        -->
        <img id="img_main" class="normal">
          <xsl:attribute name="alt"><l:ph id="bild"/></xsl:attribute>
        </img>
      </div>
    </div><!-- div_main -->
    <div id="set_frame" class="popup popinact">
      <table>
        <tbody>
          <tr>
            <td><l:ph id="imagesize"/></td>
            <td>
              <select id="sel_imagesize">
                <option value="images/" selected="selected">
                  <l:ph id="selsz_images"/>
                </option>
                <option value="smallimg/">
                  <l:ph id="selsz_smallimg"/>
                </option>
              </select>
            </td>
          </tr>
          <tr>
            <td><l:ph id="selview"/></td>
            <td>
              <select id="sel_view">
                <option value="normal">
                  <l:ph id="selview_normal"/>
                </option>
                <option value="hshrink">
                  <l:ph id="selview_height_shrink"/>
                </option>
                <option value="hstretch">
                  <l:ph id="selview_height_stretch"/>
                </option>
                <option value="hfit">
                  <l:ph id="selview_height_fit"/>
                </option>
                <option value="wshrink">
                  <l:ph id="selview_width_shrink"/>
                </option>
                <option value="wstretch">
                  <l:ph id="selview_width_stretch"/>
                </option>
                <option value="wfit">
                  <l:ph id="selview_width_fit"/>
                </option>
                <option value="shrink">
                  <l:ph id="selview_frame_shrink"/>
                </option>
                <option value="stretch">
                  <l:ph id="selview_frame_stretch"/>
                </option>
                <option value="fit" selected="selected">
                  <l:ph id="selview_frame_fit"/>
                </option>
              </select>
            </td>
          </tr>
          <tr>
            <td><l:ph id="selframe"/></td>
            <td>
              <select id="sel_imgframe">
                <option value="transparent" selected="selected">
                  <l:ph id="selframe_transparent"/>
                </option>
                <option value="grey">
                  <l:ph id="selframe_grey"/>
                </option>
                <option value="black">
                  <l:ph id="selframe_black"/>
                </option>
              </select>
            </td>
          </tr>
        </tbody>
      </table>
      <table>
        <tbody>
          <tr>
            <td><l:ph id="selseq"/></td>
            <td>
              <select id="sel_sequence">
                <option value="1"><l:ph id="selseq_forward"/></option>
                <option value="2"><l:ph id="selseq_backward"/></option>
                <option value="3" selected="selected"><l:ph id="selseq_random"/></option>
                <option value="4"><l:ph id="selseq_shuffle"/></option>
              </select>
            </td>
            <td>
              <input type="checkbox" id="chk_global" checked="checked"/>
              <l:ph id="chkallimg"/>
            </td>
          </tr>
          <tr>
            <td><l:ph id="selduration"/></td>
            <td>
              <input id="sel_duration" type="number" min="300" max="3600000" value="5000" step="50"
              />
            </td>
            <td>
              <input type="button" id="inp_start" class="close" value="&#x25b6;"/>
            </td>
          </tr>
          <tr>
            <td><l:ph id="abschnittwahl"/></td>
            <td>
              <select id="sel_evtsect">
                <option value="mouseover"><l:ph id="event_point"/></option>
                <option value="click" selected="selected"><l:ph id="event_click"
                /></option>
                <option value="dblclick"><l:ph id="event_dblclick"/></option>
              </select>
            </td>
          </tr>
          <tr>
            <td><l:ph id="bildwahl"/></td>
            <td>
              <select id="sel_evtsl">
                <option value="mouseover" selected="selected">
                  <l:ph id="event_point"/>
                </option>
                <option value="click"><l:ph id="event_click"/></option>
                <option value="dblclick"><l:ph id="event_dblclick"/></option>
              </select>
            </td>
          </tr>
          <tr>
            <td><l:ph id="verweis"/></td>
            <td>
              <select id="sel_evtlink">
                <option value="click" selected="selected">
                  <l:ph id="event_click"/>
                </option>
                <option value="dblclick"><l:ph id="event_dblclick"/></option>
              </select>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
    <div id="about_frame" class="popup popinact">
      <dl>
        <dt><a href="http://kleider.herbaer.de">http://kleider.herbaer.de</a></dt>
        <dt><l:ph id="text_und_fotos"/></dt>
        <dd>
          "Herbär" Herbert Schiemann (<a href="http://herbaer.de">http://herbaer.de</a>,
          <a href="mailto:h.schiemann@herbaer.de">mailto:h.schiemann@herbaer.de</a>).
        </dd>
        <dt><l:ph id="grafische_gestaltung"/></dt>
        <dd>
          <a href="http://fadenmalerei.de">Dipl.-Des. Bärbel Nielebock</a>
          (<a href="mailto:sticken@fadenmalerei.de">mailto:sticken@fadenmalerei.de</a>)
        </dd>
      </dl>
    </div>
    <div id="help_frame" class="popup popinact">
      <h3><l:ph id="befehle"/></h3>
      <table>
        <tbody>
          <tr>
            <td>e</td>
            <td><span class="btn" data-code="69"><l:ph id="einstellung"/></span></td>
            <td>&#x2190;</td>
            <td><span class="btn" data-code="37"><l:ph id="textabschnitt"/></span></td>
          </tr>
          <tr>
            <td>h</td>
            <td><span class="btn" data-code="72"><l:ph id="befehle"/></span></td>
            <td>&#x2192;</td>
            <td><span class="btn" data-code="39"><l:ph id="bild"/></span></td>
          </tr>
          <tr>
            <td>i</td>
            <td><span class="btn" data-code="73"><l:ph id="ueber"/></span></td>
            <td>Scrn&#x2191;</td>
            <td>
              <span class="btn" data-code="33"><l:ph id="voriger_abschnitt"/></span>
            </td>
          </tr>
          <tr>
            <td>c</td>
            <td>
              <span class="btn" data-code="67"><l:ph id="fenster_schliessen"/></span>
            </td>
            <td>Scrn&#x2193;</td>
            <td>
              <span class="btn" data-code="34"><l:ph id="naechster_abschnitt"/></span>
            </td>
          </tr>
          <tr>
            <td>s</td>
            <td>
              <span class="btn" data-code="83"><l:ph id="bildlauf_start_stop"/></span>
            </td>
            <td>Pos 1</td>
            <td><span class="btn" data-code="36"><l:ph id="anfang"/></span></td>
          </tr>
          <tr>
            <td>n</td>
            <td>
              <span class="btn" data-code="78"><l:ph id="bildlauf_weiter"/></span>
            </td>
            <td>End</td>
            <td><span class="btn" data-code="35"><l:ph id="ende"/></span></td>
          </tr>
          <tr>
            <td>z</td>
            <td>
              <span class="btn" data-code="90"><l:ph id="bildlauf_zurueck"/></span>
            </td>
            <td>&#x2191;</td>
            <td><span class="btn" data-code="38"><l:ph id="voriges_bild"/></span></td>
          </tr>
          <tr>
            <td>m</td>
            <td>
              <span class="btn" data-code="77"><l:ph id="position_merken"/></span>
            </td>
            <td>&#x2193;</td>
            <td>
              <span class="btn" data-code="40"><l:ph id="naechstes_bild"/></span>
            </td>
          </tr>
          <tr>
            <td>p</td>
            <td>
              <span class="btn" data-code="80"><l:ph id="klang_start_stop"/></span>
            </td>
            <td>g</td>
            <td><span class="btn" data-code="71"><l:ph id="galerie"/></span></td>
          </tr>
          <tr>
            <td>w</td>
            <td>
              <span class="btn" data-code="87"><l:ph id="email_an_freundin"/></span>
            </td>
            <td>d</td>
            <td>
              <span class="btn" data-code="68"><l:ph id="mobil_bilderschau"/></span>
            </td>
          </tr>
          <tr>
            <td>b</td>
            <td>
              <span class="btn" data-code="66"><l:ph id="rahmen_show_hide"/></span>
            </td>
            <td>a</td>
            <td>
              <span class="btn" data-code="65"><l:ph id="ansichten"/></span>
            </td>
          </tr>
        </tbody>
      </table>
    </div><!-- help_frame -->
    <div id="views_frame" class="popup popinact"/>
  </body>
</xsl:template>

<d:para>Eintrag in der Abschnittsliste</d:para>
<xsl:template match="is:section" mode="index">
  <xsl:variable name="sid" select="concat ('s', count (preceding::is:section) + 1)"/>
  <li id="li_{$sid}"><xsl:value-of select="is:title"/></li>
</xsl:template>

<d:para>
Die Vorschau-Bilder zu einem Abschnitt.
Anfangs werden die Bilder zum ersten Abschnitt angezeigt.
</d:para>
<xsl:template match="is:section" mode="slides">
  <xsl:variable name="sid" select="concat ('s', count (preceding::is:section) + 1)"/>
  <xsl:variable name="in">
    <xsl:if test="$sid != 's1'">in</xsl:if>
  </xsl:variable>
  <div id="slides_{$sid}" class="{$in}active">
    <xsl:attribute name="style">
      <xsl:value-of select="concat ('background: url(', $p_imgprefix, 'montage/', $sid, '.jpg) 2px 0px')"
      />
    </xsl:attribute>
    <xsl:choose>
      <xsl:when test=".//is:jpg">
        <xsl:apply-templates select=".//is:jpg" mode="slides">
          <xsl:with-param name="sid" select="$sid"/>
        </xsl:apply-templates>
      </xsl:when>
      <xsl:otherwise>
        <xsl:apply-templates select="//is:section/descendant::is:jpg[1]" mode="slides">
          <xsl:with-param name="sid" select="$sid"/>
        </xsl:apply-templates>
      </xsl:otherwise>
    </xsl:choose>
  </div>
</xsl:template>

<d:para>Vorschau-Bild</d:para>
<xsl:template match="is:jpg" mode="slides">
  <!-- Kennung des Abschnitts im Format s9+ -->
  <xsl:param name="sid"/>
  <!--
    Suffix, das die Eindeutigkeit der ID sicherstellen soll.
    Dieser Parameter ist nötig,
    falls der Abschnitt des Quelldokuments selbst keine jpg-Elemente enthält.
  -->
  <xsl:param name="sfx" select="position () - 1"/>
  <xsl:variable name="id" select="concat ($sid, '_', @src, '_', $sfx )"/>
  <div id="div_{$id}" class="slide"/>
</xsl:template>

<d:para>
Haupt-Inhalt:
Anfangs wird der erste Abschnitt angezeigt.
</d:para>
<xsl:template match="is:section">
  <xsl:variable name="sid" select="concat ('s', count (preceding::is:section) + 1)"/>
  <xsl:variable name="in">
    <xsl:if test="$sid != 's1'">in</xsl:if>
  </xsl:variable>
  <div id="div_{$sid}" class="{$in}active">
    <xsl:apply-templates select="*[1]"/>
    <xsl:apply-templates select="../@ti:machine"/>
    <xsl:apply-templates select="*[position() &gt; 1]">
      <xsl:with-param name="sid" select="$sid"/>
    </xsl:apply-templates>
    <xsl:if test="not (@role = 'cat')">
      <xsl:variable name="num" select="count (.//is:jpg)"/>
      <xsl:if test="$num &gt; 2">
        <xsl:variable name="m" select="floor (($num + $p_num_inlimg - 1) div $p_num_inlimg)"
        />
        <xsl:variable name="q" select="$num mod $m"/>
        <xsl:apply-templates select="(.//is:jpg) [position() mod $m = $q]" mode="inlimg">
          <xsl:with-param name="sid" select="$sid"/>
        </xsl:apply-templates>
      </xsl:if>
    </xsl:if>
  </div>
</xsl:template>

<d:para>
Hinweis auf die maschinelle Übersetzung
</d:para>
<xsl:template match="@ti:machine">
  <div class="machine">
    <xsl:choose>
      <xsl:when test="contains (., 'google')">
        <p>
          <a href="https://translate.google.com" target="_blank">
            <img src="/local/trans_by_google.png"/>
          </a>
        </p>
      </xsl:when>
      <!-- Datenbank translate enthält auch Google-Übersetzungen -->
      <xsl:when test="contains (., 'mysql')">
        <p>
          <a href="https://translate.google.com" target="_blank">
            <img src="/local/trans_by_google.png"/>
          </a>
        </p>
      </xsl:when>
    </xsl:choose>
    <p>
      <l:ph id="maschinelle_uebersetzung"/>
    </p>
  </div>
</xsl:template>

<d:para>Inline-Bilder</d:para>
<xsl:template match="is:jpg" mode="inlimg">
  <!-- Kennung des Abschnitts im Format s9+ -->
  <xsl:param name="sid"/>
  <!--
    Suffix, das die Eindeutigkeit der ID sicherstellen soll.
  -->
  <xsl:variable
    name = "sfx"
    select =
    "count (preceding-sibling::is:jpg | parent::is:p/preceding-sibling::is:p/is:jpg)"
  />
  <xsl:variable name="id" select="concat ($sid, '_', @src, '_', $sfx)"/>
  <div id="iimg_{$id}" class="imglink">
    <xsl:attribute name="style">
      <xsl:value-of
        select = "
          concat (
          'background: url(', $p_imgprefix, 'montage/',
          $sid, '.jpg) 0px -', $sfx * 100 + 2, 'px;'
          )
        "
      />
    </xsl:attribute>
  </div>
</xsl:template>

<d:para>Abschnitts-Überschrift</d:para>
<xsl:template match="is:title">
  <h2>
    <xsl:apply-templates/>
  </h2>
</xsl:template>

<d:para>
Unter-Abschnitt:
In der Web-Version gibt es keine "textfreien" Abschnitte
</d:para>
<xsl:template match="is:p">
  <!-- Kennung des Abschnitts im Format s9+ -->
  <xsl:param name="sid"/>
  <xsl:apply-templates select="@title"/>
  <p>
    <xsl:apply-templates>
      <xsl:with-param name="sid" select="$sid"/>
    </xsl:apply-templates>
  </p>
</xsl:template>

<d:para>Titel eines Unterabschnitts</d:para>
<xsl:template match="@title">
  <h3><xsl:value-of select="."/></h3>
</xsl:template>

<d:para>Verweis auf ein Bild im Text</d:para>
<xsl:template match="is:jpg">
  <!-- Kennung des Abschnitts im Format s9+ -->
  <xsl:param name="sid"/>
  <xsl:variable
    name = "id"
    select = "
      concat (
      $sid, '_', @src, '_',
      count (preceding-sibling::is:jpg | parent::is:p/preceding-sibling::is:p/is:jpg) )
    "
  />
  <span class="imglink" id="span_{$id}">
    <xsl:apply-templates/>
  </span>
</xsl:template>

<d:para>Verweis auf einen Abschnitt im Text</d:para>
<xsl:template match="is:sect [@ref]">
  <span class="sectlink {@ref}">
    <xsl:apply-templates/>
  </span>
</xsl:template>

<d:para>Verweis auf eine Bildergeschichte</d:para>
<xsl:template match="is:story">
  <a>
    <xsl:attribute name="href">
      <xsl:choose>
        <xsl:when test="contains (@ref, '#')">
          <xsl:value-of
            select = "
              concat (
              '../s',
              substring-before (@ref, '#'),
              '/story.xml',
              '#',
              substring-after (@ref, '#') )
            "
          />
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="concat ('../s', @ref, '/story.xml')"/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:attribute>
    <xsl:apply-templates/>
  </a>
</xsl:template>

<d:para>HTML-Inline-Elemente</d:para>
<xsl:template match="ht:*">
  <xsl:copy-of select="."/>
</xsl:template>

</xsl:stylesheet>
