Salut, je veux work around a 'bug' in certain RSS-feeds, qui utilise un espace de noms incorrect pour le module MediaRSS. J'ai essayé de le faire en manipulant le DOM par programme, mais l'utilisation de XSLT me semble plus flexible.Remplacement d'un espace de noms avec XSLT
Exemple:
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss" url="http://www.suedkurier.de/storage/pic/dpa/infoline/brennpunkte/4311018_0_merkelxI_24280028_original.large-4-3-800-199-0-3131-2202.jpg" />
<media:thumbnail url="http://www.suedkurier.de/storage/pic/dpa/infoline/brennpunkte/4311018_0_merkelxI_24280028_original.large-4-3-800-199-0-3131-2202.jpg" />
Lorsque l'espace de noms doit être http://search.yahoo.com/mrss/
(l'esprit la barre oblique).
Ceci est mon stylesheet:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="//*[namespace-uri()='http://search.yahoo.com/mrss']">
<xsl:element name="{local-name()}" namespace="http://search.yahoo.com/mrss/" >
<xsl:apply-templates select="@*|*|text()" />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Malheureusement, le résultat de la transformation est un XML non valide et mon RSS-Parser (ROME Library) ne pas analyser l'alimentation plus:
java.lang.IllegalStateException: Root element not set
at org.jdom.Document.getRootElement(Document.java:218)
at com.sun.syndication.io.impl.RSS090Parser.isMyType(RSS090Parser.java:58)
at com.sun.syndication.io.impl.FeedParsers.getParserFor(FeedParsers.java:72)
at com.sun.syndication.io.WireFeedInput.build(WireFeedInput.java:273)
at com.sun.syndication.io.WireFeedInput.build(WireFeedInput.java:251)
... 8 more
Qu'est-ce mal avec ma feuille de style?
OK. Je dois absolument investir plus de temps dans XSL/XPATH etc! – er4z0r