xml - 如何在表格条目上强制换行

标签 xml xslt pdf xsl-fo

我在将 modspecs 发布为 pdf (XSL-FO) 时遇到问题。我的表格有问题,其中一个单元格的内容将溢出其列到下一个。如何在文本上强制打断以便创建新行?

我无法手动插入零空格字符,因为表格条目是以编程方式输入的。我正在寻找一个简单的解决方案,我可以简单地添加到 docbook_pdf.xsl(作为 xsl:param 或 xsl:attribute)

编辑: 这是我目前所在的位置:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:import href="urn:docbkx:stylesheet"/>
...(the beginning of my stylesheet for pdf generation, e.g. header and footer content stuff)
<xsl:template match="text()">
    <xsl:call-template name="intersperse-with-zero-spaces">
        <xsl:with-param name="str" select="."/>
    </xsl:call-template>
</xsl:template>
<xsl:template name="intersperse-with-zero-spaces">
    <xsl:param name="str"/>
    <xsl:variable name="spacechars">
        &#x9;&#xA;
        &#x2000;&#x2001;&#x2002;&#x2003;&#x2004;&#x2005;
        &#x2006;&#x2007;&#x2008;&#x2009;&#x200A;&#x200B;
    </xsl:variable>

    <xsl:if test="string-length($str) &gt; 0">
        <xsl:variable name="c1" select="substring($str, 1, 1)"/>
        <xsl:variable name="c2" select="substring($str, 2, 1)"/>

        <xsl:value-of select="$c1"/>
        <xsl:if test="$c2 != '' and
            not(contains($spacechars, $c1) or
            contains($spacechars, $c2))">
            <xsl:text>&#x200B;</xsl:text>
        </xsl:if>

        <xsl:call-template name="intersperse-with-zero-spaces">
            <xsl:with-param name="str" select="substring($str, 2)"/>
        </xsl:call-template>
    </xsl:if>
</xsl:template>

</xsl:stylesheet>

这样,表格单元格中的长词就成功分解了!不幸的是,副作用是其他地方的普通文本(例如在 X 下的 sextion 中)现在会分解单词,以便它们出现在单独的行中。有没有办法将上述过程隔离到表中?

最佳答案

在长词中,尝试插入一个zero-width space character在允许中断的字符之间。

关于xml - 如何在表格条目上强制换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4350788/

相关文章:

javascript - XSLT - 将 Javascript 放在 DOM 的末尾

Android 应用主题 textViewStyle 在手机上不起作用

java - XSL 在 unix 中与 xsltproc 一起工作正常,但在 java 代码中使用时则不行

c# - 无需外部工具即可打印 PDF

xml - 在 SVG 中旋转文本

java - XML 转换 - 自动化

java - 如何将 XSL 函数与 Xalan 一起使用?

java - iText 中的 TIMES NEW ROMAN 字体(Java 版)

python - 拆分 PDF 使多个 PDF 小于 20Mb

android - 在android中实现简单的SeekBar