Ce este RSS

O scurtă istorie

Programatorii, ferește-te! Prin termenul „RSS“ se ascunde un format care a fost împărțit în mai multe versiuni diferite de cel puțin două formate diferite (dar existente simultan). Sursa RSS, versiunea 0.90, dezvoltat în compania Netscape. Acest format a fost conceput pentru a crea portaluri de știri cele mai mari companii de știri. Așa cum mulți au considerat prea complicat, Netscape a dezvoltat o versiune mai simplă - 0,91, care, cu toate acestea, abandonat, a pierdut orice interes în portaluri de afaceri. Dar versiunea 0.91 a fost alocată pentru a salva compania Userland Software-ul, care va utiliza acest format ca bază pentru weblog-produsele lor și alte aplicații bazate pe web.

Între timp, a treia, este deja o organizație non-profit, după ce a rupt departe de fluxul general, a crea un nou format, care este considerat a fi în concordanță cu spiritul și principiile formatul sursă RSS 0.90 (adică, înainte de a fost simplificată la 0,91). Acest format este bazat pe limbajul RDF, numit RSS 1.0. Din păcate, compania Userland nu a fost implicat în dezvoltarea acestui nou format, și ca avocat al unei versiuni simplificate a 0.90 ea nu a fost fericit când a apărut în format RSS 1.0. În loc de a lua acest format Userland a decis să dezvolte și să înființeze o sucursală 0,9H versiunea 0.92, apoi 0,93, 0,94, și în cele din urmă 2.0.

Iată o salată.

Deci, ce format să-mi folosesc?

Versiuni RSS și recomandări

Ce este RSS?

Să presupunem că doriți să scrie un program care citește feed-uri RSS, de exemplu, de a publica titluri de știri de pe site-ul dvs., sau pentru a crea un portal de știri și așa mai departe. Cum RSS-fișier? Totul depinde de ce fel de versiuni RSS în cauză. Aici este un exemplu de fișier în formatul RSS 0.91 (o versiune simplificata-jos de știri din www.xml.com):

Acum, să ne uităm la modul în care aceleași informații arată în format RSS 1.0:

În ciuda faptului că RSS 1.0 este un amestec de RDF, XML, și structural este similar cu versiunile anterioare ale RSS - suficient ca vedem noi ca un fișier XML obișnuit similare. Prin urmare, putem scrie un program care poate extrage informații din ambele formate: RSS 0.91 și de la și de la RSS 1.0. Cu toate acestea, există încă unele diferențe, pe care programul ar trebui să știe:

  1. Elementul rădăcină în RSS 1.0 este rdf: RDF, mai degrabă decât rss. Fie trebuie să se ocupe în mod explicit ambele aceste elemente, sau pur și simplu le ignoră și orbește prelua numai informațiile de care aveți nevoie.

Puteți merge două moduri: Dacă XML parser înțelege namespace, puteți presupune doar că fișierul utilizează elemente cu prefixe și orbește căuta elemente în elementele lor și DC: creator. O astfel de metodă va funcționa în cele mai multe cazuri, deoarece formatul de știri RSS 1.0 este cel mai des folosit doar spațiul de nume, implicit, și spațiul de la Dublin Core spațiu de nume. Desigur, această metodă - nu elegant, pentru că nu există nici o garanție că într-un fel de știri nu este nici un alt spațiu de nume va fi utilizat (care este legală în ceea ce privește RDF si XML). Și parser va fi dor toate știrile.

În cazul în care XML-parser înțelege namespace, puteți construi o soluție mai elegantă, care ar fi în măsură să facă noutățile și formatul 0.91 și formatul 1.0.

  • Un fapt mai puțin evidentă, dar important este faptul că RSS 1.0 elementele de tip sunt în afara canalului elementului. Elementele RSS 0.91 element dispus în interiorul canalului. La 0.90 au fost în afara. La 2.0 - acestea sunt în interior. In-cum! Nu te pune cu acest lucru, este necesar să se caute știri pe orice element.
  • În cele din urmă, veți observa că canalul elementul există un element de elemente. numai El trebuia să RDF-parser (determină ordinea de știri). Puteți să-l ignorați și să presupunem că toate știrile sunt în ordinea în care elementele sunt situate element.
  • Și se pare că formatul RSS 2.0? Din fericire, programe care înțeleg formatele RSS 0.91 și 1.0, în format RSS 2.0 va fi o bucată de tort.

    După cum arată acest exemplu, în RSS 2.0 de asemenea, foloseste namespaces, ca în RSS 1.0. Dar nu este RDF. Ca și în RSS 0.91, nici un spațiu de nume, implicit, și știri (în elementul „) sunt plasate înapoi în canalul de celulă.