Spec: CDF (Microsoft) - simplepie/simplepie-ng GitHub Wiki

Archivist's Note: This is the CDF specification submitted to the W3C by Microsoft on March 10, 1997. It referenced an early draft of the XML specification whose rules changed before it became a Recommendation in 1998. The code in this version has been updated to reflect the final XML specification.

Copyright © 1997 Microsoft Corp. Version 1997-03-10

Table of Contents

Authors

Introduction

The Channel Definition Format is an open specification that permits a web publisher to offer frequently updated collections of information, or channels, from any web server for automatic delivery to compatible receiver programs on PCs or other information appliances.

Automatic means that the user need only choose the channel once, and thereafter, scheduled deliveries of information to the client will occur without further user intervention.

Standard web server means that any web server that uses the HTTP 1.0 or later protocol can broadcast channels.

Compatible means any program that implements processing and retrieving content as specified by the Channel Definition Format described below.

When downloaded to a client, CDFs act as a local index to its channel's available content. For example, a receiver program can present the implicit hierarchy in a CDF within a channel selector.

Element Definitions

The Channel Definition Format is an application of the Extensible Markup Language (XML). Thus its definition consists of the various XML elements defined in this section. See the references section for information on XML work in progress.

The CDF contains the following major elements:

  • Channel - defined a channel
  • Item - defines a channel item, a unit of information which is available form a channel
  • UserSchedule - reference to a client/user specified schedule
  • Schedule - defines a particular schedule
  • Logo - defines an image to represent a channel or channel item
  • Tracking - defines user tracking parameters of a channel
  • CategoryDef - defines a category, possibly as a child category of another category

For each one of these major elements there are a number of minor elements that a relevant to a major elements. The following sections define the major elements along with the minor elements that are relevant to them. In each section, XML DTD declarations are provided for precise definition of elements and attributes. The collection of XML DTD declarations found in this specification can be arbitrarily extended to add new elements and attributes for new enhancements.

A number or minor elements are used by both the <Channel> element and the <Item> element. The following section defines these.

Common Child Elements of <Channel> and <Item>

The following elements provide basic information about both channels and channel items.

Elements Description Type # allowed Default
LastMod Last modified date for this web page ISO 8601:1988 Date 0 or 1
Title Title String 0 or 1
Abstract Short description summarizing the article (200 characters or less recommended) String 0 or 1
Author Author String Any
Publisher Publisher String Any
Copyright Copyright String 0 or 1
PublicationDate Publication Date String 0 or 1
Logo Visual Logo for channel Logo element Any
Keywords Comma delimited keywords that match this channel String Any
Category A category to which this web page belongs in. The string value is a URI to a CategoryDef element. Category element Any
Ratings Rating of the channel by one or more ratings services. (String found in PICS label meta tag.) String Any
Schedule Schedule for keeping channel up to date Schedule element 0 or 1
UserSchedule Reference to a client/user specified schedule UserSchedule element 0 or 1

XML DTD

<!ELEMENT LastMod EMPTY>  
<!ATTLIST LastMod VALUE CDATA #REQUIRED>  
<!ELEMENT Title EMPTY>  
<!ATTLIST Title VALUE CDATA #REQUIRED>  
<!ELEMENT Abstract EMPTY>  
<!ATTLIST Abstract VALUE CDATA #REQUIRED>  
<!ELEMENT Author EMPTY>  
<!ATTLIST Author VALUE CDATA #REQUIRED>  
<!ELEMENT Publisher EMPTY>  
<!ATTLIST Publisher VALUE CDATA #REQUIRED>  
<!ELEMENT Copyright EMPTY>  
<!ATTLIST Copyright VALUE CDATA #REQUIRED>  
<!ELEMENT PublicationDate EMPTY>  
<!ATTLIST PublicationDate VALUE CDATA #REQUIRED>  
<!ELEMENT Keywords EMPTY>  
<!ATTLIST Keywords VALUE CDATA #REQUIRED>  
<!ELEMENT Category EMPTY>  
<!ATTLIST Category VALUE CDATA #REQUIRED>  
<!ELEMENT Rating EMPTY>  
<!ATTLIST Rating PICS-Label CDATA #REQUIRED>

