如何使用XSLT 1.0正确打印一行中的多行

时间:2019-01-16 18:56:42

标签: xslt-1.0 apache-fop

我建议您先查看这张图片,以使我更容易理解。

这是我当前得到的结果(第一个单元格包含一个大字符串):

Image of the result I get

我的方法和简短示例:

所以我有5个单元格,在一个单元格中,我会打印很长的字符串,而其他4个单元格则是跨度的。 在该跨单元格内,我创建了另一个表,因此可以使用非常长的字符串使数据内联(必须内联)。

由于该长标签的数据列表非常短,因此子表比该长标签小得多,因此,如上图所示,我缺少边框。

有人建议如何以非常长的标签内联方式打印出数据列表,而又不会丢失边框?

该部分的代码段:

<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>

0 个答案:

没有答案