home | about | cmil

 

CMIL 0.9

Specification March 10 2000

This Document
http://www.oacea.com/cmil/cmil_0.9_20000310.php
CMIL Home
http://www.oacea.com/cmil/

Copyright © 2000 Oacea, Rick Dietz, All Rights Reserved. These usage guidelines apply to your use of specified public material from this site.

Questions, comments or suggestion can be addressed to Rick Dietz, rick@oacea.com

Table of Contents

  1. CMIL 0.9 Overview
  2. About This Specification
  3. CMIL 0.9 Structure
    1. Introduction
    2. CMIL version information
    3. CMIL element
    4. document head
      1. HEAD element
      2. TITLE element
      3. SCRIPT element
      4. NOSCRIPT element
      5. STYLE element
    5. container elements
      1. BODY element
      2. GROUP element
      3. NODE element
      4. MEDIA element
      5. media object elements
    6. content selection
      1. selection parameters
      2. SIFT element
      3. SWITCH element
    7. meta data
      1. META element
      2. ATTRIBUTES element
        1. ATT element
        2. CHANNEL element
        3. COVERAGE element
        4. LOC element
        5. ORIENT element
        6. TIME element
    8. linking elements
      1. BASE element
      2. LINK element
      3. A element
      4. ANCHOR element
      5. LOCATOR element
      6. PROX element
      7. TAG element
  4. References

About this Specification

CMIL is Contextual Media Integration Language. This specification details the syntax and semantics of CMIL version 0.9. The elements and attributes which constitute CMIL are presented in the following format:

  1. The element is presented, followed by an excerpt from the CMIL DTD like so:

    meta

    <!--=========== META element =========================================-->
    <!ELEMENT meta   EMPTY  >
    <!ATTLIST meta
                   name  CDATA    #REQUIRED 
                   content  CDATA    #REQUIRED  >
    
  2. The use of the element is then decribed.

  3. Attributes of elements that warrant special explanation are then described. Note however, that not all element attributes are dicussed in this specification. A forthcoming more complete version of the specification will address all valid element attributes.

  4. In some cases, the description will contain examples of the elements's use in sample CMIL document excerpts.

  5. Lastly, the description may contain notes pointing to conceptual or practical problems yet to be resolved, issues for future consideration, references to online resources and the like. Below is an example note:

    Note: This is a partial and as yet incomplete specification; You should expect to find errors and areas which will require conceptual as well as practical reworking.

CMIL uses a number of elements familiar to authors of HyperText Markup Language (HTML) and Synchonized Multimedia Integration Language (SMIL) documents. This was done to leverage the intellectual fruit of existing standard internet languages, maximize the interoperability of CMIL with such languages and make the coding of CMIL as simple, familiar and intuitive to internet media authors as possible. Readers are alerted to the use of constructs from these World Wide Web Consortium (W3C) languages as well as other sources of external material where appropriate in this specification.

Table of Contents

CMIL Overview

Contextual Media Integration Language (CMIL) is an XML-derived tag language used to describe the relationships between digital multimedia files and contextual information so that they may be presented to users via a CMIL "browser".

CMIL media objects (called nodes) may have an unlimited number of metadata properties (called attributes), some of which may be spatial like an associated geophysical position in lattitude, longitude and altitude. Others may be linear like time or temperature or categorical like a system state or a discrete name. Categorical values may be clustered.

Table of Contents

CMIL Structure

Introduction to CMIL Structure

A CMIL 0.9 document is composed of three section:

  1. CMIL version information (document type declaration) before the CMIL element,
  2. a header section delimited by the HEAD element,
  3. a body section delimited by the BODY element.

The HEAD and BODY elements must be direct child elements of the document root CMIL element.

A simple CMIL document follows:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cmil SYSTEM 
"http://www.oacea.com/cmil/cmil-0.9.dtd">
<cmil>
   <head>
      <title>Simple CMIL Document</title>
   </head>
   <body>
      <node>
         <attributes></attributes>
         <media>
            <text>Simple CMIL node</text>
         </media>
      </node>
   </body>
</cmil>

Table of Contents

CMIL Version Information

A valid CMIL document declares the version of its Document Type Definition (DTD). The DTD described here is version 0.9. For documents that use this DTD, use this document type declaration below:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cmil SYSTEM
"http://www.oacea.com/cmil/cmil-0.9.dtd">

Table of Contents

cmil

<!--=========== CMIL element =========================================-->
<!ELEMENT cmil  (head,body) >
<!ATTLIST cmil
               id  ID    #IMPLIED  >

CMIL is the root element of all cmil documents. All elements in a CMIL document are contained within a single CMIL element placed below the document's document type declaration as seen in this example:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cmil PUBLIC "-//oacea//DTD CMIL0.9//EN" 
"http://www.oacea.com/cmil/cmil-0.9.dtd">
<cmil>
   ...head, body and other elements...
</cmil>

Table of Contents

Document Head

head

<!--=========== HEAD element =========================================-->
<!ENTITY % head.misc "(script|noscript|style|meta|link|prox|attributes)*">

<!-- The content model of the head element is %head.misc; with a 
     title and an optional base element in any order -->
     
<!ELEMENT head  (%head.misc;,((title,%head.misc;,(base,%head.misc;)?) 
             | (base, %head.misc;,(title,%head.misc;)))) >
<!ATTLIST head
               id  ID    #IMPLIED  >         

The HEAD element contains information such as the document title and meta-information about the document such its CMIL attributes, the author, a description and keywords.

Note: The content model for the HEAD element could probably be improved. It is currently a bit awkward, but seems to work.

