imprimindo o título do livro no cabeçalho de um pdf com fop / docbook / xslt

2

Qual é a string apropriada para usar no meu XSLT para fazer com que o FOP imprima o título do livro no cabeçalho? Eu não fui capaz de encontrar isso em qualquer lugar, e qualquer ajuda é apreciada!

Editar :

Então,

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

imprime o nome abreviado da seção / capítulo. Eu quero fazer o mesmo, mas pelo título do livro.

    
por Mica 02.06.2010 / 22:12

4 respostas

2

Use isto:

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

O título neste caso está aninhado em <bookinfo> . O rótulo d: é obrigatório. Mas, para isso, verifique se você importou o namespace no início da folha de estilo:

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

Após essa linha, você pode importar o docbook.xsl.

Exemplo de início do docbook com o título do livro:

<?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>
    
por 26.08.2014 / 21:19
1
O link pode ajudar. fornecer o trecho e talvez eu possa ajudar mais.

    
por 03.06.2010 / 23:03
1

Um pouco atrasado, mas me deparei com sua pergunta enquanto procurava uma maneira de fazer isso.

Após algumas pesquisas, acabei com:

na seção <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>

Quando o título não couber na parte esquerda do cabeçalho, você pode deixar a parte esquerda mais larga (100% neste exemplo) usando:

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

em algum lugar na sua configuração xslt.

    
por 21.02.2012 / 14:19
0

Um cabeçalho pode ser exibido em <fo:region-before> , o que define a região superior de uma página.

Eu posso ver no seu exemplo que você testa "até". Eu acredito que você só precisa deste título em páginas pares. Você pode fazer isso definindo diferentes mestres de página ( <fo:simple-page-master master-name="even"> ) - procure por <fo:page-sequence-master> e <fo:conditional-page-master-reference> para ter páginas ímpares / pares. Nesta página mestre você define as diferentes regiões da página.

    
por 28.06.2011 / 11:10

Tags