使用XSLT的RSS到XHTML - 如何删除奇怪的字符?

时间:2012-04-06 16:33:35

标签: xslt xhtml rss href

我正在使用XSLT来转换XHTML中的RSS文件。 为了创建链接,我使用这段代码:

<!-- language: lang-xml -->
<xsl:for-each select="channel/item">
   <h3><a href="{link}"><xsl:value-of select="title"/></a></h3>
   <xsl:value-of select="description"/>
</xsl:for-each>

但结果会带来一些不需要的字符:

<!-- language: lang-html -->
<h3><a href="%0A                http://site.com/page.htm%0A            ">

我做错了什么?在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

看起来源有URLEncoded换行符和一些空格。前导和尾随空格可以使用normalize-space()函数进行剥离。其他东西可能比较棘手,具体取决于它的规则程度,以及您正在使用的XSLT版本。如果URL始终以“%0A”结尾,则可以执行以下操作:

substring-before(substring-after(link, 'http'), "%")

如果您的网址永远不会包含URLEncoded数据(这可能不是一个安全的假设),这只会一直有效。如果您正在使用XSLT 2.0,请执行以下操作:

normalize-space(replace(link, '%0A', ''))

可能会更好。