Table of Contents

title

<!--=========== TITLE element ========================================-->
<!ELEMENT title  (#PCDATA) >

The TITLE element contains the title of the CMIL document. This element is required. Below is an example:

  
<title>CMIL 0.9 Specification</title>

Table of Contents

script

<!--=========== SCRIPT element =======================================-->
Scripting language container. May include CDATA sections-->
<!ELEMENT script  (#PCDATA) >

<!ATTLIST script charset CDATA #IMPLIED type CDATA #REQUIRED src CDATA #IMPLIED defer (defer) #IMPLIED >

CMIL supports the inclusion of programs in CMIL code through client-side scripts. Scripts may be written to dynamically display document content, provide interactivity and process information. Scripts within SCRIPT elements are run as the document loads. Programs may be run in response to system state changes and user interaction using intrinsic events like those defined in the W3C's HTML4 specification. The intrinsic events supprted by HTML4 are:

onload, onunload, onclick, ondblclic, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onfocus, onblur, onkeypress, onkeydown, onkeyup,onsubmit, onreset, onselect and onchange.
Note: Intrinsic events in support of CMIL will differ from those currently listed here due to differences between the visualization and interaction paradigms of HTML and CMIL.
Note: Intrinsic events have not yet been added as attributes to hyperlinking and container elements.
Note: SCRIPT currently only resides in the document HEAD but should be allowed throughout the body as well.

Table of Contents

noscript

<!--=========== NOSCRIPT element =====================================-->
<!ELEMENT noscript  ANY >

<!ATTLIST noscript
               id  ID    #IMPLIED  >

The NOSCRIPT element offers alternative content to user agents incapable of executing scripts or those configured by user preference to ignore them.

Note: The content model of NOSCRIPT is currently formless.
Note: NOSCRIPT currently only resides in the document HEAD but should be allowed throughout the body as well.

Table of Contents

style

<!--=========== STYLE element ========================================
CSS/XSL Style information. May include CDATA sections-->
<!ELEMENT style  (#PCDATA) >

<!ATTLIST style
               type  CDATA    #REQUIRED 
               media  CDATA    #IMPLIED 
               title  CDATA    #IMPLIED  >

The STYLE element is a container for XSL, eXtensible Style Language information. CMIL container (BODY, GROUP, NODE) and media elements should make use of XSL to specify their formatting and appearance. This information may be contained with the STYLE element or held in a linked external resource specified by the LINK element.

The requirements of a style language for spatial media is quite different from those designed for the presentation of traditional hypertexts. Spacing, display size, animation and interaction constraints, must all be considered.

Note: As of yet, no formal specification has been developed for the style language companion to CMIL which will be called CMSL, Contextual Media Style Language.

Table of Contents

container elements

body

<!--=========== BODY element =========================================-->
<!ELEMENT body  (%container-elements;)* >
<!ATTLIST body
               id  ID    #IMPLIED 
               class  CDATA    #IMPLIED
               style  CDATA    #IMPLIED
               bgcolor  CDATA    #IMPLIED 
               mgcolor  CDATA    #IMPLIED 
               fgcolor  CDATA    #IMPLIED 
               bgimage  CDATA    #IMPLIED 
               nwcoord  CDATA    #IMPLIED 
               secoord  CDATA    #IMPLIED 
               bgaudio  CDATA    #IMPLIED  >

The BODY element contains all of a ducument's content.

Note: Appearance related attributes will be deprecated from the BODY element at which time they may only be specified by the STYLE element, the BODY element's style attribute or by a linked XSL style document (when CMSL has been further refined.)

Table of Contents

group

<!--=========== GROUP element ========================================-->
<!ELEMENT group  (%container-elements;)* >

<!ATTLIST group
               id  ID    #IMPLIED 
               title  CDATA    #IMPLIED 
               desc  CDATA    #IMPLIED 
               abstract  CDATA    #IMPLIED 
               class  CDATA    #IMPLIED 
               creator  CDATA    #IMPLIED 
               rights  CDATA    #IMPLIED 
               style  CDATA    #IMPLIED 
               system-bitrate  CDATA    #IMPLIED 
               system-gps-error  CDATA    #IMPLIED 
               system-language  CDATA    #IMPLIED 
               system-modality  CDATA    #IMPLIED 
               system-required  NMTOKEN    #IMPLIED 
               system-screen-size  CDATA    #IMPLIED 
               system-screen-depth  CDATA    #IMPLIED 
               system-captions (on | off)   #IMPLIED 
               system-overdub-or-caption (caption | overdub)   #IMPLIED  >

The GROUP element is a generic container element which aggregates CMIL container elements. GROUP element presentation or lack thereof may be specified using XSL style information. An example grouping is presented below:

<group class="three-d-enclosure" id="group01">
   <node id="node01">
      ...node attributes and media...
   </node>   
   <node id="node02">
      ...node attributes and media...
   </node>
   <node id="node03">
      ...node attributes and media...
   </node>
</node>

in addition, GROUP elements may be nested to an arbitrary depth:

<group>
   <group>
      <group>
      </group>
   </group>
</group>

Table of Contents

node

<!--========== NODE element ==========================================-->
<!ELEMENT node  ((attributes,media) | (media,attributes)) >

<!ATTLIST node
               orient-method  CDATA    #IMPLIED 
               orient-value  CDATA    #IMPLIED 
               position-method  CDATA    #IMPLIED 
               position-value  CDATA    #IMPLIED 
               id  ID    #IMPLIED 
               title  CDATA    #IMPLIED 
               desc  CDATA    #IMPLIED 
               abstract  CDATA    #IMPLIED 
               class  CDATA    #IMPLIED 
               creator  CDATA    #IMPLIED 
               rights  CDATA    #IMPLIED 
               style  CDATA    #IMPLIED 
               system-bitrate  CDATA    #IMPLIED 
               system-gps-error  CDATA    #IMPLIED 
               system-language  CDATA    #IMPLIED 
               system-modality  CDATA    #IMPLIED 
               system-required  NMTOKEN    #IMPLIED 
               system-screen-size  CDATA    #IMPLIED 
               system-screen-depth  CDATA    #IMPLIED 
               system-captions (on | off)   #IMPLIED 
               system-overdub-or-caption (caption | overdub)   #IMPLIED  >

The NODE element is the kernel of contextual media, uniting digital media and attributes in one conceptual unit. An example CMIL node is presented here:

<node class="circle" id="node03" title="A walk in the park" >
   <attributes>
      <loc coords="39.169,-86.536,766.7260" datum="WGS 84"/>
      <orient bearing="ne"/>
      <time begin="19990612T102200"/><
      <att name="temperature" content="82" metric="fahrenheit"/>
    </attributes>
   <media>
      <image src="media/images/sycamore.png"/>
      <audio src="media/audio/birdsong.aiff"/>
      <text src="media/text/desc.txt"/>
   </media>
</node>

The presentation of NODE elements by user agents may be specified using style information.

Table of Contents

media

<!--=========== MEDIA element ========================================-->
<!ELEMENT media  (animation | audio | image | model | ref | speech | text | 
               textstream | vector | video | www)* >

<!ATTLIST media
               id  ID    #IMPLIED 
               title  CDATA    #IMPLIED 
               desc  CDATA    #IMPLIED  >

The MEDIA element is a container for media object elements.

   <media>
      <image src="media/images/down.png"/>
      <audio src="media/audio/strange.aiff"/>
      <text src="media/text/bottom.txt"/>
   </media>

Table of Contents

media object elements

<!ELEMENT image  (anchor?) >
<!ATTLIST image
               region  IDREF    #IMPLIED 
               alt  CDATA    #IMPLIED 
               src  CDATA    #IMPLIED 
               type  CDATA    #IMPLIED 
               dur  CDATA    #IMPLIED 
               repeat  CDATA   "1"
               id  ID    #IMPLIED 
               title  CDATA    #IMPLIED 
               desc  CDATA    #IMPLIED 
               abstract  CDATA    #IMPLIED 
               class  CDATA    #IMPLIED 
               creator  CDATA    #IMPLIED 
               rights  CDATA    #IMPLIED 
               style  CDATA    #IMPLIED 
               system-bitrate  CDATA    #IMPLIED 
               system-gps-error  CDATA    #IMPLIED 
               system-language  CDATA    #IMPLIED 
               system-modality  CDATA    #IMPLIED 
               system-required  NMTOKEN    #IMPLIED 
               system-screen-size  CDATA    #IMPLIED 
               system-screen-depth  CDATA    #IMPLIED 
               system-captions (on | off)   #IMPLIED 
               system-overdub-or-caption (caption | overdub)   #IMPLIED  >

The media object elements -- ANIMATION, AUDIO, IMAGE, MODEL, REF, SPEECH, TEXT, TEXTSTREAM, VECTOR, VIDEO and WWW -- link to internet media resources. They are valid as direct child elements of a MEDIA element. The media object elements specify all forms of media valid for display by a CMIL user agent.

One such media object element for bitmap images is presented below.

<image src="http://www.oacea.com/spongebob_squarepants.png"/>

TEXT and WWW elements may alternatively contain plaintext or HTML markup using the XML namespace syntax respectively. No other media object elements may have end tags.

An empty TEXT element:

<text src="http://www.oacea.com/text.txt"/>

TEXT element with parent syntax containing character data:

<text>...some inline text...</text>

WWW as an empty element:

<www src="http://www.oacea.com/index.html"/>

WWW with child elements adhering to the HTML4.0 namespace syntax:

<www xmlns:html="http://www.w3.org/TR/REC-html40">
   <html:html>
      <html:head>
         <html:title>Here Come the Power Puff Girls!!!</html:title>
         ... other head elements...
      </html:head>
      <html:body>
      ... document body...
      </html:body>
   </html:html>
</www>
Note: The use of the HTML namespace in the WWW element is not yet supported by the CMIL 0.9 DTD.
Note: SMIL and SVG should be supported as well.
Note: Attributes of media oject elements need to be made specific to the individual media object element. At present attributes are uniform across the set.

Table of Contents

content selection

selection parameters

system-bitrate CDATA #IMPLIED
system-gps-error CDATA #IMPLIED
system-language CDATA #IMPLIED
system-modality CDATA #IMPLIED
system-required NMTOKEN #IMPLIED
system-screen-size CDATA #IMPLIED
system-screen-depth CDATA #IMPLIED
system-captions (on|off) #IMPLIED
system-overdub-or-caption (caption|overdub) #IMPLIED

CMIL defines a number of selection parameters for use in selective content negociation within SIFT and SWITCH elements. These parameters may be used in any CMIL media or container element. Selection parameters resolve to either "true" or "false" based on system settings and user preferences.

Within the SIFT element, any child element in which any selection parameter resolves to "false" is ignored. All those in which all selection parameters evaluate to "true" are selected. Zero to all enclosed elements may be selected and returned.

Within the SWITCH element, any child element in which any selection parameters resolve to "false" is ignored. The first child element in which all selection parameters evaluate to "true" is selected. Only one child element may be selected. If all resolve to "false", the last element is selected by default.

A description of the selection parameter values defined in CMIL 1.0 can be found in the W3C SMIL 1.0 Specification.

The following additional selection parameters are defined in CMIL 0.9:

system-gps-accuracy
This attribute is a setting which determines if users prefer overdubbing or captioning when the option is available. The attribute can have the values "caption" and "overdub". Evaluates to "true" if the user preference matches this attribute value. Evaluates to "false" if they do not match.s
system-mode
This attribute allows a determination of the preferred modality for the display of media objects. The attribute can have the values "visual" and "auditory"
Note: Additional selection parameter attributes may be forthcoming in support of CMIL funtionality or if support for additional user preferences seems warranted.

Table of Contents

sift

<!--=========== SIFT element =======================================-->
<!ELEMENT sift  (group | node | a | sift | switch | locator | tag)* >

<!ATTLIST sift
               id  ID    #IMPLIED 
               title  CDATA    #IMPLIED 
               desc  CDATA    #IMPLIED 
               system-bitrate  CDATA    #IMPLIED 
               system-gps-error  CDATA    #IMPLIED 
               system-language  CDATA    #IMPLIED 
               system-modality  CDATA    #IMPLIED 
               system-required  NMTOKEN    #IMPLIED 
               system-screen-size  CDATA    #IMPLIED 
               system-screen-depth  CDATA    #IMPLIED 
               system-captions (on | off)   #IMPLIED 
               system-overdub-or-caption (caption | overdub)   #IMPLIED  >

The purpose of the sift element is to allow for inclusive content negociation among media or container elements in CMIL documents based on system settings or user preferences. Both the sift and switch elements are content selection elements The sift element may hold a number of child elements, of which any number (including zero) may be selected by the CMIL browser. The child elements are evaluated by the parser which examines the switch-parameter attributes of each child element. Any element in which all of the switch parameters of the element evaluate to "true" is selected.

In the following example, the CMIL viewer is configured for french display, resulting in the latter three image elements being selected. If the viewer is configured for neither french nor english, no elements are selected and returned.

<sift>
   <image src="http://www.oacea.com/blossom.png" system-language="en"/>
   <image src="http://www.oacea.com/bubbles.png" system-language="en"/>
   <image src="http://www.oacea.com/buttercup.png" system-language="en"/>
   <image src="http://www.oacea.com/blossom_fr.png" system-language="fr"/>
   <image src="http://www.oacea.com/bubbles_fr.png" system-language="fr"/>
   <image src="http://www.oacea.com/buttercup_fr.png" system-language="fr"/>  
</sift>

Table of Contents

switch

<!--=========== SWITCH element =======================================-->
<!ELEMENT switch  (group | node | a | sift | switch | locator | tag)* >

<!ATTLIST switch
               id  ID    #IMPLIED 
               title  CDATA    #IMPLIED 
               desc  CDATA    #IMPLIED 
               system-bitrate  CDATA    #IMPLIED 
               system-gps-error  CDATA    #IMPLIED 
               system-language  CDATA    #IMPLIED 
               system-modality  CDATA    #IMPLIED 
               system-required  NMTOKEN    #IMPLIED 
               system-screen-size  CDATA    #IMPLIED 
               system-screen-depth  CDATA    #IMPLIED 
               system-captions (on | off)   #IMPLIED 
               system-overdub-or-caption (caption | overdub)   #IMPLIED  >

The purpose of the switch element is to allow for mutially exclusive content negociation between alternative media or container elements in CMIL documents based on system settings or user preferences. The switch syntax is borrowed largely intact from the W3C's Synchronized Multimedia Integration Language 1.0 Recommendation. The switch element may hold a number of child elements, of which only one may be selected by the CMIL browser. The child elements are evaluated in descending order with the parser evaluating the switch-parameter attributes of the child element. The first element in which all of the switch parameters of the element evaluate to "true" is selected.

In the following example, the CMIL viewer is configured for french(fr) display, the second image entity is selected. If the viewer is configured for neither french nor english(en), the last element is selected by default.

<switch title="logo">
   <image src="english.png" system-language="en"/>
   <image src="french.png" system-language="fr"/>
   <image src="esperonto.png" system-language="en,fr"/>
</switch>

Table of Contents

Meta Data

Metadata is information that describes another information resource. Metadata in CMIL documents comes in two forms -- document metadata and contextual metadata. Document metadata such as the author or a content description is specified by the META element and contextual metadata is held by the ATTRIBUTES element.

Table of Contents

meta

<!--=========== META element =========================================-->
<!ELEMENT meta   EMPTY  >
<!ATTLIST meta
               name  CDATA    #REQUIRED 
               content  CDATA    #REQUIRED  >

The META element functions is a property-value pair for specifying metadata such as a document's "author", a "description" and "keywords". In the follwing example, the property is "author" and its value is set to "Rick Dietz"

<meta name="author" content="Rick Dietz"/>

A sample of META elements in use:

<head>
   <title>Ren and Stimpy</title>
   <meta name="author" content="John Kay">
   <meta name="copyright" content="© 1900 Acme Corp.">
   <meta name="keywords" content="cartoons, antics, shenanigans">
</head>
Note: There is no specific set of metadata attributes declared legal for CMIL. Care should be taken however to use types of metadata such as those common to HTML authors and the Core Element Set offered by the Dublin Core Metadata Initiative.

Table of Contents

attributes

<!--=========== ATTRIBUTES element ===================================-->
<!ELEMENT attributes  (att | a | channel | coverage | loc | orient | time)* >

<!--Any number of att elements may exist at the same level, providing
each is unique.-->
<!ATTLIST attributes
               id  ID    #IMPLIED 
               title  CDATA    #IMPLIED 
               desc  CDATA    #IMPLIED  >

The ATTRIBUTES element is a container for contextual metadata. The ATTRIBUTES element may be present in the head or the body of a CMIL document. The ATTRIBUTES element holds contextual metadata that, when in the document head, refers to the document itself and within the document body, describe contextual metadata associated with CMIL nodes.

head attributes

When present in the head of a CMIL document, the ATTRIBUTES element allows authors to define document level attributes such as it's spatial coverage, a content channel, a valid timeslice, as well as define the parameters of attributes to be used within nodes in the body of the document. There are a few predefined attributes which the ATTRIBUTES element may hold; They are the A, ATT, CHANNEL, COVERAGE, LOC, ORIENT and TIME elements. A and ATT are special cases: A is a hyperlinking element and ATT allows CMIL authors to create user defined attributes which describe a particular form of contextual metadata.

Below is an example of the ATTRIBUTES element used in the document head:

<head>
   <title>Simple CMIL Document</title>
   <attributes>
      <channel name="sphere" radius="10"/>
      <coverage shape="sphere" radius="10"/>
      <loc coords="39.169,-86.536,766.7260" datum="WGS 84"/> 
   </attributes>
</head>

The A element is not legal as a child element when ATTRIBUTES is in the document head.

Note: The main goal for allowing an ATTRIBUTES element in the head and body is to communicate that CMIL documents themselves can be considered first order objects in their own right alongside the nodes they contain.
Note: In the document head, the META element and ATTRIBUTES element overlap conceptually with META housing document metadata and ATTRIBUTES specifying contextual metadata.

body attributes

Within the document body, ATTRIBUTES elements specify the values of contextual metadata associated with NODE elements. These values may be specified within the NODE element itself or inherited from GROUP or BODY elements.

Below is an example of the ATTRIBUTES element directly assigning values to the contextual metadata of a CMIL node.

<node class="circle" id="node03" title="Bake Sale" >
   <attributes>
      <a href="http://www.oacea.com/index.html"/>
      <loc coords="39.169,-86.536,766.7260" datum="WGS 84"/>
      <orient bearing="ne"/>
      <time begin="19990612T102200"/>
      <att name="temperature" content="82" metric="fahrenheit"/>
   </attributes>
   <media>
      ...media content...
   </media>
</node>

The presence of the A element as a node attribute indicates that node can considered an anchor for a hyperlink, with the hyperlink existing as an attribute of that node. The hyperlink destination is specified by the href attribute of the anchor or within child LOCATOR elements.

attribute inheritance

A node may inherit values for its contextual metadata from parent GROUP elements or the BODY element. Values assigned by parent elements may also be overridden if specified at a more proximal level to the NODE element itself. Below we find a CMIL node which both inherits and overrides contextual metadata values from parent GROUP and BODY elements.

<body >
   <attributes>
      <a href="http://www.superfriends.com/index.html"/>   
      <orient bearing="ne"/>
    </attributes>
    <group>
      <attributes>
        <loc coords="39.169,-86.536,766.7260" datum="WGS 84"/>
        <orient bearing="sw"/>
        <time begin="19990612T102200"/>
      </attributes>
      <node class="circle" id="node03" title="Bake Sale" >
        <attributes>       
          <time begin="20000224T140800"/>
          <att name="temperature" content="82" metric="fahrenheit"/>
        </attributes>
        <media>
           ...media content...
        </media>
      </node>
   </group>
</body>

The contextual metadata values for this particular node resolve to..

anchor href="http://www.superfriends.com/index.html inherited from body
location coords="39.169,-86.536,766.7260" datum="WGS 84" inherited from group
orientation bearing="sw" inherited from group
time begin="20000224T140800" overridden by node
custom att name="temperature" content="82" directly from node

Table of Contents

att

<!--=========== ATT element ==========================================-->
<!ELEMENT att   EMPTY  >

<!ATTLIST att
               name  CDATA    #REQUIRED 
               content  CDATA    #REQUIRED 
               metric  CDATA    #IMPLIED 
               id  ID    #IMPLIED 
               title  CDATA    #IMPLIED 
               desc  CDATA    #IMPLIED  >

The ATT element allows CMIL authors to define their own attributes to associate with CMIL documents of nodes, allowing authors the freedom to move beyond the attributes formalized in the CMIL DTD. The ATT element consists of a property-value pair in which an user-defined attribute is named and assigned a value. Additional information may be supplied about this attribute such as a metric unit and a description.

The ATT element supports dynamic attributes by allowing ATT element's value to be resolved from a linked external resources or an internal script program using the fragment identifier(#). An example follows:

<att name="temperature" 
href="http://www.temp.org/cgi-bin/temp.pl" metric="celcius"/>
Note: Active attributes should also be able to execute HTML namespace FORM elements using the fragment identifier.
Note: A generic replacement for form-type functionality accessible through intrinsic events should be developed instead of importing the HTML form syntax.

Table of Contents

channel

<!--=========== CHANNEL element ======================================-->
<!ELEMENT channel   EMPTY  >

<!ATTLIST channel
               name  CDATA    #IMPLIED 
               id  ID    #IMPLIED 
               title  CDATA    #IMPLIED 
               desc  CDATA    #IMPLIED  >

The CHANNEL element provides a way in which authors can specify a content description/affiliation of a given document's material.

Note: It may be better to adopt something along the lines of that proposed in the W3C Platform for Internet Content Selection (PICS) recommendation for this purpose if this is to be pursued further.

Table of Contents

coverage

<!--=========== COVERAGE element =====================================-->
<!ELEMENT coverage   EMPTY  >

<!ATTLIST coverage
               shape (cone | cylinder | sphere)  "sphere"
               radius  CDATA    #IMPLIED 
               height  CDATA    #IMPLIED  >

The COVERAGE element specifies a domain in physical space where a document and its contents are valid to be displayed by user agents. If not so constrained, the document is universally available.

Table of Contents

loc

<!--=========== LOC element ==========================================-->
<!ELEMENT loc   EMPTY  >

<!ATTLIST loc
               datum  CDATA    #IMPLIED
               coords  CDATA    #REQUIRED 
               mode (reltobase | reltoviewer | absolute)  "absolute"            
               id  ID    #IMPLIED 
               title  CDATA    #IMPLIED 
               desc  CDATA    #IMPLIED  >

Provides location for documents and media elements (nodes).

The value of the "coords" attribute is a standard geodetic coordinate in the ISO format for latitude, longitude and altitude ISO 6709:1983 in the form of a comma delimited string.

Note: the "datum" value should probably not require defaults as new ones will probably come about and there a great many to begin with.

"coords" values have the following syntax:

Latitude
DD.DD      degrees and decimal degrees
DDMM.MMM   degrees, minutes and decimal minutes
DDMMSS.SS  degrees, minutes, seconds and decimal seconds

Decimal degrees minutes and secounds may be extended to the desired accuracy. Latitude must be prefixed with "+" north of and on equator, and with "-" south of equator.

Longitude
DDD.DD     degrees and decimal degrees
DDDMM.MMM  degrees, minutes, and decimal minutes
DDDMMSS.SS degrees, minutes, seconds, and decimal seconds

Decimal degrees minutes and secounds may be extended to the desired accuracy. Longitude must be prefixed with "+" east of and on prime meridian (Greenwich), and with "-" west of Greenwich up to the 180th meridian. Leading zeros are required for latitude and longitude.

Altitude
MMM.MM     meters and decimal meters

Decimal meters may be extended to the desired accuracy. Altitude is represented in meters and must be prefixed with "+" above and on the geodetic reference datum and with "-" below it).

Here are a few examples...

"+401213.1,-0750015.1,+2.79"
"+40.20361,-075.00417,-3.31"
Note: Although Lattitude,Longitude and Altitude are presented here, user agents should be prepared to process coordinates from other geodetic datum.

Table of Contents

orient

<!--=========== ORIENT element =======================================-->
<!ELEMENT orient   EMPTY  >

<!ATTLIST orient
               bearing (N | NNE | NE | ENE | E | ESE | SE | SSE | S | SSW | SW | 
               WSW | W | WNW | NW | NNW | CDATA)   #REQUIRED 
               incline  CDATA		#IMPLIED
               mode (reltobase | reltoviewer | absolute)  "absolute"              
               id  ID    #IMPLIED 
               title  CDATA    #IMPLIED 
               desc  CDATA    #IMPLIED  >

Provides cardinal orientation and inclination of media elements.

Table of Contents

time

<!--=========== TIME element =========================================-->
<!ELEMENT time   EMPTY  >

<!ATTLIST time
               time  CDATA    #IMPLIED 
               begin  CDATA    #IMPLIED 
               end  CDATA    #IMPLIED 
               timezone  CDATA    #IMPLIED 
               id  ID    #IMPLIED 
               title  CDATA    #IMPLIED 
               desc  CDATA    #IMPLIED  >

Provides temporal context for media elements.

A date in a subset of ISO 8601 format, with optional time and no optional zone. Fractional seconds may be as precise as nanoseconds.

2088-04-07T18:39:09 

A date in a subset ISO 8601 format sans punctuation.

19990612T102200

For a list of acceptible timezone values go here.

Table of Contents

Linking elements

CMIL specifies a family of hyperlink elements which make a range of hyperlinking behavior possible.

CMIL supports name fragment identifiers via the '#' connector for linking to internal document resources. A hyperlink within a CMIL document may link to an internal resource or an object of a separate document as seen here:

<a href="http://www.spubadu.org/testdoc.cmil#object1">

Conditions for using the fragment identifier follow:

  1. The internal resource addressed by the link must reside in the "body" of the CMIL document.
  2. The element addressed by the link may not be the content of a "sift or "switch" element. It may however be a "switch" or "sift" content selection element. The content selection element would then be evaluated and the resulting elements returned to the user agent for display.
Note: The dynamics of user interaction within a metaspace environment remain to be fully explored. In particular, communicating the presence of hyperlinks and making hyperlinking as intuitive as possible need attention.

Table of Contents

base

<!--=========== BASE element =========================================-->
<!ELEMENT base  (att | a | loc | orient | time)* >

<!ATTLIST base
               href  CDATA    #IMPLIED 
               loc  CDATA    #IMPLIED 
               time  CDATA    #IMPLIED 
               orient  CDATA    #IMPLIED 
               height  CDATA    #IMPLIED 
               radius  CDATA    #IMPLIED 
               datum (lla | utm | ecef)  "lla"
               timezone  CDATA    #IMPLIED 
               shape (cone | cylinder | sphere)  "sphere" >

The BASE element specifies the root address for relative URI's within a document. Any relative addresses are resolved into a full URI by appending the relative address to the prefix specified by the BASE element.

For example, the following BASE and A elements

<base href="http://www.genericorp.com/people/"/>
<a href="../products/catalog.cmil."/>
resolve to
http://www.genericorp.com/products/catalog.cmil
Note: At the moment the BASE element may specify base values for relative location, time and orientation attributes throughout the document. Due to the number of attributes needed for base to serve in this capacity, child elements may also be used instead of analogous attributes. This duplication needs to be resolved as soon as possible or completely removed. Some other method might be preferrable to having the BASE element serve so broadly. The real issue is how to specify base values for any of the contextual metadata forms in the document including those defined by authors.

Table of Contents

link

<!--=========== LINK element =========================================-->
<!ELEMENT link   EMPTY  >

<!ATTLIST link
               id  ID    #IMPLIED 
               title  CDATA    #IMPLIED 
               desc  CDATA    #IMPLIED 
               abstract  CDATA    #IMPLIED 
               class  CDATA    #IMPLIED 
               creator  CDATA    #IMPLIED 
               rights  CDATA    #IMPLIED 
               style  CDATA    #IMPLIED 
               charset  CDATA    #IMPLIED 
               href  CDATA    #IMPLIED 
               hreflang  CDATA    #IMPLIED 
               type  CDATA    #IMPLIED 
               rel  CDATA    #IMPLIED 
               rev  CDATA    #IMPLIED 
               media  CDATA    #IMPLIED  >

The LINK element is used to specify the relationship of various forms of resources with a given document. the LINK element may only appear in the head of a CMIL document. The primary uses of the LINK element in cmil are...

1. To associate style information from an external resource within the document

<link rel="stylesheet" href="freakystyley.css" type="text/css">

2. To place the document within a framework of others, specifying the next or previous document in a series, for example.

<link rel="next" href="next_scene.cmil">
<link rev="prev" href="previous_scene.cmil">

3. To make known the availability of different versions of a given document, perhaps translated or in an alternate media format.

Links to external related resources such as "previous" and "next" documents or alternative versions should be made accessible to users in some fashion through the user agent GUI.

Table of Contents

a

<!--=========== A element ============================================-->
<!ELEMENT a  (locator | sift | switch | group | node)* >

<!ATTLIST a
               id  ID    #IMPLIED 
               title  CDATA    #IMPLIED 
               href  CDATA    #REQUIRED 
               actuate (auto | user)  "user"
               show (present | replace | transform)  "present"
               class  CDATA    #IMPLIED
               style  CDATA    #IMPLIED
               system-bitrate  CDATA    #IMPLIED 
               system-gps-error  CDATA    #IMPLIED 
               system-language  CDATA    #IMPLIED 
               system-modality  CDATA    #IMPLIED 
               system-required  NMTOKEN    #IMPLIED 
               system-screen-size  CDATA    #IMPLIED 
               system-screen-depth  CDATA    #IMPLIED 
               system-captions (on | off)   #IMPLIED 
               system-overdub-or-caption (caption | overdub)   #IMPLIED  >

The A element supports inline linking behavior in a similar fashion as the HTML A element. The A element in CMIL, however, supports extended linking in which a single hyperlinking element may have multiple destinations. Extended hyperlinks contain a number of LOCATOR elements as child elements. Any A element is valid as an attribute of a CMIL NODE element or may encapsulate other container elements. Several example follow...

1) A hyperlink encapsulating a simple node.

<a href="http://www.oacea.com/index.cmil">
   <node>
      ...attributes and media...
   </node>
</a>

2) An extended (multi-destination) hyperlink encapsulating a simple node.

