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/. 
#		Elements common to all TEI documents

# Definitions from module core

# Set global predeclared macros

# Set predeclared macros

# 0. predeclared macros

# 1. classes

# 2. elements

abbr =
  ## (abbreviation) contains an abbreviation of any sort.
  element abbr { abbr.content, abbr.localattributes }
abbr.content = macro.phraseSeq
abbr.localattributes =
  att.global.attributes,
  ## allows the encoder to classify the abbreviation according to
  ## some convenient typology.
  ## Sample values include: 1] suspension; 2] contraction; 3] brevigraph; 4] superscription; 5] acronym; 6] title; 7] organization; 8] geographic
  attribute type { data.enumerated }?,
  empty

add =
  ## (addition) contains letters, words, or phrases inserted in the text by an
  ## author, scribe, annotator, or corrector.
  element add { add.content, add.localattributes }
add.content = macro.paraContent
add.localattributes =
  att.global.attributes,
  att.transcriptional.attributes,
  att.placement.attributes,
  att.typed.attributes,
  empty

addrLine =
  ## (address line) contains one line of a postal address.
  element addrLine { addrLine.content, addrLine.localattributes }
addrLine.content = macro.phraseSeq
addrLine.localattributes = att.global.attributes, empty

address =
  ## contains a postal  address, for example of a
  ## publisher, an organization, or an individual.
  element address { address.content, address.localattributes }
address.content = model.global*, (model.addrPart, model.global*)+
address.localattributes = att.global.attributes, empty

analytic =
  ## (analytic level) contains bibliographic elements describing an item (e.g. an
  ## article or poem) published within a monograph or journal and not as an
  ## independent publication.
  element analytic { analytic.content, analytic.localattributes }
analytic.content = (author | editor | respStmt | title)*
analytic.localattributes = att.global.attributes, empty

author =
  ## in a bibliographic reference, contains the name of the author(s),
  ## personal or corporate,
  ## of a work; the primary statement of responsibility for any
  ## bibliographic item. 
  element author { author.content, author.localattributes }
author.content = macro.phraseSeq
author.localattributes =
  att.global.attributes, att.canonical.attributes, empty

bibl =
  ## (bibliographic citation) contains a loosely-structured bibliographic citation of which
  ## the sub-components may or may not be explicitly tagged. 
  element bibl { bibl.content, bibl.localattributes }
bibl.content =
  (text
   | model.gLike
   | model.highlighted
   | model.pPart.data
   | model.pPart.edit
   | model.segLike
   | model.ptrLike
   | model.biblPart
   | model.global)*
bibl.localattributes =
  att.global.attributes,
  att.declarable.attributes,
  att.typed.attributes,
  empty

biblScope =
  ## (scope of citation) defines the scope of a bibliographic reference, for example as a
  ## list of page numbers, or a named subdivision of a larger work.
  element biblScope { biblScope.content, biblScope.localattributes }
biblScope.content = macro.phraseSeq
biblScope.localattributes =
  att.global.attributes,
  ## identifies the type of information conveyed by the element, e.g.
  ## pages, volume.
  ## Suggested values include: 1] vol (volume); 2] issue; 3] pp (pages); 4] chap (chapter); 5] part
  attribute type {
    ## (volume) the element contains a volume number.
    "vol" | ## the element contains an issue number, or volume and
      ## issue numbers.
      "issue" | ## (pages) the element contains a page number or page range.
      "pp" | ## (chapter) the element contains a chapter indication (number
      ## and/or title)
      "chap" | ## the element identifies a part of a book or collection.
      "part"
    | xsd:Name
  }?,
  empty

biblStruct =
  ## (structured bibliographic citation) contains a structured bibliographic citation, in which only
  ## bibliographic sub-elements appear and in a specified order. 
  element biblStruct { biblStruct.content, biblStruct.localattributes }
biblStruct.content =
  analytic*, (monogr, series*)+, (model.noteLike | idno | relatedItem)*
biblStruct.localattributes =
  att.global.attributes,
  att.declarable.attributes,
  att.typed.attributes,
  empty

binaryObject =
  ## provides encoded binary data representing an inline graphic or other object.
  element binaryObject {
    binaryObject.content, binaryObject.localattributes
  }
binaryObject.content = text
binaryObject.localattributes =
  att.global.attributes,
  att.internetMedia.attributes,
  ## The display width of the object
  attribute width { data.outputMeasurement }?,
  ## The display height of the object
  attribute height { data.outputMeasurement }?,
  ## A scale factor to be applied to the object to make it the desired display size
  attribute scale { data.numeric }?,
  ## The encoding used to encode the binary data. If not
  ##       specified, this is assumed to be Base64.
  attribute encoding {
    list { data.word+ }
  }?,
  empty

