<!-- 
	=========== CMIL DTD =============================================

	This is CMIL 0.9 DTD for Contextual Media Integration Language
	Draft: Date 2000/02/29 
	
	Author: Rick Dietz <rick@oacea.com>

	This DTD is available at the system identifier:

		http://www.oacea.com/cmil/cmil-0.9.dtd
     
	Further Information about CMIL can be found at:
     
		http://www.oacea.com/cmil/
     
	=========== CMIL DTD =============================================
-->
				
<!--=========== Misc Entities ========================================-->

<!ENTITY % id-attribute  
	"id  		ID    		#IMPLIED"
	>

<!ENTITY % basic-attributes  
	"%id-attribute;
	title  		CDATA    	#IMPLIED 
	desc  		CDATA    	#IMPLIED"
	>

<!ENTITY % style-attributes  
	"class		CDATA		#IMPLIED
  	style       CDATA		#IMPLIED"
	>

<!ENTITY % core-attributes  
	"%basic-attributes;
	%style-attributes;
	abstract	CDATA		#IMPLIED		
  	creator   	CDATA		#IMPLIED
  	rights      CDATA		#IMPLIED"
  	>

<!--Applications of CMIL incorporating location data should specify
	the particular datum used for subsequent location data provided 
	in the document.-->
<!ENTITY % datum-attribute  
	"datum      CDATA		#IMPLIED" >

<!--The timezone is specified as a numerical offset from the 
	Greenwich Mean.  For example, Eastern Standard Time is "-0500".-->
<!ENTITY % timezone-attribute  
	"timezone 	CDATA		#IMPLIED" >

<!ENTITY % shape-attribute  
	"shape (cone|cylinder|sphere) 'sphere'" >

<!-- ========== Hyperlinking =========================================-->
<!ENTITY % link-attributes  
	"%id-attribute;
	title		CDATA			#IMPLIED
	href		CDATA			#REQUIRED
	actuate		(auto|user)		'user'			
	show		(present|replace|transform) 'present'"
	>

<!ENTITY % anchor-attributes  
	"begin  	CDATA    		#IMPLIED 
	end  		CDATA    		#IMPLIED 
	coords  	CDATA    		#IMPLIED"
	>

<!--=========== Selection Parameter Attributes ==========================-->
<!ENTITY % selection-parameters
	"system-bitrate				CDATA				#IMPLIED
	system-gps-error			CDATA				#IMPLIED
	system-language				CDATA				#IMPLIED
	system-mode  				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"
	>

<!--=========== MEDIA Attributes =====================================-->
<!ENTITY % media-attributes  
	"region		IDREF		#IMPLIED
	alt			CDATA		#IMPLIED
	src			CDATA		#IMPLIED
	type		CDATA		#IMPLIED
	dur			CDATA 		#IMPLIED
	repeat		CDATA		'1'
	%core-attributes;
	%selection-parameters;" 
	>

<!ENTITY % container-elements  "(group | node | a | sift | switch)" >

<!ENTITY % media-elements  "(animation | audio | image | model | 
	ref | speech | text | textstream | vector | video | www)" >


<!--=========== CMIL Element =========================================-->
<!ELEMENT cmil	(head,body) >
<!ATTLIST cmil
	%id-attribute;
    >
				
<!--=========== 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-attribute;
    >

<!--=========== BODY Element =========================================-->
<!ELEMENT body  (%container-elements; | attributes)* >

<!ATTLIST body
	%id-attribute;
	onload      CDATA   	#IMPLIED
    onunload 	CDATA   	#IMPLIED
	bgcolor		CDATA		#IMPLIED 
	mgcolor		CDATA		#IMPLIED 
	fgcolor		CDATA		#IMPLIED 
	bgimage		CDATA		#IMPLIED 
	nwcoord		CDATA		#IMPLIED 
	secoord		CDATA		#IMPLIED
	bgaudio		CDATA		#IMPLIED
	>

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

<!--=========== LINK Element =========================================
	Link is used primarily to connect to external scripts and
	style documents-->