<a>
   <locator href="http://www.oacea.com">
   <locator href="http://www.oacea.com/CMIL">
   <node>
      ...attributes and media...
   </node>
</a>

3) In CMIL, the A element may serve as an attribute of a node, making the node itself a hyperlink anchor. The node below contains a simple hyperlink as an attribute.

<node class="circle" id="node03" title="Bake Sale" >
   <attributes>
      <a href="http://www.oacea.com/index.html"/>
      <att name="temperature" content="82"/>
    </attributes>
   <media>
      ...media content...
   </media>
</node>
Note: An effort should be made to creating a workable model for multi-directional linking.

Table of Contents

anchor

<!--=========== Associated Link element ==============================-->
<!ELEMENT anchor  (locator | sift | switch)* >

<!ATTLIST anchor
               id  ID    #IMPLIED 
               title  CDATA    #IMPLIED 
               href  CDATA    #REQUIRED 
               actuate (auto | user)  "user"
               show (present | replace | transform)  "present"
               begin  CDATA    #IMPLIED 
               end  CDATA    #IMPLIED 
               coords  CDATA    #IMPLIED  >

The ANCHOR element serves as a formalized, more flexible analog of the HTML client-side image map. In HTML, an image map allows behaviors to be asigned to descrete regions of a digital image. The anchor element allows this form of spatial linking in addition to temporal linking in linear forms of media like digital video. Temporal linking is accomplished by specifying the beginning and end points in which a given link my be traversed. Anchor is borrowed from the W3C SMIL 1.0 recommendation. See the SMIL 1.0 ANCHOR element description for additional information.