<Channel> Element

Defines a channel

XML DTD

<!ELEMENT Channel ( LastMod | Title | Abstract | Author | Publisher | Copyright | PublicationDate | Keywords | Category | Rating | Channel | Item | Schedule | IntroURI | Authorization | IsClonable | MinStorage | Tracking )* >

Attributes

Attribute Description Type # allowed Default
HREF URI for the next updated version of this channel URI No
IsClonable Can channel be copied or moved within the channel changer hierarchy Boolean No
<!ATTLIST Channel HREF CDATA #IMPLIED>  
<!ATTLIST Channel IsClonable (YES | NO) "NO">

Elements shared between Channel elements and Item elements (see above):

LastMod, Title, Abstract, Author, Publisher, Copyright, PublicationDate, Logo, Keywords, Category, Ratings, Schedule

Child elements of the Channel element only:

Attribute Description Type # allowed Default
Channel One or more subchannels of this channel Channel element or link Any
Item One or more article profiles, each providing information on a unit of content, usually a web page. Item Profile Any
IntroURI URI to introductory web page for channel. Can provide general and setup information URI 0 or 1
Authorization Certification of executable content downloadable by this channel ("Authenticode for channels") URI 0 or 1
MinStorage Minimum storage size required, in kilobytes Number 0 or 1 0
Tracking Profile providing information on how channel should perform user tracking Tracking Profile 0 or 1

XML DTD for minor elements

<!ELEMENT IntroURI EMPTY>  
<!ATTLIST IntroURI VALUE CDATA #REQUIRED>  
<!ELEMENT Authorization EMPTY>  
<!ATTLIST Authorization VALUE CDATA #REQUIRED>  
<!ELEMENT MinStorage EMPTY>  
<!ATTLIST MinStorage VALUE CDATA "0">

<Item> Element

Defines an item of a channel, a unit of information for the user, usually corresponding to a web page.

XML DTD

<!ELEMENT Item ( LastMod, Title, Abstract, Author, Publisher, Copyright, PublicationDate, Keywords, Category, Rating, Schedule, Usage )* >

Attributes:

Attribute Description Type # allowed Default
HREF URI of article contents URI Exactly One N/A
MIMEType MIME Type of article contents String 0 or 1
IsVisible This item should be visible to the user. Boolean 0 or 1 YES
Priority Priority of this item (HI, NORMAL, LOW) String 0 or 1 NORMAL
Precache Publisher recommended download behavior. YES = do retrieve contents into cache. NO = do not retrieve contents into cache. DEFAULT = what ever the user has as default. String 0 or 1 DEFAULT
<!ATTLIST Item HREF CDATA #REQUIRED>  
<!ATTLIST Item MIMEType CDATA #IMPLIED>  
<!ATTLIST Item IsVisible (YES, NO) "YES">  
<!ATTLIST Item Priority (HI, NORMAL, LOW) "NORMAL">  
<!ATTLIST Item Precache (YES, NO, DEFAULT) "DEFAULT">

Elements shared between Channel elements and Item elements (see above):

LastMod, Title, Abstract, Author, Publisher, Copyright, PublicationDate, Logo, Keywords, Category, Ratings, Schedule

Child Element of the Item element only:

Attribute Description Type # allowed Default
Usage Start tag should have VALUE=usage where usage indicates how this item should be used. Children elements can specify more parameters. Any profile 0 or 1

XML DTD for minor elements

<!ELEMENT Usage ANY>
<!ATTLIST Usage VALUE CDATA #REQUIRED>

<UserSchedule> Element

The UserSchedule element specifies a client side user defined schedule.

Attribute Description Type # allowed Default
UserSchedule ID/name for predefined/client defined schedule String 0 or 1

XML DTD

