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/. 
#		Declarations for classes, datatypes, and macros available to all
# TEI modules

# Definitions from module tei

# Set global predeclared macros
TEI |= notAllowed
ab |= notAllowed
abbr |= notAllowed
accMat |= notAllowed
acquisition |= notAllowed
activity |= notAllowed
actor |= notAllowed
add |= notAllowed
addName |= notAllowed
addSpan |= notAllowed
additional |= notAllowed
additions |= notAllowed
addrLine |= notAllowed
address |= notAllowed
adminInfo |= notAllowed
affiliation |= notAllowed
age |= notAllowed
alt |= notAllowed
altGrp |= notAllowed
altIdent |= notAllowed
altIdentifier |= notAllowed
am |= notAllowed
analytic |= notAllowed
anchor |= notAllowed
app |= notAllowed
appInfo |= notAllowed
application |= notAllowed
arc |= notAllowed
argument |= notAllowed
att |= notAllowed
attDef |= notAllowed
attList |= notAllowed
attRef |= notAllowed
author |= notAllowed
authority |= notAllowed
availability |= notAllowed
back |= notAllowed
bibl |= notAllowed
biblFull |= notAllowed
biblScope |= notAllowed
biblStruct |= notAllowed
bicond |= notAllowed
binary |= notAllowed
binaryObject |= notAllowed
binding |= notAllowed
bindingDesc |= notAllowed
birth |= notAllowed
bloc |= notAllowed
body |= notAllowed
broadcast |= notAllowed
byline |= notAllowed
c |= notAllowed
cRefPattern |= notAllowed
caesura |= notAllowed
camera |= notAllowed
caption |= notAllowed
case |= notAllowed
castGroup |= notAllowed
castItem |= notAllowed
castList |= notAllowed
catDesc |= notAllowed
catRef |= notAllowed
catchwords |= notAllowed
category |= notAllowed
cb |= notAllowed
cell |= notAllowed
certainty |= notAllowed
change |= notAllowed
channel |= notAllowed
char |= notAllowed
charDecl |= notAllowed
charName |= notAllowed
charProp |= notAllowed
choice |= notAllowed
cit |= notAllowed
cl |= notAllowed
classCode |= notAllowed
classDecl |= notAllowed
classSpec |= notAllowed
classes |= notAllowed
climate |= notAllowed
closer |= notAllowed
code |= notAllowed
collation |= notAllowed
collection |= notAllowed
colloc |= notAllowed
colophon |= notAllowed
cond |= notAllowed
condition |= notAllowed
constitution |= notAllowed
content |= notAllowed
corr |= notAllowed
correction |= notAllowed
country |= notAllowed
creation |= notAllowed
custEvent |= notAllowed
custodialHist |= notAllowed
damage |= notAllowed
damageSpan |= notAllowed
datatype |= notAllowed
date |= notAllowed
dateline |= notAllowed
death |= notAllowed
decoDesc |= notAllowed
decoNote |= notAllowed
def |= notAllowed
\default |= notAllowed
defaultVal |= notAllowed
del |= notAllowed
delSpan |= notAllowed
depth |= notAllowed
derivation |= notAllowed
desc |= notAllowed
dictScrap |= notAllowed
dimensions |= notAllowed
distinct |= notAllowed
distributor |= notAllowed
district |= notAllowed
\div |= notAllowed
div1 |= notAllowed
div2 |= notAllowed
div3 |= notAllowed
div4 |= notAllowed
div5 |= notAllowed
div6 |= notAllowed
div7 |= notAllowed
divGen |= notAllowed
docAuthor |= notAllowed
docDate |= notAllowed
docEdition |= notAllowed
docImprint |= notAllowed
docTitle |= notAllowed
domain |= notAllowed
eLeaf |= notAllowed
eTree |= notAllowed
edition |= notAllowed
editionStmt |= notAllowed
editor |= notAllowed
editorialDecl |= notAllowed
education |= notAllowed
eg |= notAllowed
egXML |= notAllowed
elementSpec |= notAllowed
email |= notAllowed
emph |= notAllowed
encodingDesc |= notAllowed
entry |= notAllowed
entryFree |= notAllowed
epigraph |= notAllowed
epilogue |= notAllowed
equipment |= notAllowed
equiv |= notAllowed
etym |= notAllowed
event |= notAllowed
ex |= notAllowed
exemplum |= notAllowed
expan |= notAllowed
explicit |= notAllowed
extent |= notAllowed
f |= notAllowed
fDecl |= notAllowed
fDescr |= notAllowed
fLib |= notAllowed
facsimile |= notAllowed
factuality |= notAllowed
faith |= notAllowed
figDesc |= notAllowed
figure |= notAllowed
fileDesc |= notAllowed
filiation |= notAllowed
finalRubric |= notAllowed
floatingText |= notAllowed
floruit |= notAllowed
foliation |= notAllowed
foreign |= notAllowed
forename |= notAllowed
forest |= notAllowed
forestGrp |= notAllowed
form |= notAllowed
formula |= notAllowed
front |= notAllowed
fs |= notAllowed
fsConstraints |= notAllowed
fsDecl |= notAllowed
fsDescr |= notAllowed
fsdDecl |= notAllowed
fsdLink |= notAllowed
funder |= notAllowed
fvLib |= notAllowed
fw |= notAllowed
g |= notAllowed
gap |= notAllowed
gen |= notAllowed
genName |= notAllowed
geo |= notAllowed
geoDecl |= notAllowed
geogFeat |= notAllowed
geogName |= notAllowed
gi |= notAllowed
gloss |= notAllowed
glyph |= notAllowed
glyphName |= notAllowed
gram |= notAllowed
gramGrp |= notAllowed
graph |= notAllowed
graphic |= notAllowed
group |= notAllowed
handDesc |= notAllowed
handNote |= notAllowed
handNotes |= notAllowed
handShift |= notAllowed
head |= notAllowed
headItem |= notAllowed
headLabel |= notAllowed
height |= notAllowed
heraldry |= notAllowed
hi |= notAllowed
history |= notAllowed
hom |= notAllowed
hyph |= notAllowed
hyphenation |= notAllowed
iNode |= notAllowed
iType |= notAllowed
ident |= notAllowed
idno |= notAllowed
if |= notAllowed
iff |= notAllowed
imprimatur |= notAllowed
imprint |= notAllowed
incident |= notAllowed
incipit |= notAllowed
index |= notAllowed
institution |= notAllowed
interaction |= notAllowed
interp |= notAllowed
interpGrp |= notAllowed
interpretation |= notAllowed
item |= notAllowed
join |= notAllowed
joinGrp |= notAllowed
keywords |= notAllowed
kinesic |= notAllowed
l |= notAllowed
label |= notAllowed
lacunaEnd |= notAllowed
lacunaStart |= notAllowed
lang |= notAllowed
langKnowledge |= notAllowed
langKnown |= notAllowed
langUsage |= notAllowed
language |= notAllowed
layout |= notAllowed
layoutDesc |= notAllowed
lb |= notAllowed
lbl |= notAllowed
leaf |= notAllowed
lem |= notAllowed
lg |= notAllowed
link |= notAllowed
linkGrp |= notAllowed
\list |= notAllowed
listBibl |= notAllowed
listNym |= notAllowed
listOrg |= notAllowed
listPerson |= notAllowed
listPlace |= notAllowed
listRef |= notAllowed
listWit |= notAllowed
localName |= notAllowed
locale |= notAllowed
location |= notAllowed
locus |= notAllowed
m |= notAllowed
macroSpec |= notAllowed
mapping |= notAllowed
material |= notAllowed
measure |= notAllowed
measureGrp |= notAllowed
meeting |= notAllowed
memberOf |= notAllowed
mentioned |= notAllowed
metDecl |= notAllowed
metSym |= notAllowed
milestone |= notAllowed
moduleRef |= notAllowed
moduleSpec |= notAllowed
monogr |= notAllowed
mood |= notAllowed
move |= notAllowed
msContents |= notAllowed
msDesc |= notAllowed
msIdentifier |= notAllowed
msItem |= notAllowed
msItemStruct |= notAllowed
msName |= notAllowed
msPart |= notAllowed
musicNotation |= notAllowed
name |= notAllowed
nameLink |= notAllowed
\namespace |= notAllowed
nationality |= notAllowed
node |= notAllowed
normalization |= notAllowed
note |= notAllowed
notesStmt |= notAllowed
num |= notAllowed
number |= notAllowed
numeric |= notAllowed
nym |= notAllowed
oRef |= notAllowed
oVar |= notAllowed
objectDesc |= notAllowed
occupation |= notAllowed
offset |= notAllowed
opener |= notAllowed
org |= notAllowed
orgName |= notAllowed
orig |= notAllowed
origDate |= notAllowed
origPlace |= notAllowed
origin |= notAllowed
orth |= notAllowed
p |= notAllowed
pRef |= notAllowed
pVar |= notAllowed
particDesc |= notAllowed
pause |= notAllowed
pb |= notAllowed
per |= notAllowed
performance |= notAllowed
persName |= notAllowed
person |= notAllowed
personGrp |= notAllowed
phr |= notAllowed
physDesc |= notAllowed
place |= notAllowed
placeName |= notAllowed
population |= notAllowed
pos |= notAllowed
postBox |= notAllowed
postCode |= notAllowed
postscript |= notAllowed
preparedness |= notAllowed
principal |= notAllowed
profileDesc |= notAllowed
projectDesc |= notAllowed
prologue |= notAllowed
pron |= notAllowed
provenance |= notAllowed
ptr |= notAllowed
pubPlace |= notAllowed
publicationStmt |= notAllowed
publisher |= notAllowed
purpose |= notAllowed
q |= notAllowed
quotation |= notAllowed
quote |= notAllowed
rdg |= notAllowed
rdgGrp |= notAllowed
re |= notAllowed
recordHist |= notAllowed
recording |= notAllowed
recordingStmt |= notAllowed
ref |= notAllowed
refState |= notAllowed
refsDecl |= notAllowed
reg |= notAllowed
region |= notAllowed
relatedItem |= notAllowed
relation |= notAllowed
relationGrp |= notAllowed
remarks |= notAllowed
rendition |= notAllowed
repository |= notAllowed
residence |= notAllowed
resp |= notAllowed
respStmt |= notAllowed
respons |= notAllowed
restore |= notAllowed
revisionDesc |= notAllowed
rhyme |= notAllowed
role |= notAllowed
roleDesc |= notAllowed
roleName |= notAllowed
root |= notAllowed
row |= notAllowed
rs |= notAllowed
rubric |= notAllowed
s |= notAllowed
said |= notAllowed
salute |= notAllowed
samplingDecl |= notAllowed
schemaSpec |= notAllowed
scriptStmt |= notAllowed
seal |= notAllowed
sealDesc |= notAllowed
secFol |= notAllowed
seg |= notAllowed
segmentation |= notAllowed
sense |= notAllowed
series |= notAllowed
seriesStmt |= notAllowed
set |= notAllowed
setting |= notAllowed
settingDesc |= notAllowed
settlement |= notAllowed
sex |= notAllowed
shift |= notAllowed
sic |= notAllowed
signatures |= notAllowed
signed |= notAllowed
soCalled |= notAllowed
socecStatus |= notAllowed
sound |= notAllowed
source |= notAllowed
sourceDesc |= notAllowed
sp |= notAllowed
space |= notAllowed
span |= notAllowed
spanGrp |= notAllowed
speaker |= notAllowed
specDesc |= notAllowed
specGrp |= notAllowed
specGrpRef |= notAllowed
specList |= notAllowed
sponsor |= notAllowed
stage |= notAllowed
stamp |= notAllowed
state |= notAllowed
stdVals |= notAllowed
street |= notAllowed
stress |= notAllowed
\string |= notAllowed
stringVal |= notAllowed
subc |= notAllowed
subst |= notAllowed
summary |= notAllowed
superEntry |= notAllowed
supplied |= notAllowed
support |= notAllowed
supportDesc |= notAllowed
surface |= notAllowed
surname |= notAllowed
surrogates |= notAllowed
syll |= notAllowed
symbol |= notAllowed
table |= notAllowed
tag |= notAllowed
tagUsage |= notAllowed
tagsDecl |= notAllowed
taxonomy |= notAllowed
tech |= notAllowed
teiCorpus |= notAllowed
teiHeader |= notAllowed
term |= notAllowed
terrain |= notAllowed
\text |= notAllowed
textClass |= notAllowed
textDesc |= notAllowed
textLang |= notAllowed
then |= notAllowed
time |= notAllowed
timeline |= notAllowed
title |= notAllowed
titlePage |= notAllowed
titlePart |= notAllowed
titleStmt |= notAllowed
tns |= notAllowed
trailer |= notAllowed
trait |= notAllowed
tree |= notAllowed
triangle |= notAllowed
typeDesc |= notAllowed
typeNote |= notAllowed
u |= notAllowed
unclear |= notAllowed
unicodeName |= notAllowed
usg |= notAllowed
vAlt |= notAllowed
vColl |= notAllowed
vDefault |= notAllowed
vLabel |= notAllowed
vMerge |= notAllowed
vNot |= notAllowed
vRange |= notAllowed
val |= notAllowed
valDesc |= notAllowed
valItem |= notAllowed
valList |= notAllowed
value |= notAllowed
variantEncoding |= notAllowed
view |= notAllowed
vocal |= notAllowed
w |= notAllowed
watermark |= notAllowed
when |= notAllowed
width |= notAllowed
wit |= notAllowed
witDetail |= notAllowed
witEnd |= notAllowed
witStart |= notAllowed
witness |= notAllowed
writing |= notAllowed
xr |= notAllowed
zone |= notAllowed
# Set predeclared macros

