Einfügen einer Brotkrümelspur

(Auszug aus "DocBook-XML: Medienneutrales und plattformunabhängiges Publizieren" von Thomas Schraitle)

Eine "Brotkrümelspur" oder "Brotkrümelnavigation" (der Name leitet sich vom Märchen von Hänsel und Gretel ab. Die Beiden haben den Weg aus dem Wald gefunden, indem sie ihrer eigenen Spur aus Brotkrümeln folgten.) ist der Pfad zum aktuellen Element. Sie sollen bei tief verschachtelten Strukturen helfen, die Übersicht zu behalten.

  1. Erstellen Sie zuerst eine Anpassungsdatei wie in Anpassungsdatei für (X)HTML anlegen gezeigt.
  2. Fügen Sie einen Parameter ein, um die Brotkrümelnavigation (engl. breadcrumb navigation) bei Bedarf ein- oder auszuschalten. Standardmäßig ist sie eingeschaltet:
<xsl:param name="generate.breadcrumbs" select="1"/> 
  1. Fügen Sie einen weiteren Parameter ein, als Trennzeichen zwischen den einzelnen Pfadteilen. Hier können Sie Ihrer Kreativität freien Lauf lassen:
<xsl:param name="breadcrumbs.separator"> 
    <xsl:text> » </xsl:text> 
</xsl:param>
  1. Fügen Sie den Aufruf in das standardmäßig leere Template user.header.content ein. Der Parameter generate.breadcrumbs überprüft, ob eine Brotkrümelnavigation gewünscht wird, erzeugt ein div-Element und fügt die Navigation ein:
<xsl:template name="user.header.content"> 
    <xsl:if test="$generate.breadcrumbs != 0"> 
        <div class="userheadercontent"> 
            <xsl:call-template name="generate-breadcrumb"/> 
        </div> 
    </xsl:if> 
</xsl:template>
  1. Erstellen Sie das Template generate-breadcrumb:
<xsl:template name="generate-breadcrumb"> 
    <div class="breadcrumb">
        <p>
            <xsl:for-each select="ancestor::*">
                <xsl:element name="a">
                    <xsl:attribute name="href">
                        <xsl:call-template name="href.target">
                            <xsl:with-param name="object" select="."/> 
                            <xsl:with-param name="context" select="."/> 
                        </xsl:call-template> 
                    </xsl:attribute> 
                    <xsl:apply-templates select="." mode="title.markup"/>
                </xsl:element> 
                <xsl:copy-of select="$breadcrumbs.separator"/>
            </xsl:for-each> 
            <xsl:if test="self::* != /*">
                <strong> 
                    <xsl:apply-templates select="." mode="title.markup"/> 
                </strong> 
            </xsl:if> 
        </p> 
    </div> 
</xsl:template>

Zeile 2: Die komplette Brotkrümelnavigation ist in einem div-Element eingehüllt, zusammen mit einem entsprechenden class-Attribut zwecks CSS-Anpassung.
Zeile 3: Die eigentliche Navigation befindet sich in einem Absatz-Element.
Zeile 4: Iteriert über alle Vorfahren.
Zeile 5: Erzeugt ein a-Element, um auf den aktuellen Vorfahr zu verlinken.
Zeile 6: Erzeugt ein href zum vorigen a-Element.
Zeile 7: Fügt den entsprechenden Dateinamen des aktuellen Vorfahren-Elements ein, indem es das Template href.target aufruft (besonders bei Teildateien wichtig).
Zeile 12: Fügt den Titel des aktuellen Vorfahr-Elements ein.
Zeile 14: Kopiert das Trennobjekt zwischen den einzelnen Navigationselementen der Brotkrümelspur.
Zeile 16: Überprüft, ob das aktuelle Element kein Wurzelknoten ist. In diesem Fall wird der Titel der aktuellen Seite eingefügt.

  1. Folgende CSS-Regel ist ein Beispiel für eine inzeilige Ausrichtung:
div.breadcrumbs > p { 
  display: inline; 
}

DocBook-XML » Transformationen » Transformieren nach (X)HTML

Darstellung: Brotkrümelnavigation

  

<< zurück vor >>
Tipp der data2type-Redaktion:
Zum Thema DocBook bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © 2009 Millin Verlag
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "DocBook-XML: Medienneutrales und plattformunabhängiges Publizieren" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

Millin Verlag, Siebengebirgsring 36, 53797 Lohmar, info(at)millin.de