网址和&符号

时间:2009-10-31 15:14:33

标签: url xslt escaping

使用XSLT和XPath 1.0,我有一个我想要转义的字符串用于URL,例如:

<description>one word &amp; another</description>

因此,description元素的text()应该进行URL转义。

我该怎么做?

使用C#(XslCompiledTransform)代码将是:

string a = Server.UrlEncode("one word & another");

并且会产生:

one+word+%26+another

有什么建议吗?

5 个答案:

答案 0 :(得分:4)

没有内置任何东西可以做到这一点,但不是重新发明轮子,那里已经有样式表,例如:

http://skew.org/xml/stylesheets/url-encode/

转换是直截了当的,但(希望)其他人会为你完成调试......

答案 1 :(得分:2)

在XML(以及XSL)中,您需要转义&amp;,&gt;和&lt;使用

&amp;
&lt;
&gt;

答案 2 :(得分:2)

片段<description>one word & another</description>类似于XML,但裸露的&符号是非法的。 XSL需要合法的XML。

在不替换&amp;的情况下使其成为合法的一种方法是将文本转换为CDATA部分:

<description><![CDATA[one word & another]]></description> 

答案 3 :(得分:1)

您是否可以使用XSLT 2.0?我只提到它,因为有一个漂亮的URL编码功能,可以解决你所有的问题..

<xsl:value-of select="url:encode('This is URL encoded')" />

答案 4 :(得分:1)

就我的目的而言,这些解决方案都没有奏效。我在专有框架内工作,并使用实体:

&#38;

在XSL模板的上下文中,我能够将附加参数附加到URI字符串的唯一方法。