2012-04-06 20 views
0

Ich benutze XSLT, um RSS-Dateien in XHTML zu transformieren. Um einen Link Ich benutze diesen Code-Block zu erstellen:RSS zu XHTML mit XSLT - Wie man merkwürdige Zeichen entfernt?

<!-- 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> 

Aber das Ergebnis wird mit einigen unerwünschten Zeichen:

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

Was mache ich falsch? Vielen Dank im Voraus für Ihre Hilfe.

+1

Bitte könnten Sie die Frage bearbeiten und das XML, das Sie transformieren möchten, hinzufügen? – andyb

+0

Ich benutze diese XML: http://feeds.jn.pt/JN-ULTIMAS Danke – notGeek

+0

@andre Lesen Sie die Anfrage von andyb sorgfältig. – Marcin

Antwort

2

Es sieht so aus, als ob die Quelle URLE-codierte Zeilenvorschübe und einige Leerzeichen enthält. Führende und nachfolgende Whitespaces können mit der Funktion normalize-space() entfernt werden. Die anderen Sachen können kniffliger sein, je nachdem, wie normal es ist und welche Version von XSLT Sie verwenden. Wenn die URLs immer in „% 0A“ enden, könnten Sie so etwas wie tun:

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

Dies wird nur die ganze Zeit arbeiten, wenn Ihre URLs nie in ihnen Urlencoded Daten haben werden (was nicht sicher sein könnte Annahme). Wenn Sie XSLT 2.0 verwenden, können Sie beispielsweise:

möglicherweise besser funktionieren.

+0

Es funktioniert gut! Danke vielmals – notGeek