# 0. predeclared classes
att.duration.attributes |= empty
model.handDescPart |= notAllowed
model.handDescPart_sequence |= notAllowed
model.handDescPart_sequenceOptional |= notAllowed
model.handDescPart_sequenceOptionalRepeatable |= notAllowed
model.handDescPart_sequenceRepeatable |= notAllowed
model.entryPart |= notAllowed
model.entryPart_sequence |= notAllowed
model.entryPart_sequenceOptional |= notAllowed
model.entryPart_sequenceOptionalRepeatable |= notAllowed
model.entryPart_sequenceRepeatable |= notAllowed
model.global.spoken |= notAllowed
model.global.spoken_sequence |= notAllowed
model.global.spoken_sequenceOptional |= notAllowed
model.global.spoken_sequenceOptionalRepeatable |= notAllowed
model.global.spoken_sequenceRepeatable |= notAllowed
model.placeTraitLike |= notAllowed
model.placeTraitLike_sequence |= notAllowed
model.placeTraitLike_sequenceOptional |= notAllowed
model.placeTraitLike_sequenceOptionalRepeatable |= notAllowed
model.placeTraitLike_sequenceRepeatable |= notAllowed
model.placeNamePart |= notAllowed
model.placeNamePart_sequence |= notAllowed
model.placeNamePart_sequenceOptional |= notAllowed
model.placeNamePart_sequenceOptionalRepeatable |= notAllowed
model.placeNamePart_sequenceRepeatable |= notAllowed
model.placeStateLike |= notAllowed
model.placeStateLike_sequence |= notAllowed
model.placeStateLike_sequenceOptional |= notAllowed
model.placeStateLike_sequenceOptionalRepeatable |= notAllowed
model.placeStateLike_sequenceRepeatable |= notAllowed
model.placeEventLike |= notAllowed
model.placeEventLike_sequence |= notAllowed
model.placeEventLike_sequenceOptional |= notAllowed
model.placeEventLike_sequenceOptionalRepeatable |= notAllowed
model.placeEventLike_sequenceRepeatable |= notAllowed
att.metrical.attributes |= empty
att.enjamb.attributes |= empty
model.divPart.spoken |= notAllowed
model.divPart.spoken_sequence |= notAllowed
model.divPart.spoken_sequenceOptional |= notAllowed
model.divPart.spoken_sequenceOptionalRepeatable |= notAllowed
model.divPart.spoken_sequenceRepeatable |= notAllowed
model.entryLike |= notAllowed
model.entryLike_sequence |= notAllowed
model.entryLike_sequenceOptional |= notAllowed
model.entryLike_sequenceOptionalRepeatable |= notAllowed
model.entryLike_sequenceRepeatable |= notAllowed
model.ptrLike.form |= notAllowed
model.ptrLike.form_sequence |= notAllowed
model.ptrLike.form_sequenceOptional |= notAllowed
model.ptrLike.form_sequenceOptionalRepeatable |= notAllowed
model.ptrLike.form_sequenceRepeatable |= notAllowed
att.ptrLike.form.attributes |= empty
att.msExcerpt.attributes |= empty
att.global.facs.attributes |= empty
model.resourceLike |= notAllowed
model.resourceLike_sequence |= notAllowed
model.resourceLike_sequenceOptional |= notAllowed
model.resourceLike_sequenceOptionalRepeatable |= notAllowed
model.resourceLike_sequenceRepeatable |= notAllowed
model.persNamePart |= notAllowed
model.persNamePart_sequence |= notAllowed
model.persNamePart_sequenceOptional |= notAllowed
model.persNamePart_sequenceOptionalRepeatable |= notAllowed
model.persNamePart_sequenceRepeatable |= notAllowed
model.orgStateLike |= notAllowed
model.orgStateLike_sequence |= notAllowed
model.orgStateLike_sequenceOptional |= notAllowed
model.orgStateLike_sequenceOptionalRepeatable |= notAllowed
model.orgStateLike_sequenceRepeatable |= notAllowed
att.personal.attributes |= empty
att.datable.iso.attributes |= empty
att.duration.iso.attributes |= empty
att.global.linking.attributes |= empty
att.pointing.attributes |= empty
att.global.analytic.attributes |= empty
# 0. predeclared macros

# 1. classes
att.dimensions.attributes =
  att.dimensions.attribute.unit,
  att.dimensions.attribute.quantity,
  att.dimensions.attribute.extent,
  att.dimensions.attribute.atLeast,
  att.dimensions.attribute.atMost,
  att.dimensions.attribute.min,
  att.dimensions.attribute.max,
  att.dimensions.attribute.precision,
  att.dimensions.attribute.scope,
  empty
att.dimensions.attribute.unit =
  ## names the unit used for the measurement
  ## Suggested values include: 1] cm (centimetres); 2] mm (millimetres); 3] in (inches); 4] lines; 5] chars (characters)
  attribute unit {
    ## (centimetres) 
    "cm" | ## (millimetres) 
      "mm" | ## (inches) 
      "in" | ## lines of text
      "lines" | ## (characters) characters of text
      "chars"
    | xsd:Name
  }?
att.dimensions.attribute.quantity =
  ## specifies the length in the units specified
  attribute quantity { data.numeric }?
att.dimensions.attribute.extent =
  ## indicates the size of the object concerned using a
  ##       project-specific vocabulary combining quantity and units in a
  ##       single string of words.  
  attribute extent {
    list { data.word+ }
  }?
att.dimensions.attribute.atLeast =
  ## gives a minimum  estimated value for the  measurement.
  attribute atLeast { data.numeric }?
att.dimensions.attribute.atMost =
  ## gives a maximum  estimated value for the  measurement.
  attribute atMost { data.numeric }?
att.dimensions.attribute.min =
  ## where the measurement summarizes more than one
  ##       observation, supplies the minimum value observed.
  attribute min { data.numeric }?
att.dimensions.attribute.max =
  ## where the measurement summarizes more than one
  ##       observation, supplies the maximum value observed.
  attribute max { data.numeric }?
att.dimensions.attribute.precision =
  ## characterizes the precision of the values specified by the
  ##       other attributes.
  attribute precision { data.certainty }?
att.dimensions.attribute.scope =
  ## where the measurement summarizes more than one
  ##       observation, specifies the applicability of this measurement.
  ## Sample values include: 1] all; 2] most; 3] range
  attribute scope { data.enumerated }?
att.ascribed.attributes = att.ascribed.attribute.who, empty
att.ascribed.attribute.who =
  ## indicates the person, or group of
  ##	people, to whom the element content is ascribed.
  attribute who {
    list { data.pointer+ }
  }?
att.damaged.attributes =
  att.dimensions.attributes,
  att.damaged.attribute.hand,
  att.damaged.attribute.agent,
  att.damaged.attribute.degree,
  att.damaged.attribute.group,
  empty
att.damaged.attribute.hand =
  ## In the case of damage (deliberate defacement, inking out,
  ##       etc.) assignable to a distinct hand, signifies the hand
  ##       responsible for the damage.
  attribute hand { data.pointer }?
att.damaged.attribute.agent =
  ## categorizes the cause of the damage, if it can be identified.
  ## Sample values include: 1] rubbing; 2] mildew; 3] smoke
  attribute agent { data.enumerated }?
att.damaged.attribute.degree =
  ## 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 }?
att.damaged.attribute.group =
  ## assigns an arbitrary number to each stretch of damage
  ##       regarded as forming part of the same physical phenomenon.
  attribute group { data.count }?
att.datable.w3c.attributes =
  att.datable.w3c.attribute.period,
  att.datable.w3c.attribute.when,
  att.datable.w3c.attribute.notBefore,
  att.datable.w3c.attribute.notAfter,
  att.datable.w3c.attribute.from,
  att.datable.w3c.attribute.to,
  empty
att.datable.w3c.attribute.period =
  ## supplies a pointer to some location defining a named
  ##       period of time within which the datable item is understood to
  ##       have occurred.
  attribute period { data.pointer }?
att.datable.w3c.attribute.when =
  ## supplies the value of the date or time in a standard form,
  ##       e.g. yyyy-mm-dd.
  attribute when { data.temporal.w3c }?
att.datable.w3c.attribute.notBefore =
  ## specifies the earliest possible date for the event in
  ##	  standard form, e.g. yyyy-mm-dd.
  attribute notBefore { data.temporal.w3c }?
att.datable.w3c.attribute.notAfter =
  ## specifies the latest possible date for the event in
  ##	  standard form, e.g. yyyy-mm-dd.
  attribute notAfter { data.temporal.w3c }?
att.datable.w3c.attribute.from =
  ## indicates the starting point of the period in standard form, e.g. yyyy-mm-dd.
  attribute from { data.temporal.w3c }?
att.datable.w3c.attribute.to =
  ## indicates the ending point of the period in standard
  ##	  form, e.g. yyyy-mm-dd.
  attribute to { data.temporal.w3c }?
att.datable.attributes =
  att.datable.w3c.attributes, att.datable.iso.attributes, empty
