FOP: возможно ли создать таблицу только с ‹table-head›, но без ‹table-body›?

Я использую FOP для преобразования HTML (встроенного в XML) в PDF. Фрагмент HTML выглядит следующим образом:

<table border="1" width="100%">
  <thead>
    <tr>
      <th>Name</th>
      <th>Value</th>
    </tr>
  </thead>
  <tbody/>
</table>

Когда я преобразовываю, я получаю эту ошибку: -

Caused by: org.apache.fop.fo.ValidationException: Error(Unknown location): fo:table-body i
s missing child elements.
Required Content Model: marker* (table-row+|table-cell+)

Я получил аналогичную ошибку при удалении элемента <tbody/>: -

org.apache.fop.fo.ValidationException: Error(Unknown location): fo:table is missing child
elements.
Required Content Model: (marker*,table-column*,table-header?,table-footer?,table-body+)

Похоже, что table-body требуется для fo:table, а table-row требуется для table-body. Мой вопрос: -

Можно ли создать таблицу только с заголовком таблицы и без тела таблицы или с пустым телом таблицы?


person Grant Zhu    schedule 11.06.2012    source источник


Ответы (2)


Можно, конечно, следующим образом:

  1. Создайте <fo:table-body>
  2. Создавайте <fo:table-cell, даже если это требует
  3. Установите нулевой размер границы и белый цвет или цвет фона страницы.
person GingerHead    schedule 29.06.2012

Если ваш xpath данных равен xpa/th, вы можете использовать следующее:

<fo:table>
    <fo:table-header>(whatever)</fo:table-header>
    <fo:table-body>
        <xsl:if test="xpa/th">
            <xsl:apply-templates select="xpa/th" />
        </xsl:if>
        <xsl:if test="not(xpa/th)">
            <fo:table-cell><fo:block /></fo:table-cell>
        </xsl:if>
    </fo:table-body>
</fo:table>
person MonoThreaded    schedule 08.02.2013