<?xml version="1.0"?>
<rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  <!--Schema generated 2008-07-08T17:38:29Z..
Copyright 2008 TEI Consortium.
This is free software; you can redistribute it and/or
	    modify it under the terms of the GNU General Public
	    License as published by the Free Software Foundation;
	    either version 2 of the License, or (at your option) any
	    later version.
This material is distributed in the hope that it will be
	    useful, but WITHOUT ANY WARRANTY; without even the implied
	    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
	    PURPOSE. See the GNU General Public License for more
	    details.
You should have received a copy of the GNU General Public
	    License along with this file; if not, write to the Free
	    Software Foundation, Inc., 59 Temple Place, Suite 330,
	    Boston, MA 02111-1307, USA.
For general (non-technical) enquiries, contact the TEI
	  Consortium at info@tei-c.org; 
for membership enquiries contact membership@tei-c.org; for
technical enquiries, particularly about the
		Guidelines, DTDs, schemas, or software available from
		the TEI-C, contact editors@tei-c.org.
For up to date information, consult the TEI web
	      site at http://www.tei-c.org/P5/. 
		Performance texts-->
  <!--Definitions from module drama-->
  <!--Set global predeclared macros-->
  <!--Set predeclared macros-->
  <!--0. predeclared macros-->
  <!--1. classes-->
  <!--2. elements-->
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="actor">
    <element name="actor">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Name of an actor appearing within a cast list.</a:documentation>
      <ref name="actor.content"/>
      <ref name="actor.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="actor.content">
    <rng:ref name="macro.phraseSeq"/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="actor.localattributes">
    <rng:ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="camera">
    <element name="camera">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">describes a particular camera angle or viewpoint in a screen play.</a:documentation>
      <ref name="camera.content"/>
      <ref name="camera.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="camera.content">
    <rng:ref name="macro.paraContent"/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="camera.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.typed.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="caption">
    <element name="caption">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">contains the text of a caption or other text displayed as part of
a film script or screenplay.</a:documentation>
      <ref name="caption.content"/>
      <ref name="caption.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="caption.content">
    <rng:ref name="macro.paraContent"/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="caption.localattributes">
    <rng:ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="castGroup">
    <element name="castGroup">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(cast list grouping) groups one or more individual castItem
elements within a cast list.</a:documentation>
      <ref name="castGroup.content"/>
      <ref name="castGroup.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="castGroup.content">
    <rng:group>
      <rng:zeroOrMore>
        <rng:choice>
          <rng:ref name="model.global"/>
          <rng:ref name="model.headLike"/>
        </rng:choice>
      </rng:zeroOrMore>
      <rng:oneOrMore>
        <rng:choice>
          <rng:ref name="castItem"/>
          <rng:ref name="castGroup"/>
          <rng:ref name="roleDesc"/>
        </rng:choice>
        <rng:zeroOrMore>
          <rng:ref name="model.global"/>
        </rng:zeroOrMore>
      </rng:oneOrMore>
      <rng:optional>
        <rng:ref name="trailer"/>
        <rng:zeroOrMore>
          <rng:ref name="model.global"/>
        </rng:zeroOrMore>
      </rng:optional>
    </rng:group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="castGroup.localattributes">
    <rng:ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="castItem">
    <element name="castItem">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(cast list item) contains a single entry within a cast list, describing