cb =
  ## (column break) marks the boundary between one column of a text and the next
  ## in a standard reference system.
  element cb { cb.content, cb.localattributes }
cb.content = empty
cb.localattributes =
  att.global.attributes,
  att.typed.attributes,
  ## (edition) indicates the edition or version in which the column break is located
  ## at this point
  attribute ed { data.code }?,
  empty

choice =
  ## groups a number of alternative encodings for the same point in
  ##   a text.
  element choice { choice.content, choice.localattributes }
choice.content = (model.choicePart | choice)*
choice.localattributes = att.global.attributes, empty

cit =
  ## (cited quotation) contains a quotation from some other document, together with a
  ##   bibliographic reference to its source.  In a dictionary it may
  ##   contain an example text with at least one occurrence of the word
  ##   form, used in the sense being described, or a translation of the
  ##   headword, or an example. 
  element cit { cit.content, cit.localattributes }
cit.content =
  (model.qLike
   | model.biblLike
   | model.ptrLike
   | model.global
   | model.entryPart)+
cit.localattributes = att.global.attributes, att.typed.attributes, empty

corr =
  ## (correction) contains the correct form of a passage apparently erroneous in the copy text.
  element corr { corr.content, corr.localattributes }
corr.content = macro.paraContent
corr.localattributes =
  att.global.attributes,
  att.editLike.attributes,
  att.typed.attributes,
  empty

date =
  ## contains a date in any format.
  element date { date.content, date.localattributes }
date.content = (text | model.gLike | model.phrase | model.global)*
date.localattributes =
  att.global.attributes,
  att.datable.attributes,
  att.duration.attributes,
  att.editLike.attributes,
  att.typed.attributes,
  ## indicates the system or calendar to which the date
  ##       represented by the content of this element belongs.
  ## Suggested values include: 1] Gregorian; 2] Julian; 3] Islamic; 4] Hebrew; 5] Revolutionary; 6] Iranian; 7] Coptic; 8] Chinese
  attribute calendar {
    ## Gregorian calendar
    "Gregorian" | ## Julian calendar
      "Julian" | ## Islamic or Muslim (hijri) lunar calendar
      "Islamic" | ## Hebrew or Jewish lunisolar calendar
      "Hebrew" | ## French Revolutionary calendar
      "Revolutionary" | ## Iranian or Persian (Jalaali) solar calendar
      "Iranian" | ## Coptic or Alexandrian calendar
      "Coptic" | ## Chinese lunisolar calendar
      "Chinese"
    | xsd:Name
  }?,
  empty

del =
  ## (deletion) contains a letter, word, or passage deleted, marked as deleted,
  ## or otherwise indicated as superfluous or spurious in the copy text by an
  ## author, scribe, annotator, or corrector.
  element del { del.content, del.localattributes }
del.content = macro.paraContent
del.localattributes =
  att.global.attributes,
  att.transcriptional.attributes,
  att.typed.attributes,
  empty

desc =
  ## (description) contains a brief description of the object documented by its
  ##   parent element, including its intended usage, purpose,
  ##   or application where this is appropriate.
  element desc { desc.content, desc.localattributes }
desc.content = macro.limitedContent
desc.localattributes =
  att.global.attributes, att.translatable.attributes, empty

distinct =
  ## identifies any word or phrase which is regarded as linguistically
  ## distinct, for example as archaic, technical, dialectal, non-preferred,
  ## etc., or as forming part of a sublanguage. 
  element distinct { distinct.content, distinct.localattributes }
distinct.content = macro.phraseSeq
distinct.localattributes =
  att.global.attributes,
  ## specifies the sublanguage or register to which the word or phrase
  ## is being assigned
  attribute type { data.enumerated }?,
  ## specifies how the phrase is distinct diachronically
  attribute time { data.code }?,
  ## specifies how the phrase is distinct diatopically
  attribute space { data.code }?,
  ## specifies how the phrase is distinct diastatically
  attribute social { data.code }?,
  empty

divGen =
  ## (automatically generated text division) indicates the location at which a textual division generated
  ## automatically by a text-processing application is to appear.
  element divGen { divGen.content, divGen.localattributes }
divGen.content = model.headLike*
divGen.localattributes =
  att.global.attributes,
  ## specifies what type of generated text division (e.g. index,
  ## table of contents, etc.) is to appear.
  ## Sample values include: 1] index; 2] toc; 3] figlist; 4] tablist
  attribute type { data.enumerated }?,
  empty

