FOP是否可以创建一个只有<table-head>但没有<table-body>的表?</table-body> </table-head>

时间:2012-06-11 03:09:27

标签: xslt apache-fop

我正在使用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来表示table-body需要table和table-row。我的问题是: -

是否可以创建一个只包含table-header且没有table-body或具有空表体的表?

2 个答案:

答案 0 :(得分:0)

你可以通过以下方式:

  1. 创建<fo:table-body>
  2. 即使需要
  3. ,也要创建<fo:table-cell
  4. 将边框大小设置为零并将颜色设置为白色或页面颜色 背景

答案 1 :(得分:0)

如果您的数据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>