either a single role or a list of non-speaking roles.</a:documentation>
      <ref name="castItem.content"/>
      <ref name="castItem.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="castItem.content">
    <rng:zeroOrMore>
      <rng:choice>
        <rng:text/>
        <rng:ref name="model.gLike"/>
        <rng:ref name="model.castItemPart"/>
        <rng:ref name="model.phrase"/>
        <rng:ref name="model.global"/>
      </rng:choice>
    </rng:zeroOrMore>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="castItem.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:optional>
      <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="type" a:defaultValue="role">
        <a:documentation>characterizes the cast item.
   </a:documentation>
        <rng:choice>
          <rng:value>role</rng:value>
          <a:documentation>the item describes a single role.
       </a:documentation>
          <rng:value>list</rng:value>
          <a:documentation>the item describes a list of non-speaking roles.
   </a:documentation>
        </rng:choice>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="castList">
    <element name="castList">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(cast list) contains a single cast list or dramatis personae.</a:documentation>
      <ref name="castList.content"/>
      <ref name="castList.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="castList.content">
    <rng:group>
      <rng:zeroOrMore>
        <rng:choice>
          <rng:ref name="model.divTop"/>
          <rng:ref name="model.global"/>
        </rng:choice>
      </rng:zeroOrMore>
      <rng:zeroOrMore>
        <rng:group>
          <rng:ref name="model.common"/>
        </rng:group>
        <rng:zeroOrMore>
          <rng:ref name="model.global"/>
        </rng:zeroOrMore>
      </rng:zeroOrMore>
      <rng:oneOrMore>
        <rng:choice>
          <rng:ref name="castItem"/>
          <rng:ref name="castGroup"/>
        </rng:choice>
        <rng:zeroOrMore>
          <rng:ref name="model.global"/>
        </rng:zeroOrMore>
      </rng:oneOrMore>
      <rng:zeroOrMore>
        <rng:group>
          <rng:ref name="model.common"/>
        </rng:group>
        <rng:zeroOrMore>
          <rng:ref name="model.global"/>
        </rng:zeroOrMore>
      </rng:zeroOrMore>
    </rng:group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="castList.localattributes">
    <rng:ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="epilogue">
    <element name="epilogue">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">contains the epilogue to a drama,  typically spoken by an actor
out of character, possibly in association with a particular performance
or venue.</a:documentation>
      <ref name="epilogue.content"/>
      <ref name="epilogue.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="epilogue.content">
    <rng:group>
      <rng:zeroOrMore>
        <rng:choice>
          <rng:ref name="model.divTop"/>
          <rng:ref name="model.global"/>
        </rng:choice>
      </rng:zeroOrMore>
      <rng:oneOrMore>
        <rng:group>
          <rng:ref name="model.common"/>
        </rng:group>
        <rng:zeroOrMore>
          <rng:ref name="model.global"/>
        </rng:zeroOrMore>
      </rng:oneOrMore>
      <rng:zeroOrMore>
        <rng:group>
          <rng:ref name="model.divBottom"/>
        </rng:group>
        <rng:zeroOrMore>
          <rng:ref name="model.global"/>
        </rng:zeroOrMore>
      </rng:zeroOrMore>
    </rng:group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="epilogue.localattributes">
    <rng:ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="move">
    <element name="move">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(movement) marks the actual entrance or exit of one or more characters on stage.</a:documentation>
      <ref name="move.content"/>
      <ref name="move.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="move.content">
    <rng:empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="move.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.ascribed.attributes"/>
    <rng:optional>
      <rng:attribute name="type">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">characterizes the movement, for example as an entrance or exit.
Suggested values include: 1] entrance; 2] exit; 3] onStage</a:documentation>
        <rng:choice>
          <rng:value>entrance</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">character is entering the stage.</a:documentation>
          <rng:value>exit</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">character is exiting the stage.</a:documentation>
          <rng:value>onStage</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">character moves on stage</a:documentation>
          <rng:data type="Name"/>
        </rng:choice>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="where">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies the direction of a stage movement.
Sample values include: 1] L (left); 2] R (right); 3] C (center)</a:documentation>
        <rng:list>
          <rng:oneOrMore>
            <ref name="data.enumerated"/>
          </rng:oneOrMore>
        </rng:list>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="perf">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(performance) identifies the performance or performances in which this movement
		occurred as specified.</a:documentation>
        <rng:list>
          <rng:oneOrMore>
            <ref name="data.pointer"/>
          </rng:oneOrMore>
        </rng:list>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="performance">
    <element name="performance">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">contains a section of front or back matter describing how a
dramatic piece is to be performed in general or how it was performed
on some specific occasion. </a:documentation>
      <ref name="performance.content"/>
      <ref name="performance.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="performance.content">
    <rng:group>
      <rng:zeroOrMore>
        <rng:choice>
          <rng:ref name="model.divTop"/>
          <rng:ref name="model.global"/>
        </rng:choice>
      </rng:zeroOrMore>
      <rng:oneOrMore>
        <rng:group>
          <rng:ref name="model.common"/>
        </rng:group>
        <rng:zeroOrMore>
          <rng:ref name="model.global"/>
        </rng:zeroOrMore>
      </rng:oneOrMore>
      <rng:zeroOrMore>
        <rng:group>
          <rng:ref name="model.divBottom"/>
        </rng:group>
        <rng:zeroOrMore>
          <rng:ref name="model.global"/>
        </rng:zeroOrMore>
      </rng:zeroOrMore>
    </rng:group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="performance.localattributes">
    <rng:ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="prologue">
    <element name="prologue">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">contains the prologue to a drama,  typically spoken by an actor out of
