在我的xslt(2.0-输出方法为html(我有:
<img>
<xsl:attribute name="href">
<xsl:text disable-output-escaping="yes"><?php echo get_url(); ?></xsl:text>
</xsl:attribute>
</img>
我想要的输出如下:
<img href="<?php echo get_url(); ?>">
我得到的输出如下:
<img href="<?php echo get_url(); ?>">
尝试了许多不同的东西,以使输出中的">"出现在输出中,而不是&amp; gt;(CDATA标记了部分等(,但似乎没有任何作用。奇怪的是,少于符号的工作正常,但是比没有符号大。我正在使用Saxon-Pe 9.5.1.7。
使用一些您在其他地方不需要的字符的角色映射,以下是一个示例(https://www.w.org/tr/xslt20/#character-maps(从XSLT 2.0规格:
<img href="«?php echo get_url(); ?»"/>
和
<xsl:output method="html" use-character-maps="m1"/>
<xsl:character-map name="m1">
<xsl:output-character character="«" string="<"/>
<xsl:output-character character="»" string=">"/>
</xsl:character-map>
在线示例在http://xsltransform.net/93dehfp。
至于禁用输出删除,据我所知,它在属性值中不起作用,结果您得到的并不是禁用输出删除的结果,而只是使用xsl:output method="html"
(https://www.w3.org/tr/xslt-xquery-serialization/#html_attribs(要求'HTML输出方法不得不逃脱"&lt;"属性值中发生的字符。'。