2017-06-06 73 views
0

以我XSLT(2.0 - 输出方法为HTML)我有此:输出PHP处理指令

<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;"> 

尝试了一堆不同的东西,让“>”出来在输出instea d的& gt; (CDATA标记部分等),但似乎没有任何工作。奇怪的是,小于号的工作正常,但大于没有。我正在使用Saxon-PE 9.5.1.7。

回答

0

使用字符映射表与一些字符,你并不需要在其他地方,这里是改编自XSLT 2.0规范的例子(https://www.w3.org/TR/xslt20/#character-maps):

<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输出方法不能转义属性值中出现的'<“字符。'。

+0

真棒队友 - 真的很感谢帮助。 K –

+0

它也可以工作!你是明星先生 - 布拉沃! –