editor =
  ## secondary statement of responsibility for a
  ## bibliographic item, for example the name of an individual, institution
  ## or organization, (or of several such) acting as editor, compiler,
  ## translator, etc. 
  element editor { editor.content, editor.localattributes }
editor.content = macro.phraseSeq
editor.localattributes =
  att.global.attributes,
  ## specifies the nature of the intellectual responsibility
  [ a:defaultValue = "editor" ] attribute role { data.enumerated }?,
  empty

email =
  ## (electronic mail address) contains an e-mail address identifying a location to which
  ## e-mail messages can be delivered.
  element email { email.content, email.localattributes }
email.content = macro.phraseSeq
email.localattributes = att.global.attributes, empty

emph =
  ## (emphasized) marks words or phrases which are stressed or emphasized for
  ## linguistic or rhetorical effect.
  element emph { emph.content, emph.localattributes }
emph.content = macro.paraContent
emph.localattributes = att.global.attributes, empty

expan =
  ## (expansion) contains the expansion of an abbreviation.
  element expan { expan.content, expan.localattributes }
expan.content = macro.phraseSeq
expan.localattributes =
  att.global.attributes, att.editLike.attributes, empty

foreign =
  ## (foreign) identifies a word or phrase as belonging to some language other
  ## than that of the surrounding text. 
  element foreign { foreign.content, foreign.localattributes }
foreign.content = macro.phraseSeq
foreign.localattributes = att.global.attributes, empty

gap =
  ## indicates a point where material has been omitted in a
  ## transcription, whether for editorial reasons described in the TEI
  ## header, as part of sampling practice, or because the material is
  ## illegible, invisible, or inaudible.
  element gap { gap.content, gap.localattributes }
gap.content = model.glossLike*
gap.localattributes =
  att.global.attributes,
  att.duration.attributes,
  att.editLike.attributes,
  ## gives the reason for omission. Sample values include
  ##       sampling, inaudible,
  ##       irrelevant, cancelled.
  attribute reason {
    list { data.word+ }
  }?,
  ## in the case of text omitted from the transcription because of
  ## deliberate deletion by an identifiable hand, signifies the hand which
  ## made the deletion.
  attribute hand { data.pointer }?,
  ## In the case of text omitted because of damage, categorizes the cause of the damage, if it can be identified.
  ## Sample values include: 1] rubbing; 2] mildew; 3] smoke
  attribute agent { data.enumerated }?,
  empty

gloss =
  ## identifies a phrase or word used to provide a gloss or
  ##   definition for some other word or phrase.
  element gloss { gloss.content, gloss.localattributes }
gloss.content = macro.phraseSeq
gloss.localattributes =
  att.global.attributes,
  att.declaring.attributes,
  att.translatable.attributes,
  att.typed.attributes,
  (
   ## identifies the associated term element by an
   ##       absolute or relative URI reference
   attribute target { data.pointer }? | ## (canonical reference) identifies the associated term element using a canonical
     ##       reference from a scheme defined in a refsDecl element
     ##       in the TEI header
     attribute cRef { data.pointer }?),
  empty

graphic =
  ## indicates the location of an inline graphic, illustration, or figure.
  element graphic { graphic.content, graphic.localattributes }
graphic.content = empty
graphic.localattributes =
  att.global.attributes,
  att.internetMedia.attributes,
  att.declaring.attributes,
  ## The display width of the image
  attribute width { data.outputMeasurement }?,
  ## The display height of the image
  attribute height { data.outputMeasurement }?,
  ## A scale factor to be applied to the image to make it the desired display size
  attribute scale { data.numeric }?,
  ## (uniform resource locator) A URL which refers to the image itself.
  attribute url { data.pointer }?,
  empty

head =
  ## (heading) contains any type of heading, for example the title of a section,
  ## or the heading of a list, glossary, manuscript description, etc.
  element head { head.content, head.localattributes }
head.content = macro.paraContent
head.localattributes =
  att.global.attributes, att.typed.attributes, empty

headItem =
  ## (heading for list items) contains the heading for the item or gloss column in a
  ## glossary list or similar structured list.
  element headItem { headItem.content, headItem.localattributes }
headItem.content = macro.phraseSeq
headItem.localattributes = att.global.attributes, empty

headLabel =
  ## (heading for list labels) contains the heading for the label or term column in a
  ## glossary list or similar structured list.
  element headLabel { headLabel.content, headLabel.localattributes }
