如何分解<fo:table-cell>中存在的<fo:table-block>的内容</fo:table-cell> </fo:table-block>

时间:2014-03-20 16:22:50

标签: java spring xslt xsl-fo

我要求<fo:table-block><fo:table-cell>下有人的名字,如果名字的长度超过空间的长度,那么这应该是两行以上的制动。该名称来自一个表单,因此其长度可以变化,例如我的名称长度最多为30个字符。

任何想法如何实现这个?

我的xml是:

<sign><sign1 naam='R.M.L.H.V.U. van RammanohatLohiaji' 
date='20 march 2014'></Sign>
<Sign1 naam='A.S.D.F.G.H. van RammanohatLohiaji' 
date='20 maart 2014'></sign>

我的xslt是:

        

        <fo:table table-layout="fixed" width="100%">
            <fo:table-column column-width="60mm" />
            <fo:table-column column-width="60mm" />
            <fo:table-column column-width="60mm" />

            <fo:table-body>
                <fo:table-row>
                    <xsl:for-each select="sign">
                        <fo:table-cell width="90mm">
                            <fo:block font-size="12pt" font-weight="bold">
                                Signature                               </fo:block>
                            <fo:block space-after="1cm" font-size="11pt" font-weight="bold">
                                <xsl:value-of select="@sign1" />
                            </fo:block>
                            <fo:block space-after="1cm" >
                                Date <xsl:value-of select="@date" />
                            </fo:block>

                            <!-- <fo:list-block space-after="1cm">
                                <xsl:call-template name="labelvalue">
                                    <xsl:with-param name="label">

                                    </xsl:with-param>
                                    <xsl:with-param name="value" select="@date" />
                                </xsl:call-template>
                            </fo:list-block> -->
                            <fo:block >
                            Signature <fo:leader leader-pattern="rule" leader-length="3.2cm" />
                            </fo:block>
                        </fo:table-cell>
                    </xsl:for-each>
                </fo:table-row>
            </fo:table-body>
        </fo:table>
    </fo:block-container>
</xsl:template>

1 个答案:

答案 0 :(得分:1)

你的问题不是很清楚,所以我不得不做出一个疯狂的猜测。通常,您可以通过以下方式“分解内容”:

  • 拥有多个fo:block。每个块都在新行上呈现,因为它表示一个新段落。
  • 主动插入换行符(或linefeeds

例如:

<fo:block>Text content before line feed&#10;Text content after it</fo:block>

确保实际保留了这些字符,并且存在块属性(white-space-treatmentlinefeed-treatment和其他)。