att.declarable.attributes = att.declarable.attribute.default, empty
att.declarable.attribute.default =
  ## indicates whether or not this element is selected by default when
  ## its parent is selected.
  [ a:defaultValue = "false" ]
  attribute default {
    ## This element is selected if its parent is selected
    "true" | ## This element can only be selected explicitly, unless it is the
      ## only one of its kind, in which case it is selected if its parent is selected.
      "false"
  }?
att.declaring.attributes = att.declaring.attribute.decls, empty
att.declaring.attribute.decls =
  ## identifies one or more declarable elements within the
  ## header, which are understood to apply to the element bearing this
  ## attribute and its content.
  attribute decls {
    list { data.pointer+ }
  }?
att.divLike.attributes =
  att.metrical.attributes,
  att.divLike.attribute.org,
  att.divLike.attribute.sample,
  att.divLike.attribute.part,
  empty
att.divLike.attribute.org =
  ## (organization) specifies how the content of the division is organized.
  [ a:defaultValue = "uniform" ]
  attribute org {
    ## composite content: i.e. no claim is made about the
    ##		  sequence in which the immediate contents of this division
    ##		  are to be processed, or their inter-relationships.
    "composite" | ## uniform content: i.e. the immediate contents of this
      ##		  element are regarded as forming a logical unit, to be
      ##		  processed in sequence.
      "uniform"
  }?
att.divLike.attribute.sample =
  ## indicates whether this division is a sample of the
  ##		original source and if so, from which part.
  [ a:defaultValue = "complete" ]
  attribute sample {
    ## division lacks material present at end in source.
    "initial" | ## division lacks material at start and end.
      "medial" | ## division lacks material at start.
      "final" | ## position of sampled material within original unknown.
      "unknown" | ## division is not a sample.
      "complete"
  }?
att.divLike.attribute.part =
  ## specifies whether or not the division is fragmented by
  ##		some other structural element, for example a speech which is
  ##		divided between two or more verse stanzas.
  [ a:defaultValue = "N" ]
  attribute part {
    ## (yes) the division is incomplete in some respect
    "Y" | ## (no) either the division is complete, or no claim is made as to its completeness.
      "N" | ## (initial) the initial part of an incomplete division
      "I" | ## (medial) a medial part of an incomplete division
      "M" | ## (final) the final part of an incomplete division
      "F"
  }?
att.duration.w3c.attributes = att.duration.w3c.attribute.dur, empty
att.duration.w3c.attribute.dur =
  ## (duration) indicates the length of this element in time.
  attribute dur { data.duration.w3c }?
att.editLike.attributes =
  att.dimensions.attributes,
  att.editLike.attribute.cert,
  att.editLike.attribute.resp,
  att.editLike.attribute.evidence,
  att.editLike.attribute.source,
  empty
att.editLike.attribute.cert =
  ## (certainty) signifies the degree of certainty associated with the
  ##	intervention or interpretation.
  attribute cert { data.certainty }?
att.editLike.attribute.resp =
  ## (responsible party) indicates the agency responsible for the
  ##	intervention or interpretation, for example an editor or transcriber.
  attribute resp {
    list { data.pointer+ }
  }?
att.editLike.attribute.evidence =
  ## indicates the nature of the evidence supporting the reliability or
  ##   accuracy of the intervention or interpretation.
  ## Suggested values include: 1] internal; 2] external; 3] conjecture
  attribute evidence {
    ## there is internal evidence to support the intervention.
    "internal" | ## there is external evidence to support the intervention.
      "external" | ## the intervention or interpretation has been made by
      ##	    the editor, cataloguer, or scholar on the basis of their
      ##	    expertise.
      "conjecture"
    | xsd:Name
  }?
att.editLike.attribute.source =
  ## contains a list of one or more pointers indicating the
  ##       sources which support the given reading.
  attribute source {
    list { data.pointer+ }
  }?
att.global.attributes =
  att.global.linking.attributes,
  att.global.analytic.attributes,
  att.global.facs.attributes,
  att.global.attribute.xmlid,
  att.global.attribute.n,
  att.global.attribute.xmllang,
  att.global.attribute.rend,
  att.global.attribute.rendition,
  att.global.attribute.xmlbase,
  empty
att.global.attribute.xmlid =
  ## (identifier) provides a unique identifier for the element bearing the
  ##       attribute.
  attribute xml:id { xsd:ID }?
att.global.attribute.n =
  ## (number) gives a number (or other label) for an element, which is
  ##       not necessarily unique within the document.
  attribute n {
    list { data.word+ }
  }?
att.global.attribute.xmllang =
  ## (language) indicates the language of the element content using a
  ##       tag generated according to BCP 47
  attribute xml:lang { data.language }?
att.global.attribute.rend =
  ## (rendition) indicates how the element in question was rendered or
  ##	presented in the source text.
  attribute rend {
    list { data.word+ }
  }?
att.global.attribute.rendition =
  ## points to a description of the rendering  or
  ##	presentation used for this element in the source text.
  attribute rendition {
    list { data.pointer+ }
  }?
att.global.attribute.xmlbase =
  ## provides a base URI reference with which applications can
  ##       resolve relative URI references into absolute URI
  ##       references.
  attribute xml:base { data.pointer }?
att.handFeatures.attributes =
  att.handFeatures.attribute.scribe,
  att.handFeatures.attribute.script,
  att.handFeatures.attribute.medium,
  att.handFeatures.attribute.scope,
  empty
att.handFeatures.attribute.scribe =
  ## gives a standard name or other identifier for the scribe
  ## believed to be responsible for this hand.
  attribute scribe { data.name }?
att.handFeatures.attribute.script =
  ## characterizes the particular script or writing style used by
  ## this hand, for example secretary, copperplate, Chancery, Italian, etc.
  attribute script {
    list { data.name+ }
  }?
att.handFeatures.attribute.medium =
  ## describes the tint or type of ink, e.g. brown, or other
  ## writing medium, e.g. pencil
  attribute medium { data.enumerated }?
att.handFeatures.attribute.scope =
  ## specifies how widely this  hand is used in the manuscript.
  attribute scope {
    ## only this hand is used throughout the manuscript
    "sole" | ## this hand is used through most of the manuscript
      "major" | ## this hand is used occasionally in the manuscript
      "minor"
  }?
att.internetMedia.attributes =
  att.internetMedia.attribute.mimeType, empty
att.internetMedia.attribute.mimeType =
  ## (MIME media type) specifies the applicable multimedia internet mail extension (MIME) media type
  attribute mimeType { data.word }?
att.interpLike.attributes =
  att.interpLike.attribute.resp,
  att.interpLike.attribute.type,
  att.interpLike.attribute.inst,
  empty
att.interpLike.attribute.resp =
  ## (responsible party) indicates who is responsible for the interpretation.
  attribute resp { data.pointer }?
att.interpLike.attribute.type =
  ## indicates what kind of phenomenon is being noted in the passage.
  ## Sample values include: 1] image; 2] character; 3] theme; 4] allusion
  attribute type { data.enumerated }?
att.interpLike.attribute.inst =
  ## (instances) points to instances of the analysis or interpretation represented
  ## by the current element.
  attribute inst {
    list { data.pointer+ }
  }?
att.measurement.attributes =
  att.measurement.attribute.unit,
  att.measurement.attribute.quantity,
  att.measurement.attribute.commodity,
  empty
att.measurement.attribute.unit =
  ## indicates the units used for the measurement, usually
  ##       using the standard symbol for the desired units.
  ## Suggested values include: 1] m (metre); 2] kg (kilogram); 3] s (second); 4] Hz (hertz); 5] Pa (pascal); 6] Ω (ohm); 7] L (litre); 8] t (tonne); 9] ha (hectare); 10] Å (ångström); 11] mL (millilitre); 12] cm (centimetre); 13] dB (decibel); 14] kbit (kilobit); 15] Kibit (kibibit); 16] kB (kilobyte); 17] KiB (kibibyte); 18] MB (megabyte); 19] MiB (mebibyte)
  attribute unit {
    ## (metre) SI base unit of length
    "m" | ## (kilogram) SI base unit of mass
      "kg" | ## (second) SI base unit of time
      "s" | ## (hertz) SI unit of frequency
      "Hz" | ## (pascal) SI unit of pressure or stress
      "Pa" | ## (ohm) SI unit of electric resistance
      "Ω" | ## (litre) 1 dm³
      "L" | ## (tonne) 10³ kg
      "t" | ## (hectare) 1 hm²
      "ha" | ## (ångström) 10⁻¹⁰ m
      "Å" | ## (millilitre) 
      "mL" | ## (centimetre) 
      "cm" | ## (decibel) see remarks, below
      "dB" | ## (kilobit) 10³ or 1000 bits
      "kbit" | ## (kibibit) 2¹⁰ or 1024 bits
      "Kibit" | ## (kilobyte) 10³ or 1000 bytes
      "kB" | ## (kibibyte) 2¹⁰ or 1024 bytes
      "KiB" | ## (megabyte) 10⁶ or 1 000 000 bytes
      "MB" | ## (mebibyte) 2²⁰ or 1 048 576 bytes
      "MiB"
    | xsd:Name
  }?
att.measurement.attribute.quantity =
  ## specifies the number of the specified units that
  ##       comprise the measurement
  attribute quantity { data.numeric }?
att.measurement.attribute.commodity =
  ## indicates the substance that is being measured
  attribute commodity {
    list { data.word+ }
  }?
att.canonical.attributes =
  att.canonical.attribute.key, att.canonical.attribute.ref, empty
att.canonical.attribute.key =
  ## provides an externally-defined means
  ##  of identifying the entity (or entities) being named, using a coded value
  ##       of some kind.
  attribute key { data.key }?
att.canonical.attribute.ref =
  ##  (reference) provides an explicit means of locating a full definition
  ##       for the entity being named by means of one or more URIs.
  attribute ref {
    list { data.pointer+ }
  }?
att.naming.attributes =
  att.canonical.attributes, att.naming.attribute.nymRef, empty
att.naming.attribute.nymRef =
  ## (reference to the canonical name) provides a means of locating the canonical form
  ##       (nym) of the names associated with the object
  ##        named by
  ##       the element bearing it.
  attribute nymRef {
    list { data.pointer+ }
  }?
att.placement.attributes = att.placement.attribute.place, empty
att.placement.attribute.place =
  ## Suggested values include: 1] infralinear; 2] margin-bot (bottom margin); 3] margin-left (left margin); 4] margin-right (right margin); 5] margin-top (top margin); 6] opposite; 7] overleaf; 8] supralinear; 9] verso; 10] app (apparatus); 11] end; 12] foot; 13] inline; 14] interlinear; 15] inline; 16] mixed
  attribute place {
    ## below the line
    "infralinear" | ## (bottom margin) in the bottom margin
      "margin-bot" | ## (left margin) in the left margin
      "margin-left" | ## (right margin) in the right margin
      "margin-right" | ## (top margin) in the top margin
      "margin-top" | ## on the opposite, i.e. facing, page
      "opposite" | ## on the other side of the leaf
      "overleaf" | ## above the line
      "supralinear" | ## on verso of the sheet or page
      "verso" | ## (apparatus) note appears in the apparatus at the foot of the page.
      "app" | ## note appears at end of chapter or volume.
      "end" | ## note appears at foot of page.
      "foot" | ## note appears as a marked paragraph in the body of the text.
      "inline" | ## note appears between lines of the text; a less precise form of either infralinear or supralinear.
      "interlinear" | ## addition is made in a space left in the witness by an earlier scribe.
      "inline" | ## one or more of the other values
      "mixed"
    | xsd:Name
  }?
