Url 网址及;符号

Url 网址及;符号,url,xslt,escaping,Url,Xslt,Escaping,使用XSLT和XPath 1.0,我有一个字符串要转义以用于URL,例如: <description>one word &amp; another</description> 并将产生: one+word+%26+another 有什么建议吗?在XML(因此也是XSL)中,您需要避开&、>和

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

<description>one word &amp; another</description>
并将产生:

one+word+%26+another
有什么建议吗?

在XML(因此也是XSL)中,您需要避开&、>和
&amp;
&lt;
&gt;
片段
一个单词和另一个单词
类似于XML,但裸符号是非法的。XSL需要合法的XML

使其合法化的一种方法,无需替换
&
将文本设置为CDATA区域:

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

没有内置的功能来实现这一点,但是除了重新设计轮子之外,已经有了样式表,例如:


转换很简单,但是(希望)其他人已经为您完成了调试…

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

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

就我而言,这些解决方案都不起作用。我在专有框架内工作,并使用实体:

&#38;

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

+1,尽管通常不需要转义
。尽管这可能是真的,但这正在淡化人们的看法。记住
并不是规则的例外,这可能更简单(也可能更好)。绝对正确。我已经调整了代码片段以进行补偿。我的问题实际上是关于如何用有效字符替换URL非法字符(即URL转义文本)的问题,你有答案吗?你调整后的代码做出了一个无效的假设。如果你有&;在XML中,并使用XML读取器对其进行解析,您将永远不会看到&;在你记忆中的字符串中。XML解析器将自动将其转换为未转换版本。因此,除非您的UrlEncode代码片段中的字符串是使用正则表达式或其他方法从XML中提取出来的(您永远不应该这样做),否则它是不适用的。是的,当然,您是对的。您将如何从XSLT中获得输出?因此,实际上没有办法轻松地将任何短文本转换为链接?不单独使用XSLT-它是一种通用转换语言,因此它并不令人惊讶。您可以开始混合使用其他技术来简化任务,例如,您可以在使用xpath从XmlDocument中挑选节点后,使用Server.UrlEncode操作源XML(codeproject.com/KB/cpp/myXPath.aspx),然后通过XSLT推送结果。这实际上取决于上下文。谢谢,这些样式表帮了大忙。我想使用XSLT 2,但我不确定使用哪种实现。也许这将为您指明正确的方向:
&#38;