Examples 1) Two links associated with spatial regions of an image.

The example below details an image element divided into areas which contain associated links.

<image src="http://www.oacea.com/image.png">
  <anchor href="http://www.oacea.com" coords="0%,0%,33%,33%"/>
  <anchor href="http://www.oacea.com/CMIL" coords="66%,66%,100%,100%"/>
</image>

2) Two links associated with temporal slices of a video.

The example below details a video element divided into separate time slices which traverse associated links.

<video src="http://www.oacea.com/video.mov">
  <anchor href="http://www.oacea.com" begin="0s" end="7s"/>
  <anchor href="http://www.oacea.com/CMIL" begin="14s" end="21s"/>
</video>

3) In CMIL, the areas and intervals may overlap one another and allow a singular point or time to actuate multiple anchors. In the example below both anchors overlap and may be traversed by clicking the center of the image.

<image src="http://www.oacea.com/image.png">
  <anchor href="http://www.oacea.com" coords="0%,0%,66%,66%"/>
  <anchor href="http://www.oacea.com/CMIL" coords="33%,33%,100%,100%"/>
</image>

4) In CMIL, the ANCHOR element (like the A element) may specify multiple link destinations. These destinations are described by LOCATOR elements held within the ANCHOR element as child elements, shown below.

<video src="http://www.oacea.com/video.mov">
  <anchor begin="0s" end="7s">
    <locator href="http://www.oacea.com">
    <locator href="http://www.oacea.com/CMIL">
  </anchor>