att.segLike.attributes =
  att.metrical.attributes,
  att.segLike.attribute.function,
  att.segLike.attribute.part,
  empty
att.segLike.attribute.function =
  ## characterizes the function of the segment.
  attribute function { data.enumerated }?
att.segLike.attribute.part =
  ## specifies whether or not the segment is fragmented by some other
  ## structural element, for example a clause which is divided between two
  ## or more sentences.
  [ a:defaultValue = "N" ]
  attribute part {
    ## (yes) the segment is incomplete in some respect
    "Y" | ## (no) either the segment is complete, or no claim is made as to
      ## its completeness
      "N" | ## (initial) the initial part of an incomplete segment
      "I" | ## (medial) a medial part of an incomplete segment
      "M" | ## (final) the final part of an incomplete segment
      "F"
  }?
att.spanning.attributes = att.spanning.attribute.spanTo, empty
att.spanning.attribute.spanTo =
  ## indicates the end of a span initiated by the element
  ##	bearing this attribute.
  attribute spanTo { data.pointer }?
att.tableDecoration.attributes =
  att.tableDecoration.attribute.role,
  att.tableDecoration.attribute.rows,
  att.tableDecoration.attribute.cols,
  empty
att.tableDecoration.attribute.role =
  ## indicates the kind of information held in this cell or
  ## in each cell of this row.
  ## Suggested values include: 1] label; 2] data
  [ a:defaultValue = "data" ]
  attribute role {
    ## labelling or descriptive information only.
    "label" | ## data values.
      "data"
    | xsd:Name
  }?
att.tableDecoration.attribute.rows =
  ## indicates the number of rows occupied by this cell or row.
  [ a:defaultValue = "1" ] attribute rows { data.count }?
att.tableDecoration.attribute.cols =
  ## (columns) indicates the number of columns occupied by this cell or
  ##	row.
  [ a:defaultValue = "1" ] attribute cols { data.count }?
att.timed.attributes =
  att.duration.w3c.attributes,
  att.timed.attribute.start,
  att.timed.attribute.end,
  empty
att.timed.attribute.start =
  ## indicates the location within a temporal alignment at
  ##       which this element begins.
  attribute start { data.pointer }?
att.timed.attribute.end =
  ## indicates the location within a temporal alignment at
  ##       which this element ends.
  attribute end { data.pointer }?
att.transcriptional.attributes =
  att.editLike.attributes,
  att.transcriptional.attribute.hand,
  att.transcriptional.attribute.status,
  att.transcriptional.attribute.seq,
  empty
att.transcriptional.attribute.hand =
  ## signifies the hand of the agent which made the intervention.
  attribute hand { data.pointer }?
att.transcriptional.attribute.status =
  ## indicates the effect of the intervention, for example in
  ##       the case of a deletion, strikeouts
  ##       which include too much or too little text, or in the case of an
  ##       addition, an insertion which duplicates some of the text
  ##       already present.
  ## Sample values include: 1] duplicate; 2] duplicate-partial; 3] excessStart; 4] excessEnd; 5] shortStart; 6] shortEnd; 7] partial; 8] unremarkable
  [ a:defaultValue = "unremarkable" ]
  attribute status { data.enumerated }?
att.transcriptional.attribute.seq =
  ## (sequence) assigns a sequence number related to the order in which
  ##       the encoded features carrying this attribute are believed to have occurred.
  attribute seq { data.count }?
att.translatable.attributes = att.translatable.attribute.version, empty
att.translatable.attribute.version =
  ## specifies the version name or number of the source from
  ##	which the translated version was derived
  attribute version { data.word }?
att.typed.attributes =
  att.typed.attribute.type, att.typed.attribute.subtype, empty
att.typed.attribute.type =
  ## characterizes the element in some sense, using any convenient
  ##  classification scheme or typology.
  attribute type { data.enumerated }?
att.typed.attribute.subtype =
  ## provides a sub-categorization of the element, if needed
  attribute subtype { data.enumerated }?
att.xmlspace.attributes = att.xmlspace.attribute.xmlspace, empty
att.xmlspace.attribute.xmlspace =
  ## signals an intention that white space should be 
  ##       preserved by applications
  attribute xml:space {
    "default" | "preserve"
  }?
model.nameLike.agent = name | orgName | persName
model.nameLike.agent_sequence = name, orgName, persName
model.nameLike.agent_sequenceOptional = name?, orgName?, persName?
model.nameLike.agent_sequenceOptionalRepeatable =
  name*, orgName*, persName*
model.nameLike.agent_sequenceRepeatable = name+, orgName+, persName+
model.segLike = seg | s | cl | phr | w | m | c
model.segLike_sequence = seg, s, cl, phr, w, m, c
model.segLike_sequenceOptional = seg?, s?, cl?, phr?, w?, m?, c?
model.segLike_sequenceOptionalRepeatable =
  seg*, s*, cl*, phr*, w*, m*, c*
model.segLike_sequenceRepeatable = seg+, s+, cl+, phr+, w+, m+, c+
model.hiLike = hi
model.hiLike_sequence = hi
model.hiLike_sequenceOptional = hi?
model.hiLike_sequenceOptionalRepeatable = hi*
model.hiLike_sequenceRepeatable = hi+
model.emphLike =
  foreign
  | emph
  | distinct
  | mentioned
  | soCalled
  | gloss
  | term
  | title
  | code
  | ident
model.emphLike_sequence =
  foreign,
  emph,
  distinct,
  mentioned,
  soCalled,
  gloss,
  term,
  title,
  code,
  ident
model.emphLike_sequenceOptional =
  foreign?,
  emph?,
  distinct?,
  mentioned?,
  soCalled?,
  gloss?,
  term?,
  title?,
  code?,
  ident?
model.emphLike_sequenceOptionalRepeatable =
  foreign*,
  emph*,
  distinct*,
  mentioned*,
  soCalled*,
  gloss*,
  term*,
  title*,
  code*,
  ident*
model.emphLike_sequenceRepeatable =
  foreign+,
  emph+,
  distinct+,
  mentioned+,
  soCalled+,
  gloss+,
  term+,
  title+,
  code+,
  ident+
model.highlighted = model.hiLike | model.emphLike
model.highlighted_sequence = model.hiLike, model.emphLike
model.highlighted_sequenceOptional = model.hiLike?, model.emphLike?
model.highlighted_sequenceOptionalRepeatable =
  model.hiLike*, model.emphLike*
model.highlighted_sequenceRepeatable = model.hiLike+, model.emphLike+
model.dateLike = date | time
model.dateLike_sequence = date, time
model.dateLike_sequenceOptional = date?, time?
model.dateLike_sequenceOptionalRepeatable = date*, time*
model.dateLike_sequenceRepeatable = date+, time+
model.measureLike =
  num | measure | measureGrp | height | depth | width | geo
model.measureLike_sequence =
  num, measure, measureGrp, height, depth, width, geo
model.measureLike_sequenceOptional =
  num?, measure?, measureGrp?, height?, depth?, width?, geo?
model.measureLike_sequenceOptionalRepeatable =
  num*, measure*, measureGrp*, height*, depth*, width*, geo*
model.measureLike_sequenceRepeatable =
  num+, measure+, measureGrp+, height+, depth+, width+, geo+
model.egLike = eg | egXML
model.egLike_sequence = eg, egXML
model.egLike_sequenceOptional = eg?, egXML?
model.egLike_sequenceOptionalRepeatable = eg*, egXML*
model.egLike_sequenceRepeatable = eg+, egXML+
model.graphicLike = graphic | binaryObject | formula
model.graphicLike_sequence = graphic, binaryObject, formula
model.graphicLike_sequenceOptional = graphic?, binaryObject?, formula?
model.graphicLike_sequenceOptionalRepeatable =
  graphic*, binaryObject*, formula*
model.graphicLike_sequenceRepeatable = graphic+, binaryObject+, formula+
model.offsetLike = offset | geogFeat
model.offsetLike_sequence = offset, geogFeat
model.offsetLike_sequenceOptional = offset?, geogFeat?
model.offsetLike_sequenceOptionalRepeatable = offset*, geogFeat*
model.offsetLike_sequenceRepeatable = offset+, geogFeat+
model.pPart.msdesc =
  catchwords
  | dimensions
  | heraldry
  | locus
  | material
  | origDate
  | origPlace
  | secFol
  | signatures
  | stamp
  | watermark
  | handShift
model.pPart.msdesc_sequence =
  catchwords,
  dimensions,
  heraldry,
  locus,
  material,
  origDate,
  origPlace,
  secFol,
  signatures,
  stamp,
  watermark,
  handShift
model.pPart.msdesc_sequenceOptional =
  catchwords?,
  dimensions?,
  heraldry?,
  locus?,
  material?,
  origDate?,
  origPlace?,
  secFol?,
  signatures?,
  stamp?,
  watermark?,
  handShift?
model.pPart.msdesc_sequenceOptionalRepeatable =
  catchwords*,
  dimensions*,
  heraldry*,
  locus*,
  material*,
  origDate*,
  origPlace*,
  secFol*,
  signatures*,
  stamp*,
  watermark*,
  handShift*
model.pPart.msdesc_sequenceRepeatable =
  catchwords+,
  dimensions+,
  heraldry+,
  locus+,
  material+,
  origDate+,
  origPlace+,
  secFol+,
  signatures+,
  stamp+,
  watermark+,
  handShift+
model.pPart.editorial = choice | abbr | expan | ex | am | subst
model.pPart.editorial_sequence = choice, abbr, expan, ex, am, subst
model.pPart.editorial_sequenceOptional =
  choice?, abbr?, expan?, ex?, am?, subst?
model.pPart.editorial_sequenceOptionalRepeatable =
  choice*, abbr*, expan*, ex*, am*, subst*
model.pPart.editorial_sequenceRepeatable =
  choice+, abbr+, expan+, ex+, am+, subst+
model.pPart.transcriptional =
  sic
  | corr
  | reg
  | orig
  | add
  | del
  | unclear
  | damage
  | restore
  | supplied
  | app
model.pPart.transcriptional_sequence =
  sic,
  corr,
  reg,
  orig,
  add,
  del,
  unclear,
  damage,
  restore,
  supplied,
  app
model.pPart.transcriptional_sequenceOptional =
  sic?,
  corr?,
  reg?,
  orig?,
  add?,
  del?,
  unclear?,
  damage?,
  restore?,
  supplied?,
  app?
model.pPart.transcriptional_sequenceOptionalRepeatable =
  sic*,
  corr*,
  reg*,
  orig*,
  add*,
  del*,
  unclear*,
  damage*,
  restore*,
  supplied*,
  app*
model.pPart.transcriptional_sequenceRepeatable =
  sic+,
  corr+,
  reg+,
  orig+,
  add+,
  del+,
  unclear+,
  damage+,
  restore+,
  supplied+,
  app+
model.pPart.edit = model.pPart.editorial | model.pPart.transcriptional
model.pPart.edit_sequence =
  model.pPart.editorial, model.pPart.transcriptional
model.pPart.edit_sequenceOptional =
  model.pPart.editorial?, model.pPart.transcriptional?
