XSL-FO:如何使值垂直扩展

时间:2014-06-20 04:49:36

标签: vertical-alignment xsl-fo

我的XML中有一个名称字符串,其长度各不相同。在长名称的情况下,它水平扩展,我负担不起。我怎样才能使它垂直生长?以下是我所拥有的。

<fo:table-cell font-family="Courier" font-size="10px" display-align="before"height="0.01042in" border-style="solid" border-color="green">
    <fo:block padding-top="1pt" padding-bottom="1pt" borderstyle="solid">
        <fo:inline>
            <xsl:text>USER INFORMATION</xsl:text>
        </fo:inline>
        <fo:block>
          <xsl:text>&#xA;</xsl:text>
        </fo:block>
        <fo:inline font-family="Courier" font-size="12px" font-weight="bold">
          <xsl:value-of select="USERNAME" />
       </fo:inline>
    </fo:block>
</fo:table-cell>

1 个答案:

答案 0 :(得分:0)

我在评论中使用了Joel发布的链接。当我完全应用模板时,它显示奇数长度的字符串,但错过了偶数长度字符串的最后一个字符。然后我将比较从小于&lt;更改为小于或等于&lt;=并且它有效。 希望它会帮助某人。谢谢。

<xsl:template name="zero_width_space_1">
    <xsl:param name="data" />
    <xsl:param name="counter" select="0" />
    <xsl:choose>
        <xsl:when test="$counter &lt;= string-length($data)">
            <xsl:value-of select='concat(substring($data,$counter,1),"&#8203;")' />
            <xsl:call-template name="zero_width_space_2">
                <xsl:with-param name="data" select="$data" />
                <xsl:with-param name="counter" select="$counter+1" />
            </xsl:call-template>
        </xsl:when>
        <xsl:otherwise>
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>

<xsl:template name="zero_width_space_2">
    <xsl:param name="data" />
    <xsl:param name="counter" />
    <xsl:value-of select='concat(substring($data,$counter,1),"&#8203;")' />
    <xsl:call-template name="zero_width_space_1">
        <xsl:with-param name="data" select="$data" />
        <xsl:with-param name="counter" select="$counter+1" />
    </xsl:call-template>
</xsl:template>

 <xsl:call-template name="zero_width_space_1">
    <xsl:with-param name="data" select="mystring" />
</xsl:call-template>