Author: pilgrim
Date: Wed Mar 12 13:27:00 2008
New Revision: 287
Added:
trunk/www/docs/changes-26.html
trunk/www/docs/changes-27.html
trunk/www/docs/changes-early.html
Modified:
trunk/feedparser/docs/xml/feedparser.xml
trunk/feedparser/feedparser.py
trunk/www/docs/annotated-atom03.html
trunk/www/docs/annotated-atom10.html
trunk/www/docs/annotated-rss10.html
trunk/www/docs/annotated-rss20-dc.html
trunk/www/docs/annotated-rss20.html
trunk/www/docs/changes-30.html
trunk/www/docs/changes-42.html
trunk/www/docs/character-encoding.html
trunk/www/docs/common-atom-elements.html
trunk/www/docs/common-rss-elements.html
trunk/www/docs/content-normalization.html
trunk/www/docs/date-parsing.html
trunk/www/docs/history.html
trunk/www/docs/html-sanitization.html
trunk/www/docs/http-etag.html
trunk/www/docs/index.html
trunk/www/docs/introduction.html
trunk/www/docs/microformats.html
trunk/www/docs/namespace-handling.html
trunk/www/docs/reference-bozo.html
trunk/www/docs/reference-bozo_exception.html
trunk/www/docs/reference-encoding.html
trunk/www/docs/reference-entry-summary.html
trunk/www/docs/reference-entry-tags.html
trunk/www/docs/reference-entry.html
trunk/www/docs/reference-etag.html
trunk/www/docs/reference-feed-rights.html
trunk/www/docs/reference-feed-tags.html
trunk/www/docs/reference-feed-textinput.html
trunk/www/docs/reference-feed.html
trunk/www/docs/reference-headers.html
trunk/www/docs/reference-href.html
trunk/www/docs/reference-modified.html
trunk/www/docs/reference-namespaces.html
trunk/www/docs/reference-status.html
trunk/www/docs/reference-version.html
trunk/www/docs/reference.html
trunk/www/docs/resolving-relative-links.html
trunk/www/docs/uncommon-atom.html
trunk/www/docs/uncommon-rss.html
Log:
finished revision history migration
Modified: trunk/feedparser/docs/xml/feedparser.xml
==============================================================================
--- trunk/feedparser/docs/xml/feedparser.xml (original)
+++ trunk/feedparser/docs/xml/feedparser.xml Wed Mar 12 13:27:00 2008
@@ -9,6 +9,8 @@
<!ENTITY feedparser_version "4.2">
<!ENTITY feedparser_modulename "<filename class='headerfile'>feedparser</filename>">
<!ENTITY feedparser_filename "<filename>feedparser.py</filename>">
+<!ENTITY ultraliberalfeedparser "<application>Ultra-liberal Feed Parser</application>">
+<!ENTITY ultraliberalrssparser "<application>Ultra-liberal RSS Parser</application>">
<!ENTITY title "Documentation">
<!ENTITY feedparser_domain "
feedparser.org">
<!ENTITY url_feedparser "http://&feedparser_domain;/">
@@ -3194,13 +3196,14 @@
<para>&feedparser; 4.2 was released on &fileversion;.</para>
</abstract>
<itemizedlist>
-<listitem><para><xref linkend="advanced.microformats"/>.</para></listitem>
+<listitem><para>Support for <link linkend="advanced.microformats">parsing microformats</link>, including <link linkend="advanced.microformats.relenclosure">rel=enclosure</link>, <link linkend="advanced.microformats.reltag">rel=tag</link>, <link linkend="advanced.microformats.xfn">&xfn;</link>, and <link linkend="advanced.microformats.hcard">&hCard;</link>.</para></listitem>
<listitem><para>Updated the whitelist of <link linkend="advanced.sanitization.html">acceptable HTML elements and attributes</link> based on the latest draft of the &html5; specification.</para></listitem>
-<listitem><para><xref linkend="advanced.sanitization.css"/>. (Previous versions of &feedparser; simply stripped all inline styles.) Many thanks to Sam Ruby for implementing this, despite my insistence that it was impossible.</para></listitem>
-<listitem><para><xref linkend="advanced.sanitization.svg"/> and <xref linkend="advanced.sanitization.mathml"/>. Many thanks to Jacques Distler for patiently debugging these features.</para></listitem>
+<listitem><para>Support for <xref linkend="advanced.sanitization.css"/>. (Previous versions of &feedparser; simply stripped all inline styles.) Many thanks to Sam Ruby for implementing this, despite my insistence that it was impossible.</para></listitem>
+<listitem><para>Support for <xref linkend="advanced.sanitization.svg"/>.</para></listitem>
+<listitem><para>Support for <xref linkend="advanced.sanitization.mathml"/>. Many thanks to Jacques Distler for patiently debugging this feature.</para></listitem>
<listitem><para>&iri; support for every element that can contain a &uri;.</para></listitem>
<listitem><para>Ability to <link linkend="advanced.base.disable">disable relative &uri; resolution</link>.</para></listitem>
-<!--<listitem><para>Ability to <link linkend="advanced.sanitization.disable">disable &html; sanitizing</link>.</para></listitem>-->
+<!--TODO<listitem><para>Ability to <link linkend="advanced.sanitization.disable">disable &html; sanitizing</link>.</para></listitem>-->
<listitem><para><link linkend="commandline">Command-line arguments and alternate serializers</link>, for manipulating &feedparser; from shell scripts or other non-Python sources.</para></listitem>
<listitem><para>More robust parsing of author email addresses, misencoded win-1252 content, <literal>rel=self</literal> links, and better detection of HTML content in elements with ambiguous content types.</para></listitem>
</itemizedlist>
@@ -3552,6 +3555,216 @@
<bridgehead id="changes.30b2" renderas="sect3">Changes in version 3.0b2 and 3.0b1</bridgehead>
<para>&feedparser; 3.0b2 and 3.0b1 have been lost in the mists of time.</para>
+</section>
+
+<section id="changes.27x">
+<?dbhtml filename="changes-27.html"?>
+<title>Changes in version 2.7.x</title>
+<abstract>
+<title/>
+<para>The 2.7 series was a brief but necessary transition towards some of the core ideas in version 3.0.</para>
+</abstract>
+
+<bridgehead id="changes.276" renderas="sect3">Changes in version 2.7.6</bridgehead>
+<para>&ultraliberalfeedparser; 2.7.6 was released on January 16, 2004.</para>
+<itemizedlist>
+<listitem><para>fixed bug with <filename class='headerfile'>StringIO</filename> importing</para></listitem>
+</itemizedlist>
+
+<bridgehead id="changes.275" renderas="sect3">Changes in version 2.7.5</bridgehead>
+<para>&ultraliberalfeedparser; 2.7.5 was released on January 15, 2004.</para>
+<itemizedlist>
+<listitem><para>added workaround for malformed DOCTYPE (seen on many <systemitem class="domainname">
blogspot.com</systemitem> sites)</para></listitem>
+<listitem><para>added <varname>_debug</varname> variable</para></listitem>
+</itemizedlist>
+
+<bridgehead id="changes.274" renderas="sect3">Changes in version 2.7.4</bridgehead>
+<para>&ultraliberalfeedparser; 2.7.4 was released on January 14, 2004.</para>
+<itemizedlist>
+<listitem><para>added workaround for improperly formed <sgmltag><br/></sgmltag> tags in encoded &html; (skadz)</para></listitem>
+<listitem><para>fixed unicode handling in <methodname>normalize_attrs</methodname> (ChrisL)</para></listitem>
+<listitem><para>fixed relative &uri; processing for <sgmltag>guid</sgmltag> (skadz)</para></listitem>
+<listitem><para>added ICBM support</para></listitem>
+<listitem><para>added <filename class='headerfile'>base64</filename> support</para></listitem>
+</itemizedlist>
+
+<bridgehead id="changes.273" renderas="sect3">Changes in version 2.7.3</bridgehead>
+<para>&ultraliberalfeedparser; 2.7.3 was released on January 14, 2004.</para>
+<itemizedlist>
+<listitem><para>reverted all changes made in 2.7.2</para></listitem>
+</itemizedlist>
+
+<bridgehead id="changes.272" renderas="sect3">Changes in version 2.7.2</bridgehead>
+<para>&ultraliberalfeedparser; 2.7.2 was released on January 13, 2004.</para>
+<itemizedlist>
+<listitem><para>"Version 2.7.2 of my feed parser, released today, will by default refuse to parse <ulink url="
http://intertwingly.net/stories/2004/01/12/broken.rss">this feed</ulink>. It does a first-pass check for wellformedness, and when that fails it sets the 'bozo' bit in the result to &one; and immediately terminates. You can revert to the previous behavior by passing <varname>disableWellFormedCheck=1</varname>, but it will print arrogant warning messages to stderr to the effect that anyone who can't create a well-formed &xml; feed is a bozo and an incompetent fool." <ulink url="
http://intertwingly.net/blog/2004/01/12/Scientific-Method#c1074047818">source</ulink></para></listitem>
+</itemizedlist>
+
+<bridgehead id="changes.271" renderas="sect3">Changes in version 2.7.1</bridgehead>
+<para>&ultraliberalfeedparser; 2.7.1 was released on January 9, 2004.</para>
+<itemizedlist>
+<listitem><para>fixed bug handling <literal>&quot;</literal> and <literal>&apos;</literal></para></listitem>
+<listitem><para>fixed memory leak not closing url opener (JohnD)</para></listitem>
+<listitem><para>added <sgmltag>dc:publisher</sgmltag> support (MarekK)</para></listitem>
+<listitem><para>added <sgmltag>admin:errorReportsTo</sgmltag> support (MarekK)</para></listitem>
+<listitem><para>&python; 2.1 <function>dict</function> support (MarekK)</para></listitem>
+</itemizedlist>
+
+<bridgehead id="changes.27" renderas="sect3">Changes in version 2.7</bridgehead>
+<para>&ultraliberalfeedparser; 2.7 was released on January 5, 2004.</para>
+<itemizedlist>
+<listitem><para>really added support for trackback and pingback namespaces, as opposed to 2.6 when I said I did but didn't really</para></listitem>
+<listitem><para>sanitize &html; markup within some elements</para></listitem>
+<listitem><para>added <filename class='headerfile'>mxTidy</filename> support (if installed) to tidy &html; markup within some elements</para></listitem>
+<listitem><para>fixed indentation bug in <function>_parse_date</function> (FazalM)</para></listitem>
+<listitem><para>use <function>socket.setdefaulttimeout</function> if available (FazalM)</para></listitem>
+<listitem><para>universal date parsing and normalization (FazalM): <varname>created</varname>, <varname>modified</varname>, <varname>issued</varname> are parsed into 9-tuple date format and stored in <varname>created_parsed</varname>, <varname>modified_parsed</varname>, and <varname>issued_parsed</varname></para></listitem>
+<listitem><para><varname>date</varname> is duplicated in <varname>modified</varname> and vice-versa</para></listitem>
+<listitem><para><varname>date_parsed</varname> is duplicated in <varname>modified_parsed</varname> and vice-versa</para></listitem>
+</itemizedlist>
+
+</section>
+
+<section id="changes.26">
+<?dbhtml filename="changes-26.html"?>
+<title>Changes in version 2.6</title>
+<abstract>
+<title/>
+<para>&ultraliberalfeedparser; 2.6 was released on January 1, 2004.</para>
+</abstract>
+<itemizedlist>
+<listitem><para><sgmltag>dc:author</sgmltag> support (MarekK)</para></listitem>
+<listitem><para>fixed bug tracking nested <sgmltag>div</sgmltag>s within content (JohnD)</para></listitem>
+<listitem><para>fixed missing <filename class='headerfile'>sys</filename> import (JohanS)</para></listitem>
+<listitem><para>fixed regular expression to capture &xml; character encoding (Andrei)</para></listitem>
+<listitem><para>added support for &atom; 0.3-style links</para></listitem>
+<listitem><para>fixed bug with <sgmltag>textInput</sgmltag> tracking</para></listitem>
+<listitem><para>added support for <sgmltag>cloud</sgmltag> (MartijnP)</para></listitem>
+<listitem><para>added support for multiple <sgmltag>category</sgmltag>/<sgmltag>dc:subject</sgmltag> (MartijnP)</para></listitem>
+<listitem><para>normalize content model: <varname>description</varname> gets description (which can come from <sgmltag><description></sgmltag>, <sgmltag><summary></sgmltag>, or full content if no <sgmltag><description></sgmltag>), <varname>content</varname> gets dict of <varname>base</varname>/<varname>language</varname>/<varname>type</varname>/<varname>value</varname> (which can come from <sgmltag><content:encoded></sgmltag>, <sgmltag><xhtml:body</sgmltag>, <sgmltag><content</sgmltag>, or <sgmltag><fullitem></sgmltag>)</para></listitem>
+<listitem><para>fixed bug matching arbitrary Userland namespaces</para></listitem>
+<listitem><para>added <sgmltag>xml:base</sgmltag> and <sgmltag>xml:lang</sgmltag> tracking</para></listitem>
+<listitem><para>fixed bug tracking unknown tags</para></listitem>
+<listitem><para>fixed bug tracking content when <sgmltag><content></sgmltag> element is not in default namespace (like Pocketsoap feed)</para></listitem>
+<listitem><para>resolve relative URLs in <sgmltag><link></sgmltag>, <sgmltag><guid></sgmltag>, <sgmltag><docs></sgmltag>, <sgmltag><url></sgmltag>, <sgmltag><comments></sgmltag>, <sgmltag><wfw:comment></sgmltag>, <sgmltag><wfw:commentRSS></sgmltag></para></listitem>
+<listitem><para>resolve relative &uri;s within embedded &html; markup in <sgmltag><description></sgmltag>, <sgmltag><xhtml:body></sgmltag>, <sgmltag><content></sgmltag>, <sgmltag><content:encoded></sgmltag>, <sgmltag><title></sgmltag>, <sgmltag><subtitle></sgmltag>, <sgmltag><summary></sgmltag>, <sgmltag><info></sgmltag>, <sgmltag><tagline></sgmltag>, and <sgmltag><copyright></sgmltag></para></listitem>
+<listitem><para>added support for pingback and trackback namespaces</para></listitem>
+</itemizedlist>
+</section>
+
+<section id="changes.early">
+<?dbhtml filename="changes-early.html"?>
+<title>Changes in earlier versions</title>
+<abstract>
+<title/>
+<para>&feedparser; began as an "ultra-liberal RSS parser" named <filename>rssparser.py</filename>. It was written as a weapon for battles that no one remembers, to work around problems that no longer exist.</para>
+</abstract>
+
+<bridgehead id="changes.253" renderas="sect3">Changes in version 2.5.3</bridgehead>
+<para>&ultraliberalfeedparser; 2.5.3 was released on August 3, 2003.</para>
+<itemizedlist>
+<listitem><para>track whether we're inside an <sgmltag>image</sgmltag> or <sgmltag>textInput</sgmltag> (TvdV)</para></listitem>
+<listitem><para>return the character encoding, if specified</para></listitem>
+</itemizedlist>
+
+<bridgehead id="changes.252" renderas="sect3">Changes in version 2.5.2</bridgehead>
+<para>&ultraliberalfeedparser; 2.5.2 was released on July 28, 2003.</para>
+<itemizedlist>
+<listitem><para>entity-decode inline &xml; properly</para></listitem>
+<listitem><para>added support for inline <sgmltag><xhtml:body></sgmltag> and <sgmltag><xhtml:div></sgmltag> as used in some &rss; 2.0 feeds</para></listitem>
+</itemizedlist>
+
+<bridgehead id="changes.251" renderas="sect3">Changes in version 2.5.1</bridgehead>
+<para>&ultraliberalfeedparser; 2.5.1 was released on July 26, 2003.</para>
+<itemizedlist>
+<listitem><para>clear <varname>opener.addheaders</varname> so we only send our custom <constant>User-Agent</constant> (otherwise <filename class='headerfile'>urllib2</filename> sends two, which confuses some servers) (RMK)</para></listitem>
+</itemizedlist>
+
+<bridgehead id="changes.25" renderas="sect3">Changes in version 2.5</bridgehead>
+<para>&ultraliberalfeedparser; 2.5 was released on July 25, 2003.</para>
+<itemizedlist>
+<listitem><para>changed to &python; license (all contributors agree)</para></listitem>
+<listitem><para>removed unnecessary <filename class='headerfile'>>urllib</filename> code -- <filename class='headerfile'>urllib2</filename> should always be available anyway</para></listitem>
+<listitem><para>return actual <varname>url</varname>, <varname>status</varname>, and full &http; headers (as <varname>result['url']</varname>, <varname>result['status']</varname>, and <varname>result['headers']</varname>) if parsing a remote feed over &http;. This should pass all the <ulink url="
http://diveintomark.org/tests/client/http/">Aggregator client &http; tests</ulink>.</para></listitem>
+<listitem><para>added the latest namespace-of-the-week for &rss; 2.0</para></listitem>
+</itemizedlist>
+
+<bridgehead id="changes.24" renderas="sect3">Changes in version 2.4</bridgehead>
+<para>&ultraliberalfeedparser; 2.4 was released on July 9, 2003.</para>
+<itemizedlist>
+<listitem><para>added preliminary Pie/Atom/Echo support based on <ulink url="
http://www.intertwingly.net/blog/1506.html">Sam Ruby's snapshot of July 1</ulink></para></listitem>
+<listitem><para>changed project name</para></listitem>
+</itemizedlist>
+
+<bridgehead id="changes.231" renderas="sect3">Changes in version 2.3.1</bridgehead>
+<para>&ultraliberalrssparser; 2.3.1 was released on June 12, 2003.</para>
+<itemizedlist>
+<listitem><para>if item has both <sgmltag>link</sgmltag> and <sgmltag>guid</sgmltag>, return both as-is</para></listitem>
+</itemizedlist>
+
+<bridgehead id="changes.23" renderas="sect3">Changes in version 2.3</bridgehead>
+<para>&ultraliberalrssparser; 2.3 was released on June 11, 2003.</para>
+<itemizedlist>
+<listitem><para>added <constant>USER_AGENT</constant> for default (if caller doesn't specify)</para></listitem>
+<listitem><para>make sure we send the <constant>User-Agent</constant> even if <filename class='headerfile'>urllib2</filename> isn't available</para></listitem>
+<listitem><para>Match any variation of <constant>
backend.userland.com/rss</constant> namespace</para></listitem>
+</itemizedlist>
+
+<bridgehead id="changes.22" renderas="sect3">Changes in version 2.2</bridgehead>
+<para>&ultraliberalrssparser; 2.2 was released on January 27, 2003.</para>
+<itemizedlist>
+<listitem><para>added attribute support and <sgmltag class='attribute'>admin:generatorAgent</sgmltag>. <methodname>start_admingeneratoragent</methodname> is an example of how to handle elements with only attributes, no content.</para></listitem>
+</itemizedlist>
+
+<bridgehead id="changes.21" renderas="sect3">Changes in version 2.1</bridgehead>
+<para>&ultraliberalrssparser; 2.1 was released on November 14, 2002.</para>
+<itemizedlist>
+<listitem><para>added gzip support</para></listitem>
+</itemizedlist>
+
+<bridgehead id="changes.202" renderas="sect3">Changes in version 2.0.2</bridgehead>
+<para>&ultraliberalrssparser; 2.0.2 was released on October 21, 2002.</para>
+<itemizedlist>
+<listitem><para>added the <varname>inchannel</varname> to the <literal>if</literal> statement, otherwise it's useless. Fixes the problem JD was addressing by adding it. (JB)</para></listitem>
+</itemizedlist>
+
+<bridgehead id="changes.201" renderas="sect3">Changes in version 2.0.1</bridgehead>
+<para>&ultraliberalrssparser; 2.0.1 was released on October 21, 2002.</para>
+<itemizedlist>
+<listitem><para>changed <function>parse()</function> so that if we don't get anything because of <varname>etag</varname>/<varname>modified</varname>, return the old <varname>etag</varname>/<varname>modified</varname> to the caller to indicate why nothing is being returned</para></listitem>
+</itemizedlist>
+
+<bridgehead id="changes.20" renderas="sect3">Changes in version 2.0</bridgehead>
+<para>&ultraliberalrssparser; 2.0 was released on October 19, 2002.</para>
+<itemizedlist>
+<listitem><para>use <varname>inchannel</varname> to watch out for <sgmltag>image</sgmltag> and <sgmltag>textinput</sgmltag> elements which can also contain <sgmltag>title</sgmltag>, <sgmltag>link</sgmltag>, and <sgmltag>description</sgmltag> elements (JD)</para></listitem>
+<listitem><para>check for <sgmltag class='attribute'>isPermaLink='false'</sgmltag> attribute on <sgmltag>guid</sgmltag> elements (JD)</para></listitem>
+<listitem><para>replaced <function>openAnything</function> with <function>open_resource</function> supporting <constant>ETag</constant> and <constant>If-Modified-Since</constant> request headers (JD)</para></listitem>
+<listitem><para><function>parse</function> now accepts <varname>etag</varname>, <varname>modified</varname>, <varname>agent</varname>, and <varname>referrer</varname> optional arguments (JD)</para></listitem>
+<listitem><para>modified <function>parse</function> to return a dictionary instead of a tuple so that any <varname>etag</varname> or <varname>modified</varname> information can be returned and cached by the caller</para></listitem>
+</itemizedlist>
+
+<bridgehead id="changes.11" renderas="sect3">Changes in version 1.1</bridgehead>
+<para>&ultraliberalrssparser; 1.1 was released on September 27, 2002.</para>
+<itemizedlist>
+<listitem><para>fixed infinite loop on incomplete CDATA sections</para></listitem>
+</itemizedlist>
+
+<bridgehead id="changes.10" renderas="sect3">Changes in version 1.0</bridgehead>
+<para>&ultraliberalrssparser; 1.0 was released on September 27, 2002.</para>
+<itemizedlist>
+<listitem><para>fixed namespace processing on prefixed &rss; 2.0 elements</para></listitem>
+<listitem><para>added Simon Fell's namespace test suite</para></listitem>
+</itemizedlist>
+
+<bridgehead id="changes.first" renderas="sect3">Initial release</bridgehead>
+<para>&ultraliberalrssparser; (unversioned) was released on August 13, 2002.</para>
+<para><ulink url="
http://diveintomark.org/archives/2002/08/13/ultraliberal_rss_parser">Announcement</ulink>:</para>
+<blockquote>
+<para>Aaron Swartz has been looking for an ultra-liberal &rss; parser. Now that I'm experimenting with a homegrown &rss;-to-email news aggregator, so am I. You see, most &rss; feeds suck. Invalid characters, unescaped ampersands (Blogger feeds), invalid entities (Radio feeds), unescaped and invalid HTML (The Register's feed most days). Or just a bastardized mix of &rss; 0.9x elements with &rss; 1.0 elements (Movable Type feeds).</para>
+<para>Then there are feeds, like Aaron's feed, which are too bleeding edge. He puts an excerpt in the description element but puts the full text in the <sgmltag>content:encoded</sgmltag> element (as CDATA). This is valid &rss; 1.0, but nobody actually uses it (except Aaron), few news aggregators support it, and many parsers choke on it. Other parsers are confused by the new elements (<sgmltag>guid</sgmltag>) in &rss; 0.94 (see Dave Winer's feed for an example). And then there's Jon Udell's feed, with the <sgmltag>fullitem</sgmltag> element that he just sort of made up.</para>
+<para><filename>rssparser.py</filename>. GPL-licensed. Tested on 5000 active feeds.</para>
+</blockquote>
</section>
</chapter>
Modified: trunk/feedparser/feedparser.py
==============================================================================
--- trunk/feedparser/feedparser.py (original)
+++ trunk/feedparser/feedparser.py Wed Mar 12 13:27:00 2008
@@ -3604,84 +3604,3 @@
for url in urls:
results = parse(url, etag=options.etag, modified=options.modified, agent=options.agent, referrer=options.referrer)
serializer(results).write(sys.stdout)
-
-#REVISION HISTORY
-#1.0 - 9/27/2002 - MAP - fixed namespace processing on prefixed RSS 2.0 elements,
-# added Simon Fell's test suite
-#1.1 - 9/29/2002 - MAP - fixed infinite loop on incomplete CDATA sections
-#2.0 - 10/19/2002
-# JD - use inchannel to watch out for image and textinput elements which can
-# also contain title, link, and description elements
-# JD - check for isPermaLink='false' attribute on guid elements
-# JD - replaced openAnything with open_resource supporting ETag and
-# If-Modified-Since request headers
-# JD - parse now accepts etag, modified, agent, and referrer optional
-# arguments
-# JD - modified parse to return a dictionary instead of a tuple so that any
-# etag or modified information can be returned and cached by the caller
-#2.0.1 - 10/21/2002 - MAP - changed parse() so that if we don't get anything
-# because of etag/modified, return the old etag/modified to the caller to
-# indicate why nothing is being returned
-#2.0.2 - 10/21/2002 - JB - added the inchannel to the if statement, otherwise its
-# useless. Fixes the problem JD was addressing by adding it.
-#2.1 - 11/14/2002 - MAP - added gzip support
-#2.2 - 1/27/2003 - MAP - added attribute support, admin:generatorAgent.
-# start_admingeneratoragent is an example of how to handle elements with
-# only attributes, no content.
-#2.3 - 6/11/2003 - MAP - added USER_AGENT for default (if caller doesn't specify);
-# also, make sure we send the User-Agent even if urllib2 isn't available.
-# Match any variation of
backend.userland.com/rss namespace.
-#2.3.1 - 6/12/2003 - MAP - if item has both link and guid, return both as-is.
-#2.4 - 7/9/2003 - MAP - added preliminary Pie/Atom/Echo support based on Sam Ruby's
-# snapshot of July 1 <
http://www.intertwingly.net/blog/1506.html>; changed
-# project name
-#2.5 - 7/25/2003 - MAP - changed to Python license (all contributors agree);
-# removed unnecessary urllib code -- urllib2 should always be available anyway;
-# return actual url, status, and full HTTP headers (as result['url'],
-# result['status'], and result['headers']) if parsing a remote feed over HTTP --
-# this should pass all the HTTP tests at <
http://diveintomark.org/tests/client/http/>;
-# added the latest namespace-of-the-week for RSS 2.0
-#2.5.1 - 7/26/2003 - RMK - clear opener.addheaders so we only send our custom
-# User-Agent (otherwise urllib2 sends two, which confuses some servers)
-#2.5.2 - 7/28/2003 - MAP - entity-decode inline xml properly; added support for
-# inline <xhtml:body> and <xhtml:div> as used in some RSS 2.0 feeds
-#2.5.3 - 8/6/2003 - TvdV - patch to track whether we're inside an image or
-# textInput, and also to return the character encoding (if specified)
-#2.6 - 1/1/2004 - MAP - dc:author support (MarekK); fixed bug tracking
-# nested divs within content (JohnD); fixed missing sys import (JohanS);
-# fixed regular expression to capture XML character encoding (Andrei);
-# added support for Atom 0.3-style links; fixed bug with textInput tracking;
-# added support for cloud (MartijnP); added support for multiple
-# category/dc:subject (MartijnP); normalize content model: 'description' gets
-# description (which can come from description, summary, or full content if no
-# description), 'content' gets dict of base/language/type/value (which can come
-# from content:encoded, xhtml:body, content, or fullitem);
-# fixed bug matching arbitrary Userland namespaces; added xml:base and xml:lang
-# tracking; fixed bug tracking unknown tags; fixed bug tracking content when
-# <content> element is not in default namespace (like Pocketsoap feed);
-# resolve relative URLs in link, guid, docs, url, comments, wfw:comment,
-# wfw:commentRSS; resolve relative URLs within embedded HTML markup in
-# description, xhtml:body, content, content:encoded, title, subtitle,
-# summary, info, tagline, and copyright; added support for pingback and
-# trackback namespaces
-#2.7 - 1/5/2004 - MAP - really added support for trackback and pingback
-# namespaces, as opposed to 2.6 when I said I did but didn't really;
-# sanitize HTML markup within some elements; added mxTidy support (if
-# installed) to tidy HTML markup within some elements; fixed indentation
-# bug in _parse_date (FazalM); use socket.setdefaulttimeout if available
-# (FazalM); universal date parsing and normalization (FazalM): 'created', modified',
-# 'issued' are parsed into 9-tuple date format and stored in 'created_parsed',
-# 'modified_parsed', and 'issued_parsed'; 'date' is duplicated in 'modified'
-# and vice-versa; 'date_parsed' is duplicated in 'modified_parsed' and vice-versa
-#2.7.1 - 1/9/2004 - MAP - fixed bug handling " and '. fixed memory
-# leak not closing url opener (JohnD); added dc:publisher support (MarekK);
-# added admin:errorReportsTo support (MarekK); Python 2.1 dict support (MarekK)
-#2.7.4 - 1/14/2004 - MAP - added workaround for improperly formed <br/> tags in
-# encoded HTML (skadz); fixed unicode handling in normalize_attrs (ChrisL);
-# fixed relative URI processing for guid (skadz); added ICBM support; added
-# base64 support
-#2.7.5 - 1/15/2004 - MAP - added workaround for malformed DOCTYPE (seen on many
-#
blogspot.com sites); added _debug variable
-#2.7.6 - 1/16/2004 - MAP - fixed bug with StringIO importing
-#
-#rest of revision history is in HTML docs now
Modified: trunk/www/docs/annotated-atom03.html
==============================================================================
--- trunk/www/docs/annotated-atom03.html (original)
+++ trunk/www/docs/annotated-atom03.html Wed Mar 12 13:27:00 2008
@@ -27,7 +27,7 @@
</div>
<div></div>
</div>
-<a name="id299525"></a><table class="caution" border="0" summary="">
+<a name="id299534"></a><table class="caution" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/caution.png" alt="Caution" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">Even though many of these elements are required according to the specification, real-world feeds may be missing any element. If an element is not present in the feed, it will not be present in the parsed results. You should not rely on any particular element being present.</td></tr>
</table>
Modified: trunk/www/docs/annotated-atom10.html
==============================================================================
--- trunk/www/docs/annotated-atom10.html (original)
+++ trunk/www/docs/annotated-atom10.html Wed Mar 12 13:27:00 2008
@@ -27,7 +27,7 @@
</div>
<div></div>
</div>
-<a name="id299073"></a><table class="caution" border="0" summary="">
+<a name="id299082"></a><table class="caution" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/caution.png" alt="Caution" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">Even though many of these elements are required according to the specification, real-world feeds may be missing any element. If an element is not present in the feed, it will not be present in the parsed results. You should not rely on any particular element being present.</td></tr>
</table>
Modified: trunk/www/docs/annotated-rss10.html
==============================================================================
--- trunk/www/docs/annotated-rss10.html (original)
+++ trunk/www/docs/annotated-rss10.html Wed Mar 12 13:27:00 2008
@@ -27,7 +27,7 @@
</div>
<div></div>
</div>
-<a name="id300544"></a><table class="caution" border="0" summary="">
+<a name="id300552"></a><table class="caution" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/caution.png" alt="Caution" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">Even though many of these elements are required according to the specification, real-world feeds may be missing any element. If an element is not present in the feed, it will not be present in the parsed results. You should not rely on any particular element being present.</td></tr>
</table>
Modified: trunk/www/docs/annotated-rss20-dc.html
==============================================================================
--- trunk/www/docs/annotated-rss20-dc.html (original)
+++ trunk/www/docs/annotated-rss20-dc.html Wed Mar 12 13:27:00 2008
@@ -27,7 +27,7 @@
</div>
<div></div>
</div>
-<a name="id300325"></a><table class="caution" border="0" summary="">
+<a name="id300334"></a><table class="caution" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/caution.png" alt="Caution" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">Even though many of these elements are required according to the specification, real-world feeds may be missing any element. If an element is not present in the feed, it will not be present in the parsed results. You should not rely on any particular element being present.</td></tr>
</table>
Modified: trunk/www/docs/annotated-rss20.html
==============================================================================
--- trunk/www/docs/annotated-rss20.html (original)
+++ trunk/www/docs/annotated-rss20.html Wed Mar 12 13:27:00 2008
@@ -27,7 +27,7 @@
</div>
<div></div>
</div>
-<a name="id299956"></a><table class="caution" border="0" summary="">
+<a name="id299965"></a><table class="caution" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/caution.png" alt="Caution" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">Even though many of these elements are required according to the specification, real-world feeds may be missing any element. If an element is not present in the feed, it will not be present in the parsed results. You should not rely on any particular element being present.</td></tr>
</table>
Added: trunk/www/docs/changes-26.html
==============================================================================
--- (empty file)
+++ trunk/www/docs/changes-26.html Wed Mar 12 13:27:00 2008
@@ -0,0 +1,55 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "
http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Changes in version 2.6 [Universal Feed Parser]</title>
+<link rel="stylesheet" href="../css/feedparser.css" type="text/css">
+<link rev="made" href="mailto:
ma...@diveintomark.org">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<meta name="keywords" content="RSS, Atom, CDF, XML, feed, parser, Python">
+<link rel="start" href="index.html" title="Documentation">
+<link rel="up" href="history.html" title="Revision history">
+<link rel="prev" href="changes-27.html" title="Changes in version 2.7.x">
+<link rel="next" href="changes-early.html" title="Changes in earlier versions">
+</head>
+<body id="feedparser-org" class="docs">
+<!--#include virtual="/inc/header.html"--><div id="main"><div id="mainInner">
+<p id="breadcrumb">You are here: <a href="../">Home</a> → <a href="index.html">Documentation</a> → <a href="history.html">Revision history</a> → <span class="thispage">Changes in version 2.6</span></p>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h2 class="title">
+<a name="changes.26" class="skip" href="#changes.26" title="link to this section"><img src="images/permalink.gif" alt="[link]" title="link to this section" width="8" height="9"></a> Changes in version 2.6</h2></div></div>
+<div></div>
+</div>
+<div class="abstract"><p><span class="application">Ultra-liberal Feed Parser</span> 2.6 was released on January 1, 2004.</p></div>
+<div class="itemizedlist"><ul>
+<li>
+<tt class="sgmltag-element">dc:author</tt> support (MarekK)</li>
+<li>fixed bug tracking nested <tt class="sgmltag-element">div</tt>s within content (JohnD)</li>
+<li>fixed missing <tt class="filename">sys</tt> import (JohanS)</li>
+<li>fixed regular expression to capture <acronym title="Extensible Markup Language">XML</acronym> character encoding (Andrei)</li>
+<li>added support for Atom 0.3-style links</li>
+<li>fixed bug with <tt class="sgmltag-element">textInput</tt> tracking</li>
+<li>added support for <tt class="sgmltag-element">cloud</tt> (MartijnP)</li>
+<li>added support for multiple <tt class="sgmltag-element">category</tt>/<tt class="sgmltag-element">dc:subject</tt> (MartijnP)</li>
+<li>normalize content model: <tt class="varname">description</tt> gets description (which can come from <tt class="sgmltag-element"><description></tt>, <tt class="sgmltag-element"><summary></tt>, or full content if no <tt class="sgmltag-element"><description></tt>), <tt class="varname">content</tt> gets dict of <tt class="varname">base</tt>/<tt class="varname">language</tt>/<tt class="varname">type</tt>/<tt class="varname">value</tt> (which can come from <tt class="sgmltag-element"><content:encoded></tt>, <tt class="sgmltag-element"><xhtml:body</tt>, <tt class="sgmltag-element"><content</tt>, or <tt class="sgmltag-element"><fullitem></tt>)</li>
+<li>fixed bug matching arbitrary Userland namespaces</li>
+<li>added <tt class="sgmltag-element">xml:base</tt> and <tt class="sgmltag-element">xml:lang</tt> tracking</li>
+<li>fixed bug tracking unknown tags</li>
+<li>fixed bug tracking content when <tt class="sgmltag-element"><content></tt> element is not in default namespace (like Pocketsoap feed)</li>
+<li>resolve relative URLs in <tt class="sgmltag-element"><link></tt>, <tt class="sgmltag-element"><guid></tt>, <tt class="sgmltag-element"><docs></tt>, <tt class="sgmltag-element"><url></tt>, <tt class="sgmltag-element"><comments></tt>, <tt class="sgmltag-element"><wfw:comment></tt>, <tt class="sgmltag-element"><wfw:commentRSS></tt>
+</li>
+<li>resolve relative <acronym title="Uniform Resource Identifier">URI</acronym>s within embedded <acronym title="HyperText Markup Language">HTML</acronym> markup in <tt class="sgmltag-element"><description></tt>, <tt class="sgmltag-element"><xhtml:body></tt>, <tt class="sgmltag-element"><content></tt>, <tt class="sgmltag-element"><content:encoded></tt>, <tt class="sgmltag-element"><title></tt>, <tt class="sgmltag-element"><subtitle></tt>, <tt class="sgmltag-element"><summary></tt>, <tt class="sgmltag-element"><info></tt>, <tt class="sgmltag-element"><tagline></tt>, and <tt class="sgmltag-element"><copyright></tt>
+</li>
+<li>added support for pingback and trackback namespaces</li>
+</ul></div>
+</div>
+<div style="float: left">← <a class="NavigationArrow" href="changes-27.html">Changes in version 2.7.x</a>
+</div>
+<div style="text-align: right">
+<a class="NavigationArrow" href="changes-early.html">Changes in earlier versions</a> →</div>
+<hr style="clear:both">
+<div class="footer"><p class="copyright">Copyright (c) 2004, 2005, 2006, 2007, 2008 Mark Pilgrim</p></div>
+</div></div>
+</body>
+</html>
Added: trunk/www/docs/changes-27.html
==============================================================================
--- (empty file)
+++ trunk/www/docs/changes-27.html Wed Mar 12 13:27:00 2008
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "
http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Changes in version 2.7.x [Universal Feed Parser]</title>
+<link rel="stylesheet" href="../css/feedparser.css" type="text/css">
+<link rev="made" href="mailto:
ma...@diveintomark.org">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<meta name="keywords" content="RSS, Atom, CDF, XML, feed, parser, Python">
+<link rel="start" href="index.html" title="Documentation">
+<link rel="up" href="history.html" title="Revision history">
+<link rel="prev" href="changes-30.html" title="Changes in version 3.0 and the 26 betas that preceded it">
+<link rel="next" href="changes-26.html" title="Changes in version 2.6">
+</head>
+<body id="feedparser-org" class="docs">
+<!--#include virtual="/inc/header.html"--><div id="main"><div id="mainInner">
+<p id="breadcrumb">You are here: <a href="../">Home</a> → <a href="index.html">Documentation</a> → <a href="history.html">Revision history</a> → <span class="thispage">Changes in version 2.7.x</span></p>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h2 class="title">
+<a name="changes.27x" class="skip" href="#changes.27x" title="link to this section"><img src="images/permalink.gif" alt="[link]" title="link to this section" width="8" height="9"></a> Changes in version 2.7.x</h2></div></div>
+<div></div>
+</div>
+<div class="abstract"><p>The 2.7 series was a brief but necessary transition towards some of the core ideas in version 3.0.</p></div>
+<h3>
+<a name="changes.276" class="skip" href="#changes.276" title="link to this bridgehead"><img src="images/permalink.gif" alt="[link]" title="link to this bridgehead" width="8" height="9"></a> Changes in version 2.7.6</h3>
+<p><span class="application">Ultra-liberal Feed Parser</span> 2.7.6 was released on January 16, 2004.</p>
+<div class="itemizedlist"><ul><li>fixed bug with <tt class="filename">StringIO</tt> importing</li></ul></div>
+<h3>
+<a name="changes.275" class="skip" href="#changes.275" title="link to this bridgehead"><img src="images/permalink.gif" alt="[link]" title="link to this bridgehead" width="8" height="9"></a> Changes in version 2.7.5</h3>
+<p><span class="application">Ultra-liberal Feed Parser</span> 2.7.5 was released on January 15, 2004.</p>
+<div class="itemizedlist"><ul>
+<li>added workaround for malformed DOCTYPE (seen on many <tt class="systemitem">
blogspot.com</tt> sites)</li>
+<li>added <tt class="varname">_debug</tt> variable</li>
+</ul></div>
+<h3>
+<a name="changes.274" class="skip" href="#changes.274" title="link to this bridgehead"><img src="images/permalink.gif" alt="[link]" title="link to this bridgehead" width="8" height="9"></a> Changes in version 2.7.4</h3>
+<p><span class="application">Ultra-liberal Feed Parser</span> 2.7.4 was released on January 14, 2004.</p>
+<div class="itemizedlist"><ul>
+<li>added workaround for improperly formed <tt class="sgmltag-element"><br/></tt> tags in encoded <acronym title="HyperText Markup Language">HTML</acronym> (skadz)</li>
+<li>fixed unicode handling in <tt class="methodname">normalize_attrs</tt> (ChrisL)</li>
+<li>fixed relative <acronym title="Uniform Resource Identifier">URI</acronym> processing for <tt class="sgmltag-element">guid</tt> (skadz)</li>
+<li>added ICBM support</li>
+<li>added <tt class="filename">base64</tt> support</li>
+</ul></div>
+<h3>
+<a name="changes.273" class="skip" href="#changes.273" title="link to this bridgehead"><img src="images/permalink.gif" alt="[link]" title="link to this bridgehead" width="8" height="9"></a> Changes in version 2.7.3</h3>
+<p><span class="application">Ultra-liberal Feed Parser</span> 2.7.3 was released on January 14, 2004.</p>
+<div class="itemizedlist"><ul><li>reverted all changes made in 2.7.2</li></ul></div>
+<h3>
+<a name="changes.272" class="skip" href="#changes.272" title="link to this bridgehead"><img src="images/permalink.gif" alt="[link]" title="link to this bridgehead" width="8" height="9"></a> Changes in version 2.7.2</h3>
+<p><span class="application">Ultra-liberal Feed Parser</span> 2.7.2 was released on January 13, 2004.</p>
+<div class="itemizedlist"><ul><li>"Version 2.7.2 of my feed parser, released today, will by default refuse to parse <a href="
http://intertwingly.net/stories/2004/01/12/broken.rss">this feed</a>. It does a first-pass check for wellformedness, and when that fails it sets the 'bozo' bit in the result to <tt class="constant">1</tt> and immediately terminates. You can revert to the previous behavior by passing <tt class="varname">disableWellFormedCheck=1</tt>, but it will print arrogant warning messages to stderr to the effect that anyone who can't create a well-formed <acronym title="Extensible Markup Language">XML</acronym> feed is a bozo and an incompetent fool." <a href="
http://intertwingly.net/blog/2004/01/12/Scientific-Method#c1074047818">source</a>
+</li></ul></div>
+<h3>
+<a name="changes.271" class="skip" href="#changes.271" title="link to this bridgehead"><img src="images/permalink.gif" alt="[link]" title="link to this bridgehead" width="8" height="9"></a> Changes in version 2.7.1</h3>
+<p><span class="application">Ultra-liberal Feed Parser</span> 2.7.1 was released on January 9, 2004.</p>
+<div class="itemizedlist"><ul>
+<li>fixed bug handling <tt class="literal">&quot;</tt> and <tt class="literal">&apos;</tt>
+</li>
+<li>fixed memory leak not closing url opener (JohnD)</li>
+<li>added <tt class="sgmltag-element">dc:publisher</tt> support (MarekK)</li>
+<li>added <tt class="sgmltag-element">admin:errorReportsTo</tt> support (MarekK)</li>
+<li>
+<span class="application">Python</span> 2.1 <tt class="function">dict</tt> support (MarekK)</li>
+</ul></div>
+<h3>
+<a name="changes.27" class="skip" href="#changes.27" title="link to this bridgehead"><img src="images/permalink.gif" alt="[link]" title="link to this bridgehead" width="8" height="9"></a> Changes in version 2.7</h3>
+<p><span class="application">Ultra-liberal Feed Parser</span> 2.7 was released on January 5, 2004.</p>
+<div class="itemizedlist"><ul>
+<li>really added support for trackback and pingback namespaces, as opposed to 2.6 when I said I did but didn't really</li>
+<li>sanitize <acronym title="HyperText Markup Language">HTML</acronym> markup within some elements</li>
+<li>added <tt class="filename">mxTidy</tt> support (if installed) to tidy <acronym title="HyperText Markup Language">HTML</acronym> markup within some elements</li>
+<li>fixed indentation bug in <tt class="function">_parse_date</tt> (FazalM)</li>
+<li>use <tt class="function">socket.setdefaulttimeout</tt> if available (FazalM)</li>
+<li>universal date parsing and normalization (FazalM): <tt class="varname">created</tt>, <tt class="varname">modified</tt>, <tt class="varname">issued</tt> are parsed into 9-tuple date format and stored in <tt class="varname">created_parsed</tt>, <tt class="varname">modified_parsed</tt>, and <tt class="varname">issued_parsed</tt>
+</li>
+<li>
+<tt class="varname">date</tt> is duplicated in <tt class="varname">modified</tt> and vice-versa</li>
+<li>
+<tt class="varname">date_parsed</tt> is duplicated in <tt class="varname">modified_parsed</tt> and vice-versa</li>
+</ul></div>
+</div>
+<div style="float: left">← <a class="NavigationArrow" href="changes-30.html">Changes in version 3.0 and the 26 betas that preceded it</a>
+</div>
+<div style="text-align: right">
+<a class="NavigationArrow" href="changes-26.html">Changes in version 2.6</a> →</div>
+<hr style="clear:both">
+<div class="footer"><p class="copyright">Copyright (c) 2004, 2005, 2006, 2007, 2008 Mark Pilgrim</p></div>
+</div></div>
+</body>
+</html>
Modified: trunk/www/docs/changes-30.html
==============================================================================
--- trunk/www/docs/changes-30.html (original)
+++ trunk/www/docs/changes-30.html Wed Mar 12 13:27:00 2008
@@ -10,7 +10,7 @@
<link rel="start" href="index.html" title="Documentation">
<link rel="up" href="history.html" title="Revision history">
<link rel="prev" href="changes-301.html" title="Changes in version 3.0.1">
-<link rel="next" href="reference.html" title="Reference">
+<link rel="next" href="changes-27.html" title="Changes in version 2.7.x">
</head>
<body id="feedparser-org" class="docs">
<!--#include virtual="/inc/header.html"--><div id="main"><div id="mainInner">
@@ -236,7 +236,7 @@
<div style="float: left">← <a class="NavigationArrow" href="changes-301.html">Changes in version 3.0.1</a>
</div>
<div style="text-align: right">
-<a class="NavigationArrow" href="reference.html">Reference</a> →</div>
+<a class="NavigationArrow" href="changes-27.html">Changes in version 2.7.x</a> →</div>
<hr style="clear:both">
<div class="footer"><p class="copyright">Copyright (c) 2004, 2005, 2006, 2007, 2008 Mark Pilgrim</p></div>
</div></div>
Modified: trunk/www/docs/changes-42.html
==============================================================================
--- trunk/www/docs/changes-42.html (original)
+++ trunk/www/docs/changes-42.html Wed Mar 12 13:27:00 2008
@@ -23,13 +23,11 @@
</div>
<div class="abstract"><p><span class="application">Universal Feed Parser</span> 4.2 was released on 2006-01-10.</p></div>
<div class="itemizedlist"><ul>
-<li>
-<a href="microformats.html" title="Microformats">Microformats</a>.</li>
+<li>Support for <a href="microformats.html" title="Microformats">parsing microformats</a>, including <a href="microformats.html#advanced.microformats.relenclosure" title="rel=enclosure">rel=enclosure</a>, <a href="microformats.html#advanced.microformats.reltag" title="rel=tag">rel=tag</a>, <a href="microformats.html#advanced.microformats.xfn" title="XFN"><acronym title="XHTML Friends Network">XFN</acronym></a>, and <a href="microformats.html#advanced.microformats.hcard" title="hCard">hCard</a>.</li>
<li>Updated the whitelist of <a href="html-sanitization.html#advanced.sanitization.html" title="HTML Sanitization">acceptable HTML elements and attributes</a> based on the latest draft of the <acronym title="HyperText Markup Language">HTML</acronym> 5 specification.</li>
-<li>
-<a href="html-sanitization.html#advanced.sanitization.css" title="CSS Sanitization">CSS Sanitization</a>. (Previous versions of <span class="application">Universal Feed Parser</span> simply stripped all inline styles.) Many thanks to Sam Ruby for implementing this, despite my insistence that it was impossible.</li>
-<li>
-<a href="html-sanitization.html#advanced.sanitization.svg" title="SVG Sanitization">SVG Sanitization</a> and <a href="html-sanitization.html#advanced.sanitization.mathml" title="MathML Sanitization">MathML Sanitization</a>. Many thanks to Jacques Distler for patiently debugging these features.</li>
+<li>Support for <a href="html-sanitization.html#advanced.sanitization.css" title="CSS Sanitization">CSS Sanitization</a>. (Previous versions of <span class="application">Universal Feed Parser</span> simply stripped all inline styles.) Many thanks to Sam Ruby for implementing this, despite my insistence that it was impossible.</li>
+<li>Support for <a href="html-sanitization.html#advanced.sanitization.svg" title="SVG Sanitization">SVG Sanitization</a>.</li>
+<li>Support for <a href="html-sanitization.html#advanced.sanitization.mathml" title="MathML Sanitization">MathML Sanitization</a>. Many thanks to Jacques Distler for patiently debugging this feature.</li>
<li>
<acronym title="International Resource Identifier">IRI</acronym> support for every element that can contain a <acronym title="Uniform Resource Identifier">URI</acronym>.</li>
<li>Ability to <a href="resolving-relative-links.html#advanced.base.disable" title="Disabling Relative URIs Resolution">disable relative <acronym title="Uniform Resource Identifier">URI</acronym> resolution</a>.</li>
Added: trunk/www/docs/changes-early.html
==============================================================================
--- (empty file)
+++ trunk/www/docs/changes-early.html Wed Mar 12 13:27:00 2008
@@ -0,0 +1,128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "
http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Changes in earlier versions [Universal Feed Parser]</title>
+<link rel="stylesheet" href="../css/feedparser.css" type="text/css">
+<link rev="made" href="mailto:
ma...@diveintomark.org">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<meta name="keywords" content="RSS, Atom, CDF, XML, feed, parser, Python">
+<link rel="start" href="index.html" title="Documentation">
+<link rel="up" href="history.html" title="Revision history">
+<link rel="prev" href="changes-26.html" title="Changes in version 2.6">
+<link rel="next" href="reference.html" title="Reference">
+</head>
+<body id="feedparser-org" class="docs">
+<!--#include virtual="/inc/header.html"--><div id="main"><div id="mainInner">
+<p id="breadcrumb">You are here: <a href="../">Home</a> → <a href="index.html">Documentation</a> → <a href="history.html">Revision history</a> → <span class="thispage">Changes in earlier versions</span></p>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h2 class="title">
+<a name="changes.early" class="skip" href="#changes.early" title="link to this section"><img src="images/permalink.gif" alt="[link]" title="link to this section" width="8" height="9"></a> Changes in earlier versions</h2></div></div>
+<div></div>
+</div>
+<div class="abstract"><p><span class="application">Universal Feed Parser</span> began as an "ultra-liberal RSS parser" named <tt class="filename">rssparser.py</tt>. It was written as a weapon for battles that no one remembers, to work around problems that no longer exist.</p></div>
+<h3>
+<a name="changes.253" class="skip" href="#changes.253" title="link to this bridgehead"><img src="images/permalink.gif" alt="[link]" title="link to this bridgehead" width="8" height="9"></a> Changes in version 2.5.3</h3>
+<p><span class="application">Ultra-liberal Feed Parser</span> 2.5.3 was released on August 3, 2003.</p>
+<div class="itemizedlist"><ul>
+<li>track whether we're inside an <tt class="sgmltag-element">image</tt> or <tt class="sgmltag-element">textInput</tt> (TvdV)</li>
+<li>return the character encoding, if specified</li>
+</ul></div>
+<h3>
+<a name="changes.252" class="skip" href="#changes.252" title="link to this bridgehead"><img src="images/permalink.gif" alt="[link]" title="link to this bridgehead" width="8" height="9"></a> Changes in version 2.5.2</h3>
+<p><span class="application">Ultra-liberal Feed Parser</span> 2.5.2 was released on July 28, 2003.</p>
+<div class="itemizedlist"><ul>
+<li>entity-decode inline <acronym title="Extensible Markup Language">XML</acronym> properly</li>
+<li>added support for inline <tt class="sgmltag-element"><xhtml:body></tt> and <tt class="sgmltag-element"><xhtml:div></tt> as used in some <acronym title="Rich Site Summary">RSS</acronym> 2.0 feeds</li>
+</ul></div>
+<h3>
+<a name="changes.251" class="skip" href="#changes.251" title="link to this bridgehead"><img src="images/permalink.gif" alt="[link]" title="link to this bridgehead" width="8" height="9"></a> Changes in version 2.5.1</h3>
+<p><span class="application">Ultra-liberal Feed Parser</span> 2.5.1 was released on July 26, 2003.</p>
+<div class="itemizedlist"><ul><li>clear <tt class="varname">opener.addheaders</tt> so we only send our custom <tt class="constant">User-Agent</tt> (otherwise <tt class="filename">urllib2</tt> sends two, which confuses some servers) (RMK)</li></ul></div>
+<h3>
+<a name="changes.25" class="skip" href="#changes.25" title="link to this bridgehead"><img src="images/permalink.gif" alt="[link]" title="link to this bridgehead" width="8" height="9"></a> Changes in version 2.5</h3>
+<p><span class="application">Ultra-liberal Feed Parser</span> 2.5 was released on July 25, 2003.</p>
+<div class="itemizedlist"><ul>
+<li>changed to <span class="application">Python</span> license (all contributors agree)</li>
+<li>removed unnecessary <tt class="filename">>urllib</tt> code -- <tt class="filename">urllib2</tt> should always be available anyway</li>
+<li>return actual <tt class="varname">url</tt>, <tt class="varname">status</tt>, and full <acronym title="Hypertext Transfer Protocol">HTTP</acronym> headers (as <tt class="varname">result['url']</tt>, <tt class="varname">result['status']</tt>, and <tt class="varname">result['headers']</tt>) if parsing a remote feed over <acronym title="Hypertext Transfer Protocol">HTTP</acronym>. This should pass all the <a href="
http://diveintomark.org/tests/client/http/">Aggregator client <acronym title="Hypertext Transfer Protocol">HTTP</acronym> tests</a>.</li>
+<li>added the latest namespace-of-the-week for <acronym title="Rich Site Summary">RSS</acronym> 2.0</li>
+</ul></div>
+<h3>
+<a name="changes.24" class="skip" href="#changes.24" title="link to this bridgehead"><img src="images/permalink.gif" alt="[link]" title="link to this bridgehead" width="8" height="9"></a> Changes in version 2.4</h3>
+<p><span class="application">Ultra-liberal Feed Parser</span> 2.4 was released on July 9, 2003.</p>
+<div class="itemizedlist"><ul>
+<li>added preliminary Pie/Atom/Echo support based on <a href="
http://www.intertwingly.net/blog/1506.html">Sam Ruby's snapshot of July 1</a>
+</li>
+<li>changed project name</li>
+</ul></div>
+<h3>
+<a name="changes.231" class="skip" href="#changes.231" title="link to this bridgehead"><img src="images/permalink.gif" alt="[link]" title="link to this bridgehead" width="8" height="9"></a> Changes in version 2.3.1</h3>
+<p><span class="application">Ultra-liberal RSS Parser</span> 2.3.1 was released on June 12, 2003.</p>
+<div class="itemizedlist"><ul><li>if item has both <tt class="sgmltag-element">link</tt> and <tt class="sgmltag-element">guid</tt>, return both as-is</li></ul></div>
+<h3>
+<a name="changes.23" class="skip" href="#changes.23" title="link to this bridgehead"><img src="images/permalink.gif" alt="[link]" title="link to this bridgehead" width="8" height="9"></a> Changes in version 2.3</h3>
+<p><span class="application">Ultra-liberal RSS Parser</span> 2.3 was released on June 11, 2003.</p>
+<div class="itemizedlist"><ul>
+<li>added <tt class="constant">USER_AGENT</tt> for default (if caller doesn't specify)</li>
+<li>make sure we send the <tt class="constant">User-Agent</tt> even if <tt class="filename">urllib2</tt> isn't available</li>
+<li>Match any variation of <tt class="constant">
backend.userland.com/rss</tt> namespace</li>
+</ul></div>
+<h3>
+<a name="changes.22" class="skip" href="#changes.22" title="link to this bridgehead"><img src="images/permalink.gif" alt="[link]" title="link to this bridgehead" width="8" height="9"></a> Changes in version 2.2</h3>
+<p><span class="application">Ultra-liberal RSS Parser</span> 2.2 was released on January 27, 2003.</p>
+<div class="itemizedlist"><ul><li>added attribute support and <tt class="sgmltag-attribute">admin:generatorAgent</tt>. <tt class="methodname">start_admingeneratoragent</tt> is an example of how to handle elements with only attributes, no content.</li></ul></div>
+<h3>
+<a name="changes.21" class="skip" href="#changes.21" title="link to this bridgehead"><img src="images/permalink.gif" alt="[link]" title="link to this bridgehead" width="8" height="9"></a> Changes in version 2.1</h3>
+<p><span class="application">Ultra-liberal RSS Parser</span> 2.1 was released on November 14, 2002.</p>
+<div class="itemizedlist"><ul><li>added gzip support</li></ul></div>
+<h3>
+<a name="changes.202" class="skip" href="#changes.202" title="link to this bridgehead"><img src="images/permalink.gif" alt="[link]" title="link to this bridgehead" width="8" height="9"></a> Changes in version 2.0.2</h3>
+<p><span class="application">Ultra-liberal RSS Parser</span> 2.0.2 was released on October 21, 2002.</p>
+<div class="itemizedlist"><ul><li>added the <tt class="varname">inchannel</tt> to the <tt class="literal">if</tt> statement, otherwise it's useless. Fixes the problem JD was addressing by adding it. (JB)</li></ul></div>
+<h3>
+<a name="changes.201" class="skip" href="#changes.201" title="link to this bridgehead"><img src="images/permalink.gif" alt="[link]" title="link to this bridgehead" width="8" height="9"></a> Changes in version 2.0.1</h3>
+<p><span class="application">Ultra-liberal RSS Parser</span> 2.0.1 was released on October 21, 2002.</p>
+<div class="itemizedlist"><ul><li>changed <tt class="function">parse()</tt> so that if we don't get anything because of <tt class="varname">etag</tt>/<tt class="varname">modified</tt>, return the old <tt class="varname">etag</tt>/<tt class="varname">modified</tt> to the caller to indicate why nothing is being returned</li></ul></div>
+<h3>
+<a name="changes.20" class="skip" href="#changes.20" title="link to this bridgehead"><img src="images/permalink.gif" alt="[link]" title="link to this bridgehead" width="8" height="9"></a> Changes in version 2.0</h3>
+<p><span class="application">Ultra-liberal RSS Parser</span> 2.0 was released on October 19, 2002.</p>
+<div class="itemizedlist"><ul>
+<li>use <tt class="varname">inchannel</tt> to watch out for <tt class="sgmltag-element">image</tt> and <tt class="sgmltag-element">textinput</tt> elements which can also contain <tt class="sgmltag-element">title</tt>, <tt class="sgmltag-element">link</tt>, and <tt class="sgmltag-element">description</tt> elements (JD)</li>
+<li>check for <tt class="sgmltag-attribute">isPermaLink='false'</tt> attribute on <tt class="sgmltag-element">guid</tt> elements (JD)</li>
+<li>replaced <tt class="function">openAnything</tt> with <tt class="function">open_resource</tt> supporting <tt class="constant">ETag</tt> and <tt class="constant">If-Modified-Since</tt> request headers (JD)</li>
+<li>
+<tt class="function">parse</tt> now accepts <tt class="varname">etag</tt>, <tt class="varname">modified</tt>, <tt class="varname">agent</tt>, and <tt class="varname">referrer</tt> optional arguments (JD)</li>
+<li>modified <tt class="function">parse</tt> to return a dictionary instead of a tuple so that any <tt class="varname">etag</tt> or <tt class="varname">modified</tt> information can be returned and cached by the caller</li>
+</ul></div>
+<h3>
+<a name="changes.11" class="skip" href="#changes.11" title="link to this bridgehead"><img src="images/permalink.gif" alt="[link]" title="link to this bridgehead" width="8" height="9"></a> Changes in version 1.1</h3>
+<p><span class="application">Ultra-liberal RSS Parser</span> 1.1 was released on September 27, 2002.</p>
+<div class="itemizedlist"><ul><li>fixed infinite loop on incomplete CDATA sections</li></ul></div>
+<h3>
+<a name="changes.10" class="skip" href="#changes.10" title="link to this bridgehead"><img src="images/permalink.gif" alt="[link]" title="link to this bridgehead" width="8" height="9"></a> Changes in version 1.0</h3>
+<p><span class="application">Ultra-liberal RSS Parser</span> 1.0 was released on September 27, 2002.</p>
+<div class="itemizedlist"><ul>
+<li>fixed namespace processing on prefixed <acronym title="Rich Site Summary">RSS</acronym> 2.0 elements</li>
+<li>added Simon Fell's namespace test suite</li>
+</ul></div>
+<h3>
+<a name="changes.first" class="skip" href="#changes.first" title="link to this bridgehead"><img src="images/permalink.gif" alt="[link]" title="link to this bridgehead" width="8" height="9"></a> Initial release</h3>
+<p><span class="application">Ultra-liberal RSS Parser</span> (unversioned) was released on August 13, 2002.</p>
+<p><a href="
http://diveintomark.org/archives/2002/08/13/ultraliberal_rss_parser">Announcement</a>:</p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>Aaron Swartz has been looking for an ultra-liberal <acronym title="Rich Site Summary">RSS</acronym> parser. Now that I'm experimenting with a homegrown <acronym title="Rich Site Summary">RSS</acronym>-to-email news aggregator, so am I. You see, most <acronym title="Rich Site Summary">RSS</acronym> feeds suck. Invalid characters, unescaped ampersands (Blogger feeds), invalid entities (Radio feeds), unescaped and invalid HTML (The Register's feed most days). Or just a bastardized mix of <acronym title="Rich Site Summary">RSS</acronym> 0.9x elements with <acronym title="Rich Site Summary">RSS</acronym> 1.0 elements (Movable Type feeds).</p>
+<p>Then there are feeds, like Aaron's feed, which are too bleeding edge. He puts an excerpt in the description element but puts the full text in the <tt class="sgmltag-element">content:encoded</tt> element (as CDATA). This is valid <acronym title="Rich Site Summary">RSS</acronym> 1.0, but nobody actually uses it (except Aaron), few news aggregators support it, and many parsers choke on it. Other parsers are confused by the new elements (<tt class="sgmltag-element">guid</tt>) in <acronym title="Rich Site Summary">RSS</acronym> 0.94 (see Dave Winer's feed for an example). And then there's Jon Udell's feed, with the <tt class="sgmltag-element">fullitem</tt> element that he just sort of made up.</p>
+<p><tt class="filename">rssparser.py</tt>. GPL-licensed. Tested on 5000 active feeds.</p>
+</blockquote></div>
+</div>
+<div style="float: left">← <a class="NavigationArrow" href="changes-26.html">Changes in version 2.6</a>
+</div>
+<div style="text-align: right">
+<a class="NavigationArrow" href="reference.html">Reference</a> →</div>
+<hr style="clear:both">
+<div class="footer"><p class="copyright">Copyright (c) 2004, 2005, 2006, 2007, 2008 Mark Pilgrim</p></div>
+</div></div>
+</body>
+</html>
Modified: trunk/www/docs/character-encoding.html
==============================================================================
--- trunk/www/docs/character-encoding.html (original)
+++ trunk/www/docs/character-encoding.html Wed Mar 12 13:27:00 2008
@@ -21,7 +21,7 @@
<a name="advanced.encoding" class="skip" href="#advanced.encoding" title="link to this section"><img src="images/permalink.gif" alt="[link]" title="link to this section" width="8" height="9"></a> Character Encoding Detection</h2></div></div>
<div></div>
</div>
-<a name="id296592"></a><table class="tip" border="0" summary="">
+<a name="id296606"></a><table class="tip" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/tip.png" alt="Tip" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">Feeds may be published in any character encoding. <span class="application">Python</span> supports only a few character encodings by default. To support the maximum number of character encodings (and be able to parse the maximum number of feeds), you should install <tt class="filename">cjkcodecs</tt> and <tt class="filename">iconv_codec</tt>. Both are available at <a href="
http://cjkpython.i18n.org/">
http://cjkpython.i18n.org/</a>.</td></tr>
</table>
Modified: trunk/www/docs/common-atom-elements.html
==============================================================================
--- trunk/www/docs/common-atom-elements.html (original)
+++ trunk/www/docs/common-atom-elements.html Wed Mar 12 13:27:00 2008
@@ -116,7 +116,7 @@
'language': u'en-US',
'value': u'<div>Watch out for <span>nasty tricks</span></div>'}]</span></pre>
</div>
-<a name="id286196"></a><table class="note" border="0" summary="">
+<a name="id286211"></a><table class="note" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/note.png" alt="Note" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">The parsed <tt class="sgmltag-element">summary</tt> and <tt class="sgmltag-element">content</tt> are not the same as they appear in the original feed. The original elements contained dangerous <acronym title="HyperText Markup Language">HTML</acronym> markup which was sanitized. See <a href="html-sanitization.html" title="Sanitization">Sanitization</a> for details.</td></tr>
</table>
Modified: trunk/www/docs/common-rss-elements.html
==============================================================================
--- trunk/www/docs/common-rss-elements.html (original)
+++ trunk/www/docs/common-rss-elements.html Wed Mar 12 13:27:00 2008
@@ -77,7 +77,7 @@
<tt class="prompt">>>> </tt><span class="userinput">d.entries[0].id</span>
<span class="computeroutput">u'
http://example.org/guid/1'</span></pre>
</div>
-<a name="id285811"></a><table class="tip" border="0" summary="">
+<a name="id285826"></a><table class="tip" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/tip.png" alt="Tip" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">You can also access data from <acronym title="Rich Site Summary">RSS</acronym> feeds using Atom terminology. See <a href="content-normalization.html" title="Content Normalization">Content Normalization</a> for details.</td></tr>
</table>
Modified: trunk/www/docs/content-normalization.html
==============================================================================
--- trunk/www/docs/content-normalization.html (original)
+++ trunk/www/docs/content-normalization.html Wed Mar 12 13:27:00 2008
@@ -75,7 +75,7 @@
<tt class="prompt">>>> </tt><span class="userinput">e.updated_parsed</span>
<span class="computeroutput">(2002, 9, 5, 0, 0, 1, 3, 248, 0)</span></pre>
</div>
-<a name="id292480"></a><table class="note" border="0" summary="">
+<a name="id292494"></a><table class="note" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/note.png" alt="Note" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">For more examples of how <span class="application">Universal Feed Parser</span> normalizes content from different formats, see <a href="annotated-examples.html" title="Annotated Examples">Annotated Examples</a>.</td></tr>
</table>
Modified: trunk/www/docs/date-parsing.html
==============================================================================
--- trunk/www/docs/date-parsing.html (original)
+++ trunk/www/docs/date-parsing.html Wed Mar 12 13:27:00 2008
@@ -70,7 +70,7 @@
</div>
<p>Here is a representative list of the formats that <span class="application">Universal Feed Parser</span> can recognize in any date element:</p>
<div class="table">
-<a name="id287518" class="skip" href="#id287518" title="link to this table"><img src="images/permalink.gif" alt="[link]" title="link to this table" width="8" height="9"></a> <h3 class="title">Recognized Date Formats</h3>
+<a name="id287532" class="skip" href="#id287532" title="link to this table"><img src="images/permalink.gif" alt="[link]" title="link to this table" width="8" height="9"></a> <h3 class="title">Recognized Date Formats</h3>
<table summary="Recognized Date Formats" border="1">
<colgroup>
<col>
@@ -272,7 +272,7 @@
</div>
<p>Your newly-registered date handler will be tried before all the other date handlers built into <span class="application">Universal Feed Parser</span>. (More specifically, all date handlers are tried in "last in, first out" order; i.e. the last handler to be registered is the first one tried, and so on in reverse order of registration.)</p>
<p>If your date handler returns <tt class="constant">None</tt>, or anything other than a <span class="application">Python</span> 9-tuple date, or raises an exception of any kind, the error will be silently ignored and the other registered date handlers will be tried in order. If no date handlers succeed, then the date is not parsed, and the <tt class="sgmltag-element">*_parsed</tt> value will not be present in the results dictionary. The original date string will still be available in the appropriate element in the results dictionary.</p>
-<a name="id288224"></a><table class="tip" border="0" summary="">
+<a name="id288238"></a><table class="tip" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/tip.png" alt="Tip" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">If you write a new date handler, you are encouraged (but not required) to <a href="
http://sourceforge.net/projects/feedparser/">submit a patch</a> so it can be integrated into the next version of <span class="application">Universal Feed Parser</span>.</td></tr>
</table>
Modified: trunk/www/docs/history.html
==============================================================================
--- trunk/www/docs/history.html (original)
+++ trunk/www/docs/history.html Wed Mar 12 13:27:00 2008
@@ -32,6 +32,9 @@
<li><span class="section"><a href="changes-31.html">Changes in version 3.1</a></span></li>
<li><span class="section"><a href="changes-301.html">Changes in version 3.0.1</a></span></li>
<li><span class="section"><a href="changes-30.html">Changes in version 3.0 and the 26 betas that preceded it</a></span></li>
+<li><span class="section"><a href="changes-27.html">Changes in version 2.7.x</a></span></li>
+<li><span class="section"><a href="changes-26.html">Changes in version 2.6</a></span></li>
+<li><span class="section"><a href="changes-early.html">Changes in earlier versions</a></span></li>
</ul></div>
</div>
<div style="float: left">← <a class="NavigationArrow" href="annotated-rss10.html">RSS 1.0</a>
Modified: trunk/www/docs/html-sanitization.html
==============================================================================
--- trunk/www/docs/html-sanitization.html (original)
+++ trunk/www/docs/html-sanitization.html Wed Mar 12 13:27:00 2008
@@ -32,7 +32,7 @@
<li><a href="reference-entry-summary.html" title="entries[i].summary">entries[i].summary</a></li>
<li><a href="reference-entry-content.html" title="entries[i].content">entries[i].content</a></li>
</ul></div>
-<a name="id288340"></a><table class="note" border="0" summary="">
+<a name="id288354"></a><table class="note" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/note.png" alt="Note" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">The <a href="
http://feedparser.org/tests/wellformed/sanitize/">unit tests for <acronym title="HyperText Markup Language">HTML</acronym> sanitizing</a> show many different examples of dangerous markup that <span class="application">Universal Feed Parser</span> sanitizes by default.</td></tr>
</table>
@@ -84,7 +84,7 @@
<p>The following <acronym title="Cascading Style Sheets">CSS</acronym> properties are allowed by default in <tt class="sgmltag-attribute">style</tt> attributes (all others are stripped):
<span class="simplelist"><tt class="sgmltag-element">azimuth</tt>, <tt class="sgmltag-element">background-color</tt>, <tt class="sgmltag-element">border-bottom-color</tt>, <tt class="sgmltag-element">border-collapse</tt>, <tt class="sgmltag-element">border-color</tt>, <tt class="sgmltag-element">border-left-color</tt>, <tt class="sgmltag-element">border-right-color</tt>, <tt class="sgmltag-element">border-top-color</tt>, <tt class="sgmltag-element">clear</tt>, <tt class="sgmltag-element">color</tt>, <tt class="sgmltag-element">cursor</tt>, <tt class="sgmltag-element">direction</tt>, <tt class="sgmltag-element">display</tt>, <tt class="sgmltag-element">elevation</tt>, <tt class="sgmltag-element">float</tt>, <tt class="sgmltag-element">font</tt>, <tt class="sgmltag-element">font-family</tt>, <tt class="sgmltag-element">font-size</tt>, <tt class="sgmltag-element">font-style</tt>, <tt class="sgmltag-element">font-variant</tt>, <tt class="sgmltag-element">font-weight</tt>, <tt class="sgmltag-element">height</tt>, <tt class="sgmltag-element">letter-spacing</tt>, <tt class="sgmltag-element">line-height</tt>, <tt class="sgmltag-element">overflow</tt>, <tt class="sgmltag-element">pause</tt>, <tt class="sgmltag-element">pause-after</tt>, <tt class="sgmltag-element">pause-before</tt>, <tt class="sgmltag-element">pitch</tt>, <tt class="sgmltag-element">pitch-range</tt>, <tt class="sgmltag-element">richness</tt>, <tt class="sgmltag-element">speak</tt>, <tt class="sgmltag-element">speak-header</tt>, <tt class="sgmltag-element">speak-numeral</tt>, <tt class="sgmltag-element">speak-punctuation</tt>, <tt class="sgmltag-element">speech-rate</tt>, <tt class="sgmltag-element">stress</tt>, <tt class="sgmltag-element">text-align</tt>, <tt class="sgmltag-element">text-decoration</tt>, <tt class="sgmltag-element">text-indent</tt>, <tt class="sgmltag-element">unicode-bidi</tt>, <tt class="sgmltag-element">vertical-align</tt>, <tt class="sgmltag-element">voice-family</tt>, <tt class="sgmltag-element">volume</tt>, <tt class="sgmltag-element">white-space</tt>, <tt class="sgmltag-element">width</tt></span>
</p>
-<a name="id291793"></a><table class="note" border="0" summary="">
+<a name="id291807"></a><table class="note" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/note.png" alt="Note" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">Not all possible CSS values are allowed for these properties. The allowable values are restricted by a whitelist and a regular expression that allows color values and lengths. <acronym title="Uniform Resource Identifier">URI</acronym>s are not allowed, to prevent <a href="
http://diveintomark.org/archives/2003/06/12/how_to_consume_rss_safely">platypus attacks</a>. See the <tt class="classname">_HTMLSanitizer</tt> class for more details.</td></tr>
</table>
Modified: trunk/www/docs/http-etag.html
==============================================================================
--- trunk/www/docs/http-etag.html (original)
+++ trunk/www/docs/http-etag.html Wed Mar 12 13:27:00 2008
@@ -64,7 +64,7 @@
the server sent no data. This is a feature, not a bug!'</span></pre>
</div>
<p>Clients should support both ETag and Last-Modified headers, as some servers support one but not the other.</p>
-<a name="id297652"></a><table class="important" border="0" summary="">
+<a name="id297666"></a><table class="important" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/important.png" alt="Important" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">If you do not support ETag and Last-Modified headers, you will repeatedly download feeds that have not changed. This wastes your bandwidth and the publisher's bandwidth, and the publisher may ban you from accessing their server.</td></tr>
</table>
Modified: trunk/www/docs/index.html
==============================================================================
--- trunk/www/docs/index.html (original)
+++ trunk/www/docs/index.html Wed Mar 12 13:27:00 2008
@@ -124,6 +124,9 @@
<li><span class="section"><a href="changes-31.html">Changes in version 3.1</a></span></li>
<li><span class="section"><a href="changes-301.html">Changes in version 3.0.1</a></span></li>
<li><span class="section"><a href="changes-30.html">Changes in version 3.0 and the 26 betas that preceded it</a></span></li>
+<li><span class="section"><a href="changes-27.html">Changes in version 2.7.x</a></span></li>
+<li><span class="section"><a href="changes-26.html">Changes in version 2.6</a></span></li>
+<li><span class="section"><a href="changes-early.html">Changes in earlier versions</a></span></li>
</ul>
</li>
<li>
@@ -219,7 +222,7 @@
<li><span class="section"><a href="reference-feed-textinput.html#reference.feed.textinput.link">feed.textinput.link</a></span></li>
<li><span class="section"><a href="reference-feed-textinput.html#
reference.feed.textinput.name">
feed.textinput.name</a></span></li>
<li><span class="section"><a href="reference-feed-textinput.html#reference.feed.textinput.description">feed.textinput.description</a></span></li>
-<li><span class="section"><a href="reference-feed-textinput.html#id307408">Annotated example</a></span></li>
+<li><span class="section"><a href="reference-feed-textinput.html#id309016">Annotated example</a></span></li>
</ul>
</li>
<li>
Modified: trunk/www/docs/introduction.html
==============================================================================
--- trunk/www/docs/introduction.html (original)
+++ trunk/www/docs/introduction.html Wed Mar 12 13:27:00 2008
@@ -33,7 +33,7 @@
<span class="computeroutput">u'Sample Feed'</span></pre>
</div>
<p>The following example assumes you are on Windows, and that you have saved a feed at <tt class="filename">c:\incoming\atom10.xml</tt>.</p>
-<a name="id242426"></a><table class="note" border="0" summary="">
+<a name="id242383"></a><table class="note" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/note.png" alt="Note" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">
<span class="application">Universal Feed Parser</span> works on any platform that can run <span class="application">Python</span>; use the path syntax appropriate for your platform.</td></tr>
Modified: trunk/www/docs/microformats.html
==============================================================================
--- trunk/www/docs/microformats.html (original)
+++ trunk/www/docs/microformats.html Wed Mar 12 13:27:00 2008
@@ -27,7 +27,7 @@
</div>
<div></div>
</div>
-<a name="id292556"></a><table class="note" border="0" summary="">
+<a name="id292570"></a><table class="note" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/note.png" alt="Note" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">To parse microformats. <span class="application">Universal Feed Parser</span> relies on a third-party library called <a href="
http://www.crummy.com/software/BeautifulSoup/">Beautiful Soup</a>, which is distributed separately. If Beautiful Soup is not installed, <span class="application">Universal Feed Parser</span> will silently skip microformats parsing.</td></tr>
</table>
@@ -159,7 +159,7 @@
ORG:Netscape Communications Corp.
END:vCard</span></pre>
</div>
-<a name="id293410"></a><table class="note" border="0" summary="">
+<a name="id293424"></a><table class="note" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/note.png" alt="Note" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">There are a growing number of microformats, and <span class="application">Universal Feed Parser</span> does not parse all of them. However, both the <tt class="sgmltag-attribute">rel</tt> and <tt class="sgmltag-attribute">class</tt> attributes survive <a href="html-sanitization.html" title="Sanitization"><acronym title="HyperText Markup Language">HTML</acronym> sanitizing</a>, so applications built on <span class="application">Universal Feed Parser</span> that wish to parse additional microformat content are free to do so.</td></tr>
</table>
Modified: trunk/www/docs/namespace-handling.html
==============================================================================
--- trunk/www/docs/namespace-handling.html (original)
+++ trunk/www/docs/namespace-handling.html Wed Mar 12 13:27:00 2008
@@ -63,7 +63,7 @@
</div>
<p>This is the complete list of namespaces that <span class="application">Universal Feed Parser</span> recognizes and uses to construct the variable names for data in these namespaces:</p>
<div class="table">
-<a name="id293787" class="skip" href="#id293787" title="link to this table"><img src="images/permalink.gif" alt="[link]" title="link to this table" width="8" height="9"></a> <h3 class="title">Recognized Namespaces</h3>
+<a name="id293801" class="skip" href="#id293801" title="link to this table"><img src="images/permalink.gif" alt="[link]" title="link to this table" width="8" height="9"></a> <h3 class="title">Recognized Namespaces</h3>
<table summary="Recognized Namespaces" border="1">
<colgroup>
<col>
@@ -266,12 +266,12 @@
</table>
</div>
<p></p>
-<a name="id294556"></a><table class="note" border="0" summary="">
+<a name="id294570"></a><table class="note" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/note.png" alt="Note" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">
<span class="application">Universal Feed Parser</span> treats namespaces as case-insensitive to match the behavior of certain versions of <span class="application">iTunes</span>.</td></tr>
</table>
-<a name="id294575"></a><table class="caution" border="0" summary="">
+<a name="id294589"></a><table class="caution" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/caution.png" alt="Caution" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">Data from namespaced elements is not <a href="html-sanitization.html" title="Sanitization">sanitized</a> (even if it contains <acronym title="HyperText Markup Language">HTML</acronym> markup).</td></tr>
</table>
Modified: trunk/www/docs/reference-bozo.html
==============================================================================
--- trunk/www/docs/reference-bozo.html (original)
+++ trunk/www/docs/reference-bozo.html Wed Mar 12 13:27:00 2008
@@ -28,7 +28,7 @@
<div></div>
</div>
<p>See <a href="bozo.html" title="Bozo Detection">Bozo Detection</a> for more details on the <tt class="varname">bozo</tt> bit.</p>
-<a name="id315337"></a><table class="tip" border="0" summary="">
+<a name="id316945"></a><table class="tip" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/tip.png" alt="Tip" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">
<tt class="varname">bozo</tt> may not be present. Some platforms, such as Mac OS X 10.2 and some versions of FreeBSD, do not include an <acronym title="Extensible Markup Language">XML</acronym> parser in their <span class="application">Python</span> distributions. <span class="application">Universal Feed Parser</span> will still work on these platforms, but it will not be able to detect whether a feed is well-formed. However, it <span class="emphasis"><em>can</em></span> detect whether a feed's character encoding is incorrectly declared. (This is done in <span class="application">Python</span>, not by the <acronym title="Extensible Markup Language">XML</acronym> parser.) See <a href="character-encoding.html" title="Character Encoding Detection">Character Encoding Detection</a> for details.</td></tr>
Modified: trunk/www/docs/reference-bozo_exception.html
==============================================================================
--- trunk/www/docs/reference-bozo_exception.html (original)
+++ trunk/www/docs/reference-bozo_exception.html Wed Mar 12 13:27:00 2008
@@ -28,7 +28,7 @@
<div></div>
</div>
<p>See <a href="bozo.html" title="Bozo Detection">Bozo Detection</a> for more details.</p>
-<a name="id315425"></a><table class="tip" border="0" summary="">
+<a name="id317033"></a><table class="tip" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/tip.png" alt="Tip" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">
<tt class="varname">bozo_exception</tt> will only be present if <tt class="varname">bozo</tt> is <tt class="constant">1</tt>.</td></tr>
Modified: trunk/www/docs/reference-encoding.html
==============================================================================
--- trunk/www/docs/reference-encoding.html (original)
+++ trunk/www/docs/reference-encoding.html Wed Mar 12 13:27:00 2008
@@ -27,11 +27,11 @@
</div>
<div></div>
</div>
-<a name="id314915"></a><table class="note" border="0" summary="">
+<a name="id316522"></a><table class="note" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/note.png" alt="Note" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">The process by which <span class="application">Universal Feed Parser</span> determines the character encoding of the feed is explained in <a href="character-encoding.html" title="Character Encoding Detection">Character Encoding Detection</a>.</td></tr>
</table>
-<a name="id314935"></a><table class="tip" border="0" summary="">
+<a name="id316543"></a><table class="tip" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/tip.png" alt="Tip" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">This element always exists, although it may be an empty string if the character encoding can not be determined.</td></tr>
</table>
Modified: trunk/www/docs/reference-entry-summary.html
==============================================================================
--- trunk/www/docs/reference-entry-summary.html (original)
+++ trunk/www/docs/reference-entry-summary.html Wed Mar 12 13:27:00 2008
@@ -40,7 +40,7 @@
<h3>See also</h3>
<ul><li><a href="reference-entry-summary_detail.html" title="entries[i].summary_detail">entries[i].summary_detail</a></li></ul>
</div>
-<a name="id309572"></a><table class="note" border="0" summary="">
+<a name="id311181"></a><table class="note" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/note.png" alt="Note" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">Some feeds include both a <tt class="literal">summary</tt> and <tt class="literal">description</tt> element for each entry. In this case, the first element will be available in <tt class="varname">entry['summary']</tt> and the second will be available in <tt class="varname">entry['content'][0]</tt>.</td></tr>
</table>
Modified: trunk/www/docs/reference-entry-tags.html
==============================================================================
--- trunk/www/docs/reference-entry-tags.html (original)
+++ trunk/www/docs/reference-entry-tags.html Wed Mar 12 13:27:00 2008
@@ -34,7 +34,7 @@
<li><tt class="literal">/rdf:RDF/rdf:channel/rdf:item/dc:subject</tt></li>
</ul>
</div>
-<a name="id312140"></a><table class="note" border="0" summary="">
+<a name="id313749"></a><table class="note" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/note.png" alt="Note" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">Prior to version 4.0, <span class="application">Universal Feed Parser</span> exposed categories in <tt class="varname">feed.category</tt> (the primary category) and <tt class="varname">feed.categories</tt> (a list of tuples containing the domain and term of each category). These uses are still supported for backward compatibility, but you will not see them in the parsed results unless you explicitly ask for them.</td></tr>
</table>
Modified: trunk/www/docs/reference-entry.html
==============================================================================
--- trunk/www/docs/reference-entry.html (original)
+++ trunk/www/docs/reference-entry.html Wed Mar 12 13:27:00 2008
@@ -31,7 +31,7 @@
<li><tt class="literal">/rdf:RDF/rdf:item</tt></li>
</ul>
</div>
-<a name="id308434"></a><table class="tip" border="0" summary="">
+<a name="id310043"></a><table class="tip" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/tip.png" alt="Tip" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">This element always exists, although it may be an empty list.</td></tr>
</table>
Modified: trunk/www/docs/reference-etag.html
==============================================================================
--- trunk/www/docs/reference-etag.html (original)
+++ trunk/www/docs/reference-etag.html Wed Mar 12 13:27:00 2008
@@ -28,7 +28,7 @@
<div></div>
</div>
<p>The purpose of <tt class="varname">etag</tt> is explained more fully in <a href="http-etag.html" title="ETag and Last-Modified Headers">ETag and Last-Modified Headers</a>.</p>
-<a name="id315140"></a><table class="tip" border="0" summary="">
+<a name="id316748"></a><table class="tip" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/tip.png" alt="Tip" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">
<tt class="varname">etag</tt> will only be present if the feed was retrieved from a web server, and only if the web server provided an ETag <acronym title="Hypertext Transfer Protocol">HTTP</acronym> header for the feed. If the feed was parsed from a local file or from a string in memory, <tt class="varname">etag</tt> will not be present.</td></tr>
Modified: trunk/www/docs/reference-feed-rights.html
==============================================================================
--- trunk/www/docs/reference-feed-rights.html (original)
+++ trunk/www/docs/reference-feed-rights.html Wed Mar 12 13:27:00 2008
@@ -24,7 +24,7 @@
<div class="abstract"><p>A human-readable copyright statement for the feed.</p></div>
<p>If this contains <acronym title="HyperText Markup Language">HTML</acronym> or <acronym title="Extensible HyperText Markup Language">XHTML</acronym>, it is <a href="html-sanitization.html" title="Sanitization">sanitized</a> by default.</p>
<p>If this contains <acronym title="HyperText Markup Language">HTML</acronym> or <acronym title="Extensible HyperText Markup Language">XHTML</acronym>, certain (X)HTML elements within this value may contain relative <acronym title="Uniform Resource Identifier">URI</acronym>s. If so, they are <a href="resolving-relative-links.html" title="Relative Link Resolution">resolved according to a set of rules</a>.</p>
-<a name="id304906"></a><table class="note" border="0" summary="">
+<a name="id306513"></a><table class="note" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/note.png" alt="Note" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">For machine-readable copyright information, see <a href="reference-feed-license.html" title="feed.license">feed.license</a>.</td></tr>
</table>
Modified: trunk/www/docs/reference-feed-tags.html
==============================================================================
--- trunk/www/docs/reference-feed-tags.html (original)
+++ trunk/www/docs/reference-feed-tags.html Wed Mar 12 13:27:00 2008
@@ -34,7 +34,7 @@
<li><tt class="literal">/rdf:RDF/rdf:channel/dc:subject</tt></li>
</ul>
</div>
-<a name="id307963"></a><table class="note" border="0" summary="">
+<a name="id309572"></a><table class="note" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/note.png" alt="Note" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">Prior to version 4.0, <span class="application">Universal Feed Parser</span> exposed categories in <tt class="varname">feed.category</tt> (the primary category) and <tt class="varname">feed.categories</tt> (a list of tuples containing the domain and term of each category). These uses are still supported for backward compatibility, but you will not see them in the parsed results unless you explicitly ask for them.</td></tr>
</table>
Modified: trunk/www/docs/reference-feed-textinput.html
==============================================================================
--- trunk/www/docs/reference-feed-textinput.html (original)
+++ trunk/www/docs/reference-feed-textinput.html Wed Mar 12 13:27:00 2008
@@ -66,7 +66,7 @@
<div class="section" lang="en">
<div class="titlepage">
<div><div><h3 class="title">
-<a name="id307408" class="skip" href="#id307408" title="link to this section"><img src="images/permalink.gif" alt="[link]" title="link to this section" width="8" height="9"></a> Annotated example</h3></div></div>
+<a name="id309016" class="skip" href="#id309016" title="link to this section"><img src="images/permalink.gif" alt="[link]" title="link to this section" width="8" height="9"></a> Annotated example</h3></div></div>
<div></div>
</div>
<p>This is a text input in a feed:</p>
Modified: trunk/www/docs/reference-feed.html
==============================================================================
--- trunk/www/docs/reference-feed.html (original)
+++ trunk/www/docs/reference-feed.html Wed Mar 12 13:27:00 2008
@@ -31,7 +31,7 @@
<li><tt class="literal">/rdf:RDF/rdf:channel</tt></li>
</ul>
</div>
-<a name="id303323"></a><table class="tip" border="0" summary="">
+<a name="id304930"></a><table class="tip" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/tip.png" alt="Tip" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">This element always exists, although it may be an empty dictionary.</td></tr>
</table>
Modified: trunk/www/docs/reference-headers.html
==============================================================================
--- trunk/www/docs/reference-headers.html (original)
+++ trunk/www/docs/reference-headers.html Wed Mar 12 13:27:00 2008
@@ -27,7 +27,7 @@
</div>
<div></div>
</div>
-<a name="id315261"></a><table class="tip" border="0" summary="">
+<a name="id316869"></a><table class="tip" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/tip.png" alt="Tip" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">
<tt class="varname">headers</tt> will only be present if the feed was retrieved from a web server. If the feed was parsed from a local file or from a string in memory, <tt class="varname">headers</tt> will not be present.</td></tr>
Modified: trunk/www/docs/reference-href.html
==============================================================================
--- trunk/www/docs/reference-href.html (original)
+++ trunk/www/docs/reference-href.html Wed Mar 12 13:27:00 2008
@@ -28,7 +28,7 @@
<div></div>
</div>
<p>If the feed was redirected from the original requested address, <tt class="varname">href</tt> will contain the final (redirected) address.</p>
-<a name="id315080"></a><table class="tip" border="0" summary="">
+<a name="id316687"></a><table class="tip" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/tip.png" alt="Tip" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">
<tt class="varname">href</tt> will only be present if the feed was retrieved from a web server. If the feed was parsed from a local file or from a string in memory, <tt class="varname">href</tt> will not be present.</td></tr>
Modified: trunk/www/docs/reference-modified.html
==============================================================================
--- trunk/www/docs/reference-modified.html (original)
+++ trunk/www/docs/reference-modified.html Wed Mar 12 13:27:00 2008
@@ -28,7 +28,7 @@
<div></div>
</div>
<p>The purpose of <tt class="varname">modified</tt> is explained more fully in <a href="http-etag.html" title="ETag and Last-Modified Headers">ETag and Last-Modified Headers</a>.</p>
-<a name="id315207"></a><table class="tip" border="0" summary="">
+<a name="id316815"></a><table class="tip" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/tip.png" alt="Tip" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">
<tt class="varname">modified</tt> will only be present if the feed was retrieved from a web server, and only if the web server provided a Last-Modified <acronym title="Hypertext Transfer Protocol">HTTP</acronym> header for the feed. If the feed was parsed from a local file or from a string in memory, <tt class="varname">modified</tt> will not be present.</td></tr>
Modified: trunk/www/docs/reference-namespaces.html
==============================================================================
--- trunk/www/docs/reference-namespaces.html (original)
+++ trunk/www/docs/reference-namespaces.html Wed Mar 12 13:27:00 2008
@@ -27,11 +27,11 @@
</div>
<div></div>
</div>
-<a name="id314854"></a><table class="note" border="0" summary="">
+<a name="id316462"></a><table class="note" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/note.png" alt="Note" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">The prefixes listed in the <tt class="varname">namespaces</tt> dictionary may not match the prefixes defined in the original feed. See <a href="namespace-handling.html" title="Namespace Handling">Namespace Handling</a> for more details.</td></tr>
</table>
-<a name="id314873"></a><table class="tip" border="0" summary="">
+<a name="id316481"></a><table class="tip" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/tip.png" alt="Tip" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">This element always exists, although it may be an empty dictionary if the feed does not define any namespaces (such as an <acronym title="Rich Site Summary">RSS</acronym> 2.0 feed with no extensions).</td></tr>
</table>
Modified: trunk/www/docs/reference-status.html
==============================================================================
--- trunk/www/docs/reference-status.html (original)
+++ trunk/www/docs/reference-status.html Wed Mar 12 13:27:00 2008
@@ -30,7 +30,7 @@
<p>If the feed was redirected from its original <acronym title="Uniform Resource Locator">URL</acronym>, <tt class="varname">status</tt> will contain the redirect status code, not the final status code.</p>
<p>If <tt class="varname">status</tt> is <tt class="constant">301</tt>, the feed was permanently redirected to a new <acronym title="Uniform Resource Locator">URL</acronym>. Clients should update their address book to request the new <acronym title="Uniform Resource Locator">URL</acronym> from now on.</p>
<p>If <tt class="varname">status</tt> is <tt class="constant">410</tt>, the feed is gone. Clients should stop polling the feed.</p>
-<a name="id315024"></a><table class="tip" border="0" summary="">
+<a name="id316632"></a><table class="tip" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/tip.png" alt="Tip" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">
<tt class="varname">status</tt> will only be present if the feed was retrieved from a web server. If the feed was parsed from a local file or from a string in memory, <tt class="varname">status</tt> will not be present.</td></tr>
Modified: trunk/www/docs/reference-version.html
==============================================================================
--- trunk/www/docs/reference-version.html (original)
+++ trunk/www/docs/reference-version.html Wed Mar 12 13:27:00 2008
@@ -66,7 +66,7 @@
<dd><a href="
http://diveintomark.org/archives/2004/04/14/hot-rss">Hot <acronym title="Rich Site Summary">RSS</acronym></a></dd>
</dl></div>
<p>If the feed type is completely unknown, <tt class="varname">version</tt> will be an empty string.</p>
-<a name="id314809"></a><table class="tip" border="0" summary="">
+<a name="id316417"></a><table class="tip" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/tip.png" alt="Tip" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">This element always exists, although it may be an empty string if the version can not be determined.</td></tr>
</table>
Modified: trunk/www/docs/reference.html
==============================================================================
--- trunk/www/docs/reference.html (original)
+++ trunk/www/docs/reference.html Wed Mar 12 13:27:00 2008
@@ -9,7 +9,7 @@
<meta name="keywords" content="RSS, Atom, CDF, XML, feed, parser, Python">
<link rel="start" href="index.html" title="Documentation">
<link rel="up" href="index.html" title="Documentation">
-<link rel="prev" href="changes-30.html" title="Changes in version 3.0 and the 26 betas that preceded it">
+<link rel="prev" href="changes-early.html" title="Changes in earlier versions">
<link rel="next" href="reference-feed.html" title="feed">
</head>
<body id="feedparser-org" class="docs">
@@ -113,7 +113,7 @@
<li><span class="section"><a href="reference-feed-textinput.html#reference.feed.textinput.link">feed.textinput.link</a></span></li>
<li><span class="section"><a href="reference-feed-textinput.html#
reference.feed.textinput.name">
feed.textinput.name</a></span></li>
<li><span class="section"><a href="reference-feed-textinput.html#reference.feed.textinput.description">feed.textinput.description</a></span></li>
-<li><span class="section"><a href="reference-feed-textinput.html#id307408">Annotated example</a></span></li>
+<li><span class="section"><a href="reference-feed-textinput.html#id309016">Annotated example</a></span></li>
</ul>
</li>
<li>
@@ -269,7 +269,7 @@
<li><span class="section"><a href="reference-bozo_exception.html">bozo_exception</a></span></li>
</ul></div>
</div>
-<div style="float: left">← <a class="NavigationArrow" href="changes-30.html">Changes in version 3.0 and the 26 betas that preceded it</a>
+<div style="float: left">← <a class="NavigationArrow" href="changes-early.html">Changes in earlier versions</a>
</div>
<div style="text-align: right">
<a class="NavigationArrow" href="reference-feed.html">feed</a> →</div>
Modified: trunk/www/docs/resolving-relative-links.html
==============================================================================
--- trunk/www/docs/resolving-relative-links.html (original)
+++ trunk/www/docs/resolving-relative-links.html Wed Mar 12 13:27:00 2008
@@ -117,7 +117,7 @@
<p>If no <tt class="literal">Content-Location</tt> <acronym title="Hypertext Transfer Protocol">HTTP</acronym> header is present, the <acronym title="Uniform Resource Locator">URL</acronym> used to retrieve the feed itself is the default base <acronym title="Uniform Resource Identifier">URI</acronym> for all relative links within the feed. If the feed was retrieved via an <acronym title="Hypertext Transfer Protocol">HTTP</acronym> redirect (any <acronym title="Hypertext Transfer Protocol">HTTP</acronym> 3xx status code), then the final <acronym title="Uniform Resource Locator">URL</acronym> of the feed is the default base <acronym title="Uniform Resource Identifier">URI</acronym>.</p>
<p>For example, an <tt class="sgmltag-attribute">xml:base</tt> on the root-level element sets the base <acronym title="Uniform Resource Identifier">URI</acronym> for all <acronym title="Uniform Resource Identifier">URI</acronym>s in the feed.</p>
<div class="example">
-<a name="id295288" class="skip" href="#id295288" title="link to this example"><img src="images/permalink.gif" alt="[link]" title="link to this example" width="8" height="9"></a> <h3 class="title">Example: <tt class="sgmltag-attribute">xml:base</tt> on the root-level element</h3>
+<a name="id295302" class="skip" href="#id295302" title="link to this example"><img src="images/permalink.gif" alt="[link]" title="link to this example" width="8" height="9"></a> <h3 class="title">Example: <tt class="sgmltag-attribute">xml:base</tt> on the root-level element</h3>
<pre class="screen"><tt class="prompt">>>> </tt><span class="userinput"><font color='navy'><b>import</b></font> feedparser</span>
<tt class="prompt">>>> </tt><span class="userinput">d = feedparser.parse("<a href="
http://feedparser.org/docs/examples/base.xml">
http://feedparser.org/docs/examples/base.xml</a>")</span>
<tt class="prompt">>>> </tt><span class="userinput">d.feed.link</span>
@@ -127,7 +127,7 @@
</div>
<p>An <tt class="sgmltag-attribute">xml:base</tt> attribute on an <tt class="sgmltag-element"><entry></tt> overrides the <tt class="sgmltag-attribute">xml:base</tt> on the parent <tt class="sgmltag-element"><feed></tt>.</p>
<div class="example">
-<a name="id295377" class="skip" href="#id295377" title="link to this example"><img src="images/permalink.gif" alt="[link]" title="link to this example" width="8" height="9"></a> <h3 class="title">Example: Overriding <tt class="sgmltag-attribute">xml:base</tt> on an <tt class="sgmltag-element"><entry></tt>
+<a name="id295391" class="skip" href="#id295391" title="link to this example"><img src="images/permalink.gif" alt="[link]" title="link to this example" width="8" height="9"></a> <h3 class="title">Example: Overriding <tt class="sgmltag-attribute">xml:base</tt> on an <tt class="sgmltag-element"><entry></tt>
</h3>
<pre class="screen"><tt class="prompt">>>> </tt><span class="userinput"><font color='navy'><b>import</b></font> feedparser</span>
<tt class="prompt">>>> </tt><span class="userinput">d = feedparser.parse("<a href="
http://feedparser.org/docs/examples/base.xml">
http://feedparser.org/docs/examples/base.xml</a>")</span>
@@ -138,7 +138,7 @@
</div>
<p>An <tt class="sgmltag-attribute">xml:base</tt> on <tt class="sgmltag-element"><content></tt> overrides the <tt class="sgmltag-attribute">xml:base</tt> on the parent <tt class="sgmltag-element"><entry></tt>. In addition, whatever the base <acronym title="Uniform Resource Identifier">URI</acronym> is for the <tt class="sgmltag-element"><content></tt> element (whether defined directly on the <tt class="sgmltag-element"><content></tt> element, or inherited from the parent element) is used as the base <acronym title="Uniform Resource Identifier">URI</acronym> for the embedded <acronym title="HyperText Markup Language">HTML</acronym> or <acronym title="Extensible HyperText Markup Language">XHTML</acronym> markup within the <tt class="sgmltag-element">content</tt>.</p>
<div class="example">
-<a name="id295497" class="skip" href="#id295497" title="link to this example"><img src="images/permalink.gif" alt="[link]" title="link to this example" width="8" height="9"></a> <h3 class="title">Example: Relative links within embedded <acronym title="HyperText Markup Language">HTML</acronym>
+<a name="id295511" class="skip" href="#id295511" title="link to this example"><img src="images/permalink.gif" alt="[link]" title="link to this example" width="8" height="9"></a> <h3 class="title">Example: Relative links within embedded <acronym title="HyperText Markup Language">HTML</acronym>
</h3>
<pre class="screen"><tt class="prompt">>>> </tt><span class="userinput"><font color='navy'><b>import</b></font> feedparser</span>
<tt class="prompt">>>> </tt><span class="userinput">d = feedparser.parse("<a href="
http://feedparser.org/docs/examples/base.xml">
http://feedparser.org/docs/examples/base.xml</a>")</span>
@@ -149,7 +149,7 @@
</div>
<p>The <tt class="sgmltag-attribute">xml:base</tt> affects other attributes in the element in which it is declared.</p>
<div class="example">
-<a name="id295560" class="skip" href="#id295560" title="link to this example"><img src="images/permalink.gif" alt="[link]" title="link to this example" width="8" height="9"></a> <h3 class="title">Example: <tt class="sgmltag-attribute">xml:base</tt> and sibling attributes</h3>
+<a name="id295574" class="skip" href="#id295574" title="link to this example"><img src="images/permalink.gif" alt="[link]" title="link to this example" width="8" height="9"></a> <h3 class="title">Example: <tt class="sgmltag-attribute">xml:base</tt> and sibling attributes</h3>
<pre class="screen"><tt class="prompt">>>> </tt><span class="userinput"><font color='navy'><b>import</b></font> feedparser</span>
<tt class="prompt">>>> </tt><span class="userinput">d = feedparser.parse("<a href="
http://feedparser.org/docs/examples/base.xml">
http://feedparser.org/docs/examples/base.xml</a>")</span>
<tt class="prompt">>>> </tt><span class="userinput">d.entries[0].links[1].rel</span>
@@ -159,7 +159,7 @@
</div>
<p>If no <tt class="sgmltag-attribute">xml:base</tt> is specified on the root-level element, the default base <acronym title="Uniform Resource Identifier">URI</acronym> is given in the <tt class="literal">Content-Location</tt> <acronym title="Hypertext Transfer Protocol">HTTP</acronym> header. This can still be overridden by any child element that declares an <tt class="sgmltag-attribute">xml:base</tt> attribute.</p>
<div class="example">
-<a name="id295656" class="skip" href="#id295656" title="link to this example"><img src="images/permalink.gif" alt="[link]" title="link to this example" width="8" height="9"></a> <h3 class="title">Example: <tt class="literal">Content-Location</tt> <acronym title="Hypertext Transfer Protocol">HTTP</acronym> header</h3>
+<a name="id295670" class="skip" href="#id295670" title="link to this example"><img src="images/permalink.gif" alt="[link]" title="link to this example" width="8" height="9"></a> <h3 class="title">Example: <tt class="literal">Content-Location</tt> <acronym title="Hypertext Transfer Protocol">HTTP</acronym> header</h3>
<pre class="screen"><tt class="prompt">>>> </tt><span class="userinput"><font color='navy'><b>import</b></font> feedparser</span>
<tt class="prompt">>>> </tt><span class="userinput">d = feedparser.parse("<a href="
http://feedparser.org/docs/examples/http_base.xml">
http://feedparser.org/docs/examples/http_base.xml</a>")</span>
<tt class="prompt">>>> </tt><span class="userinput">d.feed.link</span>
@@ -169,7 +169,7 @@
</div>
<p>Finally, if no root-level <tt class="sgmltag-attribute">xml:base</tt> is declared, and no <tt class="literal">Content-Location</tt> <acronym title="Hypertext Transfer Protocol">HTTP</acronym> header is present, the <acronym title="Uniform Resource Locator">URL</acronym> of the feed itself is the default base <acronym title="Uniform Resource Identifier">URI</acronym>. Again, this can still be overridden by any element that declares an <tt class="sgmltag-attribute">xml:base</tt> attribute.</p>
<div class="example">
-<a name="id295765" class="skip" href="#id295765" title="link to this example"><img src="images/permalink.gif" alt="[link]" title="link to this example" width="8" height="9"></a> <h3 class="title">Example: Feed <acronym title="Uniform Resource Locator">URL</acronym> as default base <acronym title="Uniform Resource Identifier">URI</acronym>
+<a name="id295779" class="skip" href="#id295779" title="link to this example"><img src="images/permalink.gif" alt="[link]" title="link to this example" width="8" height="9"></a> <h3 class="title">Example: Feed <acronym title="Uniform Resource Locator">URL</acronym> as default base <acronym title="Uniform Resource Identifier">URI</acronym>
</h3>
<pre class="screen"><tt class="prompt">>>> </tt><span class="userinput"><font color='navy'><b>import</b></font> feedparser</span>
<tt class="prompt">>>> </tt><span class="userinput">d = feedparser.parse("<a href="
http://feedparser.org/docs/examples/no_base.xml">
http://feedparser.org/docs/examples/no_base.xml</a>")</span>
Modified: trunk/www/docs/uncommon-atom.html
==============================================================================
--- trunk/www/docs/uncommon-atom.html (original)
+++ trunk/www/docs/uncommon-atom.html Wed Mar 12 13:27:00 2008
@@ -70,7 +70,7 @@
'href': u'
http://www.example.com/movie.mp4',
'length': u'42301'}</span></pre>
</div>
-<a name="id287047"></a><table class="note" border="0" summary="">
+<a name="id287061"></a><table class="note" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/note.png" alt="Note" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">For more examples of accessing Atom elements, see the annotated examples <a href="annotated-atom10.html" title="Atom 1.0">Atom 1.0</a> and <a href="annotated-atom03.html" title="Atom 0.3">Atom 0.3</a>.</td></tr>
</table>
Modified: trunk/www/docs/uncommon-rss.html
==============================================================================
--- trunk/www/docs/uncommon-rss.html (original)
+++ trunk/www/docs/uncommon-rss.html Wed Mar 12 13:27:00 2008
@@ -74,7 +74,7 @@
'registerprocedure': u'pingMe',
'protocol': u'soap'}</span></pre>
</div>
-<a name="id286764"></a><table class="note" border="0" summary="">
+<a name="id286779"></a><table class="note" border="0" summary="">
<tr><td rowspan="2" align="center" valign="top" width="1%"><img src="images/note.png" alt="Note" title="" width="24" height="24"></td></tr>
<tr><td colspan="2" align="left" valign="top" width="99%">For more examples of accessing <acronym title="Rich Site Summary">RSS</acronym> elements, see the annotated examples: <a href="annotated-rss10.html" title="RSS 1.0">RSS 1.0</a>, <a href="annotated-rss20.html" title="RSS 2.0">RSS 2.0</a>, and <a href="annotated-rss20-dc.html" title="RSS 2.0 with Namespaces">RSS 2.0 with Namespaces</a>.</td></tr>
</table>