model.pPart.edit_sequenceOptionalRepeatable =
  model.pPart.editorial*, model.pPart.transcriptional*
model.pPart.edit_sequenceRepeatable =
  model.pPart.editorial+, model.pPart.transcriptional+
model.ptrLike = ptr | ref
model.ptrLike_sequence = ptr, ref
model.ptrLike_sequenceOptional = ptr?, ref?
model.ptrLike_sequenceOptionalRepeatable = ptr*, ref*
model.ptrLike_sequenceRepeatable = ptr+, ref+
model.lPart = caesura | rhyme
model.lPart_sequence = caesura, rhyme
model.lPart_sequenceOptional = caesura?, rhyme?
model.lPart_sequenceOptionalRepeatable = caesura*, rhyme*
model.lPart_sequenceRepeatable = caesura+, rhyme+
model.global.meta =
  index
  | link
  | linkGrp
  | timeline
  | join
  | joinGrp
  | alt
  | altGrp
  | span
  | spanGrp
  | interp
  | interpGrp
  | fs
  | fLib
  | fvLib
  | certainty
  | respons
model.global.meta_sequence =
  index,
  link,
  linkGrp,
  timeline,
  join,
  joinGrp,
  alt,
  altGrp,
  span,
  spanGrp,
  interp,
  interpGrp,
  fs,
  fLib,
  fvLib,
  certainty,
  respons
model.global.meta_sequenceOptional =
  index?,
  link?,
  linkGrp?,
  timeline?,
  join?,
  joinGrp?,
  alt?,
  altGrp?,
  span?,
  spanGrp?,
  interp?,
  interpGrp?,
  fs?,
  fLib?,
  fvLib?,
  certainty?,
  respons?
model.global.meta_sequenceOptionalRepeatable =
  index*,
  link*,
  linkGrp*,
  timeline*,
  join*,
  joinGrp*,
  alt*,
  altGrp*,
  span*,
  spanGrp*,
  interp*,
  interpGrp*,
  fs*,
  fLib*,
  fvLib*,
  certainty*,
  respons*
model.global.meta_sequenceRepeatable =
  index+,
  link+,
  linkGrp+,
  timeline+,
  join+,
  joinGrp+,
  alt+,
  altGrp+,
  span+,
  spanGrp+,
  interp+,
  interpGrp+,
  fs+,
  fLib+,
  fvLib+,
  certainty+,
  respons+
model.milestoneLike = milestone | pb | lb | cb | fw | anchor
model.milestoneLike_sequence = milestone, pb, lb, cb, fw, anchor
model.milestoneLike_sequenceOptional =
  milestone?, pb?, lb?, cb?, fw?, anchor?
model.milestoneLike_sequenceOptionalRepeatable =
  milestone*, pb*, lb*, cb*, fw*, anchor*
model.milestoneLike_sequenceRepeatable =
  milestone+, pb+, lb+, cb+, fw+, anchor+
model.gLike = g
model.gLike_sequence = g
model.gLike_sequenceOptional = g?
model.gLike_sequenceOptionalRepeatable = g*
model.gLike_sequenceRepeatable = g+
model.oddDecl =
  moduleSpec | specGrp | elementSpec | classSpec | macroSpec | listRef
model.oddDecl_sequence =
  moduleSpec, specGrp, elementSpec, classSpec, macroSpec, listRef
model.oddDecl_sequenceOptional =
  moduleSpec?, specGrp?, elementSpec?, classSpec?, macroSpec?, listRef?
model.oddDecl_sequenceOptionalRepeatable =
  moduleSpec*, specGrp*, elementSpec*, classSpec*, macroSpec*, listRef*
model.oddDecl_sequenceRepeatable =
  moduleSpec+, specGrp+, elementSpec+, classSpec+, macroSpec+, listRef+
model.oddRef = moduleRef | specGrpRef
model.oddRef_sequence = moduleRef, specGrpRef
model.oddRef_sequenceOptional = moduleRef?, specGrpRef?
model.oddRef_sequenceOptionalRepeatable = moduleRef*, specGrpRef*
model.oddRef_sequenceRepeatable = moduleRef+, specGrpRef+
model.phrase.xml = att | gi | tag | val
model.phrase.xml_sequence = att, gi, tag, val
model.phrase.xml_sequenceOptional = att?, gi?, tag?, val?
model.phrase.xml_sequenceOptionalRepeatable = att*, gi*, tag*, val*
model.phrase.xml_sequenceRepeatable = att+, gi+, tag+, val+
model.specDescLike = specList | specDesc
model.specDescLike_sequence = specList, specDesc
model.specDescLike_sequenceOptional = specList?, specDesc?
model.specDescLike_sequenceOptionalRepeatable = specList*, specDesc*
model.specDescLike_sequenceRepeatable = specList+, specDesc+
model.biblLike = biblFull | bibl | biblStruct | msDesc
model.biblLike_sequence = biblFull, bibl, biblStruct, msDesc
model.biblLike_sequenceOptional = biblFull?, bibl?, biblStruct?, msDesc?
model.biblLike_sequenceOptionalRepeatable =
  biblFull*, bibl*, biblStruct*, msDesc*
model.biblLike_sequenceRepeatable =
  biblFull+, bibl+, biblStruct+, msDesc+
model.handDescPart = notAllowed
model.handDescPart_sequence = empty
model.handDescPart_sequenceOptional = empty
model.handDescPart_sequenceOptionalRepeatable = empty
model.handDescPart_sequenceRepeatable = notAllowed
model.headLike = head
model.headLike_sequence = head
model.headLike_sequenceOptional = head?
model.headLike_sequenceOptionalRepeatable = head*
model.headLike_sequenceRepeatable = head+
model.labelLike = desc | label
model.labelLike_sequence = desc, label
model.labelLike_sequenceOptional = desc?, label?
model.labelLike_sequenceOptionalRepeatable = desc*, label*
model.labelLike_sequenceRepeatable = desc+, label+
model.listLike =
  \list
  | listBibl
  | listWit
  | listOrg
  | listPerson
  | listPlace
  | listNym
model.listLike_sequence =
  \list, listBibl, listWit, listOrg, listPerson, listPlace, listNym
model.listLike_sequenceOptional =
  \list?,
  listBibl?,
  listWit?,
  listOrg?,
  listPerson?,
  listPlace?,
  listNym?
model.listLike_sequenceOptionalRepeatable =
  \list*,
  listBibl*,
  listWit*,
  listOrg*,
  listPerson*,
  listPlace*,
  listNym*
model.listLike_sequenceRepeatable =
  \list+,
  listBibl+,
  listWit+,
  listOrg+,
  listPerson+,
  listPlace+,
  listNym+
model.noteLike = note | witDetail
model.noteLike_sequence = note, witDetail
model.noteLike_sequenceOptional = note?, witDetail?
model.noteLike_sequenceOptionalRepeatable = note*, witDetail*
model.noteLike_sequenceRepeatable = note+, witDetail+
model.lLike = l
model.lLike_sequence = l
model.lLike_sequenceOptional = l?
model.lLike_sequenceOptionalRepeatable = l*
model.lLike_sequenceRepeatable = l+
model.pLike = p | ab
model.pLike_sequence = p, ab
model.pLike_sequenceOptional = p?, ab?
model.pLike_sequenceOptionalRepeatable = p*, ab*
model.pLike_sequenceRepeatable = p+, ab+
model.stageLike = stage | move | view | camera | sound | caption | tech
model.stageLike_sequence =
  stage, move, view, camera, sound, caption, tech
model.stageLike_sequenceOptional =
  stage?, move?, view?, camera?, sound?, caption?, tech?
model.stageLike_sequenceOptionalRepeatable =
  stage*, move*, view*, camera*, sound*, caption*, tech*
model.stageLike_sequenceRepeatable =
  stage+, move+, view+, camera+, sound+, caption+, tech+
model.featureVal.complex = fs | vColl | vNot | vMerge
model.featureVal.complex_sequence = fs, vColl, vNot, vMerge
model.featureVal.complex_sequenceOptional = fs?, vColl?, vNot?, vMerge?
model.featureVal.complex_sequenceOptionalRepeatable =
  fs*, vColl*, vNot*, vMerge*
model.featureVal.complex_sequenceRepeatable =
  fs+, vColl+, vNot+, vMerge+
model.featureVal.single =
  binary | symbol | numeric | \string | vLabel | \default | vAlt
model.featureVal.single_sequence =
  binary, symbol, numeric, \string, vLabel, \default, vAlt
model.featureVal.single_sequenceOptional =
  binary?, symbol?, numeric?, \string?, vLabel?, \default?, vAlt?
model.featureVal.single_sequenceOptionalRepeatable =
  binary*, symbol*, numeric*, \string*, vLabel*, \default*, vAlt*
model.featureVal.single_sequenceRepeatable =
  binary+, symbol+, numeric+, \string+, vLabel+, \default+, vAlt+
model.entryPart =
  superEntry
  | hom
  | sense
  | form
  | orth
  | pron
  | hyph
  | syll
  | stress
  | gen
  | number
  | case
  | per
  | tns
  | mood
  | iType
  | gramGrp
  | pos
  | subc
  | colloc
  | def
  | etym
  | usg
  | lbl
  | xr
  | re
model.entryPart_sequence =
  superEntry,
  hom,
  sense,
  form,
  orth,
  pron,
  hyph,
  syll,
  stress,
  gen,
  number,
  case,
  per,
  tns,
  mood,
  iType,
  gramGrp,
  pos,
  subc,
  colloc,
  def,
  etym,
  usg,
  lbl,
  xr,
  re
model.entryPart_sequenceOptional =
  superEntry?,
  hom?,
  sense?,
  form?,
  orth?,
  pron?,
  hyph?,
  syll?,
  stress?,
  gen?,
  number?,
  case?,
  per?,
  tns?,
  mood?,
  iType?,
  gramGrp?,
  pos?,
  subc?,
  colloc?,
  def?,
  etym?,
  usg?,
  lbl?,
  xr?,
  re?
model.entryPart_sequenceOptionalRepeatable =
  superEntry*,
  hom*,
  sense*,
  form*,
  orth*,
  pron*,
  hyph*,
  syll*,
  stress*,
  gen*,
  number*,
  case*,
  per*,
  tns*,
  mood*,
  iType*,
  gramGrp*,
  pos*,
  subc*,
  colloc*,
  def*,
  etym*,
  usg*,
  lbl*,
  xr*,
  re*
model.entryPart_sequenceRepeatable =
  superEntry+,
  hom+,
  sense+,
  form+,
  orth+,
  pron+,
  hyph+,
  syll+,
  stress+,
  gen+,
  number+,
  case+,
  per+,
  tns+,
  mood+,
  iType+,
  gramGrp+,
  pos+,
  subc+,
  colloc+,
  def+,
  etym+,
  usg+,
  lbl+,
  xr+,
  re+
model.entryPart.top =
  cit | dictScrap | form | gramGrp | def | etym | usg | xr | re
model.entryPart.top_sequence =
  cit, dictScrap, form, gramGrp, def, etym, usg, xr, re
model.entryPart.top_sequenceOptional =
  cit?, dictScrap?, form?, gramGrp?, def?, etym?, usg?, xr?, re?
model.entryPart.top_sequenceOptionalRepeatable =
  cit*, dictScrap*, form*, gramGrp*, def*, etym*, usg*, xr*, re*
