<!-- NCX 1.0.0 DTD  2001-09-27 
file: ncx100.dtd                                 

  Authors: Mark Hakkinen, George Kerscher, Tom McLaughlin, James Pritchett, and Michael Moodie
    
  Description:
                                                  
  NCX (Navigation Control for XML applications) is a generalised navigation definition DTD for application
to Digital Talking Books, eBooks, and general web content models.                                                
      
  
  This DTD is an XML application that layers navigation functionality on top of SMIL 2.0  content.                                       
  
  The NCX defines a navigation path/model which may be applied upon existing publications,
without modification of the existing publication source, so long as the navigation targets within
the source publication can be directly referenced via a URI.                      
         			
DTD Change List:
27 September 2001 MM
	Added missing > at end of smilCustomTest ATTLIST.
	Changed attribute navClass to class on img, text, and audio.
20 September 2001 TM
	Fixed PUBLIC and SYSTEM identifiers.
	Added value attribute to navTarget.
	Corrected smilCustomTest ATTLIST.
7 September 2001 MM
	Added new element smilCustomTest to content of head.
5 September 2001 MM
        Added FIXED version attribute on ncx.
4 September 2001 TM
	Added docAuthor element.
	Changed navType attribute back to class.
	Drop uid element, add dtb:uid to required metadata.
	Drop levelNumber attribute.
14 August 2001 MM
        Changed description of text element.
        Made navLabel optional, repeatable (*) for navMap.
        Added %i18n; to ATTLIST for docTitle. 
        Amplified description of navLabel.
10 August 2001 0830 TM
	Changed element names to conform with OEB: navStruct->navMap, navObject->navPoint, descr->navLabel, class->navClass, structRef->mapRef, image->img.
	Added PUBLIC and SYSTEM identifiers.
	From <head>: dropped charset, made uid optional, made meta required.
	From <navMap>: dropped navLabel.
	Added entity SMILtimeVal for content of clipBegin and clipEnd.
	New content model for navLabel: at least one of text or audio is required.
25 January 2001 0930 TM
	Camelcased onFocus and onBlur.
	Made lang attribute NMTOKEN.
23 January 2001 5 p.m.
    Dropped all dtb-prefixed metadata elements.  Retained <uid>, <charset>, and <meta>*.
    Corrected spelling of docTitle in content model for <ncx>.
    Moved comment defining <text> to immediately preceding <text> declaration.
    Defined <uid>	and <charset>.
23 January 2001
    Restored navList and navTarget
    Wrapped navTarget audio, text, etc. in a <descr> element
    Added <descr> to navList
    navStruct is no longer repeatable
    Removed "type" attribute for navStruct
    Removed "structRef" attribute for navObject
    Camel-cased levelNumber attribute and <docTitle> element
    Added prodnote and sidebar to navList navType values
    Drop style attribute from all elements
    Change class attribute on navObject, navTarget to navType
    Drop class attribute from everything except text, audio, image elements
    Created specific elements for each required metadata item
    Reordered element declarations to be a little more intuitive

18 January 2001 - JP - Changes to more closely match latest version of OEB NCX:
    Allowed 1 or more navStructs per ncx
    Removed navList and navTarget
    Removed navLevel and allowed nesting of navObject instead
    Wrapped audio, text, etc. in a <descr> element
    Allowed multiple <descr> elements per navObject (to support multiple languages)
    Added <descr> (one or more) to navStruct to describe overall structure
    Added "type" attribute to navStruct to store hierarchical/flat information
    Added rules and reserved values for "class" attribute of navStruct
    Added "pageRef" attribute to navObject
    Added "levelnumber" and "value" attributes to navObject
    Removed <title> from <head>
    Added <meta> to <head>

(See version 1.6 for changes prior to this version.)
22 August 2000 - TM/MM - Dropped entity %coreattrs.  Replaced it with individual attributes id, class, and style (dropped title attribute) to allow id to be REQUIRED in some instances.
    Changed attribute onlostfocus to onblur.
    Changed structref to structRef.

-->
   
<!-- The following identifiers apply to this DTD:
	"-//NISO//DTD ncx v1.0.0//EN"
	"http://www.loc.gov/nls/z3986/v100/ncx100.dtd"
-->

<!-- Basic Entities -->

<!ENTITY % i18n 
  "lang		NMTOKEN		#IMPLIED
  dir		(ltr|rtl)	#IMPLIED" >

<!ENTITY % SMILtimeVal	"CDATA" >
<!ENTITY % uri		"CDATA" >
<!ENTITY % script	"CDATA" >

<!-- ELEMENTS -->

<!-- Top Level NCX Container. -->
<!ELEMENT ncx (head, docTitle, docAuthor*, navMap, navList*)>
<!ATTLIST ncx 
  version     CDATA     #FIXED "1.0.0"
  %i18n;
>

<!-- Document Head - Contains all NCX metadata.  
-->

