Tim Tepaße: RSS-DTD und der Feedvalidator

Beitrag lesen

Hallo,

Im RSS-Dokument ist keine DTD referenziert, sodass dieses lediglich als
well-formed durchgehen kann (muss).

Es gibt meines Wissens auch keine DTD für  RSS 2.0 bzw. die RSS 0.9x
Versionen. Dave Winer scheint recht gerne etwas leichtgewichtige
Spezifikationen zu schreiben, manche sagen: unterspezifiziert.
http://blogs.law.harvard.edu/tech/rss

Selbst wenn die RSS-2.0-DTD angegeben waere, koennte der Validator
lastBuildDate nur hinsichtlich analysierter Zeichendaten pruefen und beide
Datumsvarianten waeren korrekt:

Weswegen der von Sam Ruby und Mark Pilgrim geschriebene Validator auch
den Wert auf RFC822-Kombabilität überprüft. Hier der dazugehörige
Python-Code:

rfc822 dateTime (+Y2K extension)

class rfc822(text):
  rfc822_re = re.compile("(((Mon)|(Tue)|(Wed)|(Thu)|(Fri)|(Sat)|(Sun)), *)?" +
    "\d\d? +((Jan)|(Feb)|(Mar)|(Apr)|(May)|(Jun)|(Jul)|(Aug)|(Sep)|(Oct)|" +
    "(Nov)|(Dec)) +\d\d(\d\d)? +\d\d:\d\d(:\d\d)? +(([+-]?\d\d\d\d)|" +
    "(UT)|(GMT)|(EST)|(EDT)|(CST)|(CDT)|(MST)|(MDT)|(PST)|(PDT)|\w)$")
  def validate(self):
    if not self.rfc822_re.match(self.value):
      self.log(InvalidRFC2822Date({"parent":self.parent.name, "element":self.name, "value":self.value}))
    else:
      self.log(ValidRFC2822Date({"parent":self.parent.name, "element":self.name, "value":self.value}))

Tim