<!ELEMENT link   EMPTY  >

<!ATTLIST link
	%core-attributes;
 	charset		CDATA		#IMPLIED 
	href		CDATA		#IMPLIED 
	hreflang	CDATA		#IMPLIED 
	type		CDATA		#IMPLIED 
	rel			CDATA		#IMPLIED 
	rev			CDATA		#IMPLIED 
	media		CDATA		#IMPLIED
    >

<!--=========== META Element =========================================
	Meta is a property-value pair for specifying metainformation such
	as "keywords", "description" and "creator"-->
<!ELEMENT meta   EMPTY  >

<!ATTLIST meta
	name		CDATA		#REQUIRED 
	content		CDATA		#REQUIRED
    >

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

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

<!--=========== 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
	>

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

<!ATTLIST noscript
	%id-attribute;
	>


<!--=========== BASE Element =========================================
	The base can as an option specify the root address for relative 
	URI's.  In like fashion it can optionally 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.-->
<!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-attribute;
	%timezone-attribute;
	%shape-attribute;
	>

<!--=========== PROX Element =========================================
	The prox (proximity) element is a container for tag elements which 
	associate coded physical objects with an internet document via 
	URI.-->
<!ELEMENT prox  (tag | sift | switch)* >

<!ATTLIST prox
	%id-attribute;
	>
		
<!--The Tag element is essentially a hypertext anchor. It requires
	an id and href attribute be valid. The id of the Tag element
	corresponds to the value of an external tag. It may contain any 
	number of Locator elements allowing some forms of extended 
	linking. It is otherwise empty.-->
<!ELEMENT tag  (locator | sift | switch)* >

<!ATTLIST tag
	%link-attributes;
	%selection-parameters;
	>
	
<!--=========== LOCATOR Element ======================================
	The Locator element provides tag and a elements a means of 
	support for extended linking.-->
<!ELEMENT locator   EMPTY  >

<!ATTLIST locator
	%link-attributes;
	role  	CDATA    	#IMPLIED
	%style-attributes;
	%anchor-attributes;
	%selection-parameters;
    >	
				
<!--=========== ATTRIBUTES Element ===================================
	The attributes element is a container for the individual attribute 
	elements of a CMIL node when found within the body.  When present 
	in the head of a CMIL document, the attributes element allows
	authors to define document level attributes such as channel and 
	coverageas well as define the parameters of attributes to be used 
	within nodes in the body; one may set the units, title, and 
	description of an author-defined attribute using this approach.-->
<!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
	%basic-attributes;
	>

<!--=========== ATT Element ==========================================
	The att element consists of a property-value pair allowing for 
	user-specified attributes beyond the few specified here such as 
	loc, orient, etc.  Dynamic attributes need support here through
	an href or reference to an id stamped piece of code.  -->
<!ELEMENT att   EMPTY  >

<!ATTLIST att
	name  		CDATA    	#REQUIRED 
	content  	CDATA    	#REQUIRED
	metric		CDATA		#IMPLIED
	src			CDATA		#IMPLIED
	%basic-attributes;
	>

<!--=========== A Element ============================================
	The a element allows for inline linking behavior.  Extended links
	will contain a number of locator elements as child elements.  An
	a element may exist as an attribute of a node or encapsulate 
	other container elements.-->
<!ELEMENT a  (locator | sift | switch | group | node)* >

<!ATTLIST a
    %link-attributes;
    %style-attributes;
    %selection-parameters;
    >

<!--=========== CHANNEL Element ======================================
	Content description.-->
<!ELEMENT channel   EMPTY  >

<!ATTLIST channel
	name  		CDATA    	#IMPLIED
	%basic-attributes;
	>

<!--=========== COVERAGE Element =====================================
	Space where the given document is valid for display by augmented 
	reality applications....-->
<!ELEMENT coverage   EMPTY  >

<!ATTLIST coverage
	%shape-attribute;
	radius  	CDATA    	#IMPLIED 
	height  	CDATA    	#IMPLIED
	>

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

