Especificação do RSS 2.0
De Projeto RSSficado 2
| Este artigo pertence à seção |
| Sub-seções... |
|
Especificação do RSS 2.0 |
| Outras seções... |
|
Feeds RSS para Iniciantes |
Nota: Se você procura por uma explicação para usuários leigos no assunto acesse: Feeds RSS para Iniciantes
A primeira versão do RSS foi criada pela Netscape para o seu portal My Netscape, em Julho de 1999. Desde então a tarefa de suportar o padrão foi passando de mãos em mãos ao mesmo tempo que foram sendo gradualmente adicionadas melhorias ao mesmo. No momento da escrita deste artigo a última versão do RSS é o 2.0, mais precisamente 2.0.10 lançada em em 15 de outubro de 2007. Seu atual mantenedor é o RSS Advisiory Board.
Neste artigo será apresentada a tradução completa da especificação do RSS 2.0 para fins de consulta, atualizada até fevereiro de 2008. Para acessar a última versão disponível desta especificação (em inglês) acesse: http://www.rssboard.org/rss-specification
Índice de conteúdo |
[editar] Especificação do RSS 2.0 (Versão 2.0.10)
AVISO: Todo o conteúdo abaixo, tal como reza a especificação original do RSS está licenciado sob a Creative Commons Atribuição/Compartilhamento pela mesma Licença 2.0 Genérica (CC by/sa 2.0) com os devidos créditos ao final do documento.
[editar] O que é RSS?
- Nota: Se você procura por uma explicação para usuários leigos no assunto acesse: O que são feeds RSS?
RSS é um formato de sindicação de conteúdo da Web.
Seu nome é um acrônimo para Really Simple Syndication.
RSS é um dialeto de XML. Todos os arquivos RSS devem obedecer à especificação do XML 1.0, como publicado no site do World Wide Web Consortium (W3C).
Um sumário do histórico de versões do RSS.
No nível superior, um documento RSS é um elemento <rss>, com um atributo obrigatório chamado version, que especifica a versão do RSS que o documento obedece. Se ele obedece a esta especificação, o atributo version deve ser 2.0.
Subordinado ao elemento <rss> há um único elemento, <channel>, que contém as informações sobre o canal (metadados) e seus conteúdos.
[editar] Arquivos de Exemplo
Aqui há arquivos de exemplo para: RSS 0.91, RSS 0.92 e RSS 2.0.
Note que os arquivos de exemplo podem apontar para documentos e serviços que não existem mais. A amostra do RSS 0.91 foi criada quando os documentos do 0.91 foram escritos. Manter um rastro das amostras parece ser uma boa idéia.
[editar] Sobre este documento
Este documento representa o status do RSS até o outono de 2002, versão 2.0.1.
Ele incorpora todas as mudanças e adições, iniciando com a especificação básica para o RSS 0.91 (Junho de 2000) e inclui novos recursos introduzidos no RSS 0.92 (Dezembro de 2000) e RSS 0.94 (Agosto de 2002).
Notas de mudanças estão aqui.
Primeiro nós documentamos os sub-elementos obrigatórios e opcionais de <channel>; e então documentamos os sub-elementos de <item>. As seções finais respondem questões perguntadas frequentemente, e fornece um roadmap para futuras evoluções, e orientações para extender o RSS.
O RSS Profile contém um conjunto de recomendações de como criar documentos RSS que funcionam melhor na vasta e diversificada audiência de softwares clientes que suportam o formato.
[editar] Elementos obrigatórios de <channel>
Aqui está uma lista dos elementos obrigatórios de channel, cada um com uma breve descrição, um exemplo, e quando disponível, um link para uma descrição mais completa.
| Elemento | Descrição | Exemplo |
|---|---|---|
| title | O nome do canal (channel). É como as pessoas se referem ao seu serviço. Se você tem um website HTML que contém a mesma informação que o seu arquivo RSS, o título do seu canal deveria ser o mesmo que o título do seu website. | GoUpstate.com News Headlines
|
| link | A URL para o website correspondente ao canal | http://www.goupstate.com/
|
| description | Frase ou sentença descrevendo o canal. | The latest news from GoUpstate.com, a Spartanburg Herald-Journal Web site.
|
[editar] Elementos opcionais de <channel>
Aqui está uma lista dos elementos opcionais.
| Elemento | Descrição | Exemplo |
|---|---|---|
| language | O idioma que o canal é escrito. Isto prermite que agregadores agrupem todos os sites em italiano, por exemplo, em uma única página. Uma lista dos valores permitidos para este elemento, como fornecido pela Netscape, está aqui. Você também pode usar os valores definidos pelo W3C. | en-us
|
| copyright | Aviso de copyright para o conteúdo no canal. | Copyright 2002, Spartanburg Herald-Journal
|
| managingEditor | Endereço de e-mail para a pessoa responsável pelo conteúdo editorial. | geo@herald.com (George Matesky)
|
| webMaster | Endereço de e-mail para a pessoa responsável pelas questões técnicas relacionadas ao canal. | betty@herald.com (Betty Guernsey)
|
| pubDate | A data de publicação para o conteúdo no canal. Por exemplo, o New York Times publica diariamente, a data de publicação muda a cada 24 horas. É quando o pubDate do canal muda. Todas as datas e horas no RSS devem obedecer à Especificação de Hora e Data do RFC 822, com a exceção que o ano pode ser expresso com dois caracteres ou quatro caracteres (Quatro preferencialmente). | Sat, 07 Sep 2002 00:00:01 GMT
|
| lastBuildDate | O último momento que o conteúdo do canal mudou. | Sat, 07 Sep 2002 09:42:31 GMT
|
| category | Especifique uma ou mais categorias que o canal pertence. Segue as mesmas regras que elemento category, sub-elemento de <item>. Mais informações.
| <category>Newspapers</category>
|
| generator | Uma string indicando o programa usado para gerar o canal. | MightyInHouse Content System v2.3
|
| docs | Uma URL que aponta para a documentação do formato usado no arquivo RSS. É provavelmente um ponteiro para esta página. É para pessoas que por acaso tropecem em um arquivo RSS em um servidor Web 25 anos no futuro e imaginem o que seria isto. | http://www.rssboard.org/rss-specification
|
| cloud | Permite processos se registrarem em uma nuvem (cloud) para serem notificados de atualizações do canal, implementando um protocolo leve de publicação-assinatura para feeds RSS. Mais informações aqui.
Nota do tradutor: A explicação dada acima é consideravelmente confusa. O que o elemento cloud faz basicamente é criar um sistema push de notificação de atualizações através da API RssCloud, permitindo que o agregador se registre em uma nuvem (cloud) para ser notificado de qualquer atualização do canal no momento que esta ocorrer. Infelizmente tal elemento é raríssimo em feeds RSS e assim pouco utilizado pelos agregadores de feeds. | <cloud domain="rpc.sys.com" port="80" path="/RPC2" registerProcedure="pingMe" protocol="soap"/>
|
| ttl | ttl significa time to live (tempo para viver). É o número de minutos que indica quanto tempo um canal pode ser armazenado (cache) antes de ser atualizado da fonte. Mais informações aqui. | <ttl>60</ttl>
|
| image | Especifica uma imagem GIF, JPEG ou PNG que pode ser exibida com o canal. Mais informações aqui. | |
| rating | A classificação PICS para o canal. | |
| textInput | Especifica uma caixa de entrada de texto que pode ser exibida com o canal. Mais informações aqui. | |
| skipHours | Uma dica para agregadores informando-os que horas eles podem ignorar [A atualização do canal] Mais informações aqui. | |
| skipDays | Uma dica para agregadores informando-os que dias eles podem ignorar [A atualização do canal] Mais informações aqui. |
[editar] <image> sub-elemento de <channel>
<image> é um sub-elemento opcional de <channel>, que contém três sub-elementos obrigatórios e três opcionais:
-
<url>é a URL da imagem GIF, JPEG ou PNG que representa o canal.
-
<title>descreve a imagem, é usado no atributo ALT da tag HTML<img>quando o canal é renderizado em HTML.
-
<link>é a URL do site, quando o canal é renderizado, a imagem é um link para o site. (Note, na prática o<title>e<link>da imagem deveriam ter o mesmo valor que o<title>e<link>do canal).
Elementos opcionais incluem <width> e <height>, números, indicando a largura e altura da imagem em pixels. <description> contém o texto que é incluído no elemento TITLE do link formado em volta da imagem na renderização HTML.
O valor máximo para a largura é 144, valor padrão é 88.
O valor máximo para a altura é 400, valor padrão é 31.
[editar] <cloud> sub-elemento de <channel>
<cloud> é um sub-elemento opcional de <channel>.
Ele especifica um serviço web (web service) que suporta a interface rssCloud que pode ser implementada em HTTP-POST, XML_RPC ou SOAP 1.1/
Seu propósito é permitir que processos registrem-se em uma nuvel (cloud) para serem notificados de atualizações no canal, implementando um protocolo leve de publicação-assinatura para feeds RSS.
<cloud domain="rpc.sys.com" port="80" path="/RPC2" registerProcedure="myCloud.rssPleaseNotify" protocol="xml-rpc" />Neste exemplo, para requisitar notificação [de atualização] em que aparece, você enviaria uma mensagem XML-RPC para rpc.sys.com na porta 80 com o caminho /RPC2. O procedimeto (método) a chamar é myCloud.rssPleaseNotify.
Uma explicação completa deste elemento e a interface rssCloud está aqui.
[Nota do tradutor: Também é recomendável ler esta outra explicação.]
[editar] <ttl> sub-elemento de <channel>
<ttl> é um sub-elemento opcional de <channel>
ttl significa time to live (tempo para viver). É o número de minutos que indica quanto tempo um canal pode ser armazenado (cache) antes de ser atualizado da fonte. Isto faz possível que fontes RSS serem gerenciadas por uma rede de compartilhamento de arquivos como o Gnutella.
Exemplo:
<ttl>60</ttl>
[editar] <textInput> sub-elemento de <channel>
Um canal pode opcionalmente conter um sub-elemento <textInput>, que contém quatro sub-elementos obrigatórios:
-
<title>- O texto do botão Enviar na área de entrada de texto.
-
<description>- Explica a área de entrada de texto.
-
<name>- O nome do objeto de texto na área de entrada de texto.
-
<link>- A URL do script CGI que processa as requisições de entrada de texto.
O propósito do elemento <textInput> é quase um mistério. Você pode usá-lo para especificar uma caixa de buscas. Ou para permitir ao leitor fornecer um feedback. A maioria dos agregadores o ignora.
[editar] Elementos de <item>
Um canal pode conter qualquer número de <item>s. Um item pode representar uma "artigo" -- muito como um artigo em um jornal ou revista; assim seu description é uma sinopse do artigo, e o link aponta para o artigo completo. Um item pode também estar completo por si só, então, seu descriprion contém o texto (HTML entity-encoded é permitido; veja exemplos), e o link e o título podem ser omitidos. Todos os elementos de um item são opcionais, entretanto pelo menos o título ou a descrição devem estar presentes.
[Nota do tradutor: A explicação acima é muito vaga atualmente. Leia o RSS Profile para uma explicação mais detalhada.]
| Elemento | Descrição | Exemplo |
|---|---|---|
| title | O título do item. | Venice Film Festival Tries to Quit Sinking
|
| link | A URL do item. | http://nytimes.com/2004/12/07FEST.html
|
| description | A sinopse do item. | <description>Some of the most heated chatter at the Venice Film Festival this week was about the way that the arrival of the stars at the Palazzo del Cinema was being staged.</description>
|
| author | Endereço de e-mail do autor do item. Mais. | |
| category | Inclui o item em uma ou mais categorias. Mais. | |
| comments | URL de uma página para comentários relacionados ao item. Mais. | |
| enclosure | Descreve um objeto de mídia que está anexado ao item. Mais. | |
| guid | Uma string que unicamente identifica o item. Mais. | |
| pubDate | Indica quando o item foi publicado. Mais. | |
| source | O canal RSS que derivou o item. Mais. |
[editar] <source> sub-elemento de <item>
<source> é um sub-elemento opcional de <item>.
Seu valor é o nome do canal RSS de onde o item veio, derivado de seu <title>. Ele possui um atributo obrigatório, url, que faz um link para para fonte em XML.
<source url="http://www.tomalak.org/links2.xml">Tomalak's Realm</source>
O propósito deste elemento é propagar créditos por links, divulgar as fontes por itens de notícias. Ele pode ser usado no comando Enviar do agregador. Ele deveria ser gerado automaticamente ao enviar um item de um agregador para uma ferramenta de publicação de blogs.
[editar] <enclosure> sub-elemento de <item>
<enclosure> é um sub-elemento opcional de <item>.
Ele possui três atributos obrigatórios. url informa onde o anexo está localizado, length informa quão grande é o anexo em bytes, e type informa qual é o seu tipo, um tipo MIME padrão.
A url deve ser uma url http.
<enclosure url="http://www.scripting.com/mp3s/weatherReportSuite.mp3" length="12216320" type="audio/mpeg" />Uma narrativa de caso de uso para este elemento está aqui.
[editar] <category> sub-elemento de <item>
<category> é um sub-elemento opcional de <item>
Ele possui um atributo opcional, domain,,, uma string que identifica uma taxonomia de categorização.
O valor do elemento é uma string separada por barras que identifica a a localização hierárquica na taxonomia indicada. Processadores podem estabelecer convenções para a interpretação das categorias. Dois exemplos são fornecidos abaixo:
<category>Grateful Dead</category> <category domain="http://www.fool.com/cusips">MSFT</category>
Você pode incluir quantas categorias precisar, para domínios diferentes, e para ter um item cross-referenced em diferentes partes do mesmo domínio.
[editar] <pubDate> sub-elemento de <item>
<pubDate> é um sub-elemento opcional de <item>
Seu valor é uma data, indicando quando o item foi publicado. Se é uma data no futuro, agregadores podem escolher não exibir o item até a referida data.
<pubDate>Sun, 19 May 2002 15:21:36 GMT</pubDate>
[editar] <guid> sub-elemento de <item>
<guid> é um sub-elemento opcional de <item>.
guid significa globally unique identifier (identificador único global). É uma string que unicamente identifica o item. Quando presente , um agregador pode escolher utilizar esta string para determinar se um item é novo.
<guid>http://some.server.com/weblogItem3207</guid>
Não há regras para a sintaxe de um guid. Agregadores devem vê-los como uma string. É tarefa da fonte do feed estabelecer a unicidade da string
Se o elemento guid possui um atributi isPermaLink com o valor true, o leitor pode assumir que ele é um permalink para o item, isto é, uma URL que pode ser aberta em um Web browser, que aponta para o item completo descrito no elemento <item>. Um exemplo:
<guid isPermaLink="true">http://inessential.com/2002/09/01.php#a2</guid>
isPermaLink é opcional. Seu valor padrão é true. Se seu valor é false, o guid não pode ser assumido como uma URL, ou uma URL para qualquer coisa em particular.
[editar] <comments> sub-elemento de <item>
<comments> é um sub-elemento opcional de <item>.
Se presente, é a URL para a página de comentários para o item.
<comments>http://ekzemplo.com/entry/4403/comments</comments>
Mais sobre comentários aqui.
[editar] <author> sub-elemento de <item>
<author> é um sub-elemento opcional de <item>.
É o endereço de e-mail do autor do item. Para jornais e revistas publicando via RSS, o autor é a pessoa que escreveu o artigo que o <item> descreve. Para blogs colaborativos, o autor do item pode ser diferente do editor chefe ou webmaster. Para um blog individual faria sentido omitir o elemento <author>.
<author>lawyer@boyer.net (Lawyer Boyer)</author>
[editar] Comentários
O RSS coloca restrições no primeiro caractere não-espaço de dados dos elementos <link> e <url>. Os dados nestes elementos deve começar com um esquema de URI registrado na IANA, como http://, https://, news://, mailto: e ftp://. Anteriormente ao RSS 2.0, a especificação somente permitia http:// e ftp://, entretanto, na prática outros esquemas de URI estavam sendo usados por desenvolvedores e suportados por agregadores. Agregadores podem ter limites nos esquemas de URI que eles suportam. Desenvolvedores não deveriam assumir que todos os agregadore suportal todos os esquemas.
No RSS 0.91, vários elementos são restritos a 500 ou 100 caracteres. Não podem haver mais que 15 <item> em um <channel> 0.91. Não há tamanhos máximos de strings ou limitações do XML no RSS 0.92 e posteriores. Processadores podem impor seus próprios limites, e geradores podem ter preferências que informem um limite de <item>s que podem aparecer em um canal, ou que strings são limitadas em comprimento.
No RSS 2.0, uma provisão é feita ao fazer um link de um canal a seu identificador em sistema de catalogação, usando o recurso category subordinado a channel, como descrito acima. Por exemplo, para fazer um link entre o canal e seu identificador Syndic8, inclua um elemento category como sub-elemento de <channel, com o domínio "Syndic8", e valor o identificador para o seu canal na base de dados do Syndic8. O elemento category apropriado para
Scripting News seria <category domain="Syndic8">1765</category>.
Uma pergunta freqüentemente perguntada sobre <guid>s e como eles se comparam aos <link>s. Eles não são a mesma coisa? Sim, em alguns sistemas de conteúdo e não em outros. Em alguns sistemas, <link> é um permalink para um item de weblog. Entretanto, em outros sistemas cada <item> é uma sinopse de um artigo maior, <link> aponta para o artigo, e <guid> é o permalink para a entrada no weblog. Em todos os casos, é recomendável que você forneça o <guid>, e se possível faça-o um permalink. Isto permite que agregadores não repitam itens, mesmo se houve mudançad s na edição.
Se você possui perguntas sobre o formato RSS 2.0, por favor envie-as para a lista de discussão RSS-Public. A lista, mantida pelo RSS Advisory Board, serve como uma fonte de suporte para usuários, autores e desenvolvedores que estão criando e usando conteúdo no formato.
[editar] Extendendo o RSS
O RSS originou-se em 1999, e tem se esforçado para ser um formato simples, fáci de enteder, com objetivos relativamente modestos. Depois que ele se tornou um formato popular, desenvolvedores queriam extendê-lo usando módulos definidos em namespaces, como especificado pelo W3C.
O RSS 2.0 adiciona esta capacidade, seguindo uma regra simples. Um feed RSS pode conter elementos e atributos não descritos nesta página, somente se esses elementos e atributos estão definidos em um namespace.
Os elementos definidos neste documento não são eles mesmos membros de um namespace, para que o RSS 2.0 possa continuar compatível com versões anteriores no seguinte sentido -- um arquivo da versão 0.91 ou 0.92 é também um arquivo RSS 2.0 válido. Se os elementos do RSS 2.0 estivessem em um namespace, esta limitação se quebraria, um arquivo de versão 0.9x não seria um arquivo RSS 2.0 válido.
[editar] Roadmap
O RSS é de nenhuma forma um formato perfeito, mas é muito popular e vastamente suportado. Ter um padrão assentado é algo que o RSS precisou por um longo tempo. O propósito deste trabalho é ajudá-lo a se tornar algo perene, para fomentar seu crescimento no mercado que está se desenvolvendo em volta dele, e para libertar espaço para inovações em novos formatos de sindicação. Portanto, a especificação do RSS 2.0 está, para todos os propósitos práticos, congelada na versã0 2.0.1. Nós antecipamos possíveis versões 2.0.2, 2.0.3, etc. somente para o propósito de clarificar a especificação, não para adicionar novos recursos ao formato. Trabalho subseqüente deve ocorrer em módulos, usando namespaces, e em completamente novos formato de sindicação, com novos nomes.
[editar] Licença e autoria
Este documento foi autorado pelo RSS Advisory Board e traduzido por Pedro Paulo Vezzá Campos e é oferecido sob os termos da licença Creative Commons Attribution/Share Alike license, baseado em um documento original publicado pelo Berkman Center for Internet & Society na Harvard Law School autorado por Dave Winer.

