Shakespeare DTD by Susan Kelsch

May, 2003

<?xml version="1.0" encoding="UTF-8"?>
<!-- romeo.dtd by Sue Kelsch April 19, 2003 -->
<!-- a DTD for encoding the plays of Shakespeare -->

<!-- Root Element -->
<!ELEMENT play (title, dramatispersonae, setting, prologue?, act+, epilogue?, note*, point*)>
<!ATTLIST play type (Comedy|Tragedy|Nature|History) #REQUIRED
               editor CDATA #REQUIRED
               lang CDATA #FIXED 'en'>

<!ELEMENT title (#PCDATA)>

<!ELEMENT dramatispersonae (charactername)+>

<!ELEMENT charactername (characterdescription, speaker*)+>
<!ELEMENT speaker (#PCDATA)>
<!ATTLIST speaker family CDATA #IMPLIED>
<!ELEMENT characterdescription (#PCDATA)>

<!ELEMENT setting (#PCDATA)>

<!ELEMENT act (stage|scene)*>
<!ATTLIST act actnumber CDATA #REQUIRED>

<!ELEMENT scene (stage|speechblock|onstage)*>
<!ATTLIST scene scenenumber CDATA #REQUIRED
                 scenedescription CDATA #REQUIRED >

<!ELEMENT speechblock (line|onstage)*>
<!ATTLIST speechblock type (prose|iambicpentameter) #REQUIRED>
<!ATTLIST speechblock speaker CDATA #REQUIRED
                      speechname CDATA #IMPLIED>
<!ELEMENT line (#PCDATA|notemarker|pointmarker|stage|linebreak|onstage)*>
<!ATTLIST line lineID ID #REQUIRED>
<!ELEMENT stage (#PCDATA|addedstage)*>
<!ELEMENT addedstage (#PCDATA)>
<!ELEMENT notemarker EMPTY>
<!ATTLIST notemarker number CDATA #REQUIRED>
<!ELEMENT note (#PCDATA)>
<!ATTLIST note number CDATA #IMPLIED>
<!ELEMENT prologue (stage|speechblock|onstage)*>
<!ELEMENT epilogue (stage|speechblock|onstage)*>
<!ELEMENT pointmarker EMPTY>
<!ATTLIST pointmarker briefname CDATA #REQUIRED>
<!ELEMENT onstage EMPTY>
<!ATTLIST onstage characters CDATA #REQUIRED>
<!ELEMENT point (#PCDATA)>
<!ATTLIST point briefname CDATA #IMPLIED>
<!ELEMENT linebreak EMPTY>