headLabel.content = macro.phraseSeq
headLabel.localattributes = att.global.attributes, empty

hi =
  ## (highlighted) marks a word or phrase as graphically distinct from the
  ## surrounding text, for reasons concerning which no claim is
  ## made. 
  element hi { hi.content, hi.localattributes }
hi.content = macro.paraContent
hi.localattributes = att.global.attributes, empty

imprint =
  ## groups information relating to the publication or distribution
  ##   of a bibliographic item.
  element imprint { imprint.content, imprint.localattributes }
imprint.content = ((model.imprintPart | model.dateLike), model.global*)+
imprint.localattributes = att.global.attributes, empty

index =
  ## (index entry) marks a location to be indexed for whatever purpose.
  element index { index.content, index.localattributes }
index.content = (term, index?)*
index.localattributes =
  att.global.attributes,
  att.spanning.attributes,
  ## supplies a name to specify which index (of several) the index entry belongs to.
  attribute indexName { data.name }?,
  empty

item =
  ## contains one
  ## component of a list.
  element item { item.content, item.localattributes }
item.content = macro.specialPara
item.localattributes = att.global.attributes, empty

l =
  ## (verse line) contains a single, possibly incomplete, line of verse.
  element l { l.content, l.localattributes }
l.content = macro.paraContent
l.localattributes =
  att.global.attributes,
  att.metrical.attributes,
  att.enjamb.attributes,
  ## specifies whether or not the line is metrically complete. 
  [ a:defaultValue = "N" ]
  attribute part {
    ## (yes) the line is metrically incomplete
    "Y" | ## (no) either the line is complete, or no claim is made as to its
      ## completeness
      "N" | ## (initial) the initial part of an incomplete line
      "I" | ## (medial) a medial part of an incomplete line
      "M" | ## (final) the final part of an incomplete line
      "F"
  }?,
  empty

label =
  ## contains the label associated with an item in a list; in
  ## glossaries, marks the term being defined.
  element label { label.content, label.localattributes }
label.content = macro.phraseSeq
label.localattributes = att.global.attributes, empty

lb =
  ## (line break) marks the start of a new (typographic) line in some
  ## edition or version of a text.
  element lb { lb.content, lb.localattributes }
lb.content = empty
lb.localattributes =
  att.global.attributes,
  att.typed.attributes,
  ## (edition) indicates the edition or version in which the line break is located
  ## at this point
  attribute ed { data.code }?,
  empty

lg =
  ## (line group) contains a group of verse lines functioning as a formal unit,
  ## e.g. a stanza, refrain, verse paragraph, etc.
  element lg { lg.content, lg.localattributes }
lg.content =
  (model.divTop | model.global)*,
  (model.lLike | lg),
  (model.lLike | lg | model.global)*,
  (model.divBottom, model.global*)*
lg.localattributes =
  att.global.attributes,
  att.divLike.attributes,
  att.typed.attributes,
  empty

\list =
  ## contains any sequence of items organized as a list.
  element list { list.content, list.localattributes }
list.content =
  (model.divTop | model.global)*,
  ((item, model.global*)+
   | (headLabel?,
      headItem?,
      (label, model.global*, item, model.global*)+)),
  (model.divBottom, model.global*)*
list.localattributes =
  att.global.attributes,
  ## describes the form of the list.
  ## Suggested values include: 1] ordered; 2] bulleted; 3] simple; 4] gloss
  [ a:defaultValue = "simple" ]
  attribute type {
    ## list items are numbered or lettered.
    "ordered" | ## list items are marked with a
      ## bullet or other typographic device.
      "bulleted" | ## list items are not numbered or bulleted.
      "simple" | ## each list item glosses some term or
      ## concept, which is given by a label element preceding
      ## the list item.
      "gloss"
    | xsd:Name
  }?,
  empty

listBibl =
  ## (citation list) contains a list of bibliographic citations of any kind. 
  element listBibl { listBibl.content, listBibl.localattributes }
listBibl.content =
  model.headLike*, (model.biblLike | model.milestoneLike | listBibl)+
listBibl.localattributes =
  att.global.attributes,
  att.declarable.attributes,
  att.typed.attributes,
  empty

measure =
  ## contains a word or phrase referring to some quantity of
  ## an object or commodity, usually comprising a number, a unit, and a
  ## commodity name.
  element measure { measure.content, measure.localattributes }
measure.content = macro.phraseSeq
measure.localattributes =
  att.global.attributes,
  att.measurement.attributes,
  ## specifies the type of measurement in any convenient typology.
  attribute type { data.enumerated }?,
  empty

