XSL-FO создает динамическое оглавление - PullRequest
1 голос
/ 23 августа 2011

Как мы можем динамически создать страницу содержания в XSL-FO?

1 Ответ

4 голосов
/ 23 августа 2011

В прошлом я использовал <fo:page-number-citation> для каждой записи в оглавлении (оглавление). Я делаю оглавление как <fo:table>.

<fo:page-number-citation> имеет атрибут ref-id, который должен содержать id местоположения, на которое вы ссылаетесь. Он должен сгенерировать номер страницы PDF, где находится id.

Например, если вы хотите, чтобы каждый <chapter> был указан в вашем оглавлении, вы бы использовали <fo:page-number-citation> с ref-id, который соответствует id того места, где выводился <chapter> (например, fo:page-sequence, fo:block и др.).

Вот пример. Я основываю атрибут id на значении существующего атрибута, но вы можете создать идентификатор, если вам нужно.

Пример главы XML:

<chapter foo="CHAP-1">
...
</chapter>

Пример записи в таблице оглавления:

<fo:table-cell>
  <fo:block>
    <fo:page-number-citation ref-id="CHAP-1"/>
  </fo:block>
</fo:table-cell>

Пример вывода <chapter>:

<fo:page-sequence id="CHAP-1">
...
</fo:page-sequence>

Вы также можете обернуть fo:page-number-citation в fo:basic-link, чтобы связать номер страницы в оглавлении с реальной страницей.

...