- XML Reference Guide
- Overview
- What Is XML?
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Table of Contents
- The Document Object Model
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- DOM and Java
- Informit Articles and Sample Chapters
- Books and e-Books
- Implementations
- DOM and JavaScript
- Using a Repeater
- Repeaters and XML
- Repeater Resources
- DOM and .NET
- Informit Articles and Sample Chapters
- Books and e-Books
- Documentation and Downloads
- DOM and C++
- DOM and C++ Resources
- DOM and Perl
- DOM and Perl Resources
- DOM and PHP
- DOM and PHP Resources
- DOM Level 3
- DOM Level 3 Core
- DOM Level 3 Load and Save
- DOM Level 3 XPath
- DOM Level 3 Validation
- Informit Articles and Sample Chapters
- Books and e-Books
- Documentation and Implementations
- The Simple API for XML (SAX)
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- SAX and Java
- Informit Articles and Sample Chapters
- Books and e-Books
- SAX and .NET
- Informit Articles and Sample Chapters
- SAX and Perl
- SAX and Perl Resources
- SAX and PHP
- SAX and PHP Resources
- Validation
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Document Type Definitions (DTDs)
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- XML Schemas
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- RELAX NG
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Schematron
- Official Documentation and Implementations
- Validation in Applications
- Informit Articles and Sample Chapters
- Books and e-Books
- XSL Transformations (XSLT)
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- XSLT in Java
- Java in XSLT Resources
- XSLT and RSS in .NET
- XSLT and RSS in .NET Resources
- XSL-FO
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- XPath
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- XML Base
- Informit Articles and Sample Chapters
- Official Documentation
- XHTML
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- XHTML 2.0
- Documentation
- Cascading Style Sheets
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- XUL
- XUL References
- XML Events
- XML Events Resources
- XML Data Binding
- Informit Articles and Sample Chapters
- Books and e-Books
- Specifications
- Implementations
- XML and Databases
- Informit Articles and Sample Chapters
- Books and e-Books
- Online Resources
- Official Documentation
- SQL Server and FOR XML
- Informit Articles and Sample Chapters
- Books and e-Books
- Documentation and Implementations
- Service Oriented Architecture
- Web Services
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Creating a Perl Web Service Client
- SOAP::Lite
- Amazon Web Services
- Creating the Movable Type Plug-in
- Perl, Amazon, and Movable Type Resources
- Apache Axis2
- REST
- REST Resources
- SOAP
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- SOAP and Java
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- WSDL
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- UDDI
- UDDI Resources
- XML-RPC
- XML-RPC in PHP
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Ajax
- Asynchronous Javascript
- Client-side XSLT
- SAJAX and PHP
- Ajax Resources
- JSON
- Ruby on Rails
- Creating Objects
- Ruby Basics: Arrays and Other Sundry Bits
- Ruby Basics: Iterators and Persistence
- Starting on the Rails
- Rails and Databases
- Rails: Ajax and Partials
- Rails Resources
- Web Services Security
- Web Services Security Resources
- SAML
- Informit Articles and Sample Chapters
- Books and e-Books
- Specification and Implementation
- XML Digital Signatures
- XML Digital Signatures Resources
- XML Key Management Services
- Resources for XML Key Management Services
- Internationalization
- Resources
- Grid Computing
- Grid Resources
- Web Services Resource Framework
- Web Services Resource Framework Resources
- WS-Addressing
- WS-Addressing Resources
- WS-Notifications
- New Languages: XML in Use
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Google Web Toolkit
- GWT Basic Interactivity
- Google Sitemaps
- Google Sitemaps Resources
- Accessibility
- Web Accessibility
- XML Accessibility
- Accessibility Resources
- The Semantic Web
- Defining a New Ontology
- OWL: Web Ontology Language
- Semantic Web Resources
- Google Base
- Microformats
- StructuredBlogging
- Live Clipboard
- WML
- XHTML-MP
- WML Resources
- Google Web Services
- Google Web Services API
- Google Web Services Resources
- The Yahoo! Web Services Interface
- Yahoo! Web Services and PHP
- Yahoo! Web Services Resources
- eBay REST API
- WordML
- WordML Part 2: Lists
- WordML Part 3: Tables
- WordML Resources
- DocBook
- Articles
- Books and e-Books
- Official Documentation and Implementations
- XML Query
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- XForms
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Resource Description Framework (RDF)
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Topic Maps
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation, Implementations, and Other Resources
- Rich Site Summary (RSS)
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Simple Sharing Extensions (SSE)
- Atom
- Podcasting
- Podcasting Resources
- Scalable Vector Graphics (SVG)
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- OPML
- OPML Resources
- Summary
- Projects
- JavaScript TimeTracker: JSON and PHP
- The Javascript Timetracker
- Refactoring to Javascript Objects
- Creating the Yahoo! Widget
- Web Mashup
- Google Maps
- Indeed Mashup
- Mashup Part 3: Putting It All Together
- Additional Resources
- Frequently Asked Questions About XML
- What's XML, and why should I use it?
- What's a well-formed document?
- What's the difference between XML and HTML?
- What's the difference between HTML and XHTML?
- Can I use XML in a browser?
- Should I use elements or attributes for my document?
- What's a namespace?
- Where can I get an XML parser?
- What's the difference between a well-formed document and a valid document?
- What's a validating parser?
- Should I use DOM or SAX for my application?
- How can I stop a SAX parser before it has parsed the entire document?
- 2005 Predictions
- 2006 Predictions
- Nick's Book Picks
I've always said that if you're busy enough to need a VCR, you're probably too busy to enjoy it. For years, I never really got the benefit of my VCR, because even if I could figure out how to program it to tape my favorite shows without me actually standing there to press the "record" button, I could never manage to have the proper tapes in it at just the right moment.
Enter Tivo. Or I suppose I should be proper and say "Digital Video Recording", or DVR.
After years of drooling, I finally got a DVR for my birthday, and I'm hooked. Bad. Now I can just tell the box to record, say, every episode of Long Way Round or Lost. The box does the rest. When I'm ready to watch Ewan McGregor ride across Europe, it's there for me. I can even save it off to VCR -- when it's convenient for me.
Podcasting, a special use for RSS (hence its inclusion here) takes that concept and brings it to the internet. Instead of spending hours searching for content to add to your iPod, or worse, podcasting lets you subscribe to podcast "feeds", or lists of recently updated content. With the right tools, that content can be automatically added to your media player, or even your portable iPod, so when you're ready to listen, the content is there, no muss, no fuss.
Let's look at how you can make this happen with your own content.
Creating a podcast is actually fairly straightforward. It involves 5 steps:
- Record your content. You can do this any number of ways, but please allow me to recommend the open-source Audacity. A dream com true. Really.
- Save your content as an MP3 file. Actually, this step is almost optional. You do have to save the file, of course, but technically you can podcast any kind of downloadable media, including video and images, or even other documents. At the moment, however, MP3 is the most commonly supported format.
- Upload your file. The whole point is that users should be able to download your content, so of course it has to be available online. Besides, you'll need the URL for step 4.
- Create your podcast feed. A podcast feed is simply an RSS 2.0 or RSS 1.0 feed with the
enclosure
element. (RSS .9x doesn't include theenclosure
element.)
For example, as a test, I added a podcast to my own personal blog using my existing RSS feed. The resulting file looks like this:
<?xml version="1.0" encoding="iso-8859-1"?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <channel> <title>Chaos Magnet</title> <link>http://www.chaosmagnet.com/blog/</link> <description>The personal and professional ramblings of Nicholas Chase.</description> <dc:language>en-us</dc:language> ... <item> <title>Possibly the coolest audio tool ever</title> <link>http://www.chaosmagnet.com/blog/archives/000514.html</link> <description>Audacity is the answer to my sound editing prayers. Not only does it enable you to edit tracks, combine different tracks into a single file, and all kinds of effects, it actually removes that incredibly annoying hum that I've always...</description> <guid isPermaLink="false">514@http://www.chaosmagnet.com/blog/</guid> <dc:subject>Fun stuff</dc:subject> <dc:date>2004-12-06T12:19:56-05:00</dc:date> <enclosure url="http://www.chaosmagnet.com/blog/audio/audacity.mp3" length="370506" type="audio/mpeg" /> </item> <item> <title>Audio documentary tools</title> ... </item> </channel> </rss>
Theenclosure
element includes all of the information necessary to describe the actual file you want to podcast. Theurl
attribute points to the actual file. Thelength
attribute is the size of the file, in bytes, as opposed to the length, in time, of the audio. Finally, thetype
attribute lets the reader application know how to handle the actual enclosure. - Load your feed in a podcasting application. This is really more of a step for your potential audience.
With an application such as the open-source iPodder,
you can "subscribe" to one or more podcast feeds, as shown in Figure 1.
iPodder goes out and retrieves these enclosures, usually when you're not using the computer, and drops them into iTunes or your media player. If your iPod is connected, it will synch up automatically. For example, if you set iPodder to download overnight, when you get up in the morning, you can just grab your iPod and new audio will already be on it, ready for the drive to work or the walk to school.
OK, so what kind of information can you find via podcasting? At this moment, you'll find a few technology- oriented radio shows, and of course lots of content that's actually about podcasting, but that will change, and likely soon. Literally anybody can create a feed, so users can create lists of favorite music or even their own radio shows. Also, audio blogging, in which the blogger speaks rather than types, is catching on. (Though I'm not sure that's necessarily a good thing. Speaking and typing, good. Just speaking, bad.) What's more, because the enclosure simply refers to a URL, you can create a feed out of content that you don't even control.
It'll be interesting to see how this one falls out.