measureGrp =
  ## (measure group) contains a group of dimensional specifications which relate to
  ##   the same object, for example the height and width of a manuscript page.
  element measureGrp { measureGrp.content, measureGrp.localattributes }
measureGrp.content = (text | model.gLike | model.measureLike)*
measureGrp.localattributes =
  att.global.attributes,
  att.measurement.attributes,
  att.typed.attributes,
  empty

meeting =
  ## contains the formalized descriptive title for a meeting or
  ##   conference, for use in a bibliographic description for an item
  ##   derived from such a meeting, or as a heading or preamble to
  ##   publications emanating from it.
  element meeting { meeting.content, meeting.localattributes }
meeting.content = macro.limitedContent
meeting.localattributes = att.global.attributes, empty

mentioned =
  ## marks words or phrases mentioned, not used.
  element mentioned { mentioned.content, mentioned.localattributes }
mentioned.content = macro.phraseSeq
mentioned.localattributes = att.global.attributes, empty

milestone =
  ## marks a boundary point separating  any kind of section of a
  ##   text, typically but not necessarily  indicating a point at which
  ##   some part of  a standard reference system changes, where the change
  ##   is not represented by a structural element.
  element milestone { milestone.content, milestone.localattributes }
milestone.content = empty
milestone.localattributes =
  att.global.attributes,
  att.typed.attributes,
  ## (edition) indicates the edition or version to which the milestone applies.
  attribute ed { data.code }?,
  ## provides a conventional name for the kind of section changing at this milestone.
  ## Suggested values include: 1] page; 2] column; 3] line; 4] book; 5] poem; 6] canto; 7] speaker; 8] stanza; 9] act; 10] scene; 11] section; 12] absent; 13] unnumbered
  attribute unit {
    ## physical page breaks (synonymous with the pb
    ##	  element).
    "page" | ## column breaks.
      "column" | ## line breaks (synonymous with the lb element).
      "line" | ## any units termed book, liber, etc.
      "book" | ## individual poems in a collection.
      "poem" | ## cantos or other major sections of a poem.
      "canto" | ## changes of speaker or narrator.
      "speaker" | ## stanzas within a poem, book, or canto.
      "stanza" | ## acts within a play.
      "act" | ## scenes within a play or act.
      "scene" | ## sections of any kind.
      "section" | ## passages not present in the reference edition.
      "absent" | ## passages present in the text, but not to be included
      ##	  as part of the reference.
      "unnumbered"
    | xsd:Name
  },
  empty

monogr =
  ## (monographic level) contains bibliographic elements describing an item (e.g. a book
  ## or journal) published as an independent item (i.e. as a separate
  ## physical object).
  element monogr { monogr.content, monogr.localattributes }
monogr.content =
  (((author | editor | respStmt),
    (author | editor | respStmt)*,
    title+,
    (idno | editor | respStmt)*)
   | (title+, (idno | author | editor | respStmt)*))?,
  (model.noteLike | meeting)*,
  (edition, (idno | editor | respStmt)*)*,
  imprint,
  (imprint | extent | biblScope)*
monogr.localattributes = att.global.attributes, empty

name =
  ## (name, proper noun) contains a proper noun or noun phrase.
  element name { name.content, name.localattributes }
name.content = macro.phraseSeq
name.localattributes =
  att.global.attributes,
  att.naming.attributes,
  att.typed.attributes,
  empty

note =
  ## contains a note or annotation.
  element note { note.content, note.localattributes }
note.content = macro.specialPara
note.localattributes =
  att.global.attributes,
  att.placement.attributes,
  ## describes the type of note.
  attribute type { data.enumerated }?,
  ## (responsible party) indicates who is responsible for the annotation: author,
  ##	editor, translator, etc.
  attribute resp { data.pointer }?,
  ## indicates whether the copy text shows the exact place of reference
  ## for the note.
  [ a:defaultValue = "true" ] attribute anchored { data.truthValue }?,
  ## indicates the point (or points) of attachment for a note, or the beginning of
  ## the span to which the note is attached.
  attribute target {
    list { data.pointer+ }
  }?,
  ## points to the end of the span to which the note is attached, if
  ## the note is not embedded in the text at that point.
  attribute targetEnd {
    list { data.pointer+ }
  }?,
  empty

num =
  ## (number) contains a number, written in any form.
  element num { num.content, num.localattributes }
