namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
namespace rng = "http://relaxng.org/ns/structure/1.0"

# Schema generated 2008-11-01T14:14:38Z
# Edition: 1.2.0. Last updated on October 31st 2008.
# 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.
# A copy of the GNU General Public
#	    License is stored on the TEI web site
#	    along with this file; you can also contact the Free
#	    Software Foundation, Inc., 59 Temple Place, Suite 330,
#	    Boston, MA 02111-1307, USA, for a copy.
# For information about the TEI, including contact
#		details, consult the TEI web
#	      site at http://www.tei-c.org/. 
#		Performance texts

# Definitions from module drama

# Set global predeclared macros

# Set predeclared macros

# 0. predeclared macros

# 1. classes

# 2. elements

actor =
  ## Name of an actor appearing within a cast list.
  element actor { actor.content, actor.localattributes }
actor.content = macro.phraseSeq
actor.localattributes = att.global.attributes, empty

camera =
  ## describes a particular camera angle or viewpoint in a screen play.
  element camera { camera.content, camera.localattributes }
camera.content = macro.paraContent
camera.localattributes =
  att.global.attributes, att.typed.attributes, empty

caption =
  ## contains the text of a caption or other text displayed as part of
  ## a film script or screenplay.
  element caption { caption.content, caption.localattributes }
caption.content = macro.paraContent
caption.localattributes = att.global.attributes, empty

castGroup =
  ## (cast list grouping) groups one or more individual castItem
  ## elements within a cast list.
  element castGroup { castGroup.content, castGroup.localattributes }
castGroup.content =
  (model.global | model.headLike)*,
  ((castItem | castGroup | roleDesc), model.global*)+,
  (trailer, model.global*)?
castGroup.localattributes = att.global.attributes, empty

castItem =
  ## (cast list item) contains a single entry within a cast list, describing
  ## either a single role or a list of non-speaking roles.
  element castItem { castItem.content, castItem.localattributes }
castItem.content =
  (text
   | model.gLike
   | model.castItemPart
   | model.phrase
   | model.global)*
castItem.localattributes =
  att.global.attributes,
  ## characterizes the cast item.
  [ a:defaultValue = "role" ]
  attribute type {
    ## the item describes a single role.
    "role" | ## the item describes a list of non-speaking roles.
      "list"
  }?,
  empty

castList =
  ## (cast list) contains a single cast list or dramatis personae.
  element castList { castList.content, castList.localattributes }
castList.content =
  (model.divTop | model.global)*,
  (model.common, model.global*)*,
  ((castItem | castGroup), model.global*)+,
  (model.common, model.global*)*
castList.localattributes = att.global.attributes, empty

epilogue =
  ## contains the epilogue to a drama,  typically spoken by an actor
  ## out of character, possibly in association with a particular performance
  ## or venue.
  element epilogue { epilogue.content, epilogue.localattributes }
epilogue.content =
  (model.divTop | model.global)*,
  (model.common, model.global*)+,
  (model.divBottom, model.global*)*
epilogue.localattributes = att.global.attributes, empty

move =
  ## (movement) marks the actual entrance or exit of one or more characters on stage.
  element move { move.content, move.localattributes }
move.content = empty
move.localattributes =
  att.global.attributes,
  att.ascribed.attributes,
  ## characterizes the movement, for example as an entrance or exit.
  ## Suggested values include: 1] entrance; 2] exit; 3] onStage
  attribute type {
    ## character is entering the stage.
    "entrance" | ## character is exiting the stage.
      "exit" | ## character moves on stage
      "onStage"
    | xsd:Name
  }?,
  ## specifies the direction of a stage movement.
  ## Sample values include: 1] L (left); 2] R (right); 3] C (center)
  attribute where {
    list { data.enumerated+ }
  }?,
  ## (performance) identifies the performance or performances in which this movement
  ##		occurred as specified.
  attribute perf {
    list { data.pointer+ }
  }?,
  empty

performance =
  ## 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. 
  element performance {
    performance.content, performance.localattributes
  }
performance.content =
  (model.divTop | model.global)*,
  (model.common, model.global*)+,
  (model.divBottom, model.global*)*
performance.localattributes = att.global.attributes, empty

prologue =
  ## contains the prologue to a drama,  typically spoken by an actor out of
  ## character, possibly in association with a particular performance or venue.
  element prologue { prologue.content, prologue.localattributes }
prologue.content =
  (model.divTop | model.global)*,
  (model.common, model.global*)+,
  (model.divBottom, model.global*)*
prologue.localattributes = att.global.attributes, empty

role =
  ## the name of a dramatic role, as given in a cast list.
  element role { role.content, role.localattributes }
role.content = macro.phraseSeq
role.localattributes = att.global.attributes, empty

roleDesc =
  ## (role description) describes a character's role in a drama.
  element roleDesc { roleDesc.content, roleDesc.localattributes }
roleDesc.content = macro.phraseSeq
roleDesc.localattributes = att.global.attributes, empty

set =
  ## (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).
  element set { set.content, set.localattributes }
set.content =
  (model.headLike | model.global)*, (model.common, model.global*)*
set.localattributes = att.global.attributes, empty

sound =
  ## describes a sound effect or musical sequence specified within a
  ## screen play or radio script.
  element sound { sound.content, sound.localattributes }
sound.content = macro.paraContent
sound.localattributes =
  att.global.attributes,
  ## categorizes the sound in some respect, e.g. as music,
  ##       special effect, etc.
  attribute type { data.enumerated }?,
  ## indicates whether the sound overlaps the surrounding
  ##       speeches or interrupts them.
  [ a:defaultValue = "unknown" ]
  attribute discrete { data.xTruthValue }?,
  empty

tech =
  ## (technical stage direction) describes a special-purpose stage direction that is not
  ## meant for the actors.
  element tech { tech.content, tech.localattributes }
tech.content = macro.paraContent
tech.localattributes =
  att.global.attributes,
  ## categorizes the technical stage direction.
  attribute type {
    ## a lighting cue
    "light" | ## a sound cue
      "sound" | ## a prop cue
      "prop" | ## a blocking instruction
      "block"
  }?,
  ## (performance) identifies the performance or performances to which this
  ## technical direction applies.
  attribute perf { data.enumerated }?,
  empty

view =
  ## describes the visual context of some part of a screen play in
  ## terms of what the spectator sees, generally independent of any
  ## dialogue.
  element view { view.content, view.localattributes }
view.content = macro.specialPara
view.localattributes = att.global.attributes, empty
# 3. macros