model.entryPart.top_sequenceRepeatable =
  cit+, dictScrap+, form+, gramGrp+, def+, etym+, usg+, xr+, re+
model.global.edit = gap | addSpan | damageSpan | delSpan | space
model.global.edit_sequence = gap, addSpan, damageSpan, delSpan, space
model.global.edit_sequenceOptional =
  gap?, addSpan?, damageSpan?, delSpan?, space?
model.global.edit_sequenceOptionalRepeatable =
  gap*, addSpan*, damageSpan*, delSpan*, space*
model.global.edit_sequenceRepeatable =
  gap+, addSpan+, damageSpan+, delSpan+, space+
model.divPart =
  model.lLike
  | model.pLike
  | lg
  | sp
  | floatingText
  | model.divPart.spoken
  | graph
  | tree
  | eTree
  | forest
  | forestGrp
  | schemaSpec
model.divPart_sequence =
  model.lLike,
  model.pLike,
  lg,
  sp,
  floatingText,
  model.divPart.spoken,
  graph,
  tree,
  eTree,
  forest,
  forestGrp,
  schemaSpec
model.divPart_sequenceOptional =
  model.lLike?,
  model.pLike?,
  lg?,
  sp?,
  floatingText?,
  model.divPart.spoken?,
  graph?,
  tree?,
  eTree?,
  forest?,
  forestGrp?,
  schemaSpec?
model.divPart_sequenceOptionalRepeatable =
  model.lLike*,
  model.pLike*,
  lg*,
  sp*,
  floatingText*,
  model.divPart.spoken*,
  graph*,
  tree*,
  eTree*,
  forest*,
  forestGrp*,
  schemaSpec*
model.divPart_sequenceRepeatable =
  model.lLike+,
  model.pLike+,
  lg+,
  sp+,
  floatingText+,
  model.divPart.spoken+,
  graph+,
  tree+,
  eTree+,
  forest+,
  forestGrp+,
  schemaSpec+
model.persTraitLike =
  age | faith | langKnowledge | nationality | sex | socecStatus | trait
model.persTraitLike_sequence =
  age, faith, langKnowledge, nationality, sex, socecStatus, trait
model.persTraitLike_sequenceOptional =
  age?, faith?, langKnowledge?, nationality?, sex?, socecStatus?, trait?
model.persTraitLike_sequenceOptionalRepeatable =
  age*, faith*, langKnowledge*, nationality*, sex*, socecStatus*, trait*
model.persTraitLike_sequenceRepeatable =
  age+, faith+, langKnowledge+, nationality+, sex+, socecStatus+, trait+
model.persStateLike =
  persName
  | affiliation
  | education
  | floruit
  | occupation
  | residence
  | state
model.persStateLike_sequence =
  persName,
  affiliation,
  education,
  floruit,
  occupation,
  residence,
  state
model.persStateLike_sequenceOptional =
  persName?,
  affiliation?,
  education?,
  floruit?,
  occupation?,
  residence?,
  state?
model.persStateLike_sequenceOptionalRepeatable =
  persName*,
  affiliation*,
  education*,
  floruit*,
  occupation*,
  residence*,
  state*
model.persStateLike_sequenceRepeatable =
  persName+,
  affiliation+,
  education+,
  floruit+,
  occupation+,
  residence+,
  state+
model.persEventLike = birth | death | event
model.persEventLike_sequence = birth, death, event
model.persEventLike_sequenceOptional = birth?, death?, event?
model.persEventLike_sequenceOptionalRepeatable = birth*, death*, event*
model.persEventLike_sequenceRepeatable = birth+, death+, event+
model.personLike = org | person | personGrp
model.personLike_sequence = org, person, personGrp
model.personLike_sequenceOptional = org?, person?, personGrp?
model.personLike_sequenceOptionalRepeatable = org*, person*, personGrp*
model.personLike_sequenceRepeatable = org+, person+, personGrp+
model.personPart =
  model.persTraitLike | model.persStateLike | model.persEventLike | bibl
model.personPart_sequence =
  model.persTraitLike, model.persStateLike, model.persEventLike, bibl
model.personPart_sequenceOptional =
  model.persTraitLike?,
  model.persStateLike?,
  model.persEventLike?,
  bibl?
model.personPart_sequenceOptionalRepeatable =
  model.persTraitLike*,
  model.persStateLike*,
  model.persEventLike*,
  bibl*
model.personPart_sequenceRepeatable =
  model.persTraitLike+,
  model.persStateLike+,
  model.persEventLike+,
  bibl+
model.placeTraitLike = climate | location | population | terrain | trait
model.placeTraitLike_sequence =
  climate, location, population, terrain, trait
model.placeTraitLike_sequenceOptional =
  climate?, location?, population?, terrain?, trait?
model.placeTraitLike_sequenceOptionalRepeatable =
  climate*, location*, population*, terrain*, trait*
model.placeTraitLike_sequenceRepeatable =
  climate+, location+, population+, terrain+, trait+
model.placeNamePart =
  placeName | bloc | country | region | district | settlement | geogName
model.placeNamePart_sequence =
  placeName, bloc, country, region, district, settlement, geogName
model.placeNamePart_sequenceOptional =
  placeName?,
  bloc?,
  country?,
  region?,
  district?,
  settlement?,
  geogName?
model.placeNamePart_sequenceOptionalRepeatable =
  placeName*,
  bloc*,
  country*,
  region*,
  district*,
  settlement*,
  geogName*
model.placeNamePart_sequenceRepeatable =
  placeName+,
  bloc+,
  country+,
  region+,
  district+,
  settlement+,
  geogName+
model.placeStateLike = model.placeNamePart | state
model.placeStateLike_sequence = model.placeNamePart, state
model.placeStateLike_sequenceOptional = model.placeNamePart?, state?
model.placeStateLike_sequenceOptionalRepeatable =
  model.placeNamePart*, state*
model.placeStateLike_sequenceRepeatable = model.placeNamePart+, state+
model.placeEventLike = event
model.placeEventLike_sequence = event
model.placeEventLike_sequenceOptional = event?
model.placeEventLike_sequenceOptionalRepeatable = event*
model.placeEventLike_sequenceRepeatable = event+
model.publicationStmtPart =
  distributor
  | authority
  | idno
  | availability
  | address
  | date
  | publisher
  | pubPlace
model.publicationStmtPart_sequence =
  distributor,
  authority,
  idno,
  availability,
  address,
  date,
  publisher,
  pubPlace
model.publicationStmtPart_sequenceOptional =
  distributor?,
  authority?,
  idno?,
  availability?,
  address?,
  date?,
  publisher?,
  pubPlace?
model.publicationStmtPart_sequenceOptionalRepeatable =
  distributor*,
  authority*,
  idno*,
  availability*,
  address*,
  date*,
  publisher*,
  pubPlace*
model.publicationStmtPart_sequenceRepeatable =
  distributor+,
  authority+,
  idno+,
  availability+,
  address+,
  date+,
  publisher+,
  pubPlace+
model.glossLike = desc | gloss | equiv | altIdent
model.glossLike_sequence = desc, gloss, equiv, altIdent
model.glossLike_sequenceOptional = desc?, gloss?, equiv?, altIdent?
model.glossLike_sequenceOptionalRepeatable =
  desc*, gloss*, equiv*, altIdent*
model.glossLike_sequenceRepeatable = desc+, gloss+, equiv+, altIdent+
model.quoteLike = quote | cit
model.quoteLike_sequence = quote, cit
model.quoteLike_sequenceOptional = quote?, cit?
model.quoteLike_sequenceOptionalRepeatable = quote*, cit*
model.quoteLike_sequenceRepeatable = quote+, cit+
model.qLike = model.quoteLike | said | q
model.qLike_sequence = model.quoteLike, said, q
model.qLike_sequenceOptional = model.quoteLike?, said?, q?
model.qLike_sequenceOptionalRepeatable = model.quoteLike*, said*, q*
model.qLike_sequenceRepeatable = model.quoteLike+, said+, q+
model.respLike =
  sponsor | funder | principal | author | editor | respStmt
model.respLike_sequence =
  sponsor, funder, principal, author, editor, respStmt
model.respLike_sequenceOptional =
  sponsor?, funder?, principal?, author?, editor?, respStmt?
model.respLike_sequenceOptionalRepeatable =
  sponsor*, funder*, principal*, author*, editor*, respStmt*
model.respLike_sequenceRepeatable =
  sponsor+, funder+, principal+, author+, editor+, respStmt+
model.divWrapper =
  meeting
  | byline
  | dateline
  | argument
  | epigraph
  | docAuthor
  | docDate
model.divWrapper_sequence =
  meeting, byline, dateline, argument, epigraph, docAuthor, docDate
model.divWrapper_sequenceOptional =
  meeting?,
  byline?,
  dateline?,
  argument?,
  epigraph?,
  docAuthor?,
  docDate?
model.divWrapper_sequenceOptionalRepeatable =
  meeting*,
  byline*,
  dateline*,
  argument*,
  epigraph*,
  docAuthor*,
  docDate*
model.divWrapper_sequenceRepeatable =
  meeting+,
  byline+,
  dateline+,
  argument+,
  epigraph+,
  docAuthor+,
  docDate+
model.divTopPart = model.headLike | opener | salute
model.divTopPart_sequence = model.headLike, opener, salute
model.divTopPart_sequenceOptional = model.headLike?, opener?, salute?
model.divTopPart_sequenceOptionalRepeatable =
  model.headLike*, opener*, salute*
model.divTopPart_sequenceRepeatable = model.headLike+, opener+, salute+
model.divTop = model.divWrapper | model.divTopPart
model.divTop_sequence = model.divWrapper, model.divTopPart
model.divTop_sequenceOptional = model.divWrapper?, model.divTopPart?
model.divTop_sequenceOptionalRepeatable =
  model.divWrapper*, model.divTopPart*
model.divTop_sequenceRepeatable = model.divWrapper+, model.divTopPart+
model.frontPart.drama =
  set | prologue | epilogue | performance | castList
model.frontPart.drama_sequence =
  set, prologue, epilogue, performance, castList
model.frontPart.drama_sequenceOptional =
  set?, prologue?, epilogue?, performance?, castList?
model.frontPart.drama_sequenceOptionalRepeatable =
  set*, prologue*, epilogue*, performance*, castList*
model.frontPart.drama_sequenceRepeatable =
  set+, prologue+, epilogue+, performance+, castList+
model.pLike.front =
  head
  | byline
  | argument
  | epigraph
  | docTitle
  | titlePart
  | docAuthor
  | docEdition
  | docImprint
  | docDate
model.pLike.front_sequence =
  head,
  byline,
  argument,
  epigraph,
  docTitle,
  titlePart,
  docAuthor,
  docEdition,
  docImprint,
  docDate
model.pLike.front_sequenceOptional =
  head?,
  byline?,
  argument?,
  epigraph?,
  docTitle?,
  titlePart?,
  docAuthor?,
  docEdition?,
  docImprint?,
  docDate?
model.pLike.front_sequenceOptionalRepeatable =
  head*,
  byline*,
  argument*,
  epigraph*,
  docTitle*,
  titlePart*,
  docAuthor*,
  docEdition*,
  docImprint*,
  docDate*
model.pLike.front_sequenceRepeatable =
  head+,
  byline+,
  argument+,
  epigraph+,
  docTitle+,
  titlePart+,
  docAuthor+,
  docEdition+,
  docImprint+,
  docDate+