</video>

Table of Contents

locator

<!--=========== LOCATOR element ======================================-->
<!ELEMENT locator   EMPTY  >

<!ATTLIST locator
               id  ID    #IMPLIED 
               title  CDATA    #IMPLIED 
               href  CDATA    #REQUIRED 
               actuate (auto | user)  "user"
               show (present | replace | transform)  "present"
               role  CDATA    #IMPLIED
               class  CDATA    #IMPLIED
               style  CDATA    #IMPLIED
               begin  CDATA    #IMPLIED 
               end  CDATA    #IMPLIED 
               coords  CDATA    #IMPLIED 
               system-bitrate  CDATA    #IMPLIED 
               system-gps-error  CDATA    #IMPLIED 
               system-language  CDATA    #IMPLIED 
               system-modality  CDATA    #IMPLIED 
               system-required  NMTOKEN    #IMPLIED 
               system-screen-size  CDATA    #IMPLIED 
               system-screen-depth  CDATA    #IMPLIED 
               system-captions (on | off)   #IMPLIED 
               system-overdub-or-caption (caption | overdub)   #IMPLIED  >

The LOCATOR element supports extended (multi-destination) links as a child element of A and TAG elements. Each LOCATOR element specifies one destination. Additional information about extended links and XML linking syntax, examine the XML Linking Language (XLink) specification.

