Drucken des Buchtitels in der Kopfzeile einer PDF-Datei mit fop / docbook / xslt

1673
Mica

Was ist die richtige Zeichenfolge, die in meinem XSLT verwendet werden soll, damit FOP den Titel des Buches in der Kopfzeile druckt? Ich konnte das nirgendwo finden und jede Hilfe wird geschätzt!

Bearbeiten :

So,

<xsl:when test="$sequence = 'even' and $position = 'right'"> <xsl:apply-templates select="." mode="titleabbrev.markup"/>  </xsl:when> 

druckt einen abgekürzten Abschnitts- / Kapitelnamen. Ich möchte dasselbe tun, aber für den Titel des Buches.

2
Nur zur Klarstellung: Sie haben einen Text im Docbook-Format und entwickeln jetzt die .xsl-Datei, um sie über fop in xyz umzuwandeln? akira vor 13 Jahren 0
Ja. Ich habe das Standard-Docbook 5 xslt in mein Blatt importiert und bin damit über die Standardeinstellungen geritten. Ich habe Zeichenfolgen zum Ausdrucken des Abschnitts- oder Kapitelnamens gesehen, aber nichts über den Namen oder Titel des Buches. Mica vor 13 Jahren 0
Geben Sie dieses Snippet in Ihre Frage ein, wo Sie die Kopfzeile der Seite "fop" ... akira vor 13 Jahren 0

4 Antworten auf die Frage

2
Rajib

Benutze das:

<xsl:when test="$sequence = 'even' and $position = 'right'"> <xsl:value-of select="ancestor-or-self::d:book/d:bookinfo/d:title"></xsl:value-of> </xsl:when> 

Der Titel ist in diesem Fall unter verschachtelt <bookinfo>. Das d:Etikett ist erforderlich. Dafür müssen Sie jedoch sicherstellen, dass Sie den Namespace zu Beginn des Stylesheets importiert haben:

<?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:d="http://docbook.org/ns/docbook" exclude-result-prefixes="d" version="1.0"> 

Nach dieser Zeile können Sie die docbook.xsl importieren.

Beispielanfang des Docbooks mit Buchtitel:

<?xml version="1.0"?> <book xmlns="http://docbook.org/ns/docbook" version="5.0"> <bookinfo> <title>THIS IS THE TITLE OF THE BOOK</title> </bookinfo> ... ... </book> 
Es sieht so aus, als sollte es funktionieren, aber ich bin schon lange von diesem Projekt entfernt. Danke für die Antwort. Mica vor 9 Jahren 0
1
akira

http://www.sagehill.net/docbookxsl/PrintHeaders.html might help. provide the snippet and maybe i can help more.

1
rve

Ein bisschen spät, aber ich bin auf Ihre Frage gestoßen, als ich nach einem Weg gesucht habe, dies zu tun.

Nach einiger Suche endete ich mit:

im <xsl:template name="header.content">Abschnitt:

<xsl:when test="$position = 'left'"> <xsl:value-of select="//d:book/d:title"/>,  <xsl:value-of select="//d:book/d:subtitle"/> </xsl:when> 

Wenn der Titel nicht in den linken Teil der Kopfzeile passt, können Sie den linken Teil breiter machen (in diesem Beispiel 100%), indem Sie Folgendes verwenden:

<xsl:param name="header.column.widths">1 0 0</xsl:param> 

irgendwo in deiner config xslt.

0
chrwahl

Eine Kopfzeile könnte in dem Bereich angezeigt werden, <fo:region-before>der den oberen Bereich einer Seite definiert.

Ich kann in Ihrem Beispiel sehen, dass Sie für "sogar" testen. Ich denke, dass Sie diesen Titel nur auf geraden Seiten benötigen. Sie können dies tun, indem Sie verschiedene Seitenvorlagen ( <fo:simple-page-master master-name="even">) definieren. Suchen Sie nach <fo:page-sequence-master>und <fo:conditional-page-master-reference>haben Sie ungerade / gerade Seiten. In diesem Seitenmaster definieren Sie die verschiedenen Bereiche der Seite.