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

# Schema generated 2006-01-30T20:23:54Z
# Copyright 2005 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.
# To contact the TEI Consortium use the following addresses.
#	    For general (non-technical) enquiries: 
#		  target="mailto:info@tei-c.org"/>info@tei-c.orgFor membership enquiries: membership@tei-c.orgFor technical enquiries, particularly about the
#		Guidelines, DTDs, schemas, or software available from
#		the TEI-C: editors@tei-c.orgFor up to date information, consult the TEI web site at http://www.tei-c.org/P5

# Definitions from module transcr

# Set predeclared macros

# 0. predeclared macros

# 1. classes

# 2. elements

addSpan =
  ## (added span of text) marks the beginning of a longer sequence of text added by an
  ## author, scribe, annotator or corrector (see also
  ## add).
  element addSpan { addSpan.content, addSpan.attributes }
addSpan.content = empty
addSpan.attributes =
  att.global.attributes,
  att.editLike.attributes,
  ## indicates where the addition is made.
  attribute place { data.words }?,
  ## signifies the hand of the agent which made the addition.
  attribute hand { data.pointer }?,
  ## indicates the endpoint
  ## of the added passage, by supplying the value of the xml:id
  ## attribute of an anchor or other empty element placed there.
  attribute to { data.pointer },
  empty
model.global.edit |= addSpan

damage =
  ## contains an area of damage to the text witness.
  element damage { damage.content, damage.attributes }
damage.content = macro.paraContent
damage.attributes =
  att.global.attributes,
  att.editLike.attributes,
  ## classifies the damage according to any convenient typology.
  attribute type { data.enumerated }?,
  ## indicates approximately how much text is in the damaged area,
  ## in letters, minims, inches, or any appropriate unit, where this
  ## cannot be deduced from the contents of the tag.  For example, the
  ## damage may span structural divisions in the text so that the tag must
  ## then be empty of content.
  attribute extent { data.words }?,
  ## In the case of damage (deliberate defacement, etc.) assignable
  ## to an identifiable hand, signifies the hand responsible for the
  ## damage.
  attribute hand { data.pointer }?,
  ## categorizes the cause of the damage, if it can be identified.
  attribute agent { data.enumerated }?,
  ## Signifies the degree of damage according to a convenient scale.
  ## The damage tag with the degree attribute should
  ## only be used where the text may be read with some confidence; text
  ## supplied from other sources should be tagged as supplied.
  attribute degree { data.probability | data.certainty }?,
  empty
model.pPart.edit |= damage

delSpan =
  ## (deleted span of text) marks the beginning of a longer sequence of text deleted,
  ## marked as deleted, or otherwise signaled as superfluous or spurious by an
  ## author, scribe, annotator, or corrector.
  element delSpan { delSpan.content, delSpan.attributes }
delSpan.content = empty
delSpan.attributes =
  att.global.attributes,
  att.editLike.attributes,
  ## classifies the deletion, using any convenient typology.
  attribute type { data.enumerated }?,
  ## signifies the hand of the agent which made the deletion.
  attribute hand { data.pointer }?,
  ## identifies the endpoint of the deleted passage,
  ## by supplying the value of the xml:id
  ## attribute of an anchor or other empty element placed there.
  attribute to { data.pointer },
  ## indicates whether the deletion is faulty, e.g. by including too
  ## much or too little text.
  [ a:defaultValue = "unremarkable" ]
  attribute status { data.enumerated }?,
  empty
model.global.edit |= delSpan

fw =
  ## (forme work) contains a running head (e.g. a header,
  ## footer), catchword, or similar material
  ## appearing on the current page.
  element fw { fw.content, fw.attributes }
fw.content = macro.phraseSeq
fw.attributes =
  att.global.attributes,
  ## classifies the material encoded according to some useful typology.
  attribute type { data.enumerated }?,
  ## indicates where on the page this material appears.
  attribute place { data.enumerated }?,
  empty
model.milestoneLike |= fw

hand =
  ## used in the header to define each distinct scribe or
  ## handwriting style.
  element hand { hand.content, hand.attributes }
