XSLT 1.0 libxslt输出转义字符:如何?

时间:2012-06-17 16:16:50

标签: firefox escaping

使用libxslt时如何将
添加为文本?
或者,或者,通过生成不同的输出,使包括Firefox在内的所有浏览器在td/title元素中正确显示换行符?

我使用的xslt代码:

<td>
    <xsl:attribute name="title">
        <xsl:for-each select="input/item">
            <xsl:if test="position()!=1"><xsl:text>&#xD;</xsl:text></xsl:if>:<xsl:value-of select="."/>
        </xsl:for-each>
    </xsl:attribute>
</td>

这适用于应用Saxon9he,例如导致

<td title="item1&#xD;item2&#xD;item3"/>

但是当我使用libxslt(php的一部分)作为XSLT 1.0处理器,并运行与上面相同的代码时,我在结果文件中得到了真实的换行符:

<td title="item1
item2
item3"/>

导致Firefox错误地显示工具提示(没有换行)。

所以我假设我必须将disable-output-escaping属性添加到<xsl:text>,如下所示:

<xsl:text disable-output-escaping="no">&#xD;</xsl:text>

但这没有效果。

1 个答案:

答案 0 :(得分:0)

因此,评论和测试的结论是它是Firefox中的一个错误,但并非所有版本中都存在错误:9.01甚至不显示&#xD;对; 10.0不显示换行符,但显示&#xD;作为换行符,12.0 / 13.0正确显示。

案件结案。