<!ELEMENT UserSchedule EMPTY>
<!ATTLIST UserSchedule VALUE (DAILY, WEEKLY, HOURLY) #REQUIRED>

Schedule Element

The Schedule element defines a bounded repeating interval of time.

XML DTD

<!ELEMENT Schedule ( StartDate?, EndDate?, IntervalTime?, EarliestTime?, LatestTime? ) >

Child Elements:

Child Element Description Type # allowed Default
Start This is the day upon which the schedule will start to apply. ISO 8601:1988 Date 0 or 1 Start immediately
End This is the day upon which the schedule expires and no longer applies. ISO 8601:1988 Date 0 or 1 Never end
IntervalTime The interval of time that the schedule should repeat over IntervalTime element 0 or 1 Only perform once (infinity)
EarliestTime Earliest time during the schedule interval that the schedule applies to. EarliestTime element 0 or 1 At the beginning of the interval
LatestTime Latest time during the schedule interval that the schedule applied to. If it is not equal to EarliestTime, then the time is randomly chosen in range. LatestTime element 0 or 1 At the beginning of the interval

XML DTD for minor elements

<!ELEMENT StartDate EMPTY>  
<!ATTLIST StartDate VALUE CDATA #REQUIRED>  
<!ELEMENT EndDate EMPTY>  
<!ATTLIST EndDate VALUE CDATA #REQUIRED>  
<!ELEMENT IntervalTime EMPTY>  
<!ATTLIST IntervalTime DAY CDATA "0">  
<!ATTLIST IntervalTime HOUR CDATA "0">  
<!ATTLIST IntervalTime MIN CDATA "0">  
<!ATTLIST IntervalTime SEC CDATA "0">  
<!ELEMENT EarliestTime EMPTY>  
<!ATTLIST EarliestTime DAY CDATA "0">  
<!ATTLIST EarliestTime HOUR CDATA "0">  
<!ATTLIST EarliestTime MIN CDATA "0">  
<!ATTLIST EarliestTime SEC CDATA "0">  
<!ELEMENT LatestTime EMPTY>  
<!ATTLIST LatestTime DAY CDATA "0">  
<!ATTLIST LatestTime HOUR CDATA "0">  
<!ATTLIST LatestTime MIN CDATA "0">  
<!ATTLIST LatestTime SEC CDATA "0">

<Logo> Element

The Logo element defines an image that can be used to represent a channel or channel item.

Attribute Description Type # allowed Default
HREF (Required) URL to the image for the logo URI Exactly One N/A
Type String indicating what context image should be used. (BIG, WIDE, SMALL, REGULAR) String Any REGULAR

XML DTD

<!ELEMENT Logo EMPTY>  
<!ATTLIST Logo HREF CDATA #REQUIRED>  
<!ATTLIST Logo TYPE (BIG WIDE SMALL REGULAR) "REGULAR">

Tracking Element

The Tracking element indicated how a channel can or should support user tracking.

Attribute Description Type # allowed Default
PostURL The URL to post tracking results to URL Exactly One N/A

XML DTD

<!ELEMENT Tracking (PostURL?)>  
<!ELEMENT PostURL EMPTY>  
<!ATTLIST PostURL HREF CDATA #REQUIRED>

<CategoryDef> Element

This profile provides a generic container for properties of a category. Item profiles (used by channel and article profiles) can reference to these category elements using the URI #foo when ID="foo" is a parameter in the Category tag.

Child Element Description Type # allowed
CategoryName Name of category String Exactly One
Description Textual description of category String 0 or 1
CategoryDef Sub-categories Category element Any

XML DTD

<!ELEMENT Tracking (PostURL?)>  
<!ELEMENT PostURL EMPTY>  
<!ATTLIST PostURL HREF CDATA #REQUIRED>

Examples

<!DOCTYPE Channel
  SYSTEM 'http://www.w3c.org/Channel.dtd'>
