Info Bite List Specification
Version 1.0 - 2/12/2004
© 2004 Antone Roundy
  1. Mission Statement
  2. General
    1. Design Philosophy
    2. Namespace
    3. Filename Extension
    4. MIME type
    5. Common Attributes
      1. type
      2. mode
      3. xml:lang
    6. Sample Documents
    7. Format of Element Explanations
  3. Global Elements
    1. generator
    2. interval
    3. role
    4. rolespec
    5. skipday
    6. skiptime
    7. Defaults
      1. defif
      2. defifno
      3. defsetval
      4. defgetval
      5. defsetattr
      6. defgetattr
  4. Channel Elements
    1. channel
    2. category
    3. copyright
    4. date
    5. description
    6. link
    7. media
      1. copyright
      2. description
      3. height
      4. link
      5. size
      6. width
    8. rating
    9. tagline
    10. textinput
      1. content
      2. label
      3. submit
    11. title
  5. Item Elements
    1. item
    2. category
    3. content
    4. copyright
    5. date
    6. guid
    7. link
    8. media
    9. role
    10. summary
    11. textinput
    12. title
  6. Revision History
I. Mission Statement:
Info Bite List enables the publication and flexible use of collections and lists of data of many kinds while minimizing bandwidth requirements and promoting interoperability and flexibility through an extendable, XML-based format.

II. General:
Info Bite List is an XML-based content syndication format similar to RSS and Atom, and in fact, many concepts were adapted or borrowed directly from them. As the name suggests, it is geared toward the publishing of lists of bites of information. However, it could as easily be used to publish full content.

A. Design Philosophy
The guiding principles behind the development of the format are:

B. Namespace
The namespace name for Info Bite List 1.0 is "http://dtd.geckotribe.com/ibl/1.0/". Note that at present, there is no DTD at the address, and in fact, the subdomain doesn't even exist as of the writing of this document! By convention, the namespace prefix for an Info Bite List is "ibl", and the Info Bite List namespace is the default namespace. Thus, the opening tag for an Info Bite List file will usually be:

<ibl version="1.0" xmlns="http://dtd.geckotribe.com/ibl/1.0/">

C. Filename Extension
The standard filename extension for an Info Bite List is .ibl.

D. MIME type
The MIME type for an Info Bite List is application/xml+ibl.

E. Common Attributes
Any element with a value MAY specify type and mode attributes as follows. These apply only to the value of that element, and not to its other attributes or descendents. xml:lang applies more broadly, as noted:

F. Sample Documents

G. Format of Element Explanations
The explanations of the various elements that appear in an Info Bite List are formatted as follows:

element name Where and how many times the element may appear*
Notes about the element.
* Note: "File" means as a child of the outermost ibl element. Everything else is the name of an element which this element can be a child of.

value: An explanation of the value of the element (the data the appears between the opening and closing tags). We recommend specifying elements marked "value: none" as empty elements, ie., like <elementName attributes="" ... />
attributes:
required element Where and how many times the element may appear
Notes that required elements that are children of optional elements are only required if the parent element exists.

III. Global Elements:
A number of elements can exist as children of the ibl element. These are referred to as global elements. All of these elements may also appear as children of channel elements, and some as children of items, as specified. When an element appears at multiple levels, the latter may override the former.

All global elements MUST appear before the first channel element.

The global elements are as follows:
generator File, channel: <=1
value: A string representing the agent that created the channel.
attributes: none
interval File, channel: <=2
value: A number of minutes. Only one with each "rel" value is allowed.
attributes:
role File, channel, item: >=0
Role elements specify persons or other entities which played the specified role in the production of the file, channel or item. Outside of an item, rel MAY be omitted. In this case, the role does not apply at the file or channel level, but is specified simply to make it available for reference by an enclosed channel or item.

When a role defined elsewhere is referenced by id, if rel is specified, it overrides the rel specified where the role is defined.

value: none
attributes:
rolespec Role: >0
This element may appear only as a child of a role element.

value: The data indicated by the rel attribute.
attributes:
skipday File, channel: >=0
Days on which clients should not load the file or channel.

value: none
attributes: Skipday MAY have skiptime child elements specifying the time periods on the specified day during which the file or channel should not be loaded. If a timezone is specified, skiptimes are expressed in that timezone. If a skiptime period spans midnight, it may not all be part of the same day of the week. If no skiptimes are specified, the entire day should be skipped.
skiptime File, channel, skipday: >=0
Time periods during which clients should not load the file or channel.

value: none
attributes:
Defaults:
The remainder of the global elements are parts of a system for specifying default values for elements and their attributes. The use of defaults is optional, but can be useful in reducing the size of your data. Defaults are undoubtably the most complex part of the Info Bite List specification. You may wish to refer to the sample document to help you understand their usage.

Addressing Elements and Attributes:
A subset of XPath is used to address elements and their attributes in the "name" and "source" attibutes of some of the following. Only the following parts of XPath may be used:

When defaults elements appear outside of any channel, the initial "context node" is the enclosing ibl element, so "ibl" will not need to be part of any "name" or "source" attributes. When they appear inside a channel, the initial context node is the enclosing channel element, and thus "channel" will not need to be part of any "name" or "source" attributes.

One quick example:

role[@rel='author']/rolespec[@rel='name']/node()

