]]> XSLT: -6ren">
gpt4 book ai didi

xml - XSLT 特殊字符

转载 作者:数据小太阳 更新时间:2023-10-29 01:49:42 25 4
gpt4 key购买 nike

在下面的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com