num.content = macro.phraseSeq
num.localattributes =
  att.global.attributes,
  ## indicates the type of numeric value.
  ## Suggested values include: 1] cardinal; 2] ordinal; 3] fraction; 4] percentage
  attribute type {
    ## absolute number, e.g. 21, 21.5
    "cardinal" | ## ordinal number, e.g. 21st
      "ordinal" | ## fraction, e.g. one half or three-quarters
      "fraction" | ## a percentage
      "percentage"
    | xsd:Name
  }?,
  ## supplies the value of the number in standard form.
  attribute value { data.numeric }?,
  empty

orig =
  ## (original form) contains  a reading which is marked as following  the original,
  ## rather than being normalized or corrected.
  element orig { orig.content, orig.localattributes }
orig.content = macro.paraContent
orig.localattributes = att.global.attributes, empty

p =
  ## (paragraph) marks paragraphs in prose.
  element p { p.content, p.localattributes }
p.content = macro.paraContent
p.localattributes = att.global.attributes, empty

pb =
  ## (page break) marks the boundary between one page of a text and the next
  ## in a standard reference system.
  element pb { pb.content, pb.localattributes }
pb.content = empty
pb.localattributes =
  att.global.attributes,
  att.typed.attributes,
  ## (edition) indicates the edition or version in which the page break is located
  ## at this point
  attribute ed { data.code }?,
  empty

postBox =
  ## (postal box or post office box) contains a number or other identifier for some postal delivery
  ## point other than a street address. 
  element postBox { postBox.content, postBox.localattributes }
postBox.content = text
postBox.localattributes = att.global.attributes, empty

postCode =
  ## (postal code) contains a numerical or alphanumeric code used as part of a
  ## postal address to simplify sorting or delivery of mail. 
  element postCode { postCode.content, postCode.localattributes }
postCode.content = text
postCode.localattributes = att.global.attributes, empty

ptr =
  ## (pointer) defines a pointer to another location.
  element ptr { ptr.content, ptr.localattributes }
ptr.content = empty
ptr.localattributes =
  att.global.attributes,
  att.pointing.attributes,
  att.declaring.attributes,
  (
   ## specifies the destination of the pointer by supplying one or
   ##       more URI References
   attribute target {
     list { data.pointer+ }
   } | ## (canonical reference) specifies the destination of the pointer by supplying a
     ##       canonical reference from a scheme defined in a refsDecl
     ##       element in the TEI header
     attribute cRef {
       list { data.word+ }
     }),
  empty

pubPlace =
  ## (publication place) contains the name of the place where a bibliographic item was
  ## published.
  element pubPlace { pubPlace.content, pubPlace.localattributes }
pubPlace.content = macro.phraseSeq
pubPlace.localattributes =
  att.global.attributes, att.naming.attributes, empty

publisher =
  ## provides the name of the organization responsible for
  ## the publication or distribution of a bibliographic item.
  element publisher { publisher.content, publisher.localattributes }
publisher.content = macro.phraseSeq
publisher.localattributes = att.global.attributes, empty

q =
  ## (separated from the surrounding text with quotation
  ##   marks) contains material which is marked as (ostensibly)
  ##   being somehow different than the surrounding text, for any
  ##   one of a variety of reasons including, but not limited to:
  ##   direct speech or thought, technical terms or jargon,
  ##   authorial distance, quotations from elsewhere, and passages
  ##   that are mentioned but not used.
  element q { q.content, q.localattributes }
q.content = macro.specialPara
q.localattributes =
  att.global.attributes,
  att.ascribed.attributes,
  ## may be used to indicate whether the offset passage is spoken
  ##       or thought, or to characterize it more finely.
  ## Suggested values include: 1] spoken; 2] thought; 3] written; 4] soCalled; 5] foreign (foreign words); 6] distinct (linguistically distinct); 7] term (technical term); 8] emph (rhetorically emphasized); 9] mentioned
  attribute type {
    ## representation of speech
    "spoken" | ## representation of thought, e.g. internal monologue
      "thought" | ## quotation from a written source
      "written" | ## authorial distance
      "soCalled" | ## (foreign words) 
      "foreign" | ## (linguistically distinct) 
      "distinct" | ## (technical term) 
      "term" | ## (rhetorically emphasized) 
      "emph" | ## refering to itself, not its normal
      ##	  referant
      "mentioned"
    | xsd:Name
  }?,
  empty

quote =
  ## (quotation) contains a phrase or passage attributed by the narrator or
  ##   author to some agency external to the text.
  element quote { quote.content, quote.localattributes }
quote.content = macro.specialPara
quote.localattributes =
  att.global.attributes,
  att.typed.attributes,
  att.msExcerpt.attributes,
  empty

