2016-12-27 43 views
0

我有这个输入XML,其中我想用disable-output-escaping功能用"代替",而不是在输出XML中。我一直在尝试以下XSL上的各种各样的东西,但没有用 - 某些或另一个打破了所需的name标记。在DOE中需要XSL的帮助(禁用输出escpaing)

输入XML:

<?xml version="1.0" encoding="UTF-8"?> 
<book> 
    <name>&quot;test&quot;</name> 
    <type>computer</type> 
</book> 

变换XSL:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="book"> 
     <book> 
      <xsl:apply-templates /> 
     </book> 
    </xsl:template> 
    <xsl:template match="name"> 
     <name> 
      <xsl:text disable-output-escaping="yes"> 
       <![CDATA[&quot;test&quot;]]> 
      </xsl:text> 
     </name> 
    </xsl:template> 
    <xsl:template match="type"> 
     <genre> 
      <xsl:apply-templates /> 
     </genre> 
    </xsl:template> 
</xsl:stylesheet> 

所需的输出XML:

<?xml version="1.0" encoding="UTF-8"?> 
<book> 
    <name>"test"</name> 
    <genre>computer</genre> 
</book> 

输出XML是我得到:

<?xml version="1.0" encoding="UTF-8"?><book> 
    <name> 
       &quot;test&quot; 
      </name> 
    <genre>computer</genre> 
</book> 

任何人都可以提供关于如何得到这个工作的一些见解?

我一直在寻找各种来源,但没有固定这个使用!

+1

请注意,我没有看到任何需要转换该'name'元素的任何需要,复制它的任何转换,如http://xsltransform.net/ncntCSx,应该导致在'“测试”“那里没有理由逃避元素内容的引用。 –

+0

很好,谢谢你的XSL样品! –

回答

1

通过将文本放入CDATA中的样式表中,可以强制它按字面进行处理。如果它不在CDATA中,它会以您想要的方式工作。没有理由在样式表中的CDATA部分中。

+0

没有'CDATA'部分,我只是得到一个空白''标签 –

+0

它适用于使用Oxygen/XML 14与Saxon 6.5.5和Saxon 9.4.0.6(XSLT 1.0)。只要文本不在CDATA部分,它也会产生所需的结果,带或不带禁用输出转义。 –

+0

在我应用了您的建议后发现了问题,我错过了在''标签下的'XSL'中添加''标记。 –