XSL:如何在样式表中使用HTML标签?

时间:2018-12-27 08:44:20

标签: html xslt xsl-fo apache-fop

我在XSL样式表中获得了以下代码:

<xsl:for-each select="report:column-names/report:column">
    <fo:table-cell display-align="center" font-size="9pt">
        <fo:block font-family="{$font.family}" font-weight="bold">
            <xsl:value-of select="." disable-output-escaping="yes" /> <--problematic value
        </fo:block>
    </fo:table-cell>
</xsl:for-each>

在我提到的有问题的值中,我得到了一些要用bdi html标记包装的值。

我试图只放bdi,但没有看到我的价值,就像这样:

<bdi><xsl:value-of select="." disable-output-escaping="yes" /></bdi>

如何将此标签应用于我的值?

1 个答案:

答案 0 :(得分:2)

您不能混合使用HTML和XSL-FO。 XSL-FO是为格式化而定义的XML词汇表。 XSLT的最初目的是将任意XML词汇表(毕竟,“ XML”中的“ X”来自“可扩展”)转变为标准格式词汇表。这就是您在问题中一直使用XSLT所做的事情。

XSL 1.1中Unicode BIDI处理的描述位于https://www.w3.org/TR/xsl11/#d0e4879。适用的FO为fo:bidi-overridehttps://www.w3.org/TR/xsl11/#fo_bidi-override),适用的属性为directionhttps://www.w3.org/TR/xsl11/#direction)和unicode-bidihttps://www.w3.org/TR/xsl11/#unicode-bidi)。

到目前为止,您还没有显示report:column元素的内容,但是看起来像您想要的:

<fo:bidi-override unicode-bidi="embed" direction="rtl">
  <xsl:value-of select="." disable-output-escaping="yes" />
</fo:bidi-override>

report:columnembed没有看到rtl元素,只是猜测。

(很少使用disable-output-escaping,但在这种情况下,如果没有看到需要report:column的元素,我们就看不出它有多糟糕。)