Как правильно печатать несколько строк внутри одной строки с помощью xslt 1.0, apache fop - PullRequest
0 голосов
/ 16 января 2019

Рекомендую сначала посмотреть эту картинку, чтобы мне было легче понять.

Это результат, который я сейчас получаю (первая ячейка содержит одну большую строку):

Image of the result I get

Мой подход и короткий пример:

Итак, у меня есть 5 ячеек, в одной ячейке я печатаю очень длинную строку , а остальные 4 ячейки охватываются. Внутри этой ячейки я создал другую таблицу, чтобы можно было сделать данные inline (inline is must) с очень длинной строкой.

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

Любые предложения, как распечатать список данных, встроенный с очень длинной этикеткой и не потерять на границах?

Фрагмент кода этой части:

<xsl:for-each select="services">
<xsl:variable name="servicePosition" select="position()"/>
<fo:table-row>
    <fo:table-cell>
        <fo:block keep-with-previous="always">
            <xsl:value-of select="very-long-label"/>
        </fo:block>
    </fo:table-cell>
    <fo:table-cell padding="none" number-columns-spanned="4">

        <fo:table table-layout="fixed" width="100%">
            <fo:table-column column-width="25%"/>
            <fo:table-column column-width="25%" border-left="1px solid black"/>
            <fo:table-column column-width="25%" border-left="1px solid black"/>
            <fo:table-column column-width="25%" border-left="1px solid black"/>
            <fo:table-body>
                <xsl:for-each select="whole-previous-path/services[$servicePosition]">
                    <xsl:for-each select="fees">
                        <xsl:for-each select="value">
                            <fo:table-row text-align="right">
                                <fo:table-cell text-align="right">
                                    <fo:block>
                                        <xsl:value-of select="val1"/>
                                    </fo:block>
                                </fo:table-cell>
                                <fo:table-cell text-align="right">
                                    <fo:block>
                                        <xsl:value-of select="val2"/>
                                    </fo:block>
                                </fo:table-cell>
                                <fo:table-cell text-align="right">
                                    <fo:block>
                                        <xsl:value-of select="val3"/>
                                    </fo:block>
                                </fo:table-cell>
                                <fo:table-cell text-align="right">
                                    <fo:block>
                                        <xsl:value-of select="val4"/>
                                    </fo:block>
                                </fo:table-cell>
                            </fo:table-row>
                        </xsl:for-each>
                    </xsl:for-each>
                </xsl:for-each>
            </fo:table-body>
        </fo:table>

    </fo:table-cell>
</fo:table-row>

...