<Channel HREF="http://www.foosports.com/foosports.cdf" IsClonable="YES">
    <IntroUrl VALUE="http://www.foosports.com/channel-setup.html"/>
    <LastMod VALUE="1994.11.05T08:15-0500"/>
    <Title VALUE="FooSports"/>
    <Abstract VALUE="The latest in sports and atheletics from FooSports"/>
    <Author VALUE="FooSports"/>
    <Logo HREF="http://www.foosports.com/images/logo.gif" Type="REGULAR"/>
    <Schedule>
        <EndDate VALUE="1994.11.05T08:15-0500"/>
        <IntervalTime DAY="1"/>
        <EarliestTime HOUR="12"/>
        <LatestTime HOUR="18"/>
    </Schedule>
    <Item HREF="http://www.foosports.com/articles/a1.html">
        <LastMod VALUE="1994.11.05T08:15-0500"/>
        <Title VALUE="How to get the most out of your mountain bike"/>
        <Abstract VALUE="20 tips on how to work your mountain-bike to the bone and come out on top."/>
        <Author VALUE="FooSports"/>
    </Item>
    <Channel IsClonable="NO">
        <LastMod VALUE="1994.11.05T08:15-0500"/>
        <Title VALUE="FooSports News"/>
        <Abstract VALUE="Up-to-date daily sports news from FooSports"/>
        <Author VALUE="FooSports"/>
        <Logo HREF="http://www.foosports.com/images/newslogo.gif" Type="REGULAR"/>
        <Logo HREF="http://www.foosports.com/images/newslogowide.gif" Type="WIDE"/>
        <Item HREF="http://www.foosports.com/articles/news1.html">
            <LastMod VALUE="1994.11.05T08:15-0500"/>
            <Title VALUE="Michael Jordan does it again!"/>
            <Abstract VALUE="Led by Michael Jordan in scoring, the Chicago Bulls make it to the playoffs again!"/>
            <Author VALUE="FooSports"/>
        </Item>
        <Item HREF="http://www.foosports.com/articles/news2.html">
            <LastMod VALUE="1994.11.05T08:15-0500"/>
            <Title VALUE="Islanders winning streak ends"/>
            <Abstract VALUE="The New York islanders' 10-game winning streak ended with a disappointing loss to the Rangers"/>
            <Author VALUE="FooSports"/>
        </Item>
    </Channel>
    <Item HREF="http://www.foosports.com/animations/scrnsvr.html">
        <Usage VALUE="ScreenSaver"/>
    </Item>
    <Item HREF="http://www.foosports.com/ticker.html">
        <Title VALUE="FooSports News Ticker"/>
        <Abstract VALUE="The latest sports headlines from FooSports"/>
        <Author VALUE="FooSports"/>
        <LastMod VALUE="1994.11.05T08:15-0500"/>
        <Usage VALUE="DesktopComponent">
            <Width VALUE="400"/>
            <Height VALUE="80"/>
        </Usage>
        <Schedule>
            <StartDate VALUE="1994.11.05T08:15-0500"/>
            <EndDate VALUE="1994.11.05T08:15-0500"/>
            <IntervalTime DAY="1"/>
            <EarliestTime HOUR="12"/>
            <LatestTime HOUR="18"/>
        </Schedule>
    </Item>
</Channel>

References

The XML W3C Working Draft is at http://www.w3.org/pub/WWW/TR/WD-xml-961114.html.

[RFC-1738] Berners-Lee, T., Masinter, L., and M. McCahill, Editors, "Uniform Resource Locators (URL)", RFC 1738, CERN, Xerox Corporation, University of Minnesota, December 1994.

[RFC-2045] Freed, N., and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies", RFC 2045, Innosoft, First Virtual Holdings, November 1996.

[RFC-2048] Freed, N., Klensin, J., and J. Postel, "Multipurpose Internet Mail Extensions (MIME) Part Four: MIME Registration Procedures", RFC 2048, Innosoft, MCI, ISI, November 1996.

⚠️ **GitHub.com Fallback** ⚠️