две соседние таблицы в области тела, каждая с двумя столбцами (xsl-fo) - PullRequest
1 голос
/ 15 марта 2011

XML-документ

<?xml version="1.0" encoding="ISO-8859-1" ?>
<NVELOPE>
    <PAYSTITLE>No. of Days</PAYSTITLE>
    <PAYSVALUE>8 Days</PAYSVALUE>
    <ETITLE>Basic Pay - Project</ETITLE>
    <EAMT>-45.00</EAMT>
    <ETITLE>House Rent</ETITLE>
    <EAMT>-08.00</EAMT>
    <ETITLE>Transport</ETITLE>
    <EAMT>-18.00</EAMT>
    <ETITLE>Special</ETITLE>
    <EAMT>-15.00</EAMT>
    <ETITLE>Variable Pay</ETITLE>
    <EAMT>-15.00</EAMT>
    <ETITLE>Bonus</ETITLE>
    <EAMT>-8.00</EAMT>
    <DTITLE>M D S</DTITLE>
    <DAMT>50.00</DAMT>
    <DTITLE>Fund</DTITLE>
    <DAMT>95.00</DAMT>
    <DTITLE>Tax</DTITLE>
    <DAMT>25.00</DAMT>
</NVELOPE>

Мне нужны эти данные в формате PDF с использованием XSLT и XSL-FO

Я хочу, чтобы данные распределялись параллельно в обеих смежных таблицах.

Я не знаю, как получить две соседние таблицы, или вы можете использовать одну таблицу с четырьмя столбцами, но я не могу правильно распределить данные ...

title    amt     title     amt
title    amt     title     amt
title    amt     title     amt
title    amt     title     amt
title    amt     title     amt

это то, что я хочу .... пожалуйста, помогите мне заранее спасибо ...:)

Ответы [ 2 ]

3 голосов
/ 15 марта 2011

Это можно сделать с помощью таблицы из двух столбцов, которая содержит таблицы, которые вы хотите расположить рядом в одной строке.

<fo:table>
    <fo:table-column column-number="1"/>
    <fo:table-column column-number="2"/>
    <fo:table-body>
        <fo:table-row>
            <fo:table-cell>
                <fo:block>
                    <TABLE 1 HERE>
                </fo:block>
            </fo:table-cell>
        </fo:table-row>
        <fo:table-row>
            <fo:table-cell>
                <fo:block>
                    <TABLE 2 HERE>
                </fo:block>
            </fo:table-cell>
        </fo:table-row>
    </fo:table-body>

При наличии таблиц вы можете использовать xsl: if + position (), чтобы ограничить данные, которые заполняют вложенные таблицы.

0 голосов
/ 19 января 2016

Обработка элементов в группах по четыре:

  <xsl:template match="NVELOPE">
    <fo:table>
      <fo:table-body>
        <xsl:call-template name="row" />
      </fo:table-body>
    </fo:table>
  </xsl:template>

  <xsl:template name="row">
    <xsl:param name="cells" select="*" />

    <fo:table-row>
      <fo:table-cell>
        <fo:block><xsl:apply-templates select="$cells[1]" /></fo:block>
      </fo:table-cell>
      <fo:table-cell>
        <fo:block><xsl:apply-templates select="$cells[2]" /></fo:block>
      </fo:table-cell>
      <fo:table-cell>
        <fo:block><xsl:apply-templates select="$cells[3]" /></fo:block>
      </fo:table-cell>
      <fo:table-cell>
        <fo:block><xsl:apply-templates select="$cells[4]" /></fo:block>
      </fo:table-cell>
    </fo:table-row>
    <xsl:if test="count($cells) > 4">
      <xsl:call-template name="row">
        <xsl:with-param name="cells" select="$cells[position() > 4]" />
      </xsl:call-template>
    </xsl:if>
  </xsl:template>

Если число элементов не кратно четырем, будет получено fo:table-cell, содержащее пустое fo:block для оставшейся частистроки.

...