<!ELEMENT head (smilCustomTest | meta)+>

<!-- smilCustomTest - Duplicates customTest data found in SMIL files.  Each unique customTest element that appears in one or more SMIL files must have its attributes duplicated in a smilCustomTest element in the NCX.  The NCX thus gathers in one place all customTest elements used in the SMIL files, for presentation to the user.
-->
<!ELEMENT smilCustomTest EMPTY>
<!ATTLIST smilCustomTest
id		ID		#REQUIRED
defaultState	(true|false) 	'false'
override	(visible|hidden) 'hidden'>  

<!-- Meta Element - metadata about this NCX -->
<!ELEMENT meta EMPTY>
<!ATTLIST meta
  name		CDATA		#REQUIRED
  content	CDATA		#REQUIRED
  scheme	CDATA		#IMPLIED
>

<!-- DocTitle - the title of the document, required and must immediately follow head. 
-->

<!ELEMENT docTitle (text, audio?)>
<!ATTLIST docTitle
  id		ID		#IMPLIED
  %i18n;
>

<!-- DocAuthor - the author of the document, immediately follows docTitle.
-->

<!ELEMENT docAuthor (text, audio?)>
<!ATTLIST docAuthor
  id		ID		#IMPLIED
  %i18n;
>

<!-- Navigation Structure - container for all of the NCX objects that are part of the hierarchical structure of the document.
-->

<!ELEMENT navMap (navLabel*, navPoint+)>
<!ATTLIST navMap
  id		ID		#IMPLIED
>

<!-- Navigation Point - contains description(s) of target, as well as a pointer to entire content of target.
Hierarchy is represented by nesting navPoints.  "class" attribute describes the kind of structural unit this object represents (e.g., "chapter", "section").  "value" attribute is a numerical representation of the text content of the
label if this is a purely numerical (integer only) label (e.g., a page number).  "pageRef" is the id of the page navTarget on which this structure target begins.
-->
<!ELEMENT navPoint (navLabel+, content, navPoint*)>
<!ATTLIST navPoint
  id		ID			#REQUIRED
  onFocus	%script;	#IMPLIED
  onBlur	%script;	#IMPLIED
  class		CDATA		#IMPLIED
  value		CDATA		#IMPLIED
  pageRef	IDREF		#IMPLIED
>

<!-- Navigation List - container for distinct, flat sets of navigable elements, e.g.  page numbers, 
notes, figures, tables, etc.  Essentially a flat version of navMap.  The "class" attribute describes the type of object contained in this navList, using dtbook element names, e.g., pagenum, note.
-->

<!ELEMENT navList   (navLabel+, navTarget+) >
<!ATTLIST navList
  id		ID		#IMPLIED
  class		CDATA		#IMPLIED
>

<!-- Navigation Target - contains description(s) of target, as well as a pointer to entire content of target.
navTargets are the equivalent of navPoints for use in navLists. "mapRef" is the id of another navPoint within this NCX that contains this navTarget.  "class" attribute describes the kind of structure this target represents, using its dtbook element name, e.g., pagenum, note.
-->

<!ELEMENT navTarget  (navLabel+, content) >
<!ATTLIST navTarget
  id		ID		#REQUIRED
  onFocus	%script;	#IMPLIED
  onBlur	%script;	#IMPLIED 
  class		CDATA		#IMPLIED
  value		CDATA		#IMPLIED
  mapRef	IDREF		#REQUIRED
>

 
<!-- Navigation Label - Contains a description of a given <navMap>, <navPoint>, <navList>, or <navTarget> in various media for presentation to the user. Can be repeated so descriptions can be provided in multiple languages. -->
<!ELEMENT navLabel ((text,(audio?, img?))|((text?), audio, (img?))) >
<!ATTLIST navLabel
	%i18n; 
>


<!-- Content Element - pointer into SMIL to beginning of navPoint. -->
<!ELEMENT content EMPTY>
<!ATTLIST content
  id		ID		#IMPLIED
  src		%uri;		#REQUIRED
>

<!-- Text Element - Contains text of docTitle, navPoint heading, navTarget (e.g., page number), or label for navMap or navList. -->
<!ELEMENT text (#PCDATA)>
<!ATTLIST text
  id		ID				#IMPLIED
  class	CDATA			#IMPLIED
>

<!-- Audio Element - audio clip of navPoint heading. -->
<!ELEMENT audio EMPTY>
<!ATTLIST audio
  id		ID				#IMPLIED
  class	CDATA			#IMPLIED
  src		%uri;			#REQUIRED
  clipBegin	%SMILtimeVal;	#IMPLIED
  clipEnd	%SMILtimeVal;	#IMPLIED
>

<!-- Image Element - image that may accompany heading. -->
<!ELEMENT img EMPTY>
<!ATTLIST img
  id		ID			#IMPLIED
  class	CDATA		#IMPLIED
  src		%uri;		#REQUIRED
>