xml - XSLT 特殊字符

标签 xml xslt

在下面的 XSL 转换中,如何输出 '<' 和 '>' 符号?

输入 XML:

<TestResult bugnumber="3214" testname="display.methods::close->test_ManyInvoke" errortype="Failure"><ErrorMessage><![CDATA[calling close() method failed - expected:<2>]]></ErrorMessage>

XSLT:

<xsl:template match="TestResult">
  <xsl:variable name="errorMessage">
   <xsl:value-of select="ErrorMessage" disable-output-escaping="yes"/>
  </xsl:variable>
  <Test name='{@testname}'>
   <TestResult>
    <Passed>false</Passed>
    <State>failure</State>
    <Metadata>
     <Entry name='bugnumber' value='{@bugnumber}' />
    </Metadata>
    <TestOutput>
     <Metadata>
      <Entry name='ErrorMessage' value='{$errorMessage}' />
     </Metadata>
    </TestOutput>
   </TestResult>
  </Test>
 </xsl:template>

输出 XML:

<Test name="display.methods::close-&gttest_ManyInvoke"> 
 <TestResult>
  <Passed>false</Passed>
  <State>failure</State>
  <Metadata>
   <Entry name="bugnumber" value="3214"/>
  </Metadata>
  <TestOutput>
   <Metadata>
    <Entry name="ErrorMessage" value="calling close() method failed - expected:&lt;2&gt;"/>
   </Metadata>
  </TestOutput>
 </TestResult>
</Test>

最佳答案

简答:你不能。

长答:属性值不能包含少数特殊字符,如'<' , '>''&' .

如果存在,它们将被转义为:'&lt;' , '&gt;''&amp;' .

如果输出方法是“文本”,则可以生成这些字符,但您不是这种情况。

也可以生成在浏览器中显示时看起来像这些字符的文本:使用:'&lt;' , '&gt;''&amp;' .

最后,您可以使用 CDATA 部分将这些字符生成为文本节点的一部分。以下示例说明了这一点:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
 <xsl:output cdata-section-elements="t"
  omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/">
  <t> &lt; &amp; &gt;</t>
 </xsl:template>
</xsl:stylesheet>

当此转换应用于任何 XML 文档(未使用)时,结果为:

<t><![CDATA[ < & >]]></t>

关于xml - XSLT 特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2926028/

相关文章:

XSLT:我的转换添加了一个未选择的元素。我缺少什么?

xslt - 将 XSLT 1.0 升级到 XSLT 2.0

PHP, XML to HTML through XSLT makes HTML inside CDATA encoded

xml - XSLT 分组兄弟

xml - 在go中遍历xml

python - 如何处理不同Python版本中引发的不同异常

Javascript SOAP 响应解析元素

java - 使用 StAX 对 XML 文档进行小的修改

javascript - 使用从 web 服务返回的 javascript 解析 xml

html - 使用 xslt 将 gnome-help (yelp) xml 转换为静态 html