[Mirrored from: http://www.microsoft.com/standards/cdf.htm, March 21, 1997]

Channel Definition Format (CDF)

Last updated: March 21, 1997

Note:
This specification is a preliminary draft that will undergo changes in the future. Although the information is partially incomplete and not final, we are providing the specification as a preview so that our partners may prepare for the final version.

Changes:
Since the last version of this spec, we've added a new section on feedback for changes, an introductory explanation of XML DTD declarations, some small examples for each element section, and a few other minor additions.

Editor:
Castedo Ellerman
Microsoft Corporation
castedoe@microsoft.com

Contents


1 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 computers. 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.

To clarify the terminology used in this document, refer to the following definitions:

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.


2 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 elements:

For each one of these elements there are a number of relevant child elements. The following sections define the elements and their associated child elements and attributes. The tables included list the child element or attribute name, a description, the type of data associated with that child element or attribute, and the valid number of times the it is allowed within the containing element. In some cases where applicable, the table includes a "default" column to indicate specific behavior that results when an attribute or child element is omitted from the CDF file.

2.0 Document Type Definitions

XML Document Type Definition (DTD) files define what elements and attributes are found in an application of XML. A program parsing an XML document does not necessarily need to process a DTD. For instance, most programs using CDF files will be programs that have built-in recognition of CDF elements and attributes, without the assistance of a DTD. Furthermore, CDF processing programs can even parse extensions to CDF without having to access a new DTD. This benefit, which results from the syntax of XML, allows 3rd parties to extend CDF to meet specialized needs.

A DTD contains tags defining each element and each attribute of an element via the "<!ELEMENT ..." and "<!ATTLIST ..." tags respectively. In each section of this specification are XML DTD declarations for CDF elements and attributes. For an explaination of XML DTD declarations see the W3C XML working draft [see reference section]. Here is a quick and simplified summary of the XML DTD declarations used in this specification:

<!ELEMENT Name Children > - Defines an element (e.g. <Channel> ... </Channel>)

<!ATTLIST ElementName AttName Type Default> - Defines an attribute of an element (e.g. <Channel HREF="foo.htm" > ... )

2.1 Common Child Elements of Channel and Item

The following child elements provide basic information used by the Channel and Item elements.

Elements Description Type # allowed
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 URL 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>

DTD information for the Logo, Schedule, and UserSchedule elements are documented below.

Note

Information relating to suggested changes for these child elements can be found in the Feedback section.


2.2 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
HREF URL for the next updated version of this channel URL 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">

Shared Child Elements:

The following elements described in section 2.1 are supported by the Channel and Item Elements: LastMod, Title, Abstract, Author, Publisher, Copyright, PublicationDate, Logo, Keywords, Category, Ratings, Schedule

Child Elements of the Channel Element only:

Elements 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 URL to introductory web page for channel. Can provide general and setup information URL 0 or 1  
Authorization Certification of executable content downloadable by this channel ("Authenticode for channels") URL 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 Child 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">

Channel Element Example

<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" />
        .
        
            ...
        
        .
        .
        .
</Channel>

Note

Information relating to suggested changes for this element can be found in the Feedback section.


2.3 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 URL of article contents URL 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 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">

Shared Child Elements:

The following elements described in section 2.1 are supported by the Channel and Item Elements: LastMod, Title, Abstract, Author, Publisher, Copyright, PublicationDate, Logo, Keywords, Category, Ratings, Schedule

Child Element of the Item Element only:

Element Description Type # allowed
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 Child Elements

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

Item Element Example

<Item
HREF="http://www.foosports.com/animations/scrnsvr.html"
     IsVisible=YES Priority=HI Precache=YES />
     <LastMod VALUE="1994.11.05T08:15-0500" />
     <Title VALUE="FooSports News" />
     <Abstract VALUE="How news screensaver from FooSports"
/>
     <Author VALUE="FooSports" />
     <Usage VALUE="ScreenSaver"></Usage>
</Item>

Note

Information relating to suggested changes for this element can be found in the Feedback section.


2.4 UserSchedule Element

The UserSchedule element specifies a client side user defined schedule.

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

XML DTD

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

UserSchedule Element Example

<UserSchedule VALUE="DAILY"
/>

2.5 Schedule Element

The Schedule element defines a bounded repeating interval of time that is intended to help publishers effectively manage their server traffic. The EarliestTime and LatestTime child elements listed below represent the valid range of time in which the scheduled content update can occur. The values specified for these elements will be offsets from the the IntervalTime element.

XML DTD

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

Child Elements:

Child Element Description Type # allowed Default
StartDate This is the day upon which the schedule will start to apply. ISO 8601:1988 Date 0 or 1 Start immediately
EndDate 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 Child 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">

Schedule Element Example

<Schedule>
      <EndDate VALUE="1994.11.05T08:15-0500" />
      <IntervalTime DAY=1 />
      <EarliestTime HOUR=12 />
      <LatestTime HOUR=18 />
</Schedule>

Note

Information relating to suggested changes for this element can be found in the Feedback section.


2.6 Logo Element

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

Attribute Name Description Type # allowed Default
HREF URL to the image for the logo URL 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">

Logo Element Example

<Logo
HREF="http://www.foosports.com/images/newslogo.gif"
Type="REGULAR" />

2.7 Tracking Element

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

Child Element 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>

Tracking Element Example

<Tracking>
      <PostURL HREF="http://www.foosports.com/tracking" />
<Tracking>

2.8 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 URL "#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 CategoryDef (CategoryName, Description?, CategoryDef* )>
<!ELEMENT CategoryName EMPTY>
<!ATTLIST CategoryName VALUE CDATA #REQUIRED>
<!ELEMENT Description EMPTY>
<!ATTLIST Description VALUE CDATA #REQUIRED>

CategoryDef Element Example

<CategoryDef>
<CategoryName VALUE="News" /> <Description VALUE="News" />
<CategoryDef> <CategoryName VALUE="Sports" /> <Description VALUE="Sports News" /> </CategoryDef>
</CategoryDef>

Note

Information relating to suggested changes for this element can be found in the Feedback section.


3 Example

<!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" />

    <Schedule>
      <EndDate VALUE="1994.11.05T08:15-0500" />
      <IntervalTime DAY=1 />
      <EarliestTime HOUR=12 />
      <LatestTime HOUR=18 />
    </Schedule>

    <Logo HREF="http://www.foosports.com/images/logo.gif"
Type="REGULAR" />

    <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"></Usage>
    </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" />

       <!-- This is an example of how Usage can be used for client
enhancements -->
       <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>

4 Feedback on Changes

This section summarizes some of the feedback received to date for changes to the Channel Definition Format. These changes will be suggested to the W3C and may be intergrated into future versions of CDF if approved. The primary motivation for the feedback in this section has been reduction in the size of CDF files which may grow quite large.

Child Elements to Become Attributes

The following child elements could become attributes of their containing elements.

Child Element Name Containing Element(s)
LastMod Channel, Item
Title Channel, Item
Abstract Channel, Item
Copyright Channel, Item
PublicationDate Channel, Item
Ratings Channel, Item
IntroURL Channel
MinStorage Channel
Start Schedule
End Schedule
CategoryName CategoryDef
Description CategoryDef

More Compact Elements and Attribute Names

The following element and attribute names could be shortened to only four letter.

Short Name Long Element Name
CHAN Channel
TITL Title
ABST Abstract
AUTH Author
PUBL Publisher
CPYR Copyright
PUBD PublicationDate
KEYW Keywords
CATE Category
RATI Ratings
SCHE Schedule
USCH UserSchedule
CLON IsClonable
INTR IntroURI
SECU Authorization
MINS MinStorage
TRAC Tracking
MIME MIMEType
VISI IsVisible
PRIO Priority
CACH PreCache
USE Usage
CYCL IntervalTime
EARL EarliestTime
LATE LatestTime
POST PostURL
NAME CategoryName
DESC Description
CATD CategoryDef

 

5 References

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

[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.

HomeBack to Specs & Standards home page

 
© 1997 Microsoft Corporation. All rights reserved. Legal Notices.