Metadaten im Text - Name des Topics

So nutzen Sie den Namen des Topics aus den Metadaten, um einen E-Mail-Link für Feedback unterhalb des Seitentitels anzeigen zu lassen.

Im Artikel Metadaten im Text ausgeben (zum Link) beschreibe ich, wie man die Datumsangaben für das Erstellen und Aktualisieren des Prologs im Text ausgeben kann. Nun auf den Geschmack gekommen, nutzte ich das Template gen-user-header, um darin ebenfalls ein Mail-Link für Feedback einzubauen. Es wird also das bekannte Template zur Grundlage genommen und erweitert.

So soll es aussehen

In den Formaten CHM, XHTML und EPUB soll oben rechts immer ein E-Mail-Link zur Seite inklusive des Namens der Seite stehen. Darunter das Datum der Erstellung und der letzten Änderung in grauer Schrift. Dies wiederum rechtsbündig unterhalb des Titels und vor der Kurzbeschreibung (shortdesc).


E-Mail-Link
Abbildung 1. E-Mail-Link mit Seitenname im EPUBReader-Addon des Firefox

Metaangaben im Topic

Vorraussetzung ist, dass in jedem Topic, egal ob Task oder Concept etc, folgende Metadaten innerhalb des Tags prolog gefüllt sind.

<resourceid id="metadata-output_con"/>

Bitte fügen Sie Ihren jeweiligen Seitennamen ein.

gen-user-header-Template anpassen

Suchen Sie innerhalb Ihres DITA-Open Toolkits im Ordner xsl/xslhtml nach der Datei dita2htmlImpl.xsl. Innerhalb dieser Datei muss das Template gen-user-header angepasst werden. Es ist das zweite Template im Bereich, der extra für Ihre Modifikationen für den Header, Footer etc angelegt wurde.

<!-- ========== STUBS FOR USER PROVIDED OVERRIDE EXTENSIONS ========== -->

Im vorhandenen Template gen-user-header fügen Sie, wie unterhalb des Kommentars folgende Zeile ist neu aufgeführt, eine neue Zeile ein.

<xsl:template name="gen-user-header">
  <xsl:apply-templates select="." mode="gen-user-header"/>
</xsl:template>
<xsl:template match="/|node()|@*" mode="gen-user-header">
  <!-- to customize: copy this to your override transform, add the content you want. -->
  <!-- it will be placed in the running heading section of the XHTML. -->
  <!-- folgende Zeile ist neu! -->
  <xsl:apply-templates select="*[contains(@class, ' topic/prolog ')]" mode="gen-user-header"/>
</xsl:template>

Unterhalb dieses angepaßten Templates gen-user-header fügen Sie ein zweites Template hinzu.

<xsl:attribute-set name="mailto">
  <xsl:attribute name="class">xref</xsl:attribute>
  <xsl:attribute name="href">mailto:info@IhreDomain.com?subject=Hilfe-Seite:%20
  <xsl:value-of select="*[contains(@class,' topic/resourceid ')]/@id"/></xsl:attribute>
  <xsl:attribute name="target">_blank</xsl:attribute>
 </xsl:attribute-set>

In diesem Attribut-Set werden die Attribute für den Anker <a href=”….”> und weitere Attribute notiert. Bitte tragen Sie statt info@IhreDomain.com Ihre entsprechende E-Mailadresse ein. Für die Betreffzeile können Sie noch den Eintrag Hilfe-Seite ändern. Im letzten Template wird das Attribut-Set dann eingefügt.

<xsl:template match="*[contains(@class, ' topic/prolog ')]">
  <p class="header-metadata" align="right">
    <xsl:if test="*[contains(@class,' topic/resourceid ')]/@id">
    <span>Ihre </span>
    <xsl:element name="a" use-attribute-sets="mailto">Mail</xsl:element>
    <span> für Fragen und Kommentare zur Seite <xsl:value-of select="*[contains(@class,' topic/resourceid ')]/@id"/>. </span></xsl:if>
    <xsl:if test="*[contains(@class,' topic/critdates ')]/*[contains(@class,' topic/created ')]/@date">
      <span><br/>Erstellt am <xsl:value-of select="*[contains(@class,' topic/critdates ')]/*[contains(@class,' topic/created ')]/@date"/>.   </span></xsl:if>
    <xsl:if test="*[contains(@class,' topic/critdates ')]/*[contains(@class,' topic/revised ')]/@modified">
    <xsl:for-each select="child::*[contains(@class,' topic/critdates ')]/*[contains(@class,' topic/revised ')]">
    <span>Letzte Änderung: <xsl:value-of select="@modified"/></span>
     </xsl:for-each>
    </xsl:if>
    </p>
 </xsl:template>

Formatierung in der CSS-Datei

Der Absatz p hat eine class=”header-metadata” erhalten. Diese Klasse müssen Sie noch Ihrer CSS-Datei hinzufügen.

.header-metadata
{
  text-align: right;
  font-style: italic;
  color: #C2C2C2;
  margin-right:10px;
}

Plugin

Da ich die Metadaten nur für Onlinehilfen und eBooks benöte, die des Öfteren aktualisiert werden, habe ich das Template in ein Plugin ausgelagert.

Links

  • Skript für Metadaten im Text für PDF-Dateien im XMetal-Forum, zum Link