Cover image for Developing Feeds with RSS and Atom

Book description

Perhaps the most explosive technological trend over the past two years has been blogging. As a matter of fact, it's been reported that the number of blogs during that time has grown from 100,000 to 4.8 million-with no end to this growth in sight. What's the technology that makes blogging tick? The answer is RSS--a format that allows bloggers to offer XML-based feeds of their content. It's also the same technology that's incorporated into the websites of media outlets so they can offer material (headlines, links, articles, etc.) syndicated by other sites. As the main technology behind this rapidly growing field of content syndication, RSS is constantly evolving to keep pace with worldwide demand. That's where Developing Feeds with RSS and Atom steps in. It provides bloggers, web developers, and programmers with a thorough explanation of syndication in general and the most popular technologies used to develop feeds. This book not only highlights all the new features of RSS 2.0-the most recent RSS specification-but also offers complete coverage of its close second in the XML-feed arena, Atom. The book has been exhaustively revised to explain:

  • metadata interpretation

  • the different forms of content syndication

  • the increasing use of web services

  • how to use popular RSS news aggregators on the market

After an introduction that examines Internet content syndication in general (its purpose, limitations, and traditions), this step-by-step guide tackles various RSS and Atom vocabularies, as well as techniques for applying syndication to problems beyond news feeds. Most importantly, it gives you a firm handle on how to create your own feeds, and consume or combine other feeds. If you're interested in producing your own content feed, Developing Feeds with RSS and Atom is the one book you'll want in hand.