model.divBottomPart = trailer | closer | signed | postscript
model.divBottomPart_sequence = trailer, closer, signed, postscript
model.divBottomPart_sequenceOptional =
  trailer?, closer?, signed?, postscript?
model.divBottomPart_sequenceOptionalRepeatable =
  trailer*, closer*, signed*, postscript*
model.divBottomPart_sequenceRepeatable =
  trailer+, closer+, signed+, postscript+
model.divBottom = model.divWrapper | model.divBottomPart
model.divBottom_sequence = model.divWrapper, model.divBottomPart
model.divBottom_sequenceOptional =
  model.divWrapper?, model.divBottomPart?
model.divBottom_sequenceOptionalRepeatable =
  model.divWrapper*, model.divBottomPart*
model.divBottom_sequenceRepeatable =
  model.divWrapper+, model.divBottomPart+
model.titlepagePart =
  graphic
  | binaryObject
  | byline
  | epigraph
  | docTitle
  | titlePart
  | docAuthor
  | imprimatur
  | docEdition
  | docImprint
  | docDate
  | figure
model.titlepagePart_sequence =
  graphic,
  binaryObject,
  byline,
  epigraph,
  docTitle,
  titlePart,
  docAuthor,
  imprimatur,
  docEdition,
  docImprint,
  docDate,
  figure
model.titlepagePart_sequenceOptional =
  graphic?,
  binaryObject?,
  byline?,
  epigraph?,
  docTitle?,
  titlePart?,
  docAuthor?,
  imprimatur?,
  docEdition?,
  docImprint?,
  docDate?,
  figure?
model.titlepagePart_sequenceOptionalRepeatable =
  graphic*,
  binaryObject*,
  byline*,
  epigraph*,
  docTitle*,
  titlePart*,
  docAuthor*,
  imprimatur*,
  docEdition*,
  docImprint*,
  docDate*,
  figure*
model.titlepagePart_sequenceRepeatable =
  graphic+,
  binaryObject+,
  byline+,
  epigraph+,
  docTitle+,
  titlePart+,
  docAuthor+,
  imprimatur+,
  docEdition+,
  docImprint+,
  docDate+,
  figure+
model.msItemPart =
  model.quoteLike
  | model.respLike
  | title
  | bibl
  | listBibl
  | colophon
  | explicit
  | filiation
  | finalRubric
  | incipit
  | msItem
  | msItemStruct
  | rubric
  | textLang
  | decoNote
model.msItemPart_sequence =
  model.quoteLike,
  model.respLike,
  title,
  bibl,
  listBibl,
  colophon,
  explicit,
  filiation,
  finalRubric,
  incipit,
  msItem,
  msItemStruct,
  rubric,
  textLang,
  decoNote
model.msItemPart_sequenceOptional =
  model.quoteLike?,
  model.respLike?,
  title?,
  bibl?,
  listBibl?,
  colophon?,
  explicit?,
  filiation?,
  finalRubric?,
  incipit?,
  msItem?,
  msItemStruct?,
  rubric?,
  textLang?,
  decoNote?
model.msItemPart_sequenceOptionalRepeatable =
  model.quoteLike*,
  model.respLike*,
  title*,
  bibl*,
  listBibl*,
  colophon*,
  explicit*,
  filiation*,
  finalRubric*,
  incipit*,
  msItem*,
  msItemStruct*,
  rubric*,
  textLang*,
  decoNote*
model.msItemPart_sequenceRepeatable =
  model.quoteLike+,
  model.respLike+,
  title+,
  bibl+,
  listBibl+,
  colophon+,
  explicit+,
  filiation+,
  finalRubric+,
  incipit+,
  msItem+,
  msItemStruct+,
  rubric+,
  textLang+,
  decoNote+
model.choicePart =
  sic | corr | reg | orig | unclear | abbr | expan | ex | am | seg
model.choicePart_sequence =
  sic, corr, reg, orig, unclear, abbr, expan, ex, am, seg
model.choicePart_sequenceOptional =
  sic?, corr?, reg?, orig?, unclear?, abbr?, expan?, ex?, am?, seg?
model.choicePart_sequenceOptionalRepeatable =
  sic*, corr*, reg*, orig*, unclear*, abbr*, expan*, ex*, am*, seg*
model.choicePart_sequenceRepeatable =
  sic+, corr+, reg+, orig+, unclear+, abbr+, expan+, ex+, am+, seg+
model.imprintPart = distributor | publisher | biblScope | pubPlace
model.imprintPart_sequence = distributor, publisher, biblScope, pubPlace
model.imprintPart_sequenceOptional =
  distributor?, publisher?, biblScope?, pubPlace?
model.imprintPart_sequenceOptionalRepeatable =
  distributor*, publisher*, biblScope*, pubPlace*
model.imprintPart_sequenceRepeatable =
  distributor+, publisher+, biblScope+, pubPlace+
model.catDescPart = textDesc
model.catDescPart_sequence = textDesc
model.catDescPart_sequenceOptional = textDesc?
model.catDescPart_sequenceOptionalRepeatable = textDesc*
model.catDescPart_sequenceRepeatable = textDesc+
model.settingPart = locale | activity
model.settingPart_sequence = locale, activity
model.settingPart_sequenceOptional = locale?, activity?
model.settingPart_sequenceOptionalRepeatable = locale*, activity*
model.settingPart_sequenceRepeatable = locale+, activity+
model.textDescPart =
  channel
  | constitution
  | derivation
  | domain
  | factuality
  | interaction
  | preparedness
model.textDescPart_sequence =
  channel,
  constitution,
  derivation,
  domain,
  factuality,
  interaction,
  preparedness
model.textDescPart_sequenceOptional =
  channel?,
  constitution?,
  derivation?,
  domain?,
  factuality?,
  interaction?,
  preparedness?
model.textDescPart_sequenceOptionalRepeatable =
  channel*,
  constitution*,
  derivation*,
  domain*,
  factuality*,
  interaction*,
  preparedness*
model.textDescPart_sequenceRepeatable =
  channel+,
  constitution+,
  derivation+,
  domain+,
  factuality+,
  interaction+,
  preparedness+
model.castItemPart = role | roleDesc | actor
model.castItemPart_sequence = role, roleDesc, actor
model.castItemPart_sequenceOptional = role?, roleDesc?, actor?
model.castItemPart_sequenceOptionalRepeatable = role*, roleDesc*, actor*
model.castItemPart_sequenceRepeatable = role+, roleDesc+, actor+
model.physDescPart =
  objectDesc
  | handDesc
  | typeDesc
  | musicNotation
  | decoDesc
  | additions
  | bindingDesc
  | sealDesc
  | accMat
model.physDescPart_sequence =
  objectDesc,
  handDesc,
  typeDesc,
  musicNotation,
  decoDesc,
  additions,
  bindingDesc,
  sealDesc,
  accMat
model.physDescPart_sequenceOptional =
  objectDesc?,
  handDesc?,
  typeDesc?,
  musicNotation?,
  decoDesc?,
  additions?,
  bindingDesc?,
  sealDesc?,
  accMat?
model.physDescPart_sequenceOptionalRepeatable =
  objectDesc*,
  handDesc*,
  typeDesc*,
  musicNotation*,
  decoDesc*,
  additions*,
  bindingDesc*,
  sealDesc*,
  accMat*
model.physDescPart_sequenceRepeatable =
  objectDesc+,
  handDesc+,
  typeDesc+,
  musicNotation+,
  decoDesc+,
  additions+,
  bindingDesc+,
  sealDesc+,
  accMat+
model.addressLike = email | address | affiliation
model.addressLike_sequence = email, address, affiliation
model.addressLike_sequenceOptional = email?, address?, affiliation?
model.addressLike_sequenceOptionalRepeatable =
  email*, address*, affiliation*
model.addressLike_sequenceRepeatable = email+, address+, affiliation+
model.nameLike =
  model.nameLike.agent
  | model.offsetLike
  | model.placeStateLike
  | rs
  | lang
  | model.persNamePart
model.nameLike_sequence =
  model.nameLike.agent,
  model.offsetLike,
  model.placeStateLike,
  rs,
  lang,
  model.persNamePart
model.nameLike_sequenceOptional =
  model.nameLike.agent?,
  model.offsetLike?,
  model.placeStateLike?,
  rs?,
  lang?,
  model.persNamePart?
model.nameLike_sequenceOptionalRepeatable =
  model.nameLike.agent*,
  model.offsetLike*,
  model.placeStateLike*,
  rs*,
  lang*,
  model.persNamePart*
model.nameLike_sequenceRepeatable =
  model.nameLike.agent+,
  model.offsetLike+,
  model.placeStateLike+,
  rs+,
  lang+,
  model.persNamePart+
model.global =
  model.global.meta
  | model.milestoneLike
  | model.noteLike
  | model.global.edit
  | model.global.spoken
model.global_sequence =
  model.global.meta,
  model.milestoneLike,
  model.noteLike,
  model.global.edit,
  model.global.spoken
model.global_sequenceOptional =
  model.global.meta?,
  model.milestoneLike?,
  model.noteLike?,
  model.global.edit?,
  model.global.spoken?
model.global_sequenceOptionalRepeatable =
  model.global.meta*,
  model.milestoneLike*,
  model.noteLike*,
  model.global.edit*,
  model.global.spoken*
model.global_sequenceRepeatable =
  model.global.meta+,
  model.milestoneLike+,
  model.noteLike+,
  model.global.edit+,
  model.global.spoken+
model.featureVal = model.featureVal.complex | model.featureVal.single
model.featureVal_sequence =
  model.featureVal.complex, model.featureVal.single
model.featureVal_sequenceOptional =
  model.featureVal.complex?, model.featureVal.single?
model.featureVal_sequenceOptionalRepeatable =
  model.featureVal.complex*, model.featureVal.single*
model.featureVal_sequenceRepeatable =
  model.featureVal.complex+, model.featureVal.single+
model.biblPart =
  model.respLike
  | model.imprintPart
  | edition
  | extent
  | idno
  | series
  | meeting
  | relatedItem
  | msIdentifier
model.biblPart_sequence =
  model.respLike,
  model.imprintPart,
  edition,
  extent,
  idno,
  series,
  meeting,
  relatedItem,
  msIdentifier
model.biblPart_sequenceOptional =
  model.respLike?,
  model.imprintPart?,
  edition?,
  extent?,
  idno?,
  series?,
  meeting?,
  relatedItem?,
  msIdentifier?
model.biblPart_sequenceOptionalRepeatable =
  model.respLike*,
  model.imprintPart*,
  edition*,
  extent*,
  idno*,
  series*,
  meeting*,
  relatedItem*,
  msIdentifier*
model.biblPart_sequenceRepeatable =
  model.respLike+,
  model.imprintPart+,
  edition+,
  extent+,
  idno+,
  series+,
  meeting+,
  relatedItem+,
  msIdentifier+
model.frontPart = model.frontPart.drama | divGen | titlePage
model.frontPart_sequence = model.frontPart.drama, divGen, titlePage
model.frontPart_sequenceOptional =
  model.frontPart.drama?, divGen?, titlePage?
model.frontPart_sequenceOptionalRepeatable =
  model.frontPart.drama*, divGen*, titlePage*
model.frontPart_sequenceRepeatable =
  model.frontPart.drama+, divGen+, titlePage+
