Задать атрибут span в многостолбцовом xslfo с помощью процессора XEP? - PullRequest
0 голосов
/ 29 февраля 2012

Сейчас я занимаюсь разработкой таблицы стилей xslfo, которая устанавливает отображение содержимого в 2 столбца с использованием процессора RenderX XEP.Тем не менее, я все еще хочу оставить таблицы в виде 1 столбца, поскольку они намного шире.Я нашел эту статью чрезвычайно полезной:

http://www.sagehill.net/docbookxsl/MultiColumns.html (перейдите вниз к разделу «Области столбцов страницы»)

Действительно, поскольку я использую процессор XEP, он не позволит мнепоместить атрибут @ span = "all" во внешний fo: block, содержащий мой элемент таблицы, поскольку этот fo: block не является прямым потомком fo: flow. Поэтому, используя предложенное в этой статье решение, я изменилмой fo: block to fo: wrapper, и теперь fo выглядит так:

 <fo:wrapper font-size="80%" id="table_1ECAD9B3F5FC44A68240330AEFC1C2E2" space-after.optimum="1em" span="all">
  <fo:table border-bottom-color="black" border-bottom-style="solid" border-bottom-width="1pt" border-left-color="black" border-left-style="solid" border-left-width="1pt" border-right-color="black" border-right-style="solid" border-right-width="1pt" border-top-color="black" border-top-style="solid" border-top-width="1pt" id="" space-after.optimum="5pt" space-before.optimum="5pt" table-layout="fixed" width="100%">
 ....
  </fo:table>
 </fo:wrapper>

В процессе генерации сейчас нет предупреждающих сообщений, похоже, он принимает @ span = "all"для fo: wrapper. Однако в полученном pdf таблица по-прежнему разделена на два столбца, как и раньше. В статье упоминается Docbook xslfo, а я использую пользовательский xslfo, поставляемый с XMetal.

Интересно, если у кого-нибудь из экспертов есть подобный опыт (использование XEP, настройка @span в среде с колонками mutil) для обмена?

Ответы [ 2 ]

1 голос
/ 03 марта 2012

Обходной путь, на который вы ссылаетесь, означает, что блок <fo:block span="all"> сохраняется как есть, и что все его <fo:block> предки заменяются на <fo:wrapper>.

Структура, подобная этой,

<fo:page-sequence master-reference="my-page">
  <fo:flow flow-name="xsl-region-body">
     <fo:block>
        <fo:block>
           <fo:block span="all">
             <fo:table>
              ...

необходимо заменить следующим:

<fo:page-sequence master-reference="my-page">
  <fo:flow flow-name="xsl-region-body">
     <fo:wrapper>
        <fo:wrapper>
           <fo:block span="all">
             <fo:table>
              ...
1 голос
/ 29 февраля 2012

Только для атрибута " span " применяется к fo: block и fo: block-container, и только если они являются прямыми потомками fo: flow.Итак, ваш fo: wrapper должен стать fo: block.

...