печать названия книги в заголовке PDF с помощью fop / docbook / xslt

1588
Mica

Какую строку использовать в моем XSLT, чтобы FOP печатал заголовок книги в заголовке? Я не смог найти это нигде, и любая помощь приветствуется!

Редактировать :

Так,

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

напечатает сокращенное название раздела / главы. Я хочу сделать то же самое, но для названия книги.

2
просто чтобы прояснить ситуацию: у вас есть текст в формате docbook, и сейчас вы разрабатываете файл .xsl для его преобразования через fop в xyz? akira 14 лет назад 0
да. Я импортировал документацию по умолчанию 5 xslt на свой лист, и я перестал использовать настройки по умолчанию. Я видел строки для печати названия раздела или главы, но ничего о названии или названии книги. Mica 14 лет назад 0
предоставьте этот фрагмент в своем вопросе, где вы "fop" заголовок страницы ... akira 14 лет назад 0

4 ответа на вопрос

2
Rajib

Use this:

<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> 

The title in this case is nested under <bookinfo>. The d: label is required. But to do this ensure that you have imported the namespace in the begining of the stylesheet:

<?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"> 

After this line you can import the docbook.xsl.

Sample beginning of the docbook with book title:

<?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> 
Похоже, это должно сработать, но я давно перешел от этого проекта. Спасибо за ответ. Mica 10 лет назад 0
1
akira

http://www.sagehill.net/docbookxsl/PrintHeaders.html может помочь. предоставить фрагмент, и, возможно, я могу помочь больше.

1
rve

Немного поздно, но я наткнулся на ваш вопрос, когда искал способ сделать это.

После некоторых поисков я получил:

в <xsl:template name="header.content">разделе:

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

Когда заголовок не помещается в левой части заголовка, вы можете сделать левую часть более широкой (100% в этом примере), используя:

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

где-то в вашем конфиге xslt.

0
chrwahl

Заголовок может отображаться в <fo:region-before>том, что определяет верхнюю область страницы.

Я вижу в вашем примере, что вы проверяете «даже». Я понимаю, что вам нужен этот заголовок только на четных страницах. Вы можете сделать это путем определения разных мастеров страниц ( <fo:simple-page-master master-name="even">) - искать <fo:page-sequence-master>и <fo:conditional-page-master-reference>иметь нечетные / четные страницы. В этом мастере страницы вы определяете различные области страницы.

Похожие вопросы