<!ATTLIST loc
	%datum-attribute;
    coords  	CDATA    	#REQUIRED 
	mode 	(reltobase | reltoviewer | absolute)	"absolute"
	%basic-attributes;
	>

<!--=========== 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"
    %basic-attributes;
    >

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

<!ATTLIST time
	time  		CDATA    	#IMPLIED 
	begin  		CDATA    	#IMPLIED 
	end  		CDATA    	#IMPLIED
    %timezone-attribute;
	%basic-attributes;
	>
	
<!--=========== SIFT Element =======================================
	The purpose of the sift element is to allow for non-mutually 
	exclusive content selection among media or container elements 
	in CMIL documents based on system settings or user preferences.-->
<!ELEMENT sift  (group | node | a | sift | switch | locator | tag | attributes)* >

<!ATTLIST sift
     %basic-attributes;
     %selection-parameters;
     >
			
<!--=========== SWITCH Element =======================================
	The purpose of the switch element is to allow for content 
	negociation between elements with targeted media.  The switch 
	syntax is borrowed largely intact from the W3C's Synchronized
	Multimedia Integration Language 1.0 recommendation.-->
<!ELEMENT switch  (group | node | a | sift | switch | locator | tag | attributes)* >

<!ATTLIST switch
     %basic-attributes;
     %selection-parameters;
     >
				
<!--=========== GROUP Element ========================================
	The group element is a generic container element.-->
<!ELEMENT group  (%container-elements; | attributes)* >

<!ATTLIST group
	%core-attributes;
	%selection-parameters;
    >
				
<!--========== NODE Element ==========================================
	The node element is the kernel of contextual media, uniting 
	digital media and attributes.-->
<!ELEMENT node  ((attributes,media) | (media,attributes)) >

<!ATTLIST node           
	%core-attributes;
	%selection-parameters;
	>	

<!--=========== MEDIA Element ========================================
	The media element is a container for media-elements which follow.-->
<!ELEMENT media  (%media-elements;)* >

<!ATTLIST media
	%basic-attributes;
	>

<!ELEMENT animation  (anchor?) >
<!ATTLIST animation
	%media-attributes;
	>

<!ELEMENT audio  (anchor?) >
<!ATTLIST audio
	%media-attributes;
	>
	
<!ELEMENT image  (anchor?) >
<!ATTLIST image
	%media-attributes;
	>
	
<!ELEMENT model  (anchor?) >
<!ATTLIST model
	%media-attributes;
	>
	
<!ELEMENT ref  (anchor?) >
<!ATTLIST ref
	%media-attributes;
	>
	
<!ELEMENT speech  (anchor?) >
<!ATTLIST speech
 	%media-attributes;
	>
	
<!ELEMENT text  (#PCDATA ) >
<!ATTLIST text
	%media-attributes;
	>
	
<!ELEMENT textstream  (anchor?) >
<!ATTLIST textstream
	%media-attributes;
	>
	
<!ELEMENT vector  (anchor?) >
<!ATTLIST vector
 	%media-attributes;
	>
	
<!ELEMENT video  (anchor?) >
<!ATTLIST video
	%media-attributes;
	>
	
<!--=========== WWW element ==========================================
	The www element allows World Wide Web content to exists as a CMIL
	media type.  The www element may link to an external HTML 
	resource.  This should also support inclusion of HTML as a 
	namespace but doesn't at this time.
	
	removed %media-attributes; to avoid duplicate id and title 
	attributes -->
<!ELEMENT www  (#PCDATA ) >
<!ATTLIST www
	%link-attributes;
	>
	
<!--=========== Associated Link Element ==============================
	Anchor serves as an analog of the HTML imagmap with the additional
	enhancement of temporal linking.  Anchor is borrowed from the W3C 
	SMIL1.0 recommendation.-->
<!ELEMENT anchor   (locator | sift | switch)*  >

<!ATTLIST anchor
	%link-attributes;
	%anchor-attributes;
	>


