【问题标题】:XSL: chop off string at arbitrary placeXSL:在任意位置切断字符串
【发布时间】:2015-09-03 19:40:16
【问题描述】:

我正在使用 XSL 来获得 XML 样式。 xsl 定义了一个包含两列的表。感谢 Kevin Brown,以下代码可以很好地在单词边界处截断,但我需要的是在任意位置截断。

<fo:table-cell>
    <fo:block-container overflow="hidden" height="15pt"><fo:block>this is a very, very, very long text here</fo:block></fo:block-container>
</fo:table-cell>

【问题讨论】:

    标签: pdf xslt xslt-1.0 xsl-fo apache-fop


    【解决方案1】:

    如果您从 XML 和 XSL 生成它,您通常会在输出该特定内容时创建一个模板并放置 ​实体(零宽度换行符)。所以无论你怎么做,都要像这样制作内容(这表示字母之间的实体“非常长的单词”:

    v​e​r​y l​o​n​g w​o​r​d

    所以在你的例子中(我只把它们放在休息点附近,这样你就可以看到):

    <fo:table-cell border="1pt solid silver">
                                <fo:block-container overflow="hidden" height="15pt"><fo:block>this is a very, very, very l&#8203;o&#8203;n&#8203;g t&#8203;e&#8203;x&#8203;t here</fo:block></fo:block-container>
                            </fo:table-cell>
    

    你现在会得到这个(它在“long”中的“o”处中断):

    如果您愿意,一个非常有趣的效果是在该 fo:block 上将“text-align”设置为“justify”,如果在块的末尾插入一个 fo:leader ,这实际上会使所有内容对齐足够的长度来填充单元格。注意:这在 Apache FOP 中不起作用,它在 RenderX XEP 中起作用。

    喜欢:

    <fo:table-cell border="1pt solid silver">
        <fo:block-container overflow="hidden" height="15pt"><fo:block text-align="justify">this is a<fo:leader leader-length.minimum="3in"/></fo:block></fo:block-container>
    </fo:table-cell>
    

    如果你这样做了,你会得到这个:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多