Table of Contents

prox

<!--=========== PROX element =========================================-->
<!ELEMENT prox  (tag | sift | switch)* >

<!ATTLIST prox
               id  ID    #IMPLIED  >

The prox (proximity) element is a container for TAG elements. This element is designed to aid CMIL authors to associate objects in the real world with digital objects.

Table of Contents

tag

<!--=========== TAG element ==========================================-->
<!ELEMENT tag  (locator | sift | switch)* >

<!ATTLIST tag
               id  ID    #IMPLIED 
               title  CDATA    #IMPLIED 
               href  CDATA    #REQUIRED 
               actuate (auto | user)  "user"
               show (present | replace | transform)  "present"
               system-bitrate  CDATA    #IMPLIED 
               system-gps-error  CDATA    #IMPLIED 
               system-language  CDATA    #IMPLIED 
               system-modality  CDATA    #IMPLIED 
               system-required  NMTOKEN    #IMPLIED 
               system-screen-size  CDATA    #IMPLIED 
               system-screen-depth  CDATA    #IMPLIED 
               system-captions (on | off)   #IMPLIED 
               system-overdub-or-caption (caption | overdub)   #IMPLIED  >

The TAG element associate an input string or code with a destination resource. The input may be derived from a number of sources -- direct from the user, from a bar code scanner for instance or even via optical character recognition. User agents that support this ability compare the input value to the contents of the document's TAG elements. If the TAG element's id and that of the incoming string resolves to "true" then the association is recognized and the link traversed to the destination resource.

