0

我正在使用 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            ">

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

4

1 回答 1

2

看起来源代码中有 URLEncoded 换行符和一些空格。可以使用 normalize-space() 函数去除前导和尾随空格。其他内容可能更棘手,这取决于它的规则性以及您使用的 XSLT 版本。如果 URL 始终以“%0A”结尾,您可以执行以下操作:

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

只有当您的 URL 中永远不会包含 URLEncoded 数据(这可能不是一个安全的假设)时,这才会一直有效。如果您使用的是 XSLT 2.0,则类似于:

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

可能会更好。

于 2012-04-06T16:49:21.227 回答