使用XSLT和XPath 1.0,我有一个我想要转义的字符串用于URL,例如:
<description>one word & another</description>
因此,description元素的text()应该进行URL转义。
我该怎么做?
使用C#(XslCompiledTransform)代码将是:
string a = Server.UrlEncode("one word & another");
并且会产生:
one+word+%26+another
有什么建议吗?
答案 0 :(得分:4)
没有内置任何东西可以做到这一点,但不是重新发明轮子,那里已经有样式表,例如:
http://skew.org/xml/stylesheets/url-encode/
转换是直截了当的,但(希望)其他人会为你完成调试......
答案 1 :(得分:2)
在XML(以及XSL)中,您需要转义&amp;,&gt;和&lt;使用
&
<
>
答案 2 :(得分:2)
片段<description>one word & another</description>
类似于XML,但裸露的&符号是非法的。 XSL需要合法的XML。
在不替换&
的情况下使其成为合法的一种方法是将文本转换为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)
就我的目的而言,这些解决方案都没有奏效。我在专有框架内工作,并使用实体:
&
在XSL模板的上下文中,我能够将附加参数附加到URI字符串的唯一方法。