rss feed creation tool
logo
FeedForAll RSS Feed Creation Site Map Contact FeedForAll
Welcome!

RSS Namespaces

RSS Extensions (Namespaces) and FeedForAll V2.0 and FeedForAll Mac v1.5

This document covers:
Introduction of Namespaces
Extensions in FeedForAll
Extension Usage Introduction


For those of you who already know what XML namespaces are, and just want to know how FeedForAll supports them, pleases skip ahead to the Extensions in FeedForAll Section.

For the rest, this section is for you. First of all, what are RSS Extensions? Well, technically they are called 'XML Namespaces', but we will call them 'RSS Extensions', or just 'Extensions', in most of this document, mainly because we will be talking about how namespaces specifically apply to RSS feeds, and extends their capabilities.

For this all to make sense, I am going to have to go into a little boring history, so hang in there... First came XML. XML is probably the most flexible way to store data in a file. It is widely used on the Internet, and in all kinds of other applications. Entire books have been written on the subject (which is a nice way to say I'm not going into details about it here). All you really need to know about XML is that it is a markup language very similar to HTML. It defines how to use tags (i.e. ) to describe information in a file. Now the smart people who came up with XML made it incredibly flexible, so that it could handle just about any type of data know to mankind. As a matter of fact, it is defined in such a generic manor, that XML by itself is of little use. The problem is that there are almost no tags defined by the XML specification. In XML you can basically make up what tags you want to use. You could use things like '
<mytag>I put my data here</mytag> and '<kdhdyeg> I like weird tag names </kdhdyeg>'

This is where RSS comes in. The RSS specification defines what types of data can be included in an RSS feed file, and the tags to use to describe it. RSS defines tags like ,<image> , etc. This is incredibly important because it allows groups of people to format their data in a standard way, so it can be used by many different programs. So, for a while life was good. The RSS specification defined the fields that could be used to store information, to syndicate articles, blog entries, and other similar types of information. Because RSS is so useful, and became so successful, people wanted to start using it for thing similar to syndicating articles, but different.

I will use Apple's iTunes as an example. Apple wanted a standard way to allow people to add their podcasts (RSS feeds with audio enclosures - standard RSS stuff), to their iTunes software and service. The problem was, they needed the files to include additional information. For example they wanted the duration (i.e. hours/minutes/seconds) of the audio file, to be included in the RSS feed. Here is where the flexibility of RSS (because is uses XML) comes into play. In RSS, you can add as may of your own tags, and as much of your own data to the file as you want. You can make stuff up and just add it in, as long as it doesn't somehow conflict with any of the existing RSS stuff in the file. So, what this means is that apple can just start using a tag named '<duration>' in their iTunes podcasts. Life is good again... or not. Here lies the problem. What is to stop more than one person/company from using the same tag. Duration in iTunes is used to describe the length of an audio clip. Someone else may be using the '<duration>' tag to describe how long there mother-in-law is staying with them, and their '<duration>' information is measured in days/months/ and if conceivably possible, years. This brings up back to the original problem that XML has of not having well defined fields. Or, more importantly, people using the same tag names for very different purposes.

Enter XML Namespaces, or as they pertain to us, RSS Extensions. In XML (and therefore in RSS also), at the beginning of the file you can define a prefix to use before all of your custom tags. The prefix declaration defines what the prefix will be and what is is used for. I know that is kind of vague, so I will give an example.

Here is the iTunes namespace declaration: xmlns:itunes="http://www.itunes.com/DTDs/Podcast-1.0.dtd" What this says is that 'itunes:' will go in front of every tag that this namespace uses, and you can find out more information about the tags used in this namespace (i.e. what the heck they are for) at http://www.itunes.com/DTDs/Podcast-1.0.dtd Our mother-in-law host could also define his own namespace like this: xmlns:mil="http://www.mydomain.com/motherinlaw.dtd" Now, whenever you want to use an iTunes duration in your RSS feed, the tag would look like this: <itunes:duration> , and the mother-in-law one would look like this <mil:duration>.

The use of namespaces basically allows you to extend the capabilities of the standard RSS format, and add your own mini-specification to it, without worrying about interfering with other uses of RSS.

Hopefully some of that made at least a little sense. If nothing else, understand that namespaces have given rise to several useful RSS extensions that are being widely used. RSS extensions have been created and are being used by Apple, Yahoo!, Microsoft, and many others. They basically allow people and companies to add capabilities RSS feeds, and define what the additional data is used for.

Extensions in FeedForAll

So, how does FeedForAll support RSS extensions (namespaces)? The short answer is that FeedForAll v2.0 has full and complete support for all RSS 2.0 Extensions. The long answer is that FeedForAll has two levels of support for extensions. There are 'well supported' extensions, and 'generically supported' extensions. The well supported extensions (for example iTunes) have their own custom tab in FeedForAll, with nicely laid out data fields, descriptions, and help info. This makes it extremely easy to use these extensions in your RSS feeds and podcasts. Now, realistically, there is now way to do the same for every RSS Extension in existence. There are just too may, many aren't documented very well(if at all), and some are only used internally within an organization or company. For these namespaces FeedForAll allows users to edit the namespace tags and data directly in an XML editor.

How to use Extensions in FeedForAll Add an existing extension to a feed:


1.
Open your feed.
2. From the program's tabs choose 'Feed' -> 'Extensions' -> 'General'.
3. Click the '+' button.
4. Select an extension from the list.
5. A new tab for that extension will now appear under 'Extensions' for each of the 'Feed', 'Item' and 'Image' tabs.

Add an new (not yet defined) extension to a feed

1. Open your feed.
2. From the program's tab choose 'Feed' -> 'Extensions' -> 'General'.
3. Click the '+' button.
4. At the bottom of the 'Add namespace declaration' screen, enter a name for this namespace. This will be the prefix used before all the tags for this new namespace
5. If the namespace has a DTD, enter the URL to it also

Remove an extension from a feed:

1. Open your feed.
2. From the program's tabs choose 'Feed' -> 'Extensions' -> 'General'.
3. Highlight the extension you want to remove.
4. Click the '-' button.
5. All data in your feed that uses the namespace will be removed, and the namespace's tabs will disappear.

Edit data for an extension:

1. Well supported namespaces will have their own tab under the 'Extensions' tab for 'Feed', 'Item', and 'Image'. However if that namespace doesn't have any fields for that particular section of the feed (i.e. Feed, Item, and Image), the tab will not be displayed.
1a. Generically supported namespaces will also have a tab under each of the 'Extensions' tabs.
2. Simply go to the extension's tab and fill in the fields.
2a. Generically supported namespaces will have one large XML editor box for each section of the feed (i.e. Feed, Item and Image). Enter the namespace's tags and data here.