<!--This is playfrag DTD-->

<!--entity declarations-->
<!--#############################################-->

<!ENTITY % stdatts 
"ref   IDREF  #IMPLIED
 id    ID     #IMPLIED
 type  CDATA  #IMPLIED
 role  CDATA  #IMPLIED
 class CDATA  #IMPLIED"
>

<!ENTITY % inline.class "|quote|emph|ital|reference|date|place|name|graphic|misc">

<!ENTITY % block.class "|blockquote|footnote|note|list|deflist|table|blockgraphic">


<!-- the top level element-->
<!--##############################################-->

<!ELEMENT play (acknowledge?,meta*,frontmatter?,playbody,backmatter?,endmeta*)>

<!--begin top level element declarations-->
<!--##############################################-->


<!--the acknowledge element is for a simple statement 
designed to be placed at the beginning of the visible document.
Suggested content:
  Name of Book
  Author
  PG and HWG blurb
  Original Transcriber + date
  Marker 
  e.g.
  "Origin of the Species by Charles Darwin
  A project of Project Gutenberg and the HTML Writers Guild.
  Transcribed by  
  Markup by Frank Boumphrey. Jan 22 2000"
  -->

<!ELEMENT acknowledge (#PCDATA %inline.class;)*>
<!ATTLIST acknowledge
  %stdatts;
>

<!--the meta tags are here to provide a means for comment 
at either the very beginning or end of the document-->
<!ELEMENT meta EMPTY>
<!ATTLIST meta
   content  CDATA  #REQUIRED
   id       ID     #IMPLIED
>

<!ELEMENT endmeta EMPTY >
<!ATTLIST endmeta
   content  CDATA  #REQUIRED
   id       ID     #IMPLIED
>



<!--the playbody element contains the body of the play it can 
consist of either part or act divisions-->

<!ELEMENT playbody (part*|act*)>

<!--
the backmatter element contains the backmatter of the play. 
It is the same as for a book -->

<!ELEMENT backmatter ((appendix|index|glossary|biblio)*,colophon?)>

<!--The endmeta tag is groupedwith its twin meta-->


<!--end top level element declarations-->

<!--begin frontmatter element declarations
samme as book except prologue and personae are added-->
<!--##############################################-->

<!ELEMENT frontmatter (htitlepage|copypage|epigraph|titlepage|
                toc|acksect|dedication|preface|prologue|personae|introduction|miscfm)*>

<!ELEMENT htitlepage (#PCDATA|title|subtitle|author|para|poem|song %inline.class;)*>
<!ATTLIST htitlepage
  %stdatts;
>

<!ELEMENT copypage (#PCDATA|para|poem|song|note %inline.class;)*>
<!ATTLIST copypage
  %stdatts;
>

<!ELEMENT epigraph (#PCDATA|para|poem|song|note|blockquote %inline.class;)*>
<!ATTLIST epigraph
  %stdatts;
>


<!ELEMENT titlepage (#PCDATA|title|subtitle|author|pubinfo|para|poem|song|note %inline.class;)*>
<!ATTLIST titlepage
  %stdatts;
>

<!ELEMENT pubinfo (#PCDATA|para|line %inline.class;)*>
<!ATTLIST pubinfo
  %stdatts;
>


<!ELEMENT toc (#PCDATA|title|item|list|deflist %inline.class;)*>
<!--use type or role to describe toctype="other"-->
<!ATTLIST toc
  toctype (contents|maps|graphics|tables|other) "contents" 
  %stdatts;
>

<!ELEMENT acksect (#PCDATA|para|poem|song|note %inline.class;)*>
<!ATTLIST acksect
  %stdatts;
>

<!ELEMENT dedication (#PCDATA|title|para|poem|song|note %inline.class;)*>
<!ATTLIST dedication
  %stdatts;
>


<!ELEMENT preface ((title|chapheader)?,(para|poem|song|simplesect %block.class;)*,endchap?,preauthor?)>
<!ATTLIST preface  %stdatts;
>

<!ELEMENT prologue ((title|chapheader)?,(para|poem|song|simplesect %block.class;)*,endchap?,preauthor?)>
<!ATTLIST prologue  %stdatts;
>

<!ELEMENT introduction ((title|chapheader)?,(para|poem|song|simplesect %block.class;)*,endchap?)>
<!ATTLIST introduction  %stdatts;
>

<!ELEMENT miscfm (#PCDATA|para|poem|song|note %inline.class;)*>
<!ATTLIST miscfm
  %stdatts;
>

<!ELEMENT preauthor (#PCDATA|author %inline.class;)*>
<!ATTLIST preauthor
  %stdatts;
>



<!--end frontmatter element declarations-->

<!--begin playbody element declarations-->
<!--##############################################-->


<!ELEMENT part (titlepage?,(act|prose)*)>
<!ATTLIST part
  %stdatts;
>

<!ELEMENT act (title|scene|speech|poem|song|scndesc|stagedir|prose|note)*>
<!ATTLIST act  %stdatts;
>

<!ELEMENT prose (#PCDATA|title|simplesect|para %inline.class;)*>
<!ATTLIST prose  %stdatts;
>

<!ELEMENT scene (speech|poem|song|scndesc|stagedir|prose|note)*>
<!ATTLIST scene  %stdatts;
>

<!--Validity constraint: Only one speaker per speech 
and this should be the first element-->

<!ELEMENT speech (#PCDATA|speaker|stagedir|song|poem|line %inline.class;)*>
<!ATTLIST speech  %stdatts;
>

<!ELEMENT speaker (#PCDATA %inline.class;)*>
<!ATTLIST speaker  %stdatts;
>


<!--Line element is declared with verse
-->
<!ELEMENT scndesc (#PCDATA %inline.class;)*>
<!ATTLIST scndesc  %stdatts;
>

<!ELEMENT stagedir (#PCDATA %inline.class;)*>
<!ATTLIST stagedir  %stdatts;
>


<!--end playbody element declarations-->

<!--the lowerlevel playbody elements-->
<!--##############################################-->

<!--the act heading elements-->
<!--##############################################-->




<!ELEMENT title (#PCDATA %inline.class;)*>
<!ATTLIST title
  %stdatts;
>

<!ELEMENT subtitle (#PCDATA %inline.class;)*>
<!ATTLIST subtitle
  %stdatts;
>


<!--validity constraint. Only one title,chapnum and chapsummary -->
<!ELEMENT chapheader (title|subtitle|chapnum|chapsummary|blockquote|note)*>
<!ATTLIST chapheader
  %stdatts;
>


<!ELEMENT chapnum (#PCDATA %inline.class;)*>
<!ATTLIST chapnum
  %stdatts;
>

<!ELEMENT chapsummary (#PCDATA %inline.class;)*>
<!ATTLIST chapsummary
  %stdatts;
>


<!--begin backmatter element declarations-->
<!--##############################################-->

<!--end backmatter element declarations-->

<!ELEMENT index (title|item|list|deflist|note)*>
<!ATTLIST index
  indtype (contents|authors|firstlines|tables|other) "contents" 
  %stdatts;
>

<!ELEMENT glossary (title|item|list|deflist|note)*>
<!ATTLIST glossary  
  %stdatts;
>

<!ELEMENT biblio (title|item|list|deflist|note)*>
<!ATTLIST biblio  
  %stdatts;
>


<!ELEMENT appendix ((title|chapheader)?,(para|poem|song|simplesect %block.class;)*,endchap?)>
<!ATTLIST appendix  %stdatts;
>

<!ELEMENT colophon (#PCDATA|para|poem|song %inline.class;)*>
<!ATTLIST colophon
  %stdatts;
>

<!--the block elements-->
<!--##############################################-->


<!--validity constraint. Only one title per paragraph-->
<!ELEMENT para (#PCDATA|title %inline.class;)*>
<!ATTLIST para
  %stdatts;
>

<!ELEMENT simplesect (title,(subtitle|para|poem|song %block.class;)*)>
<!ATTLIST simplesect
  %stdatts;
>





<!ELEMENT blockquote (title?,(para|poem|song)*,attrib?)>
<!ATTLIST blockquote
  %stdatts;
>

<!ELEMENT attrib (#PCDATA %inline.class;)*>
<!ATTLIST attrib
  %stdatts;
>

<!ELEMENT caption (#PCDATA %inline.class;)*>
<!ATTLIST caption
  %stdatts;
>
<!--##############################################-->
<!--poetry and songs in the text-->
<!ELEMENT poem (#PCDATA|title|subtitle|verse|line|note %inline.class;)*>
<!ATTLIST poem
  %stdatts;
>

<!ELEMENT song (#PCDATA|title|subtitle|verse|line|note %inline.class;)*>
<!ATTLIST song
  %stdatts;
>


<!ELEMENT verse (title|subtitle|line)*>
<!ATTLIST verse
  %stdatts;
>

<!ELEMENT line (#PCDATA %inline.class;)*>
<!ATTLIST line
  %stdatts;
>


<!--validity constraint: Only one title per poem or per verse-->

<!--end of poetry in the text-->
<!--endchap-->
<!--##############################################-->
<!--
  Endchap should only be used when there is a 
  considerable ammount of material to be organized.
  For the occasional note footnote and note will suffice
-->

<!ELEMENT endchap (para %block.class;)*>
<!ATTLIST endchap  %stdatts;
>

<!--lists-->
<!--##############################################-->


<!ELEMENT list (list|item)*>
<!ATTLIST list
  %stdatts;
>

<!ELEMENT item (#PCDATA|para|poem|song|simplesect %block.class; %inline.class;)*>
<!ATTLIST item
  %stdatts;
>

<!ELEMENT deflist (item,desc?,def*)*>
<!ATTLIST deflist
  %stdatts;
>

<!ELEMENT desc (#PCDATA %inline.class;)*>
<!ATTLIST desc
  %stdatts;
>

<!ELEMENT def (#PCDATA %inline.class;)*>
<!ATTLIST def
  %stdatts;
>
<!--end lists-->
<!--table element-->
<!--##############################################-->


<!ELEMENT table (title?,row*,caption?)>
<!ATTLIST table
  %stdatts;
>

<!ELEMENT row (cell)*>
<!ATTLIST row
  %stdatts;
>

<!ELEMENT cell (#PCDATA %block.class; %inline.class;)*>
<!ATTLIST cell
  %stdatts;
>

<!--end table-->

<!--graphics-->
<!--##############################################-->

<!--
  Note that the required desc attribute is added 
  text composed by the marker.
-->

<!ELEMENT graphic EMPTY >
<!ATTLIST graphic
  desc CDATA #REQUIRED
  href CDATA #REQUIRED
  %stdatts;
>

<!ELEMENT blockgraphic (title?,graphic,caption?)>
<!ATTLIST blockgraphic
  %stdatts;
>


<!--the inline elements-->
<!--##############################################-->



<!ELEMENT footnote (#PCDATA %inline.class;)*>
<!ATTLIST footnote
  %stdatts;
>

<!ELEMENT note (#PCDATA %inline.class;)*>
<!ATTLIST note
  %stdatts;
>


<!ELEMENT quote (#PCDATA %inline.class;)*>
<!ATTLIST quote
  %stdatts;
>

<!ELEMENT emph (#PCDATA %inline.class;)*>
<!ATTLIST emph
  %stdatts;
>

<!ELEMENT ital (#PCDATA %inline.class;)*>
<!ATTLIST ital
  %stdatts;
>

<!ELEMENT reference (#PCDATA %inline.class;)*>
<!ATTLIST reference
  %stdatts;
>

<!ELEMENT author (#PCDATA %inline.class;)*>
<!ATTLIST author
  %stdatts;
>

<!ELEMENT date (#PCDATA %inline.class;)*>
<!ATTLIST date
  %stdatts;
>

<!ELEMENT place (#PCDATA %inline.class;)*>
<!ATTLIST place
  %stdatts;
>

<!ELEMENT name (#PCDATA %inline.class;)*>
<!ATTLIST name
  %stdatts;
>

<!ELEMENT misc (#PCDATA %inline.class;)*>
<!ATTLIST misc
  %stdatts;
>

<!--personae declarations-->
<!ELEMENT personae (#PCDATA|title|pgroup|persona|para|note %inline.class;)*>
<!ATTLIST personae
  %stdatts;
>

<!ELEMENT pgroup (#PCDATA|title|persona|para|note %inline.class;)*>
<!ATTLIST pgroup
  %stdatts;
>

<!ELEMENT persona (#PCDATA|actor|actress %inline.class;)*>
<!ATTLIST persona
  %stdatts;
>

<!ELEMENT actor (#PCDATA %inline.class;)*>
<!ATTLIST actor
  %stdatts;
>

<!ELEMENT actress (#PCDATA %inline.class;)*>
<!ATTLIST actress
  %stdatts;
>



<!--End of playfrag dtd-->