the following is an example with two tag links.

<prox>
   <tag id="0110010110" href="http://www.genericorp.com/peanutbutter.html"/>
   <tag id="H2SO4">
      <locator href="hazmat.cmil#warning"/>
      <locator href="hazmat.cmil#sulfuric_acid"/>
   </tag>
</prox>
Note: PROX/TAG is pretty primitive and needs considerable development.

Table of Contents

References

[ISO 6709:1983] ISO (International Organization for Standardization). ISO 6709:1983. Standard Representation of Latitude, Longitude and Altitude for Geographic Point Locations. [Geneva]: International Organization for Standardization, 1983.

[SMIL] "Synchronized Multimedia Integration Language
URL: http://www.w3.org/AudioVideo/.

[SPOHRER1] "What Comes After the WWW? ", Spohrer, J, June 1998.
URL: http://worldboard.org/pub/spohrer/wbconcept/default.html.

[SPOHRER2] "Information in Places", Spohrer, J. C., IBM Systems Journal, Vol 38, No. 4, 1999, 602-628.

[XLINK] "XML Linking Language (XLink)".
URL: http://www.w3.org/TR/xlink/

[XML10] "Extensible Markup Language (XML) 1.0", T. Bray, J. Paoli, C.M. Sperberg-McQueen, editors, 10 February 1998.
URL: http://www.w3.org/TR/REC-xml

[XSL] "Extensible Stylesheet Language (XSL)".
URL: http://www.w3.org/TR/xsl/

Table of Contents

 
copyright 2000, 2001 oacea
all rights reserved