2

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

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

Так,

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

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

4 ответа4

2

Использовать этот:

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

Заголовок в этом случае вложен в <bookinfo> . Метка d: обязательна. Но для этого убедитесь, что вы импортировали пространство имен в начале таблицы стилей:

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

После этой строки вы можете импортировать docbook.xsl.

Пример начала книги с названием книги:

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

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

1

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

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

в разделе <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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .