2017-04-27 60 views
1

我有示例XML这样,XSLT - 特殊字符变换

<doc> 
    <node>Test</node> 
    <?ABC Text &#x2013; <italic>Text</italic> more text?> 
</doc> 

我需要处理指令ABC的价值,所以我写了下面的模板,

<xsl:template match="processing-instruction('ABC')[contains(.,'italic>')]"> 
     <xsl:value-of select="."/> 
    </xsl:template> 

但它返回值,

Text &amp;#x2013; &lt;italic&gt;Text&lt;/italic&gt; more text 

&#x2013;显示为&amp;#x2013; ..我怎样才能避免这发生?

我的预期输出:Text &#x2013; <italic>Text</italic> more text

回答

2

的一种方式,如果处理器支持和序列化的结果,是

<xsl:template match="processing-instruction('ABC')[contains(.,'italic>')]"> 
     <xsl:value-of select="." disable-output-escaping="yes"/> 
    </xsl:template> 

http://xsltransform.net/naZXpWH