Xslt转换特殊字符

时间:2009-10-20 08:59:58

标签: xslt

我有一个XML文档,需要在带有'&'的元素中传递文本在里面。 这是从.NET调用到Web服务的,并通过正确的编码&

进行连接

e.g。

T&O

然后我需要使用XSLT来创建转换,但需要通过SP查询SQL服务器而不在Ampersand上进行编码,例如T& O将转到数据库。

(注意这一切都必须通过XSLT完成,此时我可以选择使用.NET编码)

任何人都知道如何从XSLT做到这一点?

注意我的XSLT知识不是最好的说法!

干杯

3 个答案:

答案 0 :(得分:2)

<xsl:text disable-output-escaping="yes">&amp;<!--&--></xsl:text>

更多信息:http://www.w3schools.com/xsl/el_text.asp

答案 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&amp;O'"/>
</xsl:variable>

变量string($test)的值为T&O。您可以将此变量作为参数传递给扩展函数。

答案 2 :(得分:0)

假设您的XML如下所示:

<root>T&amp;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,其中&符号仍将被编码。