ref =
  ## (reference) defines a reference to another location, possibly
  ##   modified by additional text or comment.
  element ref { ref.content, ref.localattributes }
ref.content = macro.paraContent
ref.localattributes =
  att.global.attributes,
  att.pointing.attributes,
  att.declaring.attributes,
  (
   ## specifies the destination of the reference by supplying one
   ##     or more URI References
   attribute target {
     list { data.pointer+ }
   }? | ## (canonical reference) specifies the destination of the reference by supplying a
     ##       canonical reference from a scheme defined in a refsDecl
     ##       element in the TEI header
     attribute cRef {
       list { data.word+ }
     }?),
  empty

reg =
  ## (regularization) contains a reading which has been regularized or normalized
  ## in some sense.
  element reg { reg.content, reg.localattributes }
reg.content = macro.paraContent
reg.localattributes =
  att.global.attributes,
  att.editLike.attributes,
  att.typed.attributes,
  empty

relatedItem =
  ## contains or references some other bibliographic item which is
  ## related to the present one in some specified manner, for example as a
  ## constituent or alternative version of it.
  element relatedItem {
    relatedItem.content, relatedItem.localattributes
  }
relatedItem.content = model.biblLike | model.ptrLike
relatedItem.localattributes =
  att.global.attributes, att.typed.attributes, empty

resp =
  ## (responsibility) contains a phrase describing the nature of a person's
  ##   intellectual responsibility.
  element resp { resp.content, resp.localattributes }
resp.content = macro.phraseSeq.limited
resp.localattributes =
  att.global.attributes, att.canonical.attributes, empty

respStmt =
  ## (statement of responsibility) supplies a statement of responsibility for the intellectual content of a text, edition, recording, or
  ##   series, where the specialized elements for authors, editors, etc. do
  ##   not suffice or do not apply.
  element respStmt { respStmt.content, respStmt.localattributes }
respStmt.content =
  (resp+, model.nameLike.agent+) | (model.nameLike.agent+, resp+)
respStmt.localattributes = att.global.attributes, empty

rs =
  ## (referencing string) contains a general purpose name or referring string.
  element rs { rs.content, rs.localattributes }
rs.content = macro.phraseSeq
rs.localattributes =
  att.global.attributes,
  att.naming.attributes,
  att.typed.attributes,
  empty

said =
  ## (speech or thought) indicates passages thought or spoken aloud, whether
  ##   explicitly indicated in the source or not, whether directly
  ##   or indirectly reported, whether by real people or
  ##   fictional characters.
  element said { said.content, said.localattributes }
said.content = macro.specialPara
said.localattributes =
  att.global.attributes,
  att.ascribed.attributes,
  ## may be used to indicate whether the quoted matter
  ##       is regarded as having been vocalized or signed.
  [ a:defaultValue = "unknown" ] attribute aloud { data.xTruthValue }?,
  ## may be used to indicate whether the quoted matter is regarded
  ##       as direct or indirect speech.
  [ a:defaultValue = "true" ] attribute direct { data.xTruthValue }?,
  empty

series =
  ## (series information) contains information about the series in which a book or other
  ## bibliographic item has appeared.
  element series { series.content, series.localattributes }
series.content =
  (text
   | model.gLike
   | title
   | editor
   | respStmt
   | biblScope
   | model.global)*
series.localattributes = att.global.attributes, empty

sic =
  ## (latin for thus or so) contains text reproduced although apparently incorrect or inaccurate.
  element sic { sic.content, sic.localattributes }
sic.content = macro.paraContent
sic.localattributes = att.global.attributes, empty

soCalled =
  ## contains a word or phrase for which the author or narrator
  ## indicates a disclaiming of responsibility, for example by the use
  ## of scare quotes or italics.
  element soCalled { soCalled.content, soCalled.localattributes }
soCalled.content = macro.phraseSeq
soCalled.localattributes = att.global.attributes, empty

sp =
  ## (speech) An individual speech in a performance text, or a passage
  ##	  presented as such in a prose or verse text.
  element sp { sp.content, sp.localattributes }
sp.content =
  model.global*,
  (speaker, model.global*)?,
  ((model.lLike | lg | model.pLike | model.stageLike | model.qLike),
   model.global*)+
sp.localattributes =
  att.global.attributes, att.ascribed.attributes, empty

speaker =
  ## A specialized form of heading or label, giving the name of
  ## one or more speakers in a dramatic text or fragment.
  element speaker { speaker.content, speaker.localattributes }
speaker.content = macro.phraseSeq
speaker.localattributes = att.global.attributes, empty