Table of Contents

  1. Developing Feeds with RSS and Atom
  2. A Note Regarding Supplemental Files
  3. Preface
    1. Audience
    2. Assumptions This Book Makes
    3. How This Book Is Organized
    4. Conventions Used in This Book
    5. Using Code Examples
    6. Safari Enabled
    7. Comments and Questions
    8. Acknowledgments
  4. 1. Introduction
    1. 1.1. What Are RSS and Atom for?
    2. 1.2. A Short History of RSS and Atom
      1. 1.2.1. HotSauce: MCF and RDF
      2. 1.2.2. Channel Definition Format
      3. 1.2.3. RSS First Appears
      4. 1.2.4. The Standards Evolve
      5. 1.2.5. The First Fork
      6. 1.2.6. The Second Fork
      7. 1.2.7. Pie, Echo, Necho, Atom
      8. 1.2.8. Today’s Scene
    3. 1.3. Why Syndicate Your Content?
    4. 1.4. Legal Implications
      1. 1.4.1. If You Are Scraped
  5. 2. Using Feeds
    1. 2.1. Web-Based Applications
      1. 2.1.1. Bloglines
      2. 2.1.2. Kinja
      3. 2.1.3. Rocketinfo RSS Reader
    2. 2.2. Desktop Applications
      1. 2.2.1. NetNewsWire
      2. 2.2.2. FeedDemon
      3. 2.2.3. NewsMonster
    3. 2.3. Other Cunning Techniques
      1. 2.3.1. Mobile Devices
      2. 2.3.2. Email Clients
      3. 2.3.3. Feed-Based Search Engines
    4. 2.4. Finding Feeds to Read
  6. 3. Feeds Without Programming
    1. 3.1. From Email
    2. 3.2. From a Search Engine
      1. 3.2.1. Google
      2. 3.2.2. Google News
      3. 3.2.3. Yahoo!
    3. 3.3. From Online Stores
  7. 4. RSS 2.0
    1. 4.1. Bringing Things Up to Date
    2. 4.2. The Basic Structure
      1. 4.2.1. Required Channel Subelements
      2. 4.2.2. Optional Channel Subelements
      3. 4.2.3. item Elements
      4. 4.2.4. The Simplest Possible RSS 2.0 Feed
    3. 4.3. Producing RSS 2.0 with Blogging Tools
    4. 4.4. Introducing Modules
      1. 4.4.1. blogChannel Module
      2. 4.4.2. Creative Commons Module
      3. 4.4.3. Simple Semantic Resolution Module
      4. 4.4.4. Trackback Module
      5. 4.4.5. ICBM Module
      6. 4.4.6. Yahoo!’s Media RSS Module
    5. 4.5. Creating RSS 2.0 Feeds
      1. 4.5.1. Creating RSS with Perl Using XML::RSS
        1. 4.5.1.1. guid, Permalink or not
        2. 4.5.1.2. Module support under XML::RSS
      2. 4.5.2. Creating RSS 2.0 with PHP
        1. 4.5.2.1. Caching and saving
        2. 4.5.2.2. Dates
        3. 4.5.2.3. Namespaced modules
      3. 4.5.3. Creating RSS 2.0 with Ruby
      4. 4.5.4. Serving RSS 2.0
  8. 5. RSS 1.0
    1. 5.1. Metadata in RSS 2.0
      1. 5.1.1. Using URIs in RSS
    2. 5.2. Resource Description Framework
      1. 5.2.1. Resources, PropertyTypes, and Properties
      2. 5.2.2. Nodes and Arcs
      3. 5.2.3. Fitting RDF to RSS
    3. 5.3. RDF in XML
      1. 5.3.1. The Root Element
      2. 5.3.2. <element rdf:about="URI OF ELEMENT">
      3. 5.3.3. <element rdf:resource="URI” />
      4. 5.3.4. RDF Containers
        1. 5.3.4.1. rdf:Bag
        2. 5.3.4.2. rdf:Seq
        3. 5.3.4.3. rdf:Alt
    4. 5.4. Introducing RSS 1.0
      1. 5.4.1. Walking Through an RSS 1.0 Document
    5. 5.5. The Specification in Detail
      1. 5.5.1. The Basic Structure
      2. 5.5.2. The Root Element
      3. 5.5.3. <channel rdf:about=""> (a Subelement of rdf:RDF)
        1. 5.5.3.1. Required subelements of channel
      4. 5.5.4. <image rdf:resource=""> (a Subelement of rdf:RDF)
      5. 5.5.5. <textinput rdf:about=""> (a Subelement of rdf:RDF)
      6. 5.5.6. <item rdf:about=""> (a Subelement of rdf:RDF)
      7. 5.5.7. The Simplest Possible RSS 1.0 Feed
    6. 5.6. Creating RSS 1.0 Feeds
      1. 5.6.1. Creating RSS 1.0 with Perl
      2. 5.6.2. Producing RSS 1.0 with PHP
  9. 6. RSS 1.0 Modules
    1. 6.1. Module Status
    2. 6.2. Support for Modules in Common Applications
      1. mod_admin
      2. mod_aggregation
      3. mod_annotation
      4. mod_audio
      5. mod_changedpage
      6. mod_company
      7. mod_content
      8. mod_dublincore
      9. mod_DCTerms
      10. mod_event
      11. mod_rss091
      12. mod_servicestatus
      13. mod_slash
      14. mod_streaming
      15. mod_syndication
      16. mod_taxonomy
      17. mod_threading
      18. mod_wiki
      19. mod_prism
    3. 6.3. Other RSS 1.0 Modules
  10. 7. The Atom Syndication Format
    1. 7.1. Introducing Atom
      1. 7.1.1. The Structure of an Atom Feed
        1. 7.1.1.1. The Atom entry
        2. 7.1.1.2. Combining entries to make a feed
      2. 7.1.2. The Reusable Syntax of Constructs
    2. 7.2. The Atom Entry Document in Detail
      1. 7.2.1. The Elements of Atom Entry
      2. 7.2.2. The Atom Feed Document in Detail
      3. 7.2.3. The Simplest Possible Thing That Will Actually Work
    3. 7.3. Producing Atom Feeds
      1. 7.3.1. Validating Atom Feeds
  11. 8. Parsing and Using Feeds
    1. 8.1. Important Issues
      1. 8.1.1. Converting Atom to RSS
    2. 8.2. JavaScript Display Parsers
      1. 8.2.1. RSS XPress
      2. 8.2.2. Other Examples to Try
    3. 8.3. Parsing for Programming
      1. 8.3.1. PHP: MagpieRSS
        1. 8.3.1.1. Using MagpieRSS
      2. 8.3.2. Python: The Universal Feed Parser
        1. 8.3.2.1. A complete aggregator in 40 lines
      3. 8.3.3. Perl: XML::Simple
        1. 8.3.3.1. Parsing RSS as simply as possible
    4. 8.4. Using Regular Expressions
    5. 8.5. Using XSLT
    6. 8.6. Client-Side Inclusion
    7. 8.7. Server-Side Inclusion
      1. 8.7.1. Enabling Server-Side Includes Within Apache 1.3.x
      2. 8.7.2. Server-Side Includes with Microsoft IIS
  12. 9. Feeds in the Wild
    1. 9.1. Once You Have Created Your Simple RSS Feed
      1. 9.1.1. Publish a Link
      2. 9.1.2. Enabling Autodiscovery
      3. 9.1.3. Serving a Feed Correctly
        1. 9.1.3.1. MIME types
        2. 9.1.3.2. HTTP 1.1
          1. 9.1.3.2.1. Compression
          2. 9.1.3.2.2. Conditional GET
        3. 9.1.3.3. RSScache.com
      4. 9.1.4. Registering with Aggregators
      5. 9.1.5. Metadata for the Main Page
      6. 9.1.6. Counting Hits and Clickthroughs
    2. 9.2. Publish and Subscribe
      1. 9.2.1. Publish and Subscribe Within RSS 2.0
      2. 9.2.2. Publish and Subscribe with RSS 1.0
    3. 9.3. Rolling Your Own: LinkPimp PubSub
    4. 9.4. LinkpimpClient.pl
      1. 9.4.1. LinkpimpListener.pl
  13. 10. Unconventional Feeds
    1. 10.1. Apache Logfiles
      1. 10.1.1. Walking Through the Code
      2. 10.1.2. The Entire Listing
    2. 10.2. Code TODOs to RSS
      1. 10.2.1. Walking Through the Code
      2. 10.2.2. The Entire Listing
    3. 10.3. Daily Doonesbury
      1. 10.3.1. Walking Through the Code
      2. 10.3.2. The Entire Listing
    4. 10.4. Amazon.com Wishlist to RSS
      1. 10.4.1. Walking Through the Code
      2. 10.4.2. The Entire Listing
    5. 10.5. FedEx Parcel Tracker
      1. 10.5.1. Walking Through the Code
      2. 10.5.2. The Entire Listing
    6. 10.6. Google to RSS with SOAP
      1. 10.6.1. Walking Through the Code
      2. 10.6.2. The Entire Listing
    7. 10.7. Last-Modified Files
      1. 10.7.1. Walking Through the Code
      2. 10.7.2. The Entire Listing
    8. 10.8. Installed Perl Modules
      1. 10.8.1. Walking Through the Code
      2. 10.8.2. The Entire Listing
    9. 10.9. The W3C Validator to RSS
      1. 10.9.1. Walking Through the Code
      2. 10.9.2. The Entire Listing
    10. 10.10. Game Statistics to Excel
    11. 10.11. Feeds by SMS
    12. 10.12. Podcasting Weather Forecasts
      1. 10.12.1. How to Use It
      2. 10.12.2. The Code Itself
    13. 10.13. Having Amazon Produce Its Own RSS Feeds
    14. 10.14. Cross-Poster for Movable Type
      1. 10.14.1. Walking Through the Code
      2. 10.14.2. The Entire Listing
  14. 11. Developing New Modules
    1. 11.1. Namespaces and Modules Within RSS 2.0 and Atom
      1. 11.1.1. Differences from RSS 1.0
    2. 11.2. Case Study: mod_Book
      1. 11.2.1. What Do We Know?
      2. 11.2.2. Can We Express This Data Already?
      3. 11.2.3. Putting the New Elements to Work with RSS 2.0
      4. 11.2.4. Putting the New Elements to Work with RSS 1.0
      5. 11.2.5. Documentation
    3. 11.3. Extending Your Desktop Reader
    4. 11.4. Introducing AmphetaDesk
      1. 11.4.1. Installing AmphetaDesk
      2. 11.4.2. index.html
  15. A. The XML You Need for RSS
    1. A.1. What Is XML?
    2. A.2. Anatomy of an XML Document
      1. A.2.1. Elements and Attributes
      2. A.2.2. Name Syntax
      3. A.2.3. Well-Formedness
      4. A.2.4. Comments
      5. A.2.5. Entity References
      6. A.2.6. Character References
      7. A.2.7. Character Encodings
        1. A.2.7.1. Unicode encoding schemes
        2. A.2.7.2. Other character encodings
      8. A.2.8. Validity
        1. A.2.8.1. Document type definitions (DTDs)
      9. A.2.9. Putting It Together
      10. A.2.10. XML Namespaces
    3. A.3. Tools for Processing XML
      1. A.3.1. Selecting a Parser
      2. A.3.2. XSLT Processors
  16. B. Useful Sites and Software
    1. B.1. Uber Resources
    2. B.2. Specification Documents
    3. B.3. Mailing Lists
    4. B.4. Validators
    5. B.5. Desktop Readers
  17. Index
  18. About the Author
  19. Colophon
  20. Copyright