hand.content = empty
hand.attributes =
  att.global.attributes,
  ## gives the name of,or other identifier for, the scribe.
  attribute scribe { data.code }?,
  ## indicates recognized writing styles.
  attribute style { data.enumerated }?,
  ## indicates dominant language of hand.
  attribute mainLang { data.language }?,
  ## describes tint or type
  ## of ink, e.g. brown.  May also be used to indicate the writing medium, e.g. pencil,
  attribute ink { data.code }?,
  ## describes other characteristics of the hand,
  ## particularly those related to the quality of the writing.
  attribute writing { data.enumerated }?,
  ## indicates whether or
  ## not this is the first or main scribe of the document.
  attribute first { data.truthValue }?,
  ## indicates the editor or transcriber responsible for identifying
  ## the hand.
  attribute resp { data.code }?,
  empty

handList =
  ## contains a series of hand elements listing the
  ## different hands of the source.
  element handList { handList.content, handList.attributes }
handList.content = hand*
handList.attributes = att.global.attributes, empty
model.profileDescPart |= handList

handShift =
  ## marks the beginning of a sequence of text written in a new
  ## hand, or of a change in the scribe, writing style, ink or character
  ## of the document hand.
  element handShift { handShift.content, handShift.attributes }
handShift.content = empty
handShift.attributes =
  att.global.attributes,
  ## identifies the new hand.
  attribute new { data.code },
  ## identifies the old hand.
  attribute old { data.code },
  ## indicates recognized
  ## writing styles.
  attribute style { data.enumerated }?,
  ## describes tint or type
  ## of ink, e.g. brown.  May also be used to indicate the writing medium, e.g. pencil,
  attribute ink { data.code }?,
  ## describes other characteristics of the hand,
  ## particularly those related to the quality of the writing.
  attribute writing { data.enumerated }?,
  ## signifies the editor or transcriber responsible for identifying
  ## the change of hand.
  attribute resp { data.code }?,
  empty
model.profileDescPart |= handShift
model.pPart.msdesc |= handShift

restore =
  ## indicates restoration of text to an earlier state by
  ## cancellation of an editorial or authorial marking or instruction.
  element restore { restore.content, restore.attributes }
restore.content = macro.paraContent
restore.attributes =
  att.global.attributes,
  att.editLike.attributes,
  ## characterizes  the means of restoration.
  attribute means { data.code }?,
  ## indicates the action cancelled by the restoration.
  attribute type { data.name }?,
  ## signifies the hand of the agent which made the restoration.
  attribute hand { data.pointer }?,
  empty
model.pPart.edit |= restore

space =
  ## indicates the location of a significant space in the copy text.
  element space { space.content, space.attributes }
space.content = empty
space.attributes =
  att.global.attributes,
  ## indicates whether the space is horizontal or vertical.
  attribute dim {
    ## (the space is horizontal.) 
    "horizontal" | ## (the space is vertical.) 
      "vertical"
  }?,
  ## indicates approximately how large the space is, in letters,
  ## minims, inches, or other appropriate unit.
  attribute extent { data.enumerated }?,
  ## indicates the individual responsible for identifying and measuring
  ## the space.
  attribute resp { data.pointer }?,
  empty
model.pPart.edit |= space

supplied =
  ## signifies text supplied by the transcriber or editor in place
  ## of text which cannot be read, either because of physical damage or
  ## loss in the original or because it is illegible for any
  ## reason.
  element supplied { supplied.content, supplied.attributes }
supplied.content = macro.paraContent
supplied.attributes =
  att.global.attributes,
  att.editLike.attributes,
  ## indicates why the text has had to be supplied.
  attribute reason { data.words }?,
  ## where the presumed loss of text leading to the supplying of
  ## text arises from action (partial deletion, etc.) assignable to an
  ## identifiable hand, signifies the hand responsible for the action.
  attribute hand { data.pointer }?,
  ## In the case of text which has been supplied  because of damage, categorizes the cause of the damage, if it can be identified.
  attribute agent { data.enumerated }?,
  ## states the source of the supplied text.
  attribute source { data.names }?,
  empty
model.pPart.edit |= supplied
# 3. macros
