<!-- bookmark 1.0.0 DTD 2001-09-27
file: bookmark100.dtd  
   
Authors: Tom McLaughlin and Michael Moodie

Change list:
		revised: 07/27/01 - made lastmark optional, camelCased timeOffset and charOffset, changed hilStart and End to hiliteStart, hiliteEnd.  Changed definition of audio. - M. Moodie  
		revised: 01/17/2001 - added label attrs to bookmark and hilite

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

      
<!-- ********************* Entities ******************* -->
<!ENTITY % uri "CDATA">
<!-- ********************* Elements ********************* -->
<!-- BookmarkSet: The set of bookmarks for a book consists of the title, a unique identifier of the book, the last place the reader left off and zero or more bookmarks, highlights, and associated audio or textual notes. This set is intended for export of bookmarks, highlights and notes to another player; the markup is not required for a player's internal representation of bookmarks.
 -->
<!ELEMENT bookmarkSet	(title, uid, lastmark?, (bookmark | hilite)*) >
<!-- Title: The book's title in text and an optional audio clip.
 -->
<!ELEMENT title	(text, audio?) >

<!-- uid: A globally unique identifier for the book.
 -->
<!ELEMENT uid	(#PCDATA) >

<!-- Bookmark: Location and optional note. Location consists of a uri pointing to the id attribute of the <par> element in the SMIL file that contains the bookmark plus a time offset in seconds (or character offset) to the exact place.  Player should by default automatically number bookmarks in the order in which they fall in the book.
 -->
<!ELEMENT bookmark	(ncxRef, uri, (timeOffset | charOffset), note?) >
<!ATTLIST bookmark
	label		CDATA		#IMPLIED
>  

<!-- NcxRef: Captures current location in NCX (the id of the current navPoint)at time lastmark, bookmark, or highlight is set.  Ensures that current location in NCX and SMIL are synchronized after moving to a lastmark, etc., so that any global navigation commands issued by the user will start from the current location. -->
<!ELEMENT ncxRef       (#PCDATA)>

<!-- Lastmark: Location where reader left off and where player will resume play when restarted.
 -->
<!ELEMENT lastmark	(ncxRef, uri, (timeOffset | charOffset)) >

<!-- Hilite: A block of text with an optional note attached.
 -->
<!ELEMENT hilite	(hiliteStart, hiliteEnd, note?) >
<!ATTLIST hilite
	label		CDATA		#IMPLIED
>  

<!-- HilStart: Starting point of highlighted block.
 -->
<!ELEMENT hiliteStart	(ncxRef, uri, (timeOffset | charOffset)) >

<!-- HilEnd: End point of highlighted block.
 -->
<!ELEMENT hiliteEnd		(ncxRef, uri, (timeOffset | charOffset)) >

<!-- Uri: pointer to id of <par> or <seq> in SMIL, to id in text-only file, or to audio file that contains the bookmark.
 -->
<!ELEMENT uri	(#PCDATA) >

<!-- Timeoffset: Exact position of bookmark in SMIL file or audio-only file referenced by the uri; in seconds.fraction (seconds=DIGIT+, fraction=3DIGIT).
 -->
<!ELEMENT timeOffset	(#PCDATA) >

<!-- Charoffset: Exact position of bookmark in text-only file referenced by the uri: in characters, counting from nearest previous tag with an id.  White space is normalized (collapsed to one character) and tags are not counted.
 -->
<!ELEMENT charOffset     (#PCDATA) >

<!-- Note: The note is for the user's input, random thoughts, musings, etc. It can be text or audio or both.
 -->
<!ELEMENT note		(text?, audio?) >

<!-- Text: Text of title or note. 
 -->
<!ELEMENT text	(#PCDATA) >
<!-- Audio: Audio clip of user-recorded note, in any format supported by standard.
 -->
<!ELEMENT audio	EMPTY >
<!ATTLIST audio
	
   src         %uri;    #REQUIRED
   clipBegin   CDATA    #IMPLIED
   clipEnd     CDATA    #IMPLIED
>