character, possibly in association with a particular performance or venue.</a:documentation>
      <ref name="prologue.content"/>
      <ref name="prologue.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="prologue.content">
    <rng:group>
      <rng:zeroOrMore>
        <rng:choice>
          <rng:ref name="model.divTop"/>
          <rng:ref name="model.global"/>
        </rng:choice>
      </rng:zeroOrMore>
      <rng:oneOrMore>
        <rng:group>
          <rng:ref name="model.common"/>
        </rng:group>
        <rng:zeroOrMore>
          <rng:ref name="model.global"/>
        </rng:zeroOrMore>
      </rng:oneOrMore>
      <rng:zeroOrMore>
        <rng:group>
          <rng:ref name="model.divBottom"/>
        </rng:group>
        <rng:zeroOrMore>
          <rng:ref name="model.global"/>
        </rng:zeroOrMore>
      </rng:zeroOrMore>
    </rng:group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="prologue.localattributes">
    <rng:ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="role">
    <element name="role">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the name of a dramatic role, as given in a cast list.</a:documentation>
      <ref name="role.content"/>
      <ref name="role.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="role.content">
    <rng:ref name="macro.phraseSeq"/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="role.localattributes">
    <rng:ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="roleDesc">
    <element name="roleDesc">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(role description) describes a character's role in a drama.</a:documentation>
      <ref name="roleDesc.content"/>
      <ref name="roleDesc.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="roleDesc.content">
    <rng:ref name="macro.phraseSeq"/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="roleDesc.localattributes">
    <rng:ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="set">
    <element name="set">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(setting) contains a description of the setting, time, locale, appearance,
etc., of the action of a play, typically found in the front matter of
a printed performance text (not a stage direction).</a:documentation>
      <ref name="set.content"/>
      <ref name="set.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="set.content">
    <rng:group>
      <rng:zeroOrMore>
        <rng:choice>
          <rng:ref name="model.headLike"/>
          <rng:ref name="model.global"/>
        </rng:choice>
      </rng:zeroOrMore>
      <rng:zeroOrMore>
        <rng:group>
          <rng:group>
            <rng:ref name="model.common"/>
          </rng:group>
          <rng:zeroOrMore>
            <rng:ref name="model.global"/>
          </rng:zeroOrMore>
        </rng:group>
      </rng:zeroOrMore>
    </rng:group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="set.localattributes">
    <rng:ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="sound">
    <element name="sound">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">describes a sound effect or musical sequence specified within a
screen play or radio script.</a:documentation>
      <ref name="sound.content"/>
      <ref name="sound.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="sound.content">
    <rng:ref name="macro.paraContent"/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="sound.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:optional>
      <rng:attribute name="type">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">categorizes the sound in some respect, e.g. as music,
      special effect, etc.</a:documentation>
        <ref name="data.enumerated"/>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="discrete" a:defaultValue="unknown">
        <a:documentation>indicates whether the sound overlaps the surrounding
      speeches or interrupts them.</a:documentation>
        <ref name="data.xTruthValue"/>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="tech">
    <element name="tech">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(technical stage direction) describes a special-purpose stage direction that is not
meant for the actors.</a:documentation>
      <ref name="tech.content"/>
      <ref name="tech.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="tech.content">
    <rng:ref name="macro.paraContent"/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="tech.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:optional>
      <rng:attribute name="type">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">categorizes the technical stage direction.</a:documentation>
        <rng:choice>
          <rng:value>light</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">a lighting cue</a:documentation>
          <rng:value>sound</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">a sound cue</a:documentation>
          <rng:value>prop</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">a prop cue</a:documentation>
          <rng:value>block</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">a blocking instruction</a:documentation>
        </rng:choice>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="perf">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(performance) identifies the performance or performances to which this
technical direction applies.</a:documentation>
        <ref name="data.enumerated"/>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="view">
    <element name="view">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">describes the visual context of some part of a screen play in
terms of what the spectator sees, generally independent of any
dialogue.</a:documentation>
      <ref name="view.content"/>
      <ref name="view.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="view.content">
    <rng:ref name="macro.specialPara"/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="view.localattributes">
    <rng:ref name="att.global.attributes"/>
    <empty/>
  </define>
  <!--3. macros-->
</rng:grammar>