The above refers to the real name of the author (the value of a rolespec element whose rel attribute equals "name", which is the child of a role element whose rel attribute equals "author").

defif File, channel, defif: >=0
Indicates an element to test for the existance of. If it exists, its child elements are processed.

value: none
attributes:
defifno File, channel, defif, defifno: >=0
Defifno is the opposite of defif: it tests for the non-existance of a particular element.

value: none
attributes:
defsetval defifno: <=1
Defsetval creates the element named by the name attribute of the parent defifno element. Defsetval cannot appear immediately inside defif, because the element will already exist--it does not override the value of an existing element.

value: The value to use for the element being created.
attributes: None.
defgetval defifno: >=0
Defgetval creates the element named by the name attribute of the parent defifno element, if the source is found. If the source is not found, the element is not created (in which case, another defgetval or defsetval could follow). It indicates an element or attribute whose value will be used as the value for element being created. Defgetval cannot be used immdiately inside defif, because the element will already exist.

value: none
attributes:
defsetattr defif, defifno: >=0
Defsetattr sets an attribute to the specified value in the element named by the name attribute of the parent defif or defifno element if it is not already set. If the attribute is already set, it is not modified. If the element does not exist (in the case of a defifno), the element is created.

value: none
attributes:
defgetattr defif, defifno: >=0
Defsetattr sets an attribute to a value which it gets from the location indicated, if it is not already set. If the source is not found, the attribute is not created (so another defgetattr or defsetattr for the same attribute could follow). If the attribute is already set, it is not modified. If the element does not exist (in the case of a defifno), the element is created.

value: none
attributes:
IV. Channel:

Any global element may appear as a child of a channel element. All item elements MUST appear after all other elements which are children of the channel.

channel File: >0
A channel defines an "Info Bite List".

value: none
attributes:
category Channel, item: >=0
value: An arbitrary category name or a value meaningful in the specified domain, if any.
attributes:
copyright Channel, item, media: <=1
value: Text describing copyrights to the channel or item.
attributes: none
date Channel, item: <=4
value: The value may either be a UNIX timestamp (in UTC time) or a W3C Date-Time string.
attributes:
description Channel: <=1
value: A description of the channel. Unlike RSS, brief taglines should go in the "tagline" element rather than here. This element is for longer descriptions.
attributes: none

link Channel, item: >=0
A link to another resource.

value: [OPTIONAL] The value of this tag is the text of the link when rendering it as HTML. If omitted, the client may choose what to render as the text of the link. For example, it could use the title attribute, the channel or item title, or whatever seems most appropriate under the circumstances.
attributes:
media Channel, item: >=0
Media points to an object intended to be rendered with the channel or item, for example, and image, video or sound file. It's child elements are listed below.

value: none
attributes:
copyright Channel, item, media: <=1
See channel copyright for details.
description Media: <=1
value: A description of or caption for the media object.
attributes: none
height Media: <=1
value: The height in pixels of the media object.
attributes: none
link Media: >=0
attributes: See link above for details of the value and other attributes.
size Media: <=1
value: The size in bites of the media object.
attributes: none
width Media: <=1
value: The width in pixels of the media object.
attributes: none
rating Channel: <=1
value: A value meaningful in the specified domain.
attributes:
tagline Channel: <=1
value: A tagline introducing the channel.
attributes: none
textinput Channel, item: >=0
A form which clients may use to sumbit text for whatever purpose you desire. The child elements of textinput are described below.

value: none
attributes:
content Textinput: <=1
value: Any explanitory or other related text to display with the textinput. This is NOT default contents for the textinput.
attributes: none
label Textinput: <=1
value: A textual label to show with the textinput.
attributes: none
submit Textinput: >=0
A submit button. If omitted, the client should render a button saying something to the effect of "submit".

value: none
attributes:
title Channel: 1
value: Text naming the channel.
attributes: none
V. Item Elements:

item Channel: >=0
It may seem strange that item is optional, but there are cases where there will be no items. For example, queries using the Info Bite API may result in channels with no items, and if an Info Bite List only contains items posted within a particular timeframe, it may be empty.

value: none
attributes:
category Channel, item: >=0
See channel category for details.
content Item: <=1
value: The full content of the item.
attributes: none
copyright Channel, item: <=1
See channel copyright for details.
date Channel, item: <=4
See channel date for details.
guid Item: <=1
value: An identifier that uniquely identifies this item globally (as opposed to within the scope of the channel, as is done by the item's id attribute).
attributes: NOTE: This element may be removed from future specifications. The preferred method is to use a link element with rel="self".
link Channel, item: >=0
See channel link for details.
media Channel, item: >=0
See channel media for details.
role File, channel, item: >=0
See global role for details.
summary Item: <=1
value: A brief version of the full content the item refers to. If the item does not link to full content, the content element should be used instead, even if it is brief.
attributes: none
textinput Channel, item: >=0
See channel textinput for details.
title Item: <=1
See channel title for details. Note that an item title is optional, while a channel title is required.
VI. Revision History:
Date Revision Notes
2/12/2004 1.0 Modified defaults to use XPath syntax. Replaced language element with xml:lang attribute. Fixed error in allowed quantities of various elements. Added clarifications.
2/11/2004 0.9 Original specification