To get a better understanding of the components in libcmml it is recommended to read the DTD:
<!-- Continuous Media Markup Language CMML version 2.1 DTD Authoring language for ANNODEX(TM) media. Namespace = http://www.annodex.net/cmml Copyright (c) 2001- Commonwealth Scientific and Industrial Research Organisation (CSIRO), Australia. All Rights Reserved. This DTD module is identified by the PUBLIC and SYSTEM identifiers: PUBLIC "-//CSIRO//DTD CMML 2.1//EN" SYSTEM "http://www.annodex.net/DTD/cmml_2_1.dtd" $Revision: 2.1 $ $Date: 2006/03/04 24:00:00 $ --> <!-- **************************** --> <!-- Definition of Imported Names --> <!-- **************************** --> <!-- media type, as per [RFC2045] --> <!ENTITY % ContentType "CDATA"> <!-- space-separated list of link types --> <!ENTITY % LinkTypes "CDATA"> <!-- single or comma-separated list of media descriptors --> <!ENTITY % MediaDesc "CDATA"> <!-- used for titles etc. --> <!ENTITY % Text "CDATA"> <!-- a Uniform Resource Identifier, see [RFC2396] --> <!ENTITY % URI "CDATA"> <!-- a language code, as per [RFC1766] --> <!ENTITY % LanguageCode "NMTOKEN"> <!-- timestamps similar to [RFC2326] "smpte-24:" SMPTE time with a 24 fps basis "smpte-24-drop:" SMPTE time with a 24/1.001 fps basis "smpte-25:" SMPTE time with a 25 fps basis "smpte-30:" SMPTE time with a 30 fps basis "smpte-30-drop:" SMPTE time with a 30/1.001 fps basis "smpte-50:" SMPTE time with a 50 fps basis "smpte-60:" SMPTE time with a 60 fps basis "smpte-60-drop:" SMPTE time with a 60/1.001 fps basis "npt:" npt-time "clock:" utc-time Playbacktime is specified as a smpte-time or npt-time only. UTCtime is specified as in [RFC2326], but without the "clock" identifier --> <!ENTITY % Timestamp "CDATA"> <!ENTITY % Playbacktime "CDATA"> <!ENTITY % UTCtime "CDATA"> <!-- ******************************** --> <!-- Definition of Generic Attributes --> <!-- ******************************** --> <!-- core attributes common to most displayable elements id document-wide unique id class space separated list of classes title advisory title/amplification --> <!ENTITY % coreattrs "id ID #IMPLIED class CDATA #IMPLIED title %Text; #IMPLIED" > <!-- internationalization attributes xml:lang language code (as per XML 1.0 spec) dir direction for weak/neutral text --> <!ENTITY % i18n "lang %LanguageCode; #IMPLIED dir (ltr|rtl) #IMPLIED" > <!ENTITY % attrs "%coreattrs; %i18n;"> <!-- **************************** --> <!-- Document Structure --> <!-- **************************** --> <!-- ROOT ELEMENT: --> <!-- cmml tag containing sequence of head and a tags --> <!-- =============================================== --> <!-- i18n = the default language for the whole document including the id tag of the cmml element --> <!-- xmlns = namespace of the cmml tags --> <!-- granulerate = the base temporal resolution to be used for the cmml bitstream --> <!ELEMENT cmml (stream?, head, clip*)> <!ATTLIST cmml %i18n; id ID #IMPLIED xmlns %URI; #FIXED 'http://www.annodex.net/cmml' granulerate CDATA #IMPLIED > <!-- **************************** --> <!-- Definition of stream element --> <!-- **************************** --> <!-- STREAM tag providing timing information for the ANNODEX file --> <!-- (will be stored in the binary headers of the ANX bitstreams) --> <!-- ============================================================ --> <!-- (has no text attributes and thus no i18n; id tag follows default language specified in cmml tag) --> <!-- basetime = base time associated with the first frame of the media document from which subsequent time references (such as in clip tags) will be taken relative to --> <!-- timebase = same as basetime; kept for backwards compatibility; deprecated and will not be used in versions>=3.0 --> <!-- utc = a mapping of the first frame to clock time; specifications of utc time offsets into the document as in a URI will be taken relative to this --> <!ELEMENT stream (import*)> <!ATTLIST stream id ID #IMPLIED basetime %Playbacktime; "0" timebase %Playbacktime; "0" utc %UTCtime; #IMPLIED > <!-- IMPORT tag giving descriptions on an input bitstream (empty content) --> <!-- ============================================================ --> <!-- i18n = the language of the import tag's and the contained param tags' attribute values --> <!-- title = human readable comment on the import bitstream --> <!-- granulerate = the base temporal resolution of the bitstream (e.g. its framerate for video or samplerate for audio) --> <!-- contenttype = encoding format of the input document (a MIME type and a character encoding separated by semicolon) --> <!-- src = URI to the media document --> <!-- start = the start time of the media bitstream specified in src --> <!-- end = the end time of the media bitstream specified in src --> <!ELEMENT import (param*)> <!ATTLIST import %i18n; id ID #IMPLIED title %Text; #IMPLIED granulerate CDATA #IMPLIED contenttype %ContentType; #IMPLIED src %URI; #REQUIRED start %Timestamp; "0" end %Timestamp; #IMPLIED > <!-- PARAM description tags of an input bitstream (empty content) --> <!-- (name-value pairs e.g. comments on recording quality or so) --> <!-- ============================================================ --> <!-- (internationalisation inherited from the parent import tag) --> <!-- name = identifies a property name; does not list legal values for this attribute --> <!-- value = specifies a property's value; does not list legal values for this attribute --> <!ELEMENT param EMPTY> <!ATTLIST param id ID #IMPLIED name CDATA #REQUIRED value CDATA #REQUIRED > <!-- **************************** --> <!-- Definition of document head --> <!-- **************************** --> <!-- head tag containing description of a specific media stream --> <!-- ========================================================== --> <!-- i18n = the base language of the head's attribute values and text content --> <!-- profile = space-separated list of URIs to locate meta tag schemes --> <!-- content model is %head.misc; combined with a single title and an optional base element in any order --> <!ENTITY % head.misc "(meta|link)*"> <!ELEMENT head (%head.misc;, ((title, %head.misc;, (base, %head.misc;)?) | (base, %head.misc;, (title, %head.misc;))))> <!ATTLIST head %i18n; id ID #IMPLIED profile %URI; #IMPLIED > <!-- TITLE tag giving descriptive title of the media document --> <!-- ========================================================= --> <!-- i18n = the language of the title text --> <!ELEMENT title (#PCDATA)> <!ATTLIST title %i18n; id ID #IMPLIED > <!-- BASE URI of the document (empty content) --> <!-- ======================================== --> <!-- (internationalisation inherited from the parent head tag) --> <!-- href = URI associated with the document; all relative URI references get interpreted relative to this base --> <!ELEMENT base EMPTY> <!ATTLIST base id ID #IMPLIED href %URI; #REQUIRED > <!-- META description tags of the document (empty content) --> <!-- ===================================================== --> <!-- i18n = the language of the meta attributes --> <!-- name = identifies a property name; does not list legal values for this attribute --> <!-- content = specifies a property's value; does not list legal values for this attribute --> <!-- scheme = names a scheme to be used to interpret the property's value (see the profiles tag in the head element for locating these) --> <!ELEMENT meta EMPTY> <!ATTLIST meta %i18n; id ID #IMPLIED name NMTOKEN #IMPLIED content CDATA #REQUIRED scheme CDATA #IMPLIED > <!-- LINK tag to specify relationship values (empty content) --> <!-- ======================================================= --> <!-- Relationship values can be used in principle: a) for document specific toolbars/menus when used with the link element in document head e.g. start, contents, previous, next, index, end, help b) to link to a separate style sheet (rel="stylesheet") As charsets are given in the xml directive of cmml documents, this attribute of html is not required for cmml. --> <!-- attrs = the language of the title text; a short description of the relationship through title, and the stylesheet class --> <!-- href = reference to a related document --> <!-- type = type of the document referenced, e.g. "text/css" --> <!-- rel = type of relationship to forward linked document --> <!-- rev = type of relationship to reverse linked document --> <!-- media = type or medium/media to be rendered on, default "screen" --> <!ELEMENT link EMPTY> <!ATTLIST link %attrs; href %URI; #IMPLIED type %ContentType; #IMPLIED rel %LinkTypes; #IMPLIED rev %LinkTypes; #IMPLIED media %MediaDesc; #IMPLIED > <!-- ************************** --> <!-- Definition of clip tags --> <!-- ************************** --> <!-- Clip tag containing information for a specific fragment --> <!-- ======================================================= --> <!-- through meta, a, img and desc are given in specific order here, their order is acutally random --> <!-- attrs = the base language of the clip's attribute values and of its content elements; a short title representing the anchor (e.g. in tooltips) --> <!-- track = defines different sets of clip tags; clip tags of same type cannot overlap temporally --> <!-- start = specifies the start time of the clip; specified in time relative to the basetime of the header [NOT INCLUDED IN ANNODEXED DOCUMENT] --> <!-- end = specifies the end time of the clip; specified in time relative to the basetime of the header [NOT INCLUDED IN ANNODEXED DOCUMENT] --> <!ELEMENT clip (meta*, a?, img?, desc?)> <!ATTLIST clip %attrs; track CDATA "default" start %Timestamp; #REQUIRED end %Timestamp; #IMPLIED > <!-- A tag containing information for a specific clip --> <!-- ================================================ --> <!-- a tag contains anchor text being a textual description of the link between the current element (the source anchor) and the destination anchor given by the href attribute --> <!-- attrs = the base language of the clip's attribute values and of its content elements; the stylesheet class attribute; a short title representing the anchor (e.g. in tooltips) --> <!-- href = specifies the location of a Web resource, thus defining a link between the current element (the source anchor) and the destination anchor given by this attribute --> <!ELEMENT a (#PCDATA)> <!ATTLIST a %attrs; href %URI; #REQUIRED > <!-- IMG tag to include a representative image for the clip --> <!-- ====================================================== --> <!-- attrs = the language of the image's attribute values; the stylesheet class attribute; a short title representing the image (e.g. in tooltips) --> <!-- src = reference to the image --> <!-- alt = alternative text for the image (accessibility) --> <!ELEMENT img EMPTY> <!ATTLIST img %attrs; src %URI; #REQUIRED alt CDATA #IMPLIED > <!-- DESC human-readable, textual description of the clip (annotation) --> <!-- ======================================================= --> <!-- attrs = the base language of the data in the description; the class & style attributes; a short title representing the desc (e.g. in tooltips) --> <!ELEMENT desc (#PCDATA)> <!ATTLIST desc %attrs; >