RDF ist eine Möglichkeit Daten im XML Format zu erstellen. Dieses ist ähnlich dem RSS Format. Soweit in beiden Fällen überhaupt von Formaten sprechen kann. Bei RDF werden XML Namensräume verwendet um zb das Root Element mit rdf:RDF zu kennzeichnen.
Das Problem ist, dass das XMLDatasource Steuerelement mit Namensräumen zumindest in der XPath Deklaration nicht umgehen kann. Wenn man auf diese eine RDF Feed in seine ASPX Seiten einbinden will, ist das Ergebnis leer.
Wenn man mit XMlDom Objekten arbeitet kann man den XmlNamespaceManager einbinden. Aber auch das nicht bei XMLDatasource.
Meine Idee ist nun mit einer XSLT Datei die RDF ( und damit XML Daten ) einfach in ein RSS Format zu transformieren.
<? xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <xsl:template match="/"> <rss> <xsl:for-each select="/*/*[name()='item']"> <item> <title> <xsl:value-of select="child::*[name()='title']"/></title> </item> </xsl:for-each> </rss></xsl:template> </xsl:stylesheet> |
Dies ist nur für das Titel Element implementiert, lässt sich aber für [link] ect fortführen. Nun kann man in fast gewohnter Form den Feed in die Seite einbinden. Wichtig ist das Atrribut Transformfile zu setzen und dann auch mit der RSS Struktur zu arbeiten. Also die Auswahlliste mit Xpath auf rss/item zu setzen.
<asp:XmlDataSource DataFile="http://www.kino.de/rss.php4?typ=movienews" ID="XmlDataSource1" runat="server" XPath="rss/item" TransformFile="convertrdf.xsl" CacheDuration="600" EnableCaching="true"> </asp:XmlDataSource> <asp:datalist id="DataList1" runat="server" datasourceid="XmlDataSource1"> <itemtemplate> <%#XPath("title") %><br /> </itemtemplate> </asp:datalist> |