我有一个XML文档,需要在带有'&'的元素中传递文本在里面。
这是从.NET调用到Web服务的,并通过正确的编码&
e.g。
T&O
然后我需要使用XSLT来创建转换,但需要通过SP查询SQL服务器而不在Ampersand上进行编码,例如T& O将转到数据库。
(注意这一切都必须通过XSLT完成,此时我可以选择使用.NET编码)
任何人都知道如何从XSLT做到这一点?
注意我的XSLT知识不是最好的说法!
干杯
答案 0 :(得分:2)
<xsl:text disable-output-escaping="yes">&<!--&--></xsl:text>
答案 1 :(得分:1)
如果您可以选择使用.NET,则可以使用HTML编码和常规字符串进行转换(此代码需要对System.Web的引用):
string htmlEncodedText = System.Web.HttpUtility.HtmlEncode("T&O");
string text = System.Web.HttpUtility.HtmlDecode(htmlEncodedText);
<强>更新强>
由于您需要在普通XSLT中执行此操作,因此可以使用xsl:value-of
解码HTML编码:
<xsl:variable name="test">
<xsl:value-of select="'T&O'"/>
</xsl:variable>
变量string($test)
的值为T&O
。您可以将此变量作为参数传递给扩展函数。
答案 2 :(得分:0)
假设您的XML如下所示:
<root>T&O</root>
您可以使用此XSLT代码段从中获取文本:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" />
<xsl:template match="root"> <!-- Select the root element... -->
<xsl:value-of select="." /> <!-- ...and extract all text from it -->
</xsl:template>
</xsl:stylesheet>
输出(来自Saxon 9,即):
T&O
要点是<xsl:output/>
元素。 defauklt将输出XML,其中&符号仍将被编码。