FOP中的循环失败

时间:2010-06-30 18:58:53

标签: seam apache-fop

我正在尝试在FOP中向表中添加一些额外的行,使用以下代码将它们填充到最多13行:

      <!-- Fill Up Empty space -->
      <c:forEach var="i" begin="${position_id}" end="13" step="1">
        <fo:table-row height="4.4mm" border-bottom-color="black"
          border-bottom-style="fixed" border-bottom-width="0.2mm">
          <fo:table-cell border-bottom-style="solid"
            border-bottom-width="0.2mm" border-top-style="solid"
            border-top-width="0.1mm">
            <fo:block font-size="8pt" text-align="center">
            </fo:block>
          </fo:table-cell>
          <fo:table-cell border-bottom-style="solid"
            border-bottom-width="0.2mm" border-top-style="solid"
            border-top-width="0.1mm">
            <fo:block />
          </fo:table-cell>
          <fo:table-cell border-bottom-style="solid"
            border-bottom-width="0.2mm" border-top-style="solid"
            border-top-width="0.1mm">
            <fo:block />
          </fo:table-cell>
          <fo:table-cell border-bottom-style="solid"
            border-bottom-width="0.2mm" border-top-style="solid"
            border-top-width="0.1mm">
            <fo:block />
          </fo:table-cell>
          <fo:table-cell border-bottom-style="solid"
            border-bottom-width="0.2mm" border-top-style="solid"
            border-top-width="0.1mm">
            <fo:block />
          </fo:table-cell>
        </fo:table-row>
      </c:forEach>

问题是我一直有例外:

org.apache.fop.fo.ValidationException: file:/tmp/fop_1613051806105460695.fo:289:126: Error(289/126): fo:table-row is not a valid child element of forEach.
 at org.apache.fop.fo.FONode.invalidChildError(FONode.java:435)
 at org.apache.fop.fo.FONode.invalidChildError(FONode.java:420)
 at org.apache.fop.fo.XMLObj.validateChildNode(XMLObj.java:70)
    ...

谷歌搜索也没有帮助。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

“c:forEach”是FOP无法处理的。这是一些专有的XML转换语言吗?无论如何,你必须确保转换在FOP和FOP之前运行只接收普通的XSL-FO。然后这个错误就会消失。

关于FO部分的注释:如果没有内容,那么表格行可能会折叠到零高度。您可能需要在表格行上使用block-progression-dimension.minimum =“1.2em”之类的内容来避免折叠效果。