0

XSLTを使用してRSSファイルをXHTMLに変換しています。リンクを作成するために、次のコードブロックを使用します。

<!-- 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 に答える