输出PHP处理指令内部属性值



在我的xslt(2.0-输出方法为html(我有:

<img>
    <xsl:attribute name="href">
        <xsl:text disable-output-escaping="yes">&lt;?php echo get_url(); ?&gt;</xsl:text>
    </xsl:attribute>
</img>

我想要的输出如下:

<img href="<?php echo get_url(); ?>">

我得到的输出如下:

<img href="<?php echo get_url(); ?&gt;">

尝试了许多不同的东西,以使输出中的">"出现在输出中,而不是&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="&lt;"/>
    <xsl:output-character character="»" string="&gt;"/>
</xsl:character-map>

在线示例在http://xsltransform.net/93dehfp。

至于禁用输出删除,据我所知,它在属性值中不起作用,结果您得到的并不是禁用输出删除的结果,而只是使用xsl:output method="html"(https://www.w3.org/tr/xslt-xquery-serialization/#html_attribs(要求'HTML输出方法不得不逃脱"&lt;"属性值中发生的字符。'。

最新更新