jan: rssfeed Fehler

Hallo zusammen,

bei folgende xml Datei für rssfeeds

  
<?xml version="1.0" encoding="UTF-8" ?>  
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">  
	<channel>				  
		<title>{{ titel }}</title>  
		<description>{{ text }}</description>  
		<link>{{ url }}</link>  
		<pubDate>{{ datum }}</pubDate>  
		<language>de</language>  
		<copyright>{{ copyright }}</copyright>  
{% for feed in feedliste %}  
		<item>  
			<title><![CDATA[{{ feed['ueberschrift']|safe }}]]></title>  
			<description><![CDATA[{% if feed['listenbild'] %}<img{{ feed['listenbild']['attributes_html']|safe }} /><br />{% endif %}{{ feed['anlauftext'] }}]]></description>  
			<guid><![CDATA[{{ feed['url']|safe }}]]></guid>  
			<link><![CDATA[{{ feed['url']|safe }}]]></link>  
			<pubDate>{{ feed['datum_rfc'] }}</pubDate>  
		</item>  
{% endfor %}			  
	</channel>  
</rss>  

Die Daten werden über django (https://www.djangoproject.com/) Templates ausgeliefert, bekomme ich bei http://validator.w3.org/appc/ folgende Fehler:

  
This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.  
  
Your feed appears to be encoded as "UTF-8", but your server is reporting "US-ASCII" [help]  
  
  
line 182, column 1: Missing atom:link with rel="self" [help]  
  
	</channel>  

Habe folgende Ansätze verfolgt:

Variante 1:

  
<?xml version="1.0" encoding="UTF-8" ?>  
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">  
	<channel>  
		<atom:link rel="self" href="{{ url }}/index.php" type="application/rss+xml">		  
		<title> titel </title>  
		<description> text </description>  
		<link> url </link>  
		<pubDate> datum </pubDate>  
		<language>de</language>  
		<copyright> copyright </copyright>  
{% for feed in feedliste %}  
		<item>  
			<title><![CDATA[ feed['ueberschrift']|safe ]]></title>  
			<description><![CDATA[{% if feed['listenbild'] %}<img feed['listenbild']['attributes_html']|safe  /><br />{% endif %} feed['anlauftext'] ]]></description>  
			<guid><![CDATA[ feed['url']|safe ]]></guid>  
			<link><![CDATA[ feed['url']|safe ]]></link>  
			<pubDate> feed['datum_rfc'] </pubDate>  
		</item>  
{% endfor %}			  
	</channel>  
</rss>  

Variante 2:

  
<?xml version="1.0" encoding="UTF-8" ?>  
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">  
	<channel>  
		<atom:link rel="self" href="{{ url }}/index.php" type="application/rss+xml">		  
		<title> titel </title>  
		<description> text </description>  
		<link> url </link>  
		<pubDate> datum </pubDate>  
		<language>de</language>  
		<copyright> copyright </copyright>  
{% for feed in feedliste %}  
		<item>  
			<title><![CDATA[ feed['ueberschrift']|safe ]]></title>  
			<description><![CDATA[{% if feed['listenbild'] %}<img feed['listenbild']['attributes_html']|safe  /><br />{% endif %} feed['anlauftext'] ]]></description>  
			<guid><![CDATA[ feed['url']|safe ]]></guid>  
			<link><![CDATA[ feed['url']|safe ]]></link>  
			<pubDate> feed['datum_rfc'] </pubDate>  
		</item>  
{% endfor %}			  
	<atom:link rel="self" href="{{ url }}/index.php" type="application/rss+xml">		  
	</channel>  
</rss>  

Bei den zwei unteren Varianten werden die Daten gar nicht angezeigt.
Weiß jemand woran es liegt?

Grüße
jan

  1. Weiß jemand woran es liegt?

    Vermutlich an einem Syntaxfehler in der XML-Ausgabe, die drakonisch bestraft wird - ein XML-Validator hilft hier weiter.

    Oder aber ganz einfach die Fehlermeldung in deinem Browser lesen, wenn man sie denn nicht unterdrückt.

  2. Bei den zwei unteren Varianten werden die Daten gar nicht angezeigt.
    Weiß jemand woran es liegt?

    Weil du die Klammern {{ }} rausgenommen hast, die fürs Templating notwendig sind. Dieser Versuch war unsinnig und nicht geeignet, die Ursache der Warnung

    Your feed appears to be encoded as "UTF-8", but your server is reporting "US-ASCII" [help]

    zu beheben. Stattdessen musst du schauen, wo genau in der Django-App der Content-Type mit dem falschen Wert, vermutlich

    application/rss+xml; charset=US-ASCII

    gesetzt wird, und dies korrigieren.

    1. Hi,

      die Lösung war einfache, bevor das Template gerendert wird habe ich dem Header folgende Anweisung übergeben:

        
      header('Content-Type: application/rss+xml; charset=utf-8;');  
      
      

      Die XML Datei um folgende Anweisung ergänzt:

        
      <atom:link href="{{ link_zu_seite }}" rel="self" type="application/rss+xml" />		  
      	</channel>  
      </rss>  
      
      

      Leider kommt eine "kleine" Fehlermeldung:

        
      This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.  
        
      line 12, column 2: Misplaced Item (20 occurrences) [help]  
        
      		<item>  
      
      

      Es geht nur um Abstand in der XML Datei.
      Das muss ich noch beheben.
      Danke für Eure Hilfe.

      Grüße
      jan

      1. Leider kommt eine "kleine" Fehlermeldung:

        Nein, das ist eine Warnung.

        line 12, column 2: Misplaced Item (20 occurrences) [help]

        http://validator.w3.org/appc/docs/warning/MisplacedItem.html

        Es geht nur um Abstand in der XML Datei.

        Nein. Dein neues atom:link-Element sitzt ungünstig nach den item-Elementen. Verschiebe die item-Elemente nach unten, vor das schließende channel-Tag.