Permalink
Browse files

Initial revision

git-svn-id: http://feedvalidator.googlecode.com/svn/trunk@4 34a10a33-d82d-0410-ba40-81c901463ecc
  • Loading branch information...
0 parents commit b2c3302a219f7a1b865a71b687fd7a889a6928f2 @rubys committed Feb 3, 2004
Showing 1,156 changed files with 48,526 additions and 0 deletions.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,2 @@
+*.pyc
+feedfinder.*
@@ -0,0 +1,5 @@
+Options +ExecCGI +MultiViews
+AddHandler cgi-script cgi
+
+DirectoryIndex index.html check.cgi
+
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<definitions
+ targetNamespace="http://feedvalidator.org/"
+ xmlns:validator="http://feedvalidator.org/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://schemas.xmlsoap.org/wsdl/">
+
+ <types>
+ <xsd:schema elementFormDefault="qualified"
+ targetNamespace="http://feedvalidator.org/">
+
+ <xsd:complexType name="Request">
+ <xsd:sequence>
+ <xsd:any namespace="##other"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="Message">
+ <xsd:sequence>
+ <xsd:element name="level" type="xsd:string"/>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="line" type="xsd:string"/>
+ <xsd:element name="column" type="xsd:string"/>
+ <xsd:element name="msgcount" type="xsd:string"/>
+ <xsd:element name="text" type="xsd:string"/>
+ <xsd:any minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="Response">
+ <xsd:sequence>
+ <xsd:element name="message" type="validator:Message"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="request" type="validator:Request"/>
+ <xsd:element name="response" type="validator:Response"/>
+ </xsd:schema>
+ </types>
+
+ <message name="validateIn">
+ <part name="request" element="validator:request" />
+ </message>
+ <message name="validateOut">
+ <part name="response" element="validator:response" />
+ </message>
+
+ <portType name="RSSValidatorSoap">
+ <operation name="validate">
+ <input message="validator:validateIn" />
+ <output message="validator:validateOut" />
+ </operation>
+ </portType>
+
+ <binding name="soap" type="validator:RSSValidatorSoap">
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
+ style="document" />
+ <operation name="validate">
+ <soap:operation soapAction="urn:validate" style="document" />
+ <input>
+ <soap:body use="literal" />
+ </input>
+ <output>
+ <soap:body use="literal" />
+ </output>
+ </operation>
+ </binding>
+
+ <service name="RSSValidator">
+ <port name="RSSValidatorSoap" binding="validator:soap">
+ <soap:address location="http://feedvalidator.org/" />
+ </port>
+ </service>
+</definitions>
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+<title>About the Feed Validator</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<style type="text/css" media="screen">@import "css/common.css";
+@import "css/documentation.css";</style>
+<script type="text/javascript"><!-- --></script>
+</head>
+<body>
+
+<div id="logo">
+<h1><a href="/"><span id="feed"><span id="f">F</span><span id="e1">E</span><span id="e2">E</span></span><span id="d">D</span> Validator</a></h1>
+<p>About</p>
+<a class="skip" href="#startnavigation">Jump to navigation</a>
+</div> <!--logo-->
+
+<div id="main">
+
+<p>On this page:</p>
+
+<ul>
+<li><a href="#what">What is this?</a></li>
+<li><a href="#why">Why a validator?</a></li>
+<li><a href="#how">What does it validate?</a></li>
+<li><a href="#who">Who wrote it?</a></li>
+<li><a href="#where">Can I run it locally?</a></li>
+</ul>
+
+<h2 id="what">What is this?</h2>
+
+<p>This is a validator for syndicated feeds. It works with RSS 0.90, 0.91, 0.92, 0.93, 0.94, 1.0, and 2.0. It also validates Atom feeds.</p>
+
+<p>To use it, simply enter the address of your feed and click Validate. If the validator finds any problems in your feed, it will give you messages for each type of problem and highlight where the problem first occurs in your feed. If you're unsure what a message means, click the "help" link next to the message for a fuller explanation.</p>
+
+<h2 id="why">Why a validator?</h2>
+
+<p>Despite its relatively simple nature, RSS is poorly implemented by many tools. This validator is an attempt to codify the specification (literally, to translate it into code) to make it easier to know when you're producing RSS correctly, and to help you fix it when you're not.</p>
+
+<p>The validator also supports the new Atom format for syndicated feeds. Early adopters who wish to support Atom should use the validator to make sure they generate it properly from day 1.</p>
+
+<p>There are validators for other web technologies, such as <a href="http://validator.w3.org/">HTML</a>, <a href="http://jigsaw.w3.org/css-validator/validator-uri.html">CSS</a>, and <a href="http://bobby.watchfire.com/">accessibility guidelines</a>, and these have all proven quite popular. As personal news syndication is becoming more widespread, we saw a need for a comprehensive but easy-to-use validator for syndicated feeds.</p>
+
+<h2 id="how">What does it validate?</h2>
+
+<p>It validates RSS feeds against the rules defined in the <a href="/docs/rss2.html">RSS 2.0 specification</a>. It also validates elements of commonly used namespaces:</p>
+
+<ul>
+<li>blogChannel</li>
+<li>Dublin Core</li>
+<li>mod_admin</li>
+<li>mod_syndication</li>
+<li>mod_content (<code>content:encoded</code> only)</li>
+</ul>
+
+<p>For Atom feeds, it validates against <a href="http://www.mnot.net/drafts/draft-nottingham-atom-format-02.html">draft-nottingham-atom-format-02</a>, which describes version 0.3 of the Atom feed format. As the specification changes, the validator will be updated to support newer versions.</p>
+
+<p>The <a href="/docs/">documentation index</a> lists all the error messages that the validator produces. You can also download the entire test suite that was used to create the validator (see below).</p>
+
+<h2 id="who">Who wrote it?</h2>
+
+<p>The validator was conceived and designed by <a href="http://diveintomark.org/">Mark Pilgrim</a>, who also wrote most of the test cases and designed the web front end. Much of the actual back end coding was done by <a href="http://intertwingly.net/blog/">Sam Ruby</a>.</p>
+
+<a name="opensource" id="opensource"></a>
+<h2 id="where">Can I run it locally?</h2>
+
+<p>Yes. The validator is open source, written in Python, and distributed under the same license as Python itself. To run it, you will need <a href="http://python.org/">Python 2.2</a> or later, and an XML parser. Most Python distributions include a minimal XML parser which will work just fine. Mac OS X 10.2 users should install <a href="http://sourceforge.net/projects/pyxml/">PyXML</a>.</p>
+
+<blockquote><p><a href="http://feedvalidator.org/download/feedvalidator-latest.zip">Download the Feed Validator</a></p></blockquote>
+
+<p>To run the validator:</p>
+
+<blockquote>
+<p><samp>[feedvalidator you@localhost]$</samp> <kbd>cd src</kbd><br />
+<samp>[src you@localhost]$</samp> <kbd>python demo.py http://url/to/validate</kbd></p>
+</blockquote>
+
+<p>The source code distribution also includes a complete test suite of almost 1000 feeds that were used to test the validator during development. To run the test suite:</p>
+
+<blockquote>
+<p><samp>[feedvalidator you@localhost]$</samp> <kbd>cd src</kbd><br />
+<samp>[src you@localhost]$</samp> <kbd>python validtest.py -v</kbd></p>
+</blockquote>
+
+</div><!--main-->
+
+<div class="centered">
+<a name="startnavigation" id="startnavigation"></a>
+<div class="navbarWrapper">
+ <div class="navbarContent">
+ <img class="borderTL" src="/images/borderTL.gif" alt="" width="14" height="14" />
+ <img class="borderTR" src="/images/borderTR.gif" alt="" width="14" height="14" />
+
+<p>
+<a href="/">Home</a> &middot;
+<a href="/about.html">About</a> &middot;
+<a href="/news/">News</a> &middot;
+<a href="/docs/">Docs</a> &middot;
+<a href="/terms.html">Terms</a>
+</p>
+
+ <div class="roundedCornerSpacer">&nbsp;</div>
+ </div><!-- .content -->
+ <div class="bottomCorners">
+ <img class="borderBL" src="/images/borderBL.gif" alt="" width="14" height="14" />
+ <img class="borderBR" src="/images/borderBR.gif" alt="" width="14" height="14" />
+ </div><!-- .bottomCorners -->
+</div><!-- .contentWrapper -->
+</div><!-- .centered -->
+
+<div class="centered">
+<address>Copyright &copy; 2002-3 <a href="http://diveintomark.org/">Mark Pilgrim</a> and <a href="http://www.intertwingly.net/blog/">Sam Ruby</a></address>
+</div>
+
+</body>
+</html>
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+<title>Feed Validator: alternate banners</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<style type="text/css" media="screen">@import "css/common.css";
+@import "css/documentation.css";</style>
+<script type="text/javascript"><!-- --></script>
+</head>
+<body>
+
+<div id="logo">
+<h1><a href="/"><span id="feed"><span id="f">F</span><span id="e1">E</span><span id="e2">E</span></span><span id="d">D</span> Validator</a></h1>
+<p>Alternate banners</p>
+<a class="skip" href="#startnavigation">Jump to navigation</a>
+</div> <!--logo-->
+
+<div id="main">
+
+<h2>Alternate "Valid RSS" banners</h2>
+
+<p>If the default "valid RSS" banner is not your style, you can use any of these, or anything else you design, or nothing at all. The fact that you care enough to validate your feed is the important part; how you advertise it is up to you.</p>
+
+<p style="line-height:300%">
+<img alt="Brockman Bulger's entry" title="by Brockman Bulger" src="/images/valid-rss-bbulger.png" width="88" height="31" /> &nbsp;
+<img alt="Dylan Parker's entry #2" title="by Dylan Parker" src="/images/valid-rss-dylan2.gif" width="88" height="31" /> &nbsp;
+<img alt="Neil Lee's entry with white background" title="by Neil Lee" src="/images/valid-rss-white-neil.gif" width="88" height="31" /> &nbsp;
+<img alt="Dougal Campbell's entry with white background" title="by Dougal Campbell" src="/images/valid-rss-white-dougal.gif" width="88" height="31" /> &nbsp;
+<img alt="Robert Guertin's entry" title="by Robert Guertin" src="/images/valid-rss-robert.jpg" width="88" height="31" /> &nbsp;
+<img alt="Jon Wiley's entry" title="by Jon Wiley" src="/images/valid-rss-jon-wiley.gif" width="88" height="31" /> &nbsp;
+<img alt="Jonathon Delacour's entry" title="by Jonathon Delacour" src="/images/valid-rss-jonathan.gif" width="88" height="31" /> &nbsp;
+<img alt="Lee O'Mara's entry" title="by Lee O'Mara" src="/images/valid-rss-lee.gif" width="88" height="31" /> &nbsp;
+<img alt="Aaron Swartz's entry" title="by Aaron Swartz" src="/images/valid-rss-aaron.png" width="88" height="31" /> &nbsp;
+<img alt="Dylan Parker's entry #1" title="by Dylan Parker" src="/images/valid-rss-dylan1.gif" width="88" height="31" /> &nbsp;
+<img alt="Shelley Powers' entry" title="by Shelley Powers" src="/images/valid-rss-shelley.gif" width="88" height="31" /> &nbsp;
+<img alt="Walt Dickinson's entry with orange background" title="by Walt Dickinson" src="/images/valid-rss-orange-walt.gif" width="88" height="31" /> &nbsp;
+<img alt="Walt Dickinson's entry with red background" title="by Walt Dickinson" src="/images/valid-rss-red-walt.gif" width="88" height="31" /> &nbsp;
+<img alt="Dylan Parker's entry #4" title="by Dylan Parker" src="/images/valid-rss-dylan4.gif" width="88" height="31" /> &nbsp;
+<img alt="Walk Dickinson's entry with grey background" title="by Walt Dickinson" src="/images/valid-rss-grey-walt.gif" width="88" height="31" /> &nbsp;
+<img alt="Neil Lee's entry with maroon background" title="by Neil Lee" src="/images/valid-rss-neil.gif" width="88" height="31" /> &nbsp;
+<img alt="Dylan Parker's entry #3" title="by Dylan Parker" src="/images/valid-rss-dylan3.gif" width="88" height="31" /> &nbsp;
+<img alt="Martin Murtonen's entry" title="by Martin Murtonen" src="/images/valid-rss-martin.gif" /> &nbsp;
+<img alt="Dougal Campbell's entry with black background" title="by Dougal Campbell" src="/images/valid-rss-black-dougal.gif" width="88" height="31" /> &nbsp;
+<img alt="Nicholas Avenell's entry" title="by Nicholas Avenell" src="/images/valid-rss-nicholas.png" width="88" height="31" /> &nbsp;
+<img alt="Aaron Swartz's entry, based on a design by antipixel.com" title="by Aaron Swartz (in the style of antipixel.com)" src="/images/valid-rss-antipixel.png" width="80" height="15" /> &nbsp;
+<img alt="Jack Greenwood's entry" title="by Jack Greenwood" src="/images/kiss-my-rss.gif" width="88" height="31" /> &nbsp;
+</p>
+
+<p>Designers who wish to have their "valid RSS" banner listed here should email it to <a href="mailto:feed-validator@diveintomark.org">feed-validator@diveintomark.org</a>.</p>
+
+</div><!--main-->
+
+<div class="centered">
+<a name="startnavigation" id="startnavigation"></a>
+<div class="navbarWrapper">
+ <div class="navbarContent">
+ <img class="borderTL" src="/images/borderTL.gif" alt="" width="14" height="14" />
+ <img class="borderTR" src="/images/borderTR.gif" alt="" width="14" height="14" />
+
+<p>
+<a href="./">Home</a> &middot;
+<a href="./about.html">About</a> &middot;
+<a href="./news/">News</a> &middot;
+<a href="./docs/">Docs</a> &middot;
+<a href="./terms.html">Terms</a>
+</p>
+
+ <div class="roundedCornerSpacer">&nbsp;</div>
+ </div><!-- .content -->
+ <div class="bottomCorners">
+ <img class="borderBL" src="/images/borderBL.gif" alt="" width="14" height="14" />
+ <img class="borderBR" src="/images/borderBR.gif" alt="" width="14" height="14" />
+ </div><!-- .bottomCorners -->
+</div><!-- .contentWrapper -->
+</div><!-- .centered -->
+
+<div class="centered">
+<address>Copyright &copy; 2002-3 <a href="http://diveintomark.org/">Mark Pilgrim</a> and <a href="http://www.intertwingly.net/blog/">Sam Ruby</a></address>
+</div>
+
+</body>
+</html>
Oops, something went wrong.

0 comments on commit b2c3302

Please sign in to comment.