dynamic - XSL-FO creando tabla de contenido dinámica
reference flow (1)
¿Cómo podemos crear dinámicamente una página de tabla de contenido en XSL-FO?
Lo que he hecho en el pasado es usar <fo:page-number-citation>
para cada entrada en el TOC (Table of Contents). Hago la tabla de contenidos como <fo:table>
.
El <fo:page-number-citation>
tiene un atributo ref-id
que debe contener el id
de la ubicación a la que hace referencia. Debe generar el número de página PDF donde se encuentra esa id
.
Por ejemplo, si quisiera que cada <chapter>
referenciado en su TOC, use <fo:page-number-citation>
con un ref-id
que coincida con el id
de donde se produjo el <chapter>
(como fo:page-sequence
, fo:block
, etc.).
Aquí hay un ejemplo. Estoy basando el atributo id
en el valor de un atributo existente, pero puede generar un id si lo necesita.
Ejemplo de capítulo XML:
<chapter foo="CHAP-1">
...
</chapter>
Ejemplo de entrada en la tabla TOC:
<fo:table-cell>
<fo:block>
<fo:page-number-citation ref-id="CHAP-1"/>
</fo:block>
</fo:table-cell>
Ejemplo de salida del <chapter>
:
<fo:page-sequence id="CHAP-1">
...
</fo:page-sequence>
También puede envolver el fo:page-number-citation
en un fo:basic-link
para vincular el número de página en el TOC a la página real.