Циклы в FOP терпят неудачу - PullRequest
0 голосов
/ 30 июня 2010

Я пытаюсь добавить несколько дополнительных строк в таблицу в 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 Ответ

2 голосов
/ 01 июля 2010

"c: forEach" - это ничего, с чем FOP может иметь дело. Это какой-то проприетарный язык преобразования XML? В любом случае вам нужно убедиться, что преобразование выполняется до того, как FOP и FOP получат только простой XSL-FO. Тогда эта ошибка должна исчезнуть.

Просто примечание к деталям FO: эта строка таблицы может свернуться до нулевой высоты, если в ней нет содержимого. Вам может потребоваться использовать что-то вроде block-progression-dimension.minimum = "1.2em" в строке таблицы, чтобы избежать этого эффекта свертывания.

...