apache fop:删除空表列

时间:2013-10-14 08:09:36

标签: xslt apache-fop

The Example

我正在尝试生成一个表,其中列是动态添加或删除的,取决于用户输入。 问题是,空列仍然可见(参见图片)

我目前的方法是使用xsl:if。 (参见代码段)

<fo:table table-layout="fixed" width="100%" font-family="Helvetica" font-size="12pt">
                        <fo:table-body start-indent="5pt">
                            <fo:table-row>
                                <fo:table-cell>
                                    <fo:block>
                                    <xsl:if test="boolean(./targetAgreements/targetAgreement/area/@visible = 'true')">
                                        Area
                                        </xsl:if>
                                    </fo:block>
                                </fo:table-cell>
                                <fo:table-cell>
                                    <fo:block>
                                    <xsl:if test="boolean(./targetAgreements/targetAgreement/brand/@visible = 'true')">
                                        Brand
                                        </xsl:if>
                                    </fo:block>
                                </fo:table-cell>
                                <fo:table-cell>
                                    <fo:block>
                                     <xsl:if test="boolean(./targetAgreements/targetAgreement/currentTarget/@visible = 'true')">
                                        Current Target
                                        </xsl:if>
                                    </fo:block>
                                </fo:table-cell>
                                <fo:table-cell>
...

如果我尝试用xsl包围table-cell:如果它告诉我,那个表行至少需要一个table-cell作为子元素。

如何完全删除空列?

谢谢!

1 个答案:

答案 0 :(得分:0)

我做了某种解决方法......

第一个表格单元格始终存在(没有xsl:if)。以下单元格用xsl:if。

包围

查看示例:

<fo:table table-layout="fixed" width="100%" font-family="Helvetica" font-size="12pt">
      <fo:table-header >
           <fo:table-row font-weight="bold" background-color="rgb(133,133,133)">
                <fo:table-cell>
                    <fo:block>
                        <xsl:value-of select="./headlines/headline[1]" />
                    </fo:block>
                </fo:table-cell>
                <xsl:if test="boolean(./targetAgreements/targetAgreement/brand/@visible = 'true')">
                    <fo:table-cell>
                        <fo:block>
                            <xsl:value-of select="./headlines/headline[2]" />
                        </fo:block>
                    </fo:table-cell>
                </xsl:if>
                <xsl:if test="boolean(./targetAgreements/targetAgreement/currentTarget/@visible = 'true')">
                    <fo:table-cell>
                        <fo:block>
                            <xsl:value-of select="./headlines/headline[3]" />
                        </fo:block>
                     </fo:table-cell>
                </xsl:if>
...