0

例

ユーザー入力に基づいて、列が動的に追加または削除されるテーブルを生成しようとしています。問題は、空の列がまだ表示されていることです(写真を参照)

私の現在のアプローチは 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>
...

table-cell を xsl:if で囲もうとすると、その table-row には子要素として少なくとも 1 つの table-cell が必要です。

空の列を完全に削除するにはどうすればよいですか?

ありがとう!!

4

1 に答える 1

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>
...
于 2013-10-30T10:23:00.573 に答える