model.addrPart = model.nameLike | addrLine | street | postCode | postBox
model.addrPart_sequence =
  model.nameLike, addrLine, street, postCode, postBox
model.addrPart_sequenceOptional =
  model.nameLike?, addrLine?, street?, postCode?, postBox?
model.addrPart_sequenceOptionalRepeatable =
  model.nameLike*, addrLine*, street*, postCode*, postBox*
model.addrPart_sequenceRepeatable =
  model.nameLike+, addrLine+, street+, postCode+, postBox+
model.pPart.data =
  model.dateLike
  | model.measureLike
  | model.addressLike
  | model.nameLike
model.pPart.data_sequence =
  model.dateLike, model.measureLike, model.addressLike, model.nameLike
model.pPart.data_sequenceOptional =
  model.dateLike?,
  model.measureLike?,
  model.addressLike?,
  model.nameLike?
model.pPart.data_sequenceOptionalRepeatable =
  model.dateLike*,
  model.measureLike*,
  model.addressLike*,
  model.nameLike*
model.pPart.data_sequenceRepeatable =
  model.dateLike+,
  model.measureLike+,
  model.addressLike+,
  model.nameLike+
model.inter =
  model.egLike
  | model.oddDecl
  | model.oddRef
  | model.biblLike
  | model.labelLike
  | model.listLike
  | model.stageLike
  | model.qLike
  | castList
  | table
  | figure
model.inter_sequence =
  model.egLike,
  model.oddDecl,
  model.oddRef,
  model.biblLike,
  model.labelLike,
  model.listLike,
  model.stageLike,
  model.qLike,
  castList,
  table,
  figure
model.inter_sequenceOptional =
  model.egLike?,
  model.oddDecl?,
  model.oddRef?,
  model.biblLike?,
  model.labelLike?,
  model.listLike?,
  model.stageLike?,
  model.qLike?,
  castList?,
  table?,
  figure?
model.inter_sequenceOptionalRepeatable =
  model.egLike*,
  model.oddDecl*,
  model.oddRef*,
  model.biblLike*,
  model.labelLike*,
  model.listLike*,
  model.stageLike*,
  model.qLike*,
  castList*,
  table*,
  figure*
model.inter_sequenceRepeatable =
  model.egLike+,
  model.oddDecl+,
  model.oddRef+,
  model.biblLike+,
  model.labelLike+,
  model.listLike+,
  model.stageLike+,
  model.qLike+,
  castList+,
  table+,
  figure+
model.common = model.divPart | model.inter | model.entryLike
model.common_sequence = model.divPart, model.inter, model.entryLike
model.common_sequenceOptional =
  model.divPart?, model.inter?, model.entryLike?
model.common_sequenceOptionalRepeatable =
  model.divPart*, model.inter*, model.entryLike*
model.common_sequenceRepeatable =
  model.divPart+, model.inter+, model.entryLike+
model.phrase =
  model.segLike
  | model.highlighted
  | model.graphicLike
  | model.pPart.msdesc
  | model.pPart.edit
  | model.ptrLike
  | model.lPart
  | model.phrase.xml
  | model.specDescLike
  | model.pPart.data
  | model.ptrLike.form
model.phrase_sequence =
  model.segLike,
  model.highlighted,
  model.graphicLike,
  model.pPart.msdesc,
  model.pPart.edit,
  model.ptrLike,
  model.lPart,
  model.phrase.xml,
  model.specDescLike,
  model.pPart.data,
  model.ptrLike.form
model.phrase_sequenceOptional =
  model.segLike?,
  model.highlighted?,
  model.graphicLike?,
  model.pPart.msdesc?,
  model.pPart.edit?,
  model.ptrLike?,
  model.lPart?,
  model.phrase.xml?,
  model.specDescLike?,
  model.pPart.data?,
  model.ptrLike.form?
model.phrase_sequenceOptionalRepeatable =
  model.segLike*,
  model.highlighted*,
  model.graphicLike*,
  model.pPart.msdesc*,
  model.pPart.edit*,
  model.ptrLike*,
  model.lPart*,
  model.phrase.xml*,
  model.specDescLike*,
  model.pPart.data*,
  model.ptrLike.form*
model.phrase_sequenceRepeatable =
  model.segLike+,
  model.highlighted+,
  model.graphicLike+,
  model.pPart.msdesc+,
  model.pPart.edit+,
  model.ptrLike+,
  model.lPart+,
  model.phrase.xml+,
  model.specDescLike+,
  model.pPart.data+,
  model.ptrLike.form+
model.limitedPhrase =
  model.emphLike
  | model.pPart.msdesc
  | model.pPart.editorial
  | model.ptrLike
  | model.phrase.xml
  | model.pPart.data
model.limitedPhrase_sequence =
  model.emphLike,
  model.pPart.msdesc,
  model.pPart.editorial,
  model.ptrLike,
  model.phrase.xml,
  model.pPart.data
model.limitedPhrase_sequenceOptional =
  model.emphLike?,
  model.pPart.msdesc?,
  model.pPart.editorial?,
  model.ptrLike?,
  model.phrase.xml?,
  model.pPart.data?
model.limitedPhrase_sequenceOptionalRepeatable =
  model.emphLike*,
  model.pPart.msdesc*,
  model.pPart.editorial*,
  model.ptrLike*,
  model.phrase.xml*,
  model.pPart.data*
model.limitedPhrase_sequenceRepeatable =
  model.emphLike+,
  model.pPart.msdesc+,
  model.pPart.editorial+,
  model.ptrLike+,
  model.phrase.xml+,
  model.pPart.data+
model.divLike = \div
model.divLike_sequence = \div
model.divLike_sequenceOptional = \div?
model.divLike_sequenceOptionalRepeatable = \div*
model.divLike_sequenceRepeatable = \div+
model.divGenLike = divGen
model.divGenLike_sequence = divGen
model.divGenLike_sequenceOptional = divGen?
model.divGenLike_sequenceOptionalRepeatable = divGen*
model.divGenLike_sequenceRepeatable = divGen+
model.div1Like = div1
model.div1Like_sequence = div1
model.div1Like_sequenceOptional = div1?
model.div1Like_sequenceOptionalRepeatable = div1*
model.div1Like_sequenceRepeatable = div1+
model.div2Like = div2
model.div2Like_sequence = div2
model.div2Like_sequenceOptional = div2?
model.div2Like_sequenceOptionalRepeatable = div2*
model.div2Like_sequenceRepeatable = div2+
model.div3Like = div3
model.div3Like_sequence = div3
model.div3Like_sequenceOptional = div3?
model.div3Like_sequenceOptionalRepeatable = div3*
model.div3Like_sequenceRepeatable = div3+
model.div4Like = div4
model.div4Like_sequence = div4
model.div4Like_sequenceOptional = div4?
model.div4Like_sequenceOptionalRepeatable = div4*
model.div4Like_sequenceRepeatable = div4+
model.div5Like = div5
model.div5Like_sequence = div5
model.div5Like_sequenceOptional = div5?
model.div5Like_sequenceOptionalRepeatable = div5*
model.div5Like_sequenceRepeatable = div5+
model.div6Like = div6
model.div6Like_sequence = div6
model.div6Like_sequenceOptional = div6?
model.div6Like_sequenceOptionalRepeatable = div6*
model.div6Like_sequenceRepeatable = div6+
model.div7Like = div7
model.div7Like_sequence = div7
model.div7Like_sequenceOptional = div7?
model.div7Like_sequenceOptionalRepeatable = div7*
model.div7Like_sequenceRepeatable = div7+
model.resourceLike = facsimile | fsdDecl
model.resourceLike_sequence = facsimile, fsdDecl
model.resourceLike_sequenceOptional = facsimile?, fsdDecl?
model.resourceLike_sequenceOptionalRepeatable = facsimile*, fsdDecl*
model.resourceLike_sequenceRepeatable = facsimile+, fsdDecl+
model.orgStateLike = state
model.orgStateLike_sequence = state
model.orgStateLike_sequenceOptional = state?
model.orgStateLike_sequenceOptionalRepeatable = state*
model.orgStateLike_sequenceRepeatable = state+
att.personal.attributes =
  att.naming.attributes,
  att.personal.attribute.full,
  att.personal.attribute.sort,
  empty
att.personal.attribute.full =
  ## indicates whether the name component is given in full, as an
  ## abbreviation or simply as an initial.
  [ a:defaultValue = "yes" ]
  attribute full {
    ## the name component is spelled out in full.
    "yes" | ## (abbreviated) the name component is given in an
      ## abbreviated form.
      "abb" | ## (initial letter) the name component is indicated only by
      ## one initial.
      "init"
  }?
att.personal.attribute.sort =
  ## specifies the sort order of the name component in relation
  ## to others within the personal name.
  attribute sort { xsd:nonNegativeInteger }?
model.placeLike = place
model.placeLike_sequence = place
model.placeLike_sequenceOptional = place?
model.placeLike_sequenceOptionalRepeatable = place*
model.placeLike_sequenceRepeatable = place+
# 2. elements

# 3. macros
macro.paraContent =
  (text | model.gLike | model.phrase | model.inter | model.global)*
macro.limitedContent = (text | model.limitedPhrase | model.inter)*
macro.phraseSeq = (text | model.gLike | model.phrase | model.global)*
macro.phraseSeq.limited = (text | model.limitedPhrase | model.global)*
macro.specialPara =
  (text
   | model.gLike
   | model.phrase
   | model.inter
   | model.divPart
   | model.global)*
macro.xtext = (text | model.gLike)*
data.certainty = "high" | "medium" | "low" | "unknown"
data.probability = xsd:double { minInclusive = "0" maxInclusive = "1" }
data.numeric = xsd:double | xsd:decimal
data.count = xsd:nonNegativeInteger
data.temporal.w3c =
  xsd:date
  | xsd:gYear
  | xsd:gMonth
  | xsd:gDay
  | xsd:gYearMonth
  | xsd:gMonthDay
  | xsd:time
  | xsd:dateTime
data.duration.w3c = xsd:duration
data.truthValue = xsd:boolean
data.xTruthValue = xsd:boolean | "unknown" | "inapplicable"
data.language = xsd:language
data.sex = "0" | "1" | "2" | "9"
data.namespace = xsd:anyURI
data.outputMeasurement =
  xsd:token {
    pattern =
      "[\-+]?\d+(\.\d+)?(%|cm|mm|in|pt|pc|px|em|ex|gd|rem|vw|vh|vm)"
  }
data.pattern = xsd:token
data.pointer = xsd:anyURI
data.key = xsd:string
data.word = xsd:token { pattern = "(\p{L}|\p{N}|\p{P}|\p{S})+" }
data.code = xsd:anyURI
data.name = xsd:Name
data.enumerated = data.name
data.temporal.iso =
  xsd:date
  | xsd:gYear
  | xsd:gMonth
  | xsd:gDay
  | xsd:gYearMonth
  | xsd:gMonthDay
  | xsd:time
  | xsd:dateTime
  | xsd:token { pattern = "[0-9.,DHMPRSTWYZ/:+\-]+" }
data.duration.iso = xsd:token { pattern = "[0-9.,DHMPRSTWYZ/:+\-]+" }
macro.anyXML =
  element * {
    (attribute * - (xml:id | xml:lang) { text }
     | text
     | macro.anyXML)*
  }
macro.schemaPattern = macro.anyXML