stage =
  ## (stage direction) contains any kind of stage direction within a dramatic text or
  ## fragment.
  element stage { stage.content, stage.localattributes }
stage.content = macro.specialPara
stage.localattributes =
  att.global.attributes,
  ## indicates the kind of stage direction.
  ## Suggested values include: 1] setting; 2] entrance; 3] exit; 4] business; 5] novelistic; 6] delivery; 7] modifier; 8] location; 9] mixed
  attribute type {
    ## describes a setting.
    "setting" | ## describes an entrance.
      "entrance" | ## describes an exit.
      "exit" | ## describes stage business.
      "business" | ## is a narrative, motivating stage direction.
      "novelistic" | ## describes how a character speaks.
      "delivery" | ## gives some detail about a character.
      "modifier" | ## describes a location.
      "location" | ## more than one of the above
      "mixed"
    | xsd:Name
  }?,
  empty

street =
  ## a full street address including any name or number identifying a
  ## building as well as the name of the street or route on which it is
  ## located.
  element street { street.content, street.localattributes }
street.content = macro.phraseSeq
street.localattributes = att.global.attributes, empty

teiCorpus =
  ## contains the whole of a TEI encoded corpus, comprising a
  ## single corpus header and one or more TEI elements, each containing
  ## a single text header and a text.
  element teiCorpus { teiCorpus.content, teiCorpus.localattributes }
teiCorpus.content = teiHeader, (TEI | teiCorpus)+
teiCorpus.localattributes =
  att.global.attributes,
  ## The version of the TEI scheme
  [ a:defaultValue = "5.0" ] attribute version { xsd:decimal }?,
  empty

term =
  ## contains a single-word, multi-word, or symbolic designation
  ##   which is regarded as a technical term.
  element term { term.content, term.localattributes }
term.content = macro.phraseSeq
term.localattributes =
  att.global.attributes,
  att.declaring.attributes,
  att.typed.attributes,
  (
   ## identifies the associated gloss element by an
   ##	absolute or relative URI reference
   attribute target { data.pointer }? | ## identifies the associated gloss element using a
     ##	canonical reference from a scheme defined in a
     ##	refsDecl element in the TEI header
     attribute cRef { data.pointer }?),
  ## supplies the sort key for this term in an index.
  attribute sortKey { data.word }?,
  empty

time =
  ## contains a phrase defining a time of day in any format.
  element time { time.content, time.localattributes }
time.content = (text | model.gLike | model.phrase | model.global)*
time.localattributes =
  att.global.attributes,
  att.datable.attributes,
  att.duration.attributes,
  att.editLike.attributes,
  att.typed.attributes,
  empty

title =
  ## contains a title for any kind of work.
  element title { title.content, title.localattributes }
title.content = macro.paraContent
title.localattributes =
  att.global.attributes,
  att.canonical.attributes,
  ## indicates the bibliographic level for a title, that is,
  ##	whether it identifies  an article, book, journal,
  ## series, or unpublished material.
  attribute level {
    ## (analytic) analytic title (article, poem, or other item published as
    ##           part of a larger item)
    "a" | ## (monographic) monographic title (book, collection, or other item published
      ##           as a distinct item, including single volumes of multi-volume
      ##           works)
      "m" | ## (journal) journal title
      "j" | ## (series) series title
      "s" | ## (unpublished) title of unpublished material (including theses and
      ##           dissertations unless published by a commercial press)
      "u"
  }?,
  ## classifies the title according to some convenient typology.
  ## Sample values include: 1] main; 2] sub (subordinate); 3] alt (alternate); 4] short; 5] desc (descriptive)
  attribute type { data.enumerated }?,
  empty

unclear =
  ## contains a word, phrase, or passage which cannot be transcribed
  ## with certainty because it is illegible or inaudible in the source.
  element unclear { unclear.content, unclear.localattributes }
unclear.content = macro.paraContent
unclear.localattributes =
  att.global.attributes,
  att.editLike.attributes,
  ## indicates why the material is hard to transcribe.
  attribute reason {
    list { data.word+ }
  }?,
  ## Where the difficulty in transcription arises from action
  ## (partial deletion, etc.) assignable to an identifiable hand, signifies
  ## the hand responsible for the action.
  attribute hand { data.pointer }?,
  ## Where the difficulty in transcription arises from
  ##  damage, categorizes the cause of the damage, if it can be identified.
  ## Sample values include: 1] rubbing; 2] mildew; 3] smoke
  attribute agent { data.enumerated }?,
  empty
# 3. macros
