TEI ODD Customization for writing TEI ODD Customizations

Table of contents

1 Introduction

The primary intent of this schema is to help you and your XML editor write a customization ODD; it in no way pretends to be the last arbiter of what is or is not allowed in an ODD file in general, nor even in a TEI customization ODD. Thus it makes lots of assumptions (read: enforces lots of constraints) that probably make sense when writing a customization schema, but may not in your particular case. Thus this schema may well flag as invalid things that are perfectly reasonable to have in your ODD.

1.1 Background

The TEI ODD language was designed both for the creation and customization of the TEI Guidelines, and also for the creation (and perhaps customization) of other, non-TEI, markup languages. Thus the TEI ODD langauge is, by default, much more flexible than needed for writing TEI customization ODDs. For example, the Guidelines define the key attribute of the moduleRef element as any XML name (without a namespace prefix, i.e. an xsd:NCName), even though the only possible values when used to customize TEI are the 20 or so module names defined in the TEI Guidelines.

Of course, when using RomaNote: The canonical installation of Roma is available at the TEI-C site, but it is an open source tool available on GitHub, which may be installed on any GNU/Linux system., a web-based front-end editor for ODD files, this is not a problem. The web form gives the user only the appropriate TEI values to choose from. However, when editing ODD files by hand, and thus when teaching TEI customization, it is much more efficient to catch errors like mis-spelled module names before handing the ODD file to an ODD processor (e.g. the aforementioned Roma or teitorelaxng).

Thus the Women Writers Project has developed this TEI customization for the purpose of having a schema to use that deliberately makes it easier to write a TEI customization, at the expense of the complete flexibility ODD provides.

This schema permits a valid document to use a variety of elements as the root element. This is for debugging and file maintenance convenience. As always, any conforming TEI ODD must have either TEI or <teiCorpus> as the root element.

REMINDER: This language is not canonical — it is intended to be helpful, not definitive

2 Technical Information

Of course the lists of elements, classes, and on rare occasion even modules change as TEI P5 matures. Rather than requiring that this customization be manually edited with each release of TEI P5, the ODD for this customization is itself generated from a source file. To generate this customization, an XSLT stylesheet reads in the source to TEI P5, and from it generates the lists of elements, classes, and modules needed. The output of the stylesheet is the ODD file for this customization.

We call this TEI language the TEI ODD Customization for writing TEI ODD Customizations language (or TOCTOC for short). It is instantited in the TEI exemplar tei_customization, which differs from tei_odds Note: Available in the main TEI P5 git repository at GitHub in a variety of ways, including:

If editing an XML document associated with this schema in oXygen, you will need to uncheck the Check ID/IDREF preference box. It can be found in Options > Preferences > XML > XML Parser > RELAX NG.

3 Schema Specification

Schema tei_customization: Elements

<abbr>

<abbr> (abbreviation) contains an abbreviation of any sort. [3.5.5. Abbreviations and Their Expansions]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.typed (type, @subtype)
typeallows the encoder to classify the abbreviation according to some convenient typology.
Derived fromatt.typed
Status Optional
Datatype teidata.enumerated
Sample values include:
suspension
the abbreviation provides the first letter(s) of the word or phrase, omitting the remainder.
contraction
the abbreviation omits some letter(s) in the middle.
brevigraph
the abbreviation comprises a special symbol or mark.
superscription
the abbreviation includes writing above the line.
acronym
the abbreviation comprises the initial letters of the words of a phrase.
title
the abbreviation is for a title of address (Dr, Ms, Mr, …)
organization
the abbreviation is for the name of an organization.
geographic
the abbreviation is for a geographic name.
Note

The type attribute is provided for the sake of those who wish to classify abbreviations at their point of occurrence; this may be useful in some circumstances, though usually the same abbreviation will have the same type in all occurrences. As the sample values make clear, abbreviations may be classified by the method used to construct them, the method of writing them, or the referent of the term abbreviated; the typology used is up to the encoder and should be carefully planned to meet the needs of the expected use. For a typology of Middle English abbreviations, see 6.2.

Member of
Contained by
May contain
Note

If abbreviations are expanded silently, this practice should be documented in the <editorialDecl>, either with a <normalization> element or a p.

Example
<choice>
 <expan>North Atlantic Treaty Organization</expan>
 <abbr cert="low">NorATO</abbr>
 <abbr cert="high">NATO</abbr>
 <abbr cert="highxml:lang="fr">OTAN</abbr>
</choice>
Example
<choice>
 <abbr>SPQR</abbr>
 <expan>senatus populusque romanorum</expan>
</choice>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element abbr
{
   cust_att.global.attributes,
   cust_att.typed.attribute.subtype,
   attribute type { teidata.enumerated }?,
   cust_macro.phraseSeq
}

<abstract>

<abstract> contains a summary or formal abstract prefixed to an existing source document by the encoder. [2.4.4. Abstracts]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Contained by
May contain
core: list p
figures: table
Note

This element is intended only for cases where no abstract is available in the original source. Any abstract already present in the source document should be encoded as a div within the front, as it should for a born-digital document.

Example
<profileDesc>
 <abstract resp="#LB">
  <p>Good database design involves the acquisition and deployment of
     skills which have a wider relevance to the educational process. From
     a set of more or less instinctive rules of thumb a formal discipline
     or "methodology" of database design has evolved. Applying that
     methodology can be of great benefit to a very wide range of academic
     subjects: it requires fundamental skills of abstraction and
     generalisation and it provides a simple mechanism whereby complex
     ideas and information structures can be represented and manipulated,
     even without the use of a computer. </p>
 </abstract>
</profileDesc>
Content model
<content>
 <alternate minOccurs="1"
  maxOccurs="unbounded">

  <classRef key="model.pLike"/>
  <classRef key="model.listLike"/>
 </alternate>
</content>
Schema Declaration
element abstract
{
   cust_att.global.attributes,
   ( cust_model.pLike | cust_model.listLike )+
}

<address>

<address> contains a postal address, for example of a publisher, an organization, or an individual. [3.5.2. Addresses 2.2.4. Publication, Distribution, Licensing, etc. 3.11.2.4. Imprint, Size of a Document, and Reprint Information]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
May contain
Note

This element should be used for postal addresses only. Within it, the generic element addrLine may be used as an alternative to any of the more specialized elements available from the model.addrPart class, such as street, postCode etc.

Example

Using just the elements defined by the core module, an address could be represented as follows:

<address>
 <street>via Marsala 24</street>
 <postCode>40126</postCode>
 <name>Bologna</name>
 <name>Italy</name>
</address>
Example

When a schema includes the names and dates module more specific elements such as country or settlement would be preferable over generic name:

<address>
 <street>via Marsala 24</street>
 <postCode>40126</postCode>
 <settlement>Bologna</settlement>
 <country>Italy</country>
</address>
Example
<address>
 <addrLine>Computing Center, MC 135</addrLine>
 <addrLine>P.O. Box 6998</addrLine>
 <addrLine>Chicago, IL 60680</addrLine>
 <addrLine>USA</addrLine>
</address>
Example
<address>
 <country key="FR"/>
 <settlement type="city">Lyon</settlement>
 <postCode>69002</postCode>
 <district type="arrondissement">IIème</district>
 <district type="quartier">Perrache</district>
 <street>
  <num>30</num>, Cours de Verdun</street>
</address>
Content model
<content>
 <sequence>
  <classRef key="model.global"
   minOccurs="0maxOccurs="unbounded"/>

  <sequence minOccurs="1"
   maxOccurs="unbounded">

   <classRef key="model.addrPart"/>
   <classRef key="model.global"
    minOccurs="0maxOccurs="unbounded"/>

  </sequence>
 </sequence>
</content>
Schema Declaration
element address
{
   cust_att.global.attributes,
   ( cust_model.global*, ( cust_model.addrPart, cust_model.global* )+ )
}

<addrLine>

<addrLine> (address line) contains one line of a postal address. [3.5.2. Addresses 2.2.4. Publication, Distribution, Licensing, etc. 3.11.2.4. Imprint, Size of a Document, and Reprint Information]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
core: address
May contain
Note

Addresses may be encoded either as a sequence of lines, or using any sequence of component elements from the model.addrPart class. Other non-postal forms of address, such as telephone numbers or email, should not be included within an address element directly but may be wrapped within an addrLine if they form part of the printed address in some source text.

Example
<address>
 <addrLine>Computing Center, MC 135</addrLine>
 <addrLine>P.O. Box 6998</addrLine>
 <addrLine>Chicago, IL</addrLine>
 <addrLine>60680 USA</addrLine>
</address>
Example
<addrLine>
 <ref target="tel:+1-201-555-0123">(201) 555 0123</ref>
</addrLine>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element addrLine { cust_att.global.attributes, cust_macro.phraseSeq }

<alternate>

<alternate> indicates that the constructs referenced by its children form an alternation [22.5.1. Defining Content Models]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.repeatable (@minOccurs, @maxOccurs)
Member of
Contained by
May contain
Example
<content>
 <alternate>
  <elementRef key="name"/>
  <elementRef key="persName"/>
 </alternate>
</content>

This example content model permits either a name or a persName.

Schematron

<sch:assert test="count(*)>1">The alternate element must have at least two child elements</sch:assert>
Content model
<content>
 <classRef key="model.contentPart"
  maxOccurs="unbounded"/>

</content>
Schema Declaration
element alternate
{
   cust_att.global.attributes,
   cust_att.repeatable.attributes,
   cust_model.contentPart+
}

<altIdent>

<altIdent> (alternate identifier) supplies the recommended XML name for an element, class, attribute, etc. in some language. [3.3.4. Terms, Glosses, Equivalents, and Descriptions 22.4.1. Description of Components]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.typed (@type, @subtype)
Member of
Contained by
May containCharacter data only
Note

All documentation elements in ODD have a canonical name, supplied as the value for their ident attribute. The altIdent element is used to supply an alternative name for the corresponding XML object, perhaps in a different language.

Example
<altIdent xml:lang="fr">balisageDoc</altIdent>
Schematron

<sch:report test="if ( parent::taxonomy | parent::valItem ) then false() else contains( .,':')"> The content of <altIdent> should be an XML Name (w/o a namespace prefix),
unless a child of <valItem> (and even then, it's not a bad idea :-)</sch:report>
Content model
<content>
 <textNode/>
</content>
Schema Declaration
element altIdent
{
   cust_att.global.attributes,
   cust_att.typed.attributes,
   text
}

<anyElement>

<anyElement> indicates the presence of any elements in a content model [22. Documentation Elements]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.repeatable (@minOccurs, @maxOccurs)
requiresupplies a list of namespaces to one of which the permitted elements must belong.
Status Optional
Datatype 1–∞ occurrences of teidata.namespace separated by whitespace
exceptsupplies a list of namespaces or prefixed element names which are not permitted.
Status Optional
Datatype 1–∞ occurrences of teidata.namespaceOrName separated by whitespace
Note

When RELAX NG DTD Compatibility Mode is turned on, validation requires that any elements which may take an xml:id be excluded from the content of anyName name classes. For normal TEI purposes, this includes anything in the TEI namespace and the egXML element. Default elements and namespaces to be excluded are set on the defaultExceptions attribute of the schemaSpec. except may be used when the exceptions need to be locally specified. Element prefixes must be declared using a namespace declaration on the parent or an ancestor element.

Member of
Contained by
May containEmpty element
Example
<content>
 <anyElement except="http://www.tei-c.org/ns/1.0"/>
</content>

This content element permits one occurrence of any element which does not belong to the TEI namespace.

Example
<content>
 <anyElement minOccurs="1"
  maxOccurs="unbounded"
  require="http://www.w3.org/1998/Math/MathML http://www.tei-c.org/ns/Examples/1.0"/>

</content>

This content element permits one or more elements which belong either to the MathML namespace or to the TEI examples namespace.

Example
<content>
 <alternate minOccurs="1"
  maxOccurs="unbounded">

  <textNode/>
  <anyElement require="http://www.tei-c.org/ns/Examples/1.0"/>
 </alternate>
</content>

This content element permits one or more children which are either text nodes or elements from the TEI examples namespace. It is the equivalent of the content model ANY in an XML DTD using the TEI All schema.

Content model
<content/>
Schema Declaration
element anyElement
{
   cust_att.global.attributes,
   cust_att.repeatable.attributes,
   attribute require { list { teidata.namespace+ } }?,
   attribute except { list { teidata.namespaceOrName+ } }?,
   empty
}

<att>

<att> (attribute) contains the name of an attribute appearing within running text. [22. Documentation Elements]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
schemesupplies an identifier for the scheme in which this name is defined.
Status Optional
Datatype teidata.enumerated
Sample values include:
TEI
(text encoding initiative) this attribute is part of the TEI scheme. [Default]
DBK
(docbook) this attribute is part of the Docbook scheme.
XX
(unknown) this attribute is part of an unknown scheme.
imaginary
the attribute is from a non-existent scheme, for illustrative purposes only
XHTML
the attribute is part of the XHTML language
XML
the attribute is part of the XML language
XI
the attribute is defined in the xInclude schema
Member of
Contained by
May containEmpty element
Note

As an alternative to using scheme attribute a namespace prefix may be used. Where both scheme and a prefix are used, the prefix takes precedence.

Example
<p>The TEI defines several <soCalled>global</soCalled> attributes; their names include
<att>xml:id</att>, <att>rend</att>, <att>xml:lang</att>, <att>n</att>, <att>xml:space</att>,
and <att>xml:base</att>; <att scheme="XX">type</att> is not amongst them.</p>
Content model
<content>
 <dataRef key="teidata.name"/>
</content>
Schema Declaration
element att
{
   cust_att.global.attributes,
   attribute scheme { teidata.enumerated }?,
   teidata.name
}

<attDef>

<attDef> (attribute definition) contains the definition of a single attribute. [22.5.3. Attribute List Specification]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.identified (@module, @ident, @predeclare) (att.combinable (@mode) (att.deprecated (@validUntil)) )
usagespecifies the optionality of the attribute.
Status Optional
Datatype teidata.enumerated
Legal values are:
req
(required)
rec
(recommended )
opt
(optional ) [Default]
ns(namespace) specifies the namespace to which this attribute belongs
Status Optional
Datatype teidata.namespace
Default http://www.tei-c.org/ns/1.0
Contained by
tagdocs: attList
May contain
Example
<attDef usage="recident="type">
 <desc>specifies a name conventionally used for this level of subdivision, e.g.
 <val>act</val>, <val>volume</val>, <val>book</val>, <val>section</val>, <val>canto</val>,
   etc.</desc>
 <datatype>
  <dataRef key="teidata.word"/>
 </datatype>
</attDef>
Schematron

<s:ns prefix="teix"
 uri="http://www.tei-c.org/ns/Examples"/>

<s:assert test="ancestor::teix:egXML[@valid='feasible'] or @mode eq 'change' or @mode eq 'delete' or tei:datatype or tei:valList[@type='closed']">Attribute: the definition of the @<s:value-of select="@ident"/> attribute in the <s:value-of select="ancestor::*[@ident][1]/@ident"/>
<s:value-of select="' '"/>
<s:value-of select="local-name(ancestor::*[@ident][1])"/> should have a closed valList or a datatype</s:assert>
Schematron

<sch:rule context="tei:attDef[@usage eq 'req']">
<sch:report test="tei:defaultVal">It does not make sense to make "<sch:value-of select="normalize-space(tei:defaultVal)"/>" the default value of @<sch:value-of select="@ident"/>, because that attribute is required.</sch:report>
</sch:rule>
Schematron

<sch:rule context="tei:attDef[ tei:defaultVal and tei:valList[@type eq 'closed'] and tei:datatype[ @maxOccurs > 1 or @minOccurs > 1 or @maxOccurs = 'unbounded' ] ]">
<sch:assert test=" tokenize(normalize-space(tei:defaultVal),' ') = tei:valList/tei:valItem/@ident">In the <sch:value-of select="local-name(ancestor::*[@ident][1])"/> defining
<sch:value-of select="ancestor::*[@ident][1]/@ident"/> the default value of the
@<sch:value-of select="@ident"/> attribute is not among the closed list of possible
values</sch:assert>
</sch:rule>
Schematron

<sch:rule context="tei:attDef[ tei:defaultVal and tei:valList[@type eq 'closed'] and tei:datatype[ not(@maxOccurs) or ( if ( @maxOccurs castable as xs:integer ) then ( @maxOccurs cast as xs:integer eq 1 ) else false() )] ]">
<sch:assert test="string(tei:defaultVal) = tei:valList/tei:valItem/@ident">In the <sch:value-of select="local-name(ancestor::*[@ident][1])"/> defining
<sch:value-of select="ancestor::*[@ident][1]/@ident"/> the default value of the
@<sch:value-of select="@ident"/> attribute is not among the closed list of possible
values</sch:assert>
</sch:rule>
Content model
<content>
 <sequence>
  <alternate minOccurs="0"
   maxOccurs="unbounded">

   <classRef key="model.glossLike"/>
   <classRef key="model.descLike"/>
  </alternate>
  <elementRef key="datatypeminOccurs="0"/>
  <elementRef key="constraintSpec"
   minOccurs="0maxOccurs="unbounded"/>

  <elementRef key="defaultVal"
   minOccurs="0"/>

  <alternate minOccurs="0">
   <elementRef key="valList"/>
   <elementRef key="valDescminOccurs="1"
    maxOccurs="unbounded"/>

  </alternate>
  <elementRef key="exemplumminOccurs="0"
   maxOccurs="unbounded"/>

  <elementRef key="remarksminOccurs="0"
   maxOccurs="unbounded"/>

 </sequence>
</content>
Schema Declaration
element attDef
{
   cust_att.global.attributes,
   cust_att.identified.attributes,
   attribute usage { "req" | "rec" | "opt" }?,
   attribute ns { teidata.namespace }?,
   (
      ( cust_model.glossLike | cust_model.descLike )*,
      cust_datatype?,
      cust_constraintSpec*,
      cust_defaultVal?,
      ( cust_valList | cust_valDesc+ )?,
      cust_exemplum*,
      cust_remarks*
   )
}

<attList>

<attList> contains documentation for all the attributes associated with this element, as a series of attDef elements. [22.5. Element Specifications 22.6. Class Specifications]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
org(organization) specifies whether all the attributes in the list are available (org="group") or only one of them (org="choice")
Status Optional
Datatype teidata.enumerated
Legal values are:
group
grouped [Default]
choice
alternated
Contained by
May contain
Example
<attList>
 <attDef ident="typeusage="opt">
  <desc>type of schema</desc>
  <datatype>
   <dataRef key="teidata.enumerated"/>
  </datatype>
 </attDef>
</attList>
Example
<attList org="choice">
 <attDef ident="active">
  <desc versionDate="2005-07-24"
   xml:lang="en">
identifies the <soCalled>active</soCalled> participants in a non-mutual relationship, or all the participants in a mutual
     one.</desc>
  <datatype maxOccurs="unbounded">
   <dataRef key="teidata.pointer"/>
  </datatype>
 </attDef>
 <attDef ident="mutualusage="opt">
  <desc versionDate="2005-07-24"
   xml:lang="en">
supplies a list of participants amongst all of whom the relationship holds equally.</desc>
  <datatype maxOccurs="unbounded">
   <dataRef key="teidata.pointer"/>
  </datatype>
 </attDef>
</attList>
Content model
<content>
 <alternate minOccurs="1"
  maxOccurs="unbounded">

  <elementRef key="attRef"/>
  <elementRef key="attDef"/>
  <elementRef key="attList"/>
 </alternate>
</content>
Schema Declaration
element attList
{
   cust_att.global.attributes,
   attribute org { "group" | "choice" }?,
   ( cust_attRef | cust_attDef | cust_attList )+
}

<attRef>

<attRef> (attribute pointer) points to the definition of an attribute or group of attributes. [22.2. Modules and Schemas]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
classthe name of the attribute class
Status Optional
Datatype teidata.word
namethe name of the attribute
Status Optional
Datatype teidata.text
Contained by
tagdocs: attList
May containEmpty element
Example
<attRef class="att.globalname="xml:id"/>
Content model
<content>
</content>
Schema Declaration
element attRef
{
   cust_att.global.attributes,
   attribute class { teidata.word }?,
   attribute name { teidata.text }?,
   empty
}

<author>

<author> in a bibliographic reference, contains the name(s) of an author, personal or corporate, of a work; for example in the same form as that provided by a recognized bibliographic name authority. [3.11.2.2. Titles, Authors, and Editors 2.2.1. The Title Statement]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.naming (@role, @nymRef) (att.canonical (@key, @ref))
Member of
Contained by
May contain
Note

Particularly where cataloguing is likely to be based on the content of the header, it is advisable to use a generally recognized name authority file to supply the content for this element. The attributes key or ref may also be used to reference canonical information about the author(s) intended from any appropriate authority, such as a library catalogue or online resource.

In the case of a broadcast, use this element for the name of the company or network responsible for making the broadcast.

Where an author is unknown or unspecified, this element may contain text such as Unknown or Anonymous. When the appropriate TEI modules are in use, it may also contain detailed tagging of the names used for people, organizations or places, in particular where multiple names are given.

Example
<author>British Broadcasting Corporation</author>
<author>La Fayette, Marie Madeleine Pioche de la Vergne, comtesse de (1634–1693)</author>
<author>Anonymous</author>
<author>Bill and Melinda Gates Foundation</author>
<author>
 <persName>Beaumont, Francis</persName> and
<persName>John Fletcher</persName>
</author>
<author>
 <orgName key="BBC">British Broadcasting
   Corporation</orgName>: Radio 3 Network
</author>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element author
{
   cust_att.global.attributes,
   cust_att.naming.attributes,
   cust_macro.phraseSeq
}

<authority>

<authority> (release authority) supplies the name of a person or other agency responsible for making a work available, other than a publisher or distributor. [2.2.4. Publication, Distribution, Licensing, etc.]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
May contain
Example
<authority>John Smith</authority>
Content model
<content>
 <macroRef key="macro.phraseSeq.limited"/>
</content>
Schema Declaration
element authority { cust_att.global.attributes, cust_macro.phraseSeq.limited }

<availability>

<availability> supplies information about the availability of a text, for example any restrictions on its use or distribution, its copyright status, any licence applying to it, etc. [2.2.4. Publication, Distribution, Licensing, etc.]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.declarable (@default)
statussupplies a code identifying the current availability of the text.
Status Optional
Datatype teidata.enumerated
Legal values are:
free
the text is freely available.
unknown
the status of the text is unknown.
restricted
the text is not freely available.
Member of
Contained by
core: bibl
May contain
core: p
header: licence
Note

A consistent format should be adopted

Example
<availability status="restricted">
 <p>Available for academic research purposes only.</p>
</availability>
<availability status="free">
 <p>In the public domain</p>
</availability>
<availability status="restricted">
 <p>Available under licence from the publishers.</p>
</availability>
Example
<availability>
 <licence target="http://opensource.org/licenses/MIT">
  <p>The MIT License
     applies to this document.</p>
  <p>Copyright (C) 2011 by The University of Victoria</p>
  <p>Permission is hereby granted, free of charge, to any person obtaining a copy
     of this software and associated documentation files (the "Software"), to deal
     in the Software without restriction, including without limitation the rights
     to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
     copies of the Software, and to permit persons to whom the Software is
     furnished to do so, subject to the following conditions:</p>
  <p>The above copyright notice and this permission notice shall be included in
     all copies or substantial portions of the Software.</p>
  <p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
     THE SOFTWARE.</p>
 </licence>
</availability>
Content model
<content>
 <alternate minOccurs="1"
  maxOccurs="unbounded">

  <classRef key="model.availabilityPart"/>
  <classRef key="model.pLike"/>
 </alternate>
</content>
Schema Declaration
element availability
{
   cust_att.global.attributes,
   cust_att.declarable.attributes,
   attribute status { "free" | "unknown" | "restricted" }?,
   ( cust_model.availabilityPart | cust_model.pLike )+
}

<back>

<back> (back matter) contains any appendixes, etc. following the main part of a text. [4.7. Back Matter 4. Default Text Structure]
Moduletextstructure
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.declaring (@decls)
Contained by
textstructure: text
May contain
figures: figure table
textstructure: div
Note

Because cultural conventions differ as to which elements are grouped as back matter and which as front matter, the content models for the back and front elements are identical.

Example
<back>
 <div type="appendix">
  <head>The Golden Dream or, the Ingenuous Confession</head>
  <p>TO shew the Depravity of human Nature, and how apt the Mind is to be misled by Trinkets
     and false Appearances, Mrs. Two-Shoes does acknowledge, that after she became rich, she
     had like to have been, too fond of Money
<!-- .... -->
  </p>
 </div>
<!-- ... -->
 <div type="epistle">
  <head>A letter from the Printer, which he desires may be inserted</head>
  <salute>Sir.</salute>
  <p>I have done with your Copy, so you may return it to the Vatican, if you please;
  
<!-- ... -->
  </p>
 </div>
 <div type="advert">
  <head>The Books usually read by the Scholars of Mrs Two-Shoes are these and are sold at Mr
     Newbery's at the Bible and Sun in St Paul's Church-yard.</head>
  <list>
   <item n="1">The Christmas Box, Price 1d.</item>
   <item n="2">The History of Giles Gingerbread, 1d.</item>
<!-- ... -->
   <item n="42">A Curious Collection of Travels, selected from the Writers of all Nations,
       10 Vol, Pr. bound 1l.</item>
  </list>
 </div>
 <div type="advert">
  <head>By the KING's Royal Patent, Are sold by J. NEWBERY, at the Bible and Sun in St.
     Paul's Church-Yard.</head>
  <list>
   <item n="1">Dr. James's Powders for Fevers, the Small-Pox, Measles, Colds, &amp;c. 2s.
       6d</item>
   <item n="2">Dr. Hooper's Female Pills, 1s.</item>
<!-- ... -->
  </list>
 </div>
</back>
Content model
<content>
 <sequence>
  <alternate minOccurs="0"
   maxOccurs="unbounded">

   <classRef key="model.frontPart"/>
   <classRef key="model.pLike.front"/>
   <classRef key="model.pLike"/>
   <classRef key="model.listLike"/>
   <classRef key="model.global"/>
  </alternate>
  <alternate minOccurs="0">
   <sequence>
    <classRef key="model.div1Like"/>
    <alternate minOccurs="0"
     maxOccurs="unbounded">

     <classRef key="model.frontPart"/>
     <classRef key="model.div1Like"/>
     <classRef key="model.global"/>
    </alternate>
   </sequence>
   <sequence>
    <classRef key="model.divLike"/>
    <alternate minOccurs="0"
     maxOccurs="unbounded">

     <classRef key="model.frontPart"/>
     <classRef key="model.divLike"/>
     <classRef key="model.global"/>
    </alternate>
   </sequence>
  </alternate>
  <sequence minOccurs="0">
   <classRef key="model.divBottomPart"/>
   <alternate minOccurs="0"
    maxOccurs="unbounded">

    <classRef key="model.divBottomPart"/>
    <classRef key="model.global"/>
   </alternate>
  </sequence>
 </sequence>
</content>
Schema Declaration
element back
{
   cust_att.global.attributes,
   cust_att.declaring.attributes,
   (
      (
         cust_model.frontPart
       | cust_model.pLike.front
       | cust_model.pLike
       | cust_model.listLike
       | cust_model.global
      )*,
      (
         (
            cust_model.div1Like,
            ( cust_model.frontPart | cust_model.div1Like | cust_model.global )*
         )
       | (
            cust_model.divLike,
            ( cust_model.frontPart | cust_model.divLike | cust_model.global )*
         )
      )?,
      (
         cust_model.divBottomPart,
         ( cust_model.divBottomPart | cust_model.global )*
      )?
   )
}

<bibl>

<bibl> (bibliographic citation) contains a loosely-structured bibliographic citation of which the sub-components may or may not be explicitly tagged. [3.11.1. Methods of Encoding Bibliographic References and Lists of References 2.2.7. The Source Description 15.3.2. Declarable Elements]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.declarable (@default) att.typed (@type, @subtype) att.sortable (@sortKey) att.docStatus (@status)
Member of
Contained by
May contain
Note

Contains phrase-level elements, together with any combination of elements from the model.biblPart class

Example
<bibl>Blain, Clements and Grundy: Feminist Companion to Literature in English (Yale,
1990)</bibl>
Example
<bibl>
 <title level="a">The Interesting story of the Children in the Wood</title>. In
<author>Victor E Neuberg</author>, <title>The Penny Histories</title>.
<publisher>OUP</publisher>
 <date>1968</date>.
</bibl>
Example
<bibl type="articlesubtype="book_chapter"
 xml:id="carlin_2003">

 <author>
  <name>
   <surname>Carlin</surname>
     (<forename>Claire</forename>)</name>
 </author>,
<title level="a">The Staging of Impotence : France’s last
   congrès</title> dans
<bibl type="monogr">
  <title level="m">Theatrum mundi : studies in honor of Ronald W.
     Tobin</title>, éd.
 <editor>
   <name>
    <forename>Claire</forename>
    <surname>Carlin</surname>
   </name>
  </editor> et
 <editor>
   <name>
    <forename>Kathleen</forename>
    <surname>Wine</surname>
   </name>
  </editor>,
 <pubPlace>Charlottesville, Va.</pubPlace>,
 <publisher>Rookwood Press</publisher>,
 <date when="2003">2003</date>.
 </bibl>
</bibl>
Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">

  <textNode/>
  <classRef key="model.gLike"/>
  <classRef key="model.highlighted"/>
  <classRef key="model.pPart.data"/>
  <classRef key="model.pPart.edit"/>
  <classRef key="model.segLike"/>
  <classRef key="model.ptrLike"/>
  <classRef key="model.biblPart"/>
  <classRef key="model.global"/>
 </alternate>
</content>
Schema Declaration
element bibl
{
   cust_att.global.attributes,
   cust_att.declarable.attributes,
   cust_att.typed.attributes,
   cust_att.sortable.attributes,
   cust_att.docStatus.attributes,
   (
      text
    | cust_model.gLike
    | cust_model.highlighted
    | cust_model.pPart.data
    | cust_model.pPart.edit
    | cust_model.segLike
    | cust_model.ptrLike
    | cust_model.biblPart
    | cust_model.global
   )*
}

<biblFull>

<biblFull> (fully-structured bibliographic citation) contains a fully-structured bibliographic citation, in which all components of the TEI file description are present. [3.11.1. Methods of Encoding Bibliographic References and Lists of References 2.2. The File Description 2.2.7. The Source Description 15.3.2. Declarable Elements]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.declarable (@default) att.sortable (@sortKey) att.docStatus (@status)
Member of
Contained by
May contain
Example
<biblFull>
 <titleStmt>
  <title>The Feminist Companion to Literature in English: women writers from the middle ages
     to the present</title>
  <author>Blain, Virginia</author>
  <author>Clements, Patricia</author>
  <author>Grundy, Isobel</author>
 </titleStmt>
 <editionStmt>
  <edition>UK edition</edition>
 </editionStmt>
 <extent>1231 pp</extent>
 <publicationStmt>
  <publisher>Yale University Press</publisher>
  <pubPlace>New Haven and London</pubPlace>
  <date>1990</date>
 </publicationStmt>
 <sourceDesc>
  <p>No source: this is an original work</p>
 </sourceDesc>
</biblFull>
Content model
<content>
 <alternate>
  <sequence>
   <sequence>
    <elementRef key="titleStmt"/>
    <elementRef key="editionStmt"
     minOccurs="0"/>

    <elementRef key="extentminOccurs="0"/>
    <elementRef key="publicationStmt"/>
    <elementRef key="seriesStmt"
     minOccurs="0"/>

    <elementRef key="notesStmt"
     minOccurs="0"/>

   </sequence>
   <elementRef key="sourceDesc"
    minOccurs="0maxOccurs="unbounded"/>

  </sequence>
  <sequence>
   <elementRef key="fileDesc"/>
   <elementRef key="profileDesc"/>
  </sequence>
 </alternate>
</content>
Schema Declaration
element biblFull
{
   cust_att.global.attributes,
   cust_att.declarable.attributes,
   cust_att.sortable.attributes,
   cust_att.docStatus.attributes,
   (
      (
         (
            cust_titleStmt,
            cust_editionStmt?,
            cust_extent?,
            cust_publicationStmt,
            cust_seriesStmt?,
            cust_notesStmt?
         ),
         cust_sourceDesc*
      )
    | ( cust_fileDesc, profileDesc )
   )
}

<biblScope>

<biblScope> (scope of bibliographic reference) defines the scope of a bibliographic reference, for example as a list of page numbers, or a named subdivision of a larger work. [3.11.2.5. Scopes and Ranges in Bibliographic Citations]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.citing (@unit, @from, @to)
Member of
Contained by
header: seriesStmt
May contain
Note

When a single page is being cited, use the from and to attributes with an identical value. When no clear endpoint is provided, the from attribute may be used without to; for example a citation such as ‘p. 3ff’ might be encoded <biblScope from="3">p. 3ff<biblScope>.

It is now considered good practice to supply this element as a sibling (rather than a child) of imprint, since it supplies information which does not constitute part of the imprint.

Example
<biblScope>pp 12–34</biblScope>
<biblScope unit="pagefrom="12to="34"/>
<biblScope unit="volume">II</biblScope>
<biblScope unit="page">12</biblScope>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element biblScope
{
   cust_att.global.attributes,
   cust_att.citing.attributes,
   cust_macro.phraseSeq
}

<body>

<body> (text body) contains the whole body of a single unitary text, excluding any front or back matter. [4. Default Text Structure]
Moduletextstructure
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.declaring (@decls)
Contained by
textstructure: text
May contain
Example
<body>
 <l>Nu scylun hergan hefaenricaes uard</l>
 <l>metudæs maecti end his modgidanc</l>
 <l>uerc uuldurfadur sue he uundra gihuaes</l>
 <l>eci dryctin or astelidæ</l>
 <l>he aerist scop aelda barnum</l>
 <l>heben til hrofe haleg scepen.</l>
 <l>tha middungeard moncynnæs uard</l>
 <l>eci dryctin æfter tiadæ</l>
 <l>firum foldu frea allmectig</l>
 <trailer>primo cantauit Cædmon istud carmen.</trailer>
</body>
Content model
<content>
 <sequence>
  <classRef key="model.global"
   minOccurs="0maxOccurs="unbounded"/>

  <sequence minOccurs="0">
   <classRef key="model.divTop"/>
   <alternate minOccurs="0"
    maxOccurs="unbounded">

    <classRef key="model.global"/>
    <classRef key="model.divTop"/>
   </alternate>
  </sequence>
  <sequence minOccurs="0">
   <classRef key="model.divGenLike"/>
   <alternate minOccurs="0"
    maxOccurs="unbounded">

    <classRef key="model.global"/>
    <classRef key="model.divGenLike"/>
   </alternate>
  </sequence>
  <alternate>
   <sequence minOccurs="1"
    maxOccurs="unbounded">

    <classRef key="model.divLike"/>
    <alternate minOccurs="0"
     maxOccurs="unbounded">

     <classRef key="model.global"/>
     <classRef key="model.divGenLike"/>
    </alternate>
   </sequence>
   <sequence minOccurs="1"
    maxOccurs="unbounded">

    <classRef key="model.div1Like"/>
    <alternate minOccurs="0"
     maxOccurs="unbounded">

     <classRef key="model.global"/>
     <classRef key="model.divGenLike"/>
    </alternate>
   </sequence>
   <sequence>
    <sequence minOccurs="1"
     maxOccurs="unbounded">

     <classRef key="model.common"/>
     <classRef key="model.global"
      minOccurs="0maxOccurs="unbounded"/>

    </sequence>
    <alternate minOccurs="0">
     <sequence minOccurs="1"
      maxOccurs="unbounded">

      <classRef key="model.divLike"/>
      <alternate minOccurs="0"
       maxOccurs="unbounded">

       <classRef key="model.global"/>
       <classRef key="model.divGenLike"/>
      </alternate>
     </sequence>
     <sequence minOccurs="1"
      maxOccurs="unbounded">

      <classRef key="model.div1Like"/>
      <alternate minOccurs="0"
       maxOccurs="unbounded">

       <classRef key="model.global"/>
       <classRef key="model.divGenLike"/>
      </alternate>
     </sequence>
    </alternate>
   </sequence>
  </alternate>
  <sequence minOccurs="0"
   maxOccurs="unbounded">

   <classRef key="model.divBottom"/>
   <classRef key="model.global"
    minOccurs="0maxOccurs="unbounded"/>

  </sequence>
 </sequence>
</content>
Schema Declaration
element body
{
   cust_att.global.attributes,
   cust_att.declaring.attributes,
   (
      cust_model.global*,
      ( cust_model.divTop, ( cust_model.global | cust_model.divTop )* )?,
      ( cust_model.divGenLike, ( cust_model.global | cust_model.divGenLike )* )?,
      (
         ( cust_model.divLike, ( cust_model.global | cust_model.divGenLike )* )+
       | (
            cust_model.div1Like,
            ( cust_model.global | cust_model.divGenLike )*
         )+
       | (
            ( cust_model.common, cust_model.global* )+,
            (
               (
                  cust_model.divLike,
                  ( cust_model.global | cust_model.divGenLike )*
               )+
             | (
                  cust_model.div1Like,
                  ( cust_model.global | cust_model.divGenLike )*
               )+
            )?
         )
      ),
      ( cust_model.divBottom, cust_model.global* )*
   )
}

<calendar>

<calendar> describes a calendar or dating system used in a dating formula in the text. [2.4.5. Calendar Description]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.pointing (@targetLang, @target, @evaluate)
Contained by
header: calendarDesc
May contain
core: p
Example
<calendarDesc>
 <calendar xml:id="julianEngland">
  <p>Julian Calendar (including proleptic)</p>
 </calendar>
</calendarDesc>
Example
<calendarDesc>
 <calendar xml:id="egyptian"
  target="http://en.wikipedia.org/wiki/Egyptian_calendar">

  <p>Egyptian calendar (as defined by Wikipedia)</p>
 </calendar>
</calendarDesc>
Content model
<content>
 <classRef key="model.pLikeminOccurs="1"
  maxOccurs="unbounded"/>

</content>
Schema Declaration
element calendar
{
   cust_att.global.attributes,
   cust_att.pointing.attributes,
   cust_model.pLike+
}

<calendarDesc>

<calendarDesc> (calendar description) contains a description of the calendar system used in any dating expression found in the text. [2.4. The Profile Description 2.4.5. Calendar Description]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Contained by
May contain
header: calendar
Note

In the first example above, calendars and short codes for xml:ids are from W3 guidelines at http://www.w3.org/TR/xpath-functions-11/#lang-cal-country

Example
<calendarDesc>
 <calendar xml:id="cal_AD">
  <p>Anno Domini (Christian Era)</p>
 </calendar>
 <calendar xml:id="cal_AH">
  <p>Anno Hegirae (Muhammedan Era)</p>
 </calendar>
 <calendar xml:id="cal_AME">
  <p>Mauludi Era (solar years since Mohammed's birth)</p>
 </calendar>
 <calendar xml:id="cal_AM">
  <p>Anno Mundi (Jewish Calendar)</p>
 </calendar>
 <calendar xml:id="cal_AP">
  <p>Anno Persici</p>
 </calendar>
 <calendar xml:id="cal_AS">
  <p>Aji Saka Era (Java)</p>
 </calendar>
 <calendar xml:id="cal_BE">
  <p>Buddhist Era</p>
 </calendar>
 <calendar xml:id="cal_CB">
  <p>Cooch Behar Era</p>
 </calendar>
 <calendar xml:id="cal_CE">
  <p>Common Era</p>
 </calendar>
 <calendar xml:id="cal_CL">
  <p>Chinese Lunar Era</p>
 </calendar>
 <calendar xml:id="cal_CS">
  <p>Chula Sakarat Era</p>
 </calendar>
 <calendar xml:id="cal_EE">
  <p>Ethiopian Era</p>
 </calendar>
 <calendar xml:id="cal_FE">
  <p>Fasli Era</p>
 </calendar>
 <calendar xml:id="cal_ISO">
  <p>ISO 8601 calendar</p>
 </calendar>
 <calendar xml:id="cal_JE">
  <p>Japanese Calendar</p>
 </calendar>
 <calendar xml:id="cal_KE">
  <p>Khalsa Era (Sikh calendar)</p>
 </calendar>
 <calendar xml:id="cal_KY">
  <p>Kali Yuga</p>
 </calendar>
 <calendar xml:id="cal_ME">
  <p>Malabar Era</p>
 </calendar>
 <calendar xml:id="cal_MS">
  <p>Monarchic Solar Era</p>
 </calendar>
 <calendar xml:id="cal_NS">
  <p>Nepal Samwat Era</p>
 </calendar>
 <calendar xml:id="cal_OS">
  <p>Old Style (Julian Calendar)</p>
 </calendar>
 <calendar xml:id="cal_RS">
  <p>Rattanakosin (Bangkok) Era</p>
 </calendar>
 <calendar xml:id="cal_SE">
  <p>Saka Era</p>
 </calendar>
 <calendar xml:id="cal_SH">
  <p>Mohammedan Solar Era (Iran)</p>
 </calendar>
 <calendar xml:id="cal_SS">
  <p>Saka Samvat</p>
 </calendar>
 <calendar xml:id="cal_TE">
  <p>Tripurabda Era</p>
 </calendar>
 <calendar xml:id="cal_VE">
  <p>Vikrama Era</p>
 </calendar>
 <calendar xml:id="cal_VS">
  <p>Vikrama Samvat Era</p>
 </calendar>
</calendarDesc>
Example
<calendarDesc>
 <calendar xml:id="cal_Gregorian">
  <p>Gregorian calendar</p>
 </calendar>
 <calendar xml:id="cal_Julian">
  <p>Julian calendar</p>
 </calendar>
 <calendar xml:id="cal_Islamic">
  <p>Islamic or Muslim (hijri) lunar calendar</p>
 </calendar>
 <calendar xml:id="cal_Hebrew">
  <p>Hebrew or Jewish lunisolar calendar</p>
 </calendar>
 <calendar xml:id="cal_Revolutionary">
  <p>French Revolutionary calendar</p>
 </calendar>
 <calendar xml:id="cal_Iranian">
  <p>Iranian or Persian (Jalaali) solar calendar</p>
 </calendar>
 <calendar xml:id="cal_Coptic">
  <p>Coptic or Alexandrian calendar</p>
 </calendar>
 <calendar xml:id="cal_Chinese">
  <p>Chinese lunisolar calendar</p>
 </calendar>
</calendarDesc>
Example
<calendarDesc>
 <calendar xml:id="cal_Egyptian"
  target="http://en.wikipedia.org/wiki/Egyptian_calendar">

  <p>Egyptian calendar (as defined by Wikipedia)</p>
 </calendar>
</calendarDesc>
Content model
<content>
 <elementRef key="calendarminOccurs="1"
  maxOccurs="unbounded"/>

</content>
Schema Declaration
element calendarDesc { cust_att.global.attributes, cust_calendar+ }

<cell>

<cell> contains one cell of a table. [14.1.1. TEI Tables]
Modulefigures
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.tableDecoration (@role, @rows, @cols)
Contained by
figures: row
May contain
Example
<row>
 <cell role="label">General conduct</cell>
 <cell role="data">Not satisfactory, on account of his great unpunctuality
   and inattention to duties</cell>
</row>
Content model
<content>
 <macroRef key="macro.specialPara"/>
</content>
Schema Declaration
element cell
{
   cust_att.global.attributes,
   cust_att.tableDecoration.attributes,
   cust_macro.specialPara
}

<change>

<change> documents a change or set of changes made during the production of a source document, or during the revision of an electronic file. [2.6. The Revision Description 2.4.1. Creation 11.7. Identifying Changes and Revisions]
Moduleheader
AttributesAttributes att.ascribed (@who) att.datable (@calendar, @period) (att.datable.w3c (@when, @notBefore, @notAfter, @from, @to)) (att.datable.iso (@when-iso, @notBefore-iso, @notAfter-iso, @from-iso, @to-iso)) (att.datable.custom (@when-custom, @notBefore-custom, @notAfter-custom, @from-custom, @to-custom, @datingPoint, @datingMethod)) att.docStatus (@status) att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.typed (@type, @subtype)
targetpoints to one or more elements that belong to this change.
Status Optional
Datatype 1–∞ occurrences of teidata.pointer separated by whitespace
Contained by
May contain
Note

The who attribute may be used to point to any other element, but will typically specify a respStmt or <person> element elsewhere in the header, identifying the person responsible for the change and their role in making it.

It is recommended that changes be recorded with the most recent first. The status attribute may be used to indicate the status of a document following the change documented.

Example
<titleStmt>
 <title> ... </title>
 <editor xml:id="LDB">Lou Burnard</editor>
 <respStmt xml:id="BZ">
  <resp>copy editing</resp>
  <name>Brett Zamir</name>
 </respStmt>
</titleStmt>
<!-- ... -->
<revisionDesc status="published">
 <change who="#BZwhen="2008-02-02"
  status="public">
Finished chapter 23</change>
 <change who="#BZwhen="2008-01-02"
  status="draft">
Finished chapter 2</change>
 <change n="P2.2when="1991-12-21"
  who="#LDB">
Added examples to section 3</change>
 <change when="1991-11-11who="#MSM">Deleted chapter 10</change>
</revisionDesc>
Example
<profileDesc>
 <creation>
  <listChange>
   <change xml:id="DRAFT1">First draft in pencil</change>
   <change xml:id="DRAFT2"
    notBefore="1880-12-09">
First revision, mostly
       using green ink</change>
   <change xml:id="DRAFT3"
    notBefore="1881-02-13">
Final corrections as
       supplied to printer.</change>
  </listChange>
 </creation>
</profileDesc>
Content model
<content>
 <macroRef key="macro.specialPara"/>
</content>
Schema Declaration
element change
{
   cust_att.ascribed.attributes,
   cust_att.datable.attributes,
   cust_att.docStatus.attributes,
   cust_att.global.attributes,
   cust_att.typed.attributes,
   attribute target { list { teidata.pointer+ } }?,
   cust_macro.specialPara
}

<choice>

<choice> groups a number of alternative encodings for the same point in a text. [3.4. Simple Editorial Changes]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
May contain
Note

Because the children of a choice element all represent alternative ways of encoding the same sequence, it is natural to think of them as mutually exclusive. However, there may be cases where a full representation of a text requires the alternative encodings to be considered as parallel.

Note also that choice elements may self-nest.

Where the purpose of an encoding is to record multiple witnesses of a single work, rather than to identify multiple possible encoding decisions at a given point, the <app> element and associated elements discussed in section 12.1. The Apparatus Entry, Readings, and Witnesses should be preferred.

Example

An American encoding of Gulliver's Travels which retains the British spelling but also provides a version regularized to American spelling might be encoded as follows.

<p>Lastly, That, upon his solemn oath to observe all the above
articles, the said man-mountain shall have a daily allowance of
meat and drink sufficient for the support of <choice>
  <sic>1724</sic>
  <corr>1728</corr>
 </choice> of our subjects,
with free access to our royal person, and other marks of our
<choice>
  <orig>favour</orig>
  <reg>favor</reg>
 </choice>.</p>
Content model
<content>
 <alternate minOccurs="2"
  maxOccurs="unbounded">

  <classRef key="model.choicePart"/>
  <elementRef key="choice"/>
 </alternate>
</content>
Schema Declaration
element choice
{
   cust_att.global.attributes,
   ( cust_model.choicePart | cust_choice )+
}

<cit>

<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. [3.3.3. Quotation 4.3.1. Grouped Texts 9.3.5.1. Examples]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.typed (@type, @subtype)
Member of
Contained by
May contain
figures: figure
header: biblFull
tagdocs: eg egXML
Example
<cit>
 <quote>and the breath of the whale is frequently attended with such an insupportable smell,
   as to bring on disorder of the brain.</quote>
 <bibl>Ulloa's South America</bibl>
</cit>
Example
<entry>
 <form>
  <orth>horrifier</orth>
 </form>
 <cit type="translationxml:lang="en">
  <quote>to horrify</quote>
 </cit>
 <cit type="example">
  <quote>elle était horrifiée par la dépense</quote>
  <cit type="translationxml:lang="en">
   <quote>she was horrified at the expense.</quote>
  </cit>
 </cit>
</entry>
Content model
<content>
 <alternate minOccurs="1"
  maxOccurs="unbounded">

  <classRef key="model.qLike"/>
  <classRef key="model.egLike"/>
  <classRef key="model.biblLike"/>
  <classRef key="model.ptrLike"/>
  <classRef key="model.global"/>
  <classRef key="model.entryPart"/>
 </alternate>
</content>
Schema Declaration
element cit
{
   cust_att.global.attributes,
   cust_att.typed.attributes,
   (
      cust_model.qLike
    | cust_model.egLike
    | cust_model.biblLike
    | cust_model.ptrLike
    | cust_model.global
    | cust_model.entryPart
   )+
}

<citedRange>

<citedRange> (cited range) defines the range of cited content, often represented by pages or other units [3.11.2.5. Scopes and Ranges in Bibliographic Citations]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.pointing (@targetLang, @target, @evaluate) att.citing (@unit, @from, @to)
Member of
Contained by
core: bibl
May contain
Note

When a single page is being cited, use the from and to attributes with an identical value. When no clear endpoint is provided, the from attribute may be used without to; for example a citation such as ‘p. 3ff’ might be encoded <biblScope from="3">p. 3ff<biblScope>.

Example
<citedRange>pp 12–13</citedRange>
<citedRange unit="pagefrom="12to="13"/>
<citedRange unit="volume">II</citedRange>
<citedRange unit="page">12</citedRange>
Example
<bibl>
 <ptr target="#mueller01"/>, <citedRange target="http://example.com/mueller3.xml#page4">vol. 3, pp.
   4-5</citedRange>
</bibl>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element citedRange
{
   cust_att.global.attributes,
   cust_att.pointing.attributes,
   cust_att.citing.attributes,
   cust_macro.phraseSeq
}

<classes>

<classes> specifies all the classes of which the documented element or class is a member or subclass. [22.5. Element Specifications 22.6. Class Specifications]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
modespecifies the effect of this declaration on its parent module.
Status Required
Datatype teidata.enumerated
Legal values are:
change
this declaration changes the declaration of the same name in the current definition
replace
this declaration replaces the declaration of the same name in the current definition [Default]
Contained by
May contain
tagdocs: memberOf
Note

An empty classes element indicates that the element documented is not a member of any class. This should not generally happen.

Example
<classes>
 <memberOf key="model.qLike"/>
 <memberOf key="att.declarable"/>
</classes>

This classes element indicates that the element documented (which may be an element or a class) is a member of two distinct classes: model.qLike and att.declarable.

Content model
<content>
 <elementRef key="memberOfminOccurs="0"
  maxOccurs="unbounded"/>

</content>
Schema Declaration
element classes
{
   cust_att.global.attributes,
   attribute mode { "change" | "replace" },
   cust_memberOf*
}

<classRef>

<classRef> points to the specification for an attribute or model class which is to be included in a schema [22.6. Class Specifications]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.repeatable (@minOccurs, @maxOccurs)
key
Status Required
Datatype teidata.enumerated
Suggested values include:
att.ascribed
att.breaking
att.cReferencing
att.canonical
att.citing
att.combinable
att.coordinated
att.damaged
att.datable
att.datable.custom
att.datable.iso
att.datable.w3c
att.datcat
att.declarable
att.declaring
att.deprecated
att.dimensions
att.divLike
att.docStatus
att.duration
att.duration.iso
att.duration.w3c
att.editLike
att.edition
att.enjamb
(enjambement)
att.entryLike
att.fragmentable
att.global
att.global.analytic
att.global.change
att.global.facs
att.global.linking
att.global.rendition
att.global.responsibility
att.global.source
att.handFeatures
att.identified
att.internetMedia
att.interpLike
att.lexicographic
att.linguistic
att.measurement
att.media
att.metrical
att.milestoneUnit
att.msClass
att.msExcerpt
(manuscript excerpt)
att.namespaceable
att.naming
att.notated
att.partials
att.patternReplacement
att.personal
(attributes for components of names usually, but not necessarily, personal names)
att.placement
att.pointing
att.pointing.group
att.ranging
att.rdgPart
att.repeatable
att.resourced
att.scoping
att.segLike
att.sortable
att.spanning
att.styleDef
att.tableDecoration
att.textCritical
att.timed
att.transcriptional
att.translatable
att.typed
att.witnessed
att.written
model.addrPart
model.addressLike
model.applicationLike
model.availabilityPart
model.biblLike
model.biblPart
model.castItemPart
model.catDescPart
model.certLike
model.choicePart
model.common
model.contentPart
model.correspActionPart
model.correspContextPart
model.correspDescPart
model.dateLike
model.descLike
model.dimLike
model.div1Like
model.div2Like
model.div3Like
model.div4Like
model.div5Like
model.div6Like
model.div7Like
model.divBottom
model.divBottomPart
model.divGenLike
model.divLike
model.divPart
model.divPart.spoken
model.divTop
model.divTopPart
model.divWrapper
model.editorialDeclPart
model.egLike
model.emphLike
model.encodingDescPart
model.entryLike
model.entryPart
model.entryPart.top
model.eventLike
model.featureVal
model.featureVal.complex
model.featureVal.single
model.formPart
model.frontPart
model.frontPart.drama
model.gLike
model.global
model.global.edit
model.global.meta
model.global.spoken
model.glossLike
model.gramPart
model.graphicLike
model.headLike
model.hiLike
model.highlighted
model.imprintPart
model.inter
model.lLike
model.lPart
model.labelLike
model.lexicalRefinement
model.limitedPhrase
model.linePart
model.listLike
model.measureLike
model.milestoneLike
model.morphLike
model.msItemPart
model.msQuoteLike
model.nameLike
model.nameLike.agent
model.noteLike
model.oddDecl
model.oddRef
model.offsetLike
model.orgPart
model.orgStateLike
model.pLike
model.pLike.front
model.pPart.data
model.pPart.edit
model.pPart.editorial
model.pPart.msdesc
model.pPart.transcriptional
model.persNamePart
model.persStateLike
model.personLike
model.personPart
model.phrase
model.phrase.xml
model.physDescPart
model.placeLike
model.placeNamePart
model.placeStateLike
model.profileDescPart
model.ptrLike
model.ptrLike.form
model.publicationStmtPart.agency
model.publicationStmtPart.detail
model.qLike
model.quoteLike
model.rdgLike
model.rdgPart
model.recordingPart
model.resourceLike
model.respLike
model.segLike
model.settingPart
model.sourceDescPart
model.specDescLike
model.stageLike
model.teiHeaderPart
model.textDescPart
model.titlepagePart
includesupplies a list of class members which are to be included in the schema being defined.
Status Optional
Datatype 0–∞ occurrences of teidata.enumerated separated by whitespace
Suggested values include:
agent
class: att.damaged
ana
(analysis) class: att.global.analytic
atLeast
class: att.ranging
atMost
class: att.ranging
break
class: att.breaking
cRef
(canonical reference) class: att.cReferencing
calendar
class: att.datable
cause
class: att.transcriptional
cause
class: att.textCritical
cert
(certainty) class: att.global.responsibility
change
class: att.global.change
class
class: att.msClass
cols
(columns) class: att.tableDecoration
commodity
class: att.measurement
confidence
class: att.ranging
copyOf
class: att.global.linking
corresp
(corresponds) class: att.global.linking
datcat
class: att.datcat
datingMethod
class: att.datable.custom
datingPoint
class: att.datable.custom
decls
class: att.declaring
default
class: att.declarable
defective
class: att.msExcerpt
degree
class: att.damaged
domains
class: att.pointing.group
dur
(duration) class: att.duration.w3c
dur-iso
(duration) class: att.duration.iso
ed
(edition) class: att.edition
edRef
(edition reference) class: att.edition
end
class: att.timed
enjamb
(enjambement) class: att.enjamb
evaluate
class: att.pointing
evidence
class: att.editLike
exclude
class: att.global.linking
expand
class: att.lexicographic
extent
class: att.dimensions
extent
class: att.partials
facs
(facsimile) class: att.global.facs
from
class: att.datable.w3c
from
class: att.citing
from-custom
class: att.datable.custom
from-iso
class: att.datable.iso
full
class: att.personal
function
class: att.segLike
group
class: att.damaged
hand
class: att.written
height
class: att.media
ident
class: att.identified
inst
(instances) class: att.interpLike
instant
class: att.editLike
join
class: att.linguistic
key
class: att.canonical
lemma
class: att.linguistic
lemmaRef
class: att.linguistic
location
class: att.lexicographic
lrx
class: att.coordinated
lry
class: att.coordinated
match
class: att.scoping
matchPattern
class: att.patternReplacement
max
class: att.ranging
maxOccurs
(maximum number of occurences) class: att.repeatable
medium
class: att.handFeatures
mergedIn
class: att.lexicographic
met
(metrical structure, conventional) class: att.metrical
mimeType
(MIME media type) class: att.internetMedia
min
class: att.ranging
minOccurs
(minimum number of occurences) class: att.repeatable
mode
class: att.combinable
module
class: att.identified
msd
class: att.linguistic
n
(number) class: att.global
next
class: att.global.linking
norm
(normalized) class: att.lexicographic
notAfter
class: att.datable.w3c
notAfter-custom
class: att.datable.custom
notAfter-iso
class: att.datable.iso
notBefore
class: att.datable.w3c
notBefore-custom
class: att.datable.custom
notBefore-iso
class: att.datable.iso
notation
class: att.notated
ns
(namespace) class: att.namespaceable
nymRef
(reference to the canonical name) class: att.naming
opt
(optional) class: att.lexicographic
org
(organization) class: att.divLike
orig
(original) class: att.lexicographic
part
class: att.fragmentable
period
class: att.datable
place
class: att.placement
points
class: att.coordinated
pos
class: att.linguistic
precision
class: att.dimensions
predeclare
class: att.identified
prev
(previous) class: att.global.linking
quantity
class: att.dimensions
quantity
class: att.measurement
real
(metrical structure, realized) class: att.metrical
ref
(reference) class: att.canonical
rend
(rendition) class: att.global.rendition
rendition
class: att.global.rendition
replacementPattern
class: att.patternReplacement
require
class: att.textCritical
resp
(responsible party) class: att.global.responsibility
rhyme
(rhyme scheme) class: att.metrical
role
class: att.naming
role
class: att.tableDecoration
rows
class: att.tableDecoration
sameAs
class: att.global.linking
sample
class: att.divLike
scale
class: att.media
scheme
class: att.styleDef
schemeVersion
class: att.styleDef
scope
class: att.dimensions
scope
class: att.handFeatures
scribe
class: att.handFeatures
scribeRef
class: att.handFeatures
script
class: att.handFeatures
scriptRef
class: att.handFeatures
select
class: att.global.linking
seq
(sequence) class: att.transcriptional
sort
class: att.personal
sortKey
class: att.sortable
source
class: att.global.source
spanTo
class: att.spanning
split
class: att.lexicographic
start
class: att.timed
start
class: att.coordinated
status
class: att.docStatus
status
class: att.transcriptional
style
class: att.global.rendition
subtype
class: att.typed
synch
(synchronous) class: att.global.linking
targFunc
(target function) class: att.pointing.group
target
class: att.pointing
target
class: att.scoping
targetLang
class: att.pointing
to
class: att.datable.w3c
to
class: att.citing
to-custom
class: att.datable.custom
to-iso
class: att.datable.iso
type
class: att.interpLike
type
class: att.typed
type
class: att.entryLike
type
class: att.textCritical
ulx
class: att.coordinated
uly
class: att.coordinated
unit
class: att.dimensions
unit
class: att.measurement
unit
class: att.milestoneUnit
unit
class: att.citing
url
(uniform resource locator) class: att.resourced
validUntil
class: att.deprecated
value
class: att.lexicographic
valueDatcat
class: att.datcat
varSeq
(variant sequence) class: att.textCritical
versionDate
class: att.translatable
when
class: att.datable.w3c
when-custom
class: att.datable.custom
when-iso
class: att.datable.iso
who
class: att.ascribed
width
class: att.media
wit
(witness or witnesses) class: att.rdgPart
wit
(witness or witnesses) class: att.witnessed
xml:base
class: att.global
xml:id
(identifier) class: att.global
xml:lang
(language) class: att.global
xml:space
class: att.global
exceptsupplies a list of class members which are to be excluded from the schema being defined.
Status Optional
Datatype 0–∞ occurrences of teidata.enumerated separated by whitespace
Suggested values include:
agent
class: att.damaged
ana
(analysis) class: att.global.analytic
atLeast
class: att.ranging
atMost
class: att.ranging
break
class: att.breaking
cRef
(canonical reference) class: att.cReferencing
calendar
class: att.datable
cause
class: att.transcriptional
cause
class: att.textCritical
cert
(certainty) class: att.global.responsibility
change
class: att.global.change
class
class: att.msClass
cols
(columns) class: att.tableDecoration
commodity
class: att.measurement
confidence
class: att.ranging
copyOf
class: att.global.linking
corresp
(corresponds) class: att.global.linking
datcat
class: att.datcat
datingMethod
class: att.datable.custom
datingPoint
class: att.datable.custom
decls
class: att.declaring
default
class: att.declarable
defective
class: att.msExcerpt
degree
class: att.damaged
domains
class: att.pointing.group
dur
(duration) class: att.duration.w3c
dur-iso
(duration) class: att.duration.iso
ed
(edition) class: att.edition
edRef
(edition reference) class: att.edition
end
class: att.timed
enjamb
(enjambement) class: att.enjamb
evaluate
class: att.pointing
evidence
class: att.editLike
exclude
class: att.global.linking
expand
class: att.lexicographic
extent
class: att.dimensions
extent
class: att.partials
facs
(facsimile) class: att.global.facs
from
class: att.datable.w3c
from
class: att.citing
from-custom
class: att.datable.custom
from-iso
class: att.datable.iso
full
class: att.personal
function
class: att.segLike
group
class: att.damaged
hand
class: att.written
height
class: att.media
ident
class: att.identified
inst
(instances) class: att.interpLike
instant
class: att.editLike
join
class: att.linguistic
key
class: att.canonical
lemma
class: att.linguistic
lemmaRef
class: att.linguistic
location
class: att.lexicographic
lrx
class: att.coordinated
lry
class: att.coordinated
match
class: att.scoping
matchPattern
class: att.patternReplacement
max
class: att.ranging
maxOccurs
(maximum number of occurences) class: att.repeatable
medium
class: att.handFeatures
mergedIn
class: att.lexicographic
met
(metrical structure, conventional) class: att.metrical
mimeType
(MIME media type) class: att.internetMedia
min
class: att.ranging
minOccurs
(minimum number of occurences) class: att.repeatable
mode
class: att.combinable
module
class: att.identified
msd
class: att.linguistic
n
(number) class: att.global
next
class: att.global.linking
norm
(normalized) class: att.lexicographic
notAfter
class: att.datable.w3c
notAfter-custom
class: att.datable.custom
notAfter-iso
class: att.datable.iso
notBefore
class: att.datable.w3c
notBefore-custom
class: att.datable.custom
notBefore-iso
class: att.datable.iso
notation
class: att.notated
ns
(namespace) class: att.namespaceable
nymRef
(reference to the canonical name) class: att.naming
opt
(optional) class: att.lexicographic
org
(organization) class: att.divLike
orig
(original) class: att.lexicographic
part
class: att.fragmentable
period
class: att.datable
place
class: att.placement
points
class: att.coordinated
pos
class: att.linguistic
precision
class: att.dimensions
predeclare
class: att.identified
prev
(previous) class: att.global.linking
quantity
class: att.dimensions
quantity
class: att.measurement
real
(metrical structure, realized) class: att.metrical
ref
(reference) class: att.canonical
rend
(rendition) class: att.global.rendition
rendition
class: att.global.rendition
replacementPattern
class: att.patternReplacement
require
class: att.textCritical
resp
(responsible party) class: att.global.responsibility
rhyme
(rhyme scheme) class: att.metrical
role
class: att.naming
role
class: att.tableDecoration
rows
class: att.tableDecoration
sameAs
class: att.global.linking
sample
class: att.divLike
scale
class: att.media
scheme
class: att.styleDef
schemeVersion
class: att.styleDef
scope
class: att.dimensions
scope
class: att.handFeatures
scribe
class: att.handFeatures
scribeRef
class: att.handFeatures
script
class: att.handFeatures
scriptRef
class: att.handFeatures
select
class: att.global.linking
seq
(sequence) class: att.transcriptional
sort
class: att.personal
sortKey
class: att.sortable
source
class: att.global.source
spanTo
class: att.spanning
split
class: att.lexicographic
start
class: att.timed
start
class: att.coordinated
status
class: att.docStatus
status
class: att.transcriptional
style
class: att.global.rendition
subtype
class: att.typed
synch
(synchronous) class: att.global.linking
targFunc
(target function) class: att.pointing.group
target
class: att.pointing
target
class: att.scoping
targetLang
class: att.pointing
to
class: att.datable.w3c
to
class: att.citing
to-custom
class: att.datable.custom
to-iso
class: att.datable.iso
type
class: att.interpLike
type
class: att.typed
type
class: att.entryLike
type
class: att.textCritical
ulx
class: att.coordinated
uly
class: att.coordinated
unit
class: att.dimensions
unit
class: att.measurement
unit
class: att.milestoneUnit
unit
class: att.citing
url
(uniform resource locator) class: att.resourced
validUntil
class: att.deprecated
value
class: att.lexicographic
valueDatcat
class: att.datcat
varSeq
(variant sequence) class: att.textCritical
versionDate
class: att.translatable
when
class: att.datable.w3c
when-custom
class: att.datable.custom
when-iso
class: att.datable.iso
who
class: att.ascribed
width
class: att.media
wit
(witness or witnesses) class: att.rdgPart
wit
(witness or witnesses) class: att.witnessed
xml:base
class: att.global
xml:id
(identifier) class: att.global
xml:lang
(language) class: att.global
xml:space
class: att.global
expandindicates how references to this class within a content model should be interpreted.
Status Optional
Legal values are:
alternate
any one member of the class may appear
sequence
a single occurrence of all members of the class may appear in sequence
sequenceOptional
a single occurrence of one or more members of the class may appear in sequence
sequenceOptionalRepeatable
one or more occurrences of one or more members of the class may appear in sequence.
sequenceRepeatable
one or more occurrences of all members of the class may appear in sequence
Note

If the members of the class are a, b and c, then a reference to the class within a content model is understood as being a reference to a|b|c when expand has the value alternation; to a,b,c when it has the value sequence; to (a?,b?,c?) when it has the value sequenceOptional; to (a*,b*, c*) when it has the value sequenceOptionalRepeatable; or to (a+,b+,c+) when it has the value sequenceRepeatable.

Member of
Contained by
May containEmpty element
Note

Attribute and model classes are identified by the name supplied as value for the ident attribute on the classSpec element in which they are declared. All TEI names are unique; attribute class names conventionally begin with the letters att..

Example
<schemaSpec ident="myTEIestart="TEI">
 <moduleRef key="tei"/>
 <moduleRef key="core"
  include="abbr add core addrLine address author bibl biblScope choice cit corr date del desc divGen editor emph expan foreign gap gloss graphic head hi index item l label lb lg list listBibl mentioned milestone name note num orig p pb ptr pubPlace publisher q ref reg relatedItem resp respStmt rs sic soCalled sp speaker stage teiCorpus term time title unclear"/>

 <moduleRef key="header"
  include="authority availability catRef category change classCode classDecl creation distributor edition editionStmt editorialDecl encodingDesc extent fileDesc funder idno keywords langUsage language licence notesStmt principal profileDesc projectDesc publicationStmt refsDecl revisionDesc samplingDecl seriesStmt sourceDesc sponsor taxonomy teiHeader textClass titleStmt"/>

 <moduleRef key="textstructure"
  include="TEI argument back body byline closer dateline div docAuthor docDate docEdition docImprint docTitle epigraph front group opener postscript salute signed text titlePage titlePart trailer"/>

 <classRef key="att.global.facs"/>
</schemaSpec>
Content model
<content/>
Schema Declaration
element classRef
{
   cust_att.global.attributes,
   cust_att.repeatable.attributes,
   attribute key
   {
      "att.ascribed"
    | "att.breaking"
    | "att.cReferencing"
    | "att.canonical"
    | "att.citing"
    | "att.combinable"
    | "att.coordinated"
    | "att.damaged"
    | "att.datable"
    | "att.datable.custom"
    | "att.datable.iso"
    | "att.datable.w3c"
    | "att.datcat"
    | "att.declarable"
    | "att.declaring"
    | "att.deprecated"
    | "att.dimensions"
    | "att.divLike"
    | "att.docStatus"
    | "att.duration"
    | "att.duration.iso"
    | "att.duration.w3c"
    | "att.editLike"
    | "att.edition"
    | "att.enjamb"
    | "att.entryLike"
    | "att.fragmentable"
    | "att.global"
    | "att.global.analytic"
    | "att.global.change"
    | "att.global.facs"
    | "att.global.linking"
    | "att.global.rendition"
    | "att.global.responsibility"
    | "att.global.source"
    | "att.handFeatures"
    | "att.identified"
    | "att.internetMedia"
    | "att.interpLike"
    | "att.lexicographic"
    | "att.linguistic"
    | "att.measurement"
    | "att.media"
    | "att.metrical"
    | "att.milestoneUnit"
    | "att.msClass"
    | "att.msExcerpt"
    | "att.namespaceable"
    | "att.naming"
    | "att.notated"
    | "att.partials"
    | "att.patternReplacement"
    | "att.personal"
    | "att.placement"
    | "att.pointing"
    | "att.pointing.group"
    | "att.ranging"
    | "att.rdgPart"
    | "att.repeatable"
    | "att.resourced"
    | "att.scoping"
    | "att.segLike"
    | "att.sortable"
    | "att.spanning"
    | "att.styleDef"
    | "att.tableDecoration"
    | "att.textCritical"
    | "att.timed"
    | "att.transcriptional"
    | "att.translatable"
    | "att.typed"
    | "att.witnessed"
    | "att.written"
    | "model.addrPart"
    | "model.addressLike"
    | "model.applicationLike"
    | "model.availabilityPart"
    | "model.biblLike"
    | "model.biblPart"
    | "model.castItemPart"
    | "model.catDescPart"
    | "model.certLike"
    | "model.choicePart"
    | "model.common"
    | "model.contentPart"
    | "model.correspActionPart"
    | "model.correspContextPart"
    | "model.correspDescPart"
    | "model.dateLike"
    | "model.descLike"
    | "model.dimLike"
    | "model.div1Like"
    | "model.div2Like"
    | "model.div3Like"
    | "model.div4Like"
    | "model.div5Like"
    | "model.div6Like"
    | "model.div7Like"
    | "model.divBottom"
    | "model.divBottomPart"
    | "model.divGenLike"
    | "model.divLike"
    | "model.divPart"
    | "model.divPart.spoken"
    | "model.divTop"
    | "model.divTopPart"
    | "model.divWrapper"
    | "model.editorialDeclPart"
    | "model.egLike"
    | "model.emphLike"
    | "model.encodingDescPart"
    | "model.entryLike"
    | "model.entryPart"
    | "model.entryPart.top"
    | "model.eventLike"
    | "model.featureVal"
    | "model.featureVal.complex"
    | "model.featureVal.single"
    | "model.formPart"
    | "model.frontPart"
    | "model.frontPart.drama"
    | "model.gLike"
    | "model.global"
    | "model.global.edit"
    | "model.global.meta"
    | "model.global.spoken"
    | "model.glossLike"
    | "model.gramPart"
    | "model.graphicLike"
    | "model.headLike"
    | "model.hiLike"
    | "model.highlighted"
    | "model.imprintPart"
    | "model.inter"
    | "model.lLike"
    | "model.lPart"
    | "model.labelLike"
    | "model.lexicalRefinement"
    | "model.limitedPhrase"
    | "model.linePart"
    | "model.listLike"
    | "model.measureLike"
    | "model.milestoneLike"
    | "model.morphLike"
    | "model.msItemPart"
    | "model.msQuoteLike"
    | "model.nameLike"
    | "model.nameLike.agent"
    | "model.noteLike"
    | "model.oddDecl"
    | "model.oddRef"
    | "model.offsetLike"
    | "model.orgPart"
    | "model.orgStateLike"
    | "model.pLike"
    | "model.pLike.front"
    | "model.pPart.data"
    | "model.pPart.edit"
    | "model.pPart.editorial"
    | "model.pPart.msdesc"
    | "model.pPart.transcriptional"
    | "model.persNamePart"
    | "model.persStateLike"
    | "model.personLike"
    | "model.personPart"
    | "model.phrase"
    | "model.phrase.xml"
    | "model.physDescPart"
    | "model.placeLike"
    | "model.placeNamePart"
    | "model.placeStateLike"
    | "model.profileDescPart"
    | "model.ptrLike"
    | "model.ptrLike.form"
    | "model.publicationStmtPart.agency"
    | "model.publicationStmtPart.detail"
    | "model.qLike"
    | "model.quoteLike"
    | "model.rdgLike"
    | "model.rdgPart"
    | "model.recordingPart"
    | "model.resourceLike"
    | "model.respLike"
    | "model.segLike"
    | "model.settingPart"
    | "model.sourceDescPart"
    | "model.specDescLike"
    | "model.stageLike"
    | "model.teiHeaderPart"
    | "model.textDescPart"
    | "model.titlepagePart"
    | teidata.enumerated
   },
   attribute include
   {
      list
      {
         (
            "agent"
          | "ana"
          | "atLeast"
          | "atMost"
          | "break"
          | "cRef"
          | "calendar"
          | "cause"
          | "cause"
          | "cert"
          | "change"
          | "class"
          | "cols"
          | "commodity"
          | "confidence"
          | "copyOf"
          | "corresp"
          | "datcat"
          | "datingMethod"
          | "datingPoint"
          | "decls"
          | "default"
          | "defective"
          | "degree"
          | "domains"
          | "dur"
          | "dur-iso"
          | "ed"
          | "edRef"
          | "end"
          | "enjamb"
          | "evaluate"
          | "evidence"
          | "exclude"
          | "expand"
          | "extent"
          | "extent"
          | "facs"
          | "from"
          | "from"
          | "from-custom"
          | "from-iso"
          | "full"
          | "function"
          | "group"
          | "hand"
          | "height"
          | "ident"
          | "inst"
          | "instant"
          | "join"
          | "key"
          | "lemma"
          | "lemmaRef"
          | "location"
          | "lrx"
          | "lry"
          | "match"
          | "matchPattern"
          | "max"
          | "maxOccurs"
          | "medium"
          | "mergedIn"
          | "met"
          | "mimeType"
          | "min"
          | "minOccurs"
          | "mode"
          | "module"
          | "msd"
          | "n"
          | "next"
          | "norm"
          | "notAfter"
          | "notAfter-custom"
          | "notAfter-iso"
          | "notBefore"
          | "notBefore-custom"
          | "notBefore-iso"
          | "notation"
          | "ns"
          | "nymRef"
          | "opt"
          | "org"
          | "orig"
          | "part"
          | "period"
          | "place"
          | "points"
          | "pos"
          | "precision"
          | "predeclare"
          | "prev"
          | "quantity"
          | "quantity"
          | "real"
          | "ref"
          | "rend"
          | "rendition"
          | "replacementPattern"
          | "require"
          | "resp"
          | "rhyme"
          | "role"
          | "role"
          | "rows"
          | "sameAs"
          | "sample"
          | "scale"
          | "scheme"
          | "schemeVersion"
          | "scope"
          | "scope"
          | "scribe"
          | "scribeRef"
          | "script"
          | "scriptRef"
          | "select"
          | "seq"
          | "sort"
          | "sortKey"
          | "source"
          | "spanTo"
          | "split"
          | "start"
          | "start"
          | "status"
          | "status"
          | "style"
          | "subtype"
          | "synch"
          | "targFunc"
          | "target"
          | "target"
          | "targetLang"
          | "to"
          | "to"
          | "to-custom"
          | "to-iso"
          | "type"
          | "type"
          | "type"
          | "type"
          | "ulx"
          | "uly"
          | "unit"
          | "unit"
          | "unit"
          | "unit"
          | "url"
          | "validUntil"
          | "value"
          | "valueDatcat"
          | "varSeq"
          | "versionDate"
          | "when"
          | "when-custom"
          | "when-iso"
          | "who"
          | "width"
          | "wit"
          | "wit"
          | "xml:base"
          | "xml:id"
          | "xml:lang"
          | "xml:space"
          | teidata.enumerated
         )*
      }
   }?,
   attribute except
   {
      list
      {
         (
            "agent"
          | "ana"
          | "atLeast"
          | "atMost"
          | "break"
          | "cRef"
          | "calendar"
          | "cause"
          | "cause"
          | "cert"
          | "change"
          | "class"
          | "cols"
          | "commodity"
          | "confidence"
          | "copyOf"
          | "corresp"
          | "datcat"
          | "datingMethod"
          | "datingPoint"
          | "decls"
          | "default"
          | "defective"
          | "degree"
          | "domains"
          | "dur"
          | "dur-iso"
          | "ed"
          | "edRef"
          | "end"
          | "enjamb"
          | "evaluate"
          | "evidence"
          | "exclude"
          | "expand"
          | "extent"
          | "extent"
          | "facs"
          | "from"
          | "from"
          | "from-custom"
          | "from-iso"
          | "full"
          | "function"
          | "group"
          | "hand"
          | "height"
          | "ident"
          | "inst"
          | "instant"
          | "join"
          | "key"
          | "lemma"
          | "lemmaRef"
          | "location"
          | "lrx"
          | "lry"
          | "match"
          | "matchPattern"
          | "max"
          | "maxOccurs"
          | "medium"
          | "mergedIn"
          | "met"
          | "mimeType"
          | "min"
          | "minOccurs"
          | "mode"
          | "module"
          | "msd"
          | "n"
          | "next"
          | "norm"
          | "notAfter"
          | "notAfter-custom"
          | "notAfter-iso"
          | "notBefore"
          | "notBefore-custom"
          | "notBefore-iso"
          | "notation"
          | "ns"
          | "nymRef"
          | "opt"
          | "org"
          | "orig"
          | "part"
          | "period"
          | "place"
          | "points"
          | "pos"
          | "precision"
          | "predeclare"
          | "prev"
          | "quantity"
          | "quantity"
          | "real"
          | "ref"
          | "rend"
          | "rendition"
          | "replacementPattern"
          | "require"
          | "resp"
          | "rhyme"
          | "role"
          | "role"
          | "rows"
          | "sameAs"
          | "sample"
          | "scale"
          | "scheme"
          | "schemeVersion"
          | "scope"
          | "scope"
          | "scribe"
          | "scribeRef"
          | "script"
          | "scriptRef"
          | "select"
          | "seq"
          | "sort"
          | "sortKey"
          | "source"
          | "spanTo"
          | "split"
          | "start"
          | "start"
          | "status"
          | "status"
          | "style"
          | "subtype"
          | "synch"
          | "targFunc"
          | "target"
          | "target"
          | "targetLang"
          | "to"
          | "to"
          | "to-custom"
          | "to-iso"
          | "type"
          | "type"
          | "type"
          | "type"
          | "ulx"
          | "uly"
          | "unit"
          | "unit"
          | "unit"
          | "unit"
          | "url"
          | "validUntil"
          | "value"
          | "valueDatcat"
          | "varSeq"
          | "versionDate"
          | "when"
          | "when-custom"
          | "when-iso"
          | "who"
          | "width"
          | "wit"
          | "wit"
          | "xml:base"
          | "xml:id"
          | "xml:lang"
          | "xml:space"
          | teidata.enumerated
         )*
      }
   }?,
   attribute expand
   {
      "alternate"
    | "sequence"
    | "sequenceOptional"
    | "sequenceOptionalRepeatable"
    | "sequenceRepeatable"
   }?,
   empty
}

<classSpec>

<classSpec> (class specification) contains reference information for a TEI element class; that is a group of elements which appear together in content models, or which share some common attribute, or both. [22.3. Specification Elements 22.6. Class Specifications]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.identified (ident, @module, @predeclare) att.combinable (@mode) att.deprecated (@validUntil)
ident
Status Required
Datatype teidata.enumerated
Suggested values include:
att.ascribed
att.breaking
att.cReferencing
att.canonical
att.citing
att.combinable
att.coordinated
att.damaged
att.datable
att.datable.custom
att.datable.iso
att.datable.w3c
att.datcat
att.declarable
att.declaring
att.deprecated
att.dimensions
att.divLike
att.docStatus
att.duration
att.duration.iso
att.duration.w3c
att.editLike
att.edition
att.enjamb
(enjambement)
att.entryLike
att.fragmentable
att.global
att.global.analytic
att.global.change
att.global.facs
att.global.linking
att.global.rendition
att.global.responsibility
att.global.source
att.handFeatures
att.identified
att.internetMedia
att.interpLike
att.lexicographic
att.linguistic
att.measurement
att.media
att.metrical
att.milestoneUnit
att.msClass
att.msExcerpt
(manuscript excerpt)
att.namespaceable
att.naming
att.notated
att.partials
att.patternReplacement
att.personal
(attributes for components of names usually, but not necessarily, personal names)
att.placement
att.pointing
att.pointing.group
att.ranging
att.rdgPart
att.repeatable
att.resourced
att.scoping
att.segLike
att.sortable
att.spanning
att.styleDef
att.tableDecoration
att.textCritical
att.timed
att.transcriptional
att.translatable
att.typed
att.witnessed
att.written
model.addrPart
model.addressLike
model.applicationLike
model.availabilityPart
model.biblLike
model.biblPart
model.castItemPart
model.catDescPart
model.certLike
model.choicePart
model.common
model.contentPart
model.correspActionPart
model.correspContextPart
model.correspDescPart
model.dateLike
model.descLike
model.dimLike
model.div1Like
model.div2Like
model.div3Like
model.div4Like
model.div5Like
model.div6Like
model.div7Like
model.divBottom
model.divBottomPart
model.divGenLike
model.divLike
model.divPart
model.divPart.spoken
model.divTop
model.divTopPart
model.divWrapper
model.editorialDeclPart
model.egLike
model.emphLike
model.encodingDescPart
model.entryLike
model.entryPart
model.entryPart.top
model.eventLike
model.featureVal
model.featureVal.complex
model.featureVal.single
model.formPart
model.frontPart
model.frontPart.drama
model.gLike
model.global
model.global.edit
model.global.meta
model.global.spoken
model.glossLike
model.gramPart
model.graphicLike
model.headLike
model.hiLike
model.highlighted
model.imprintPart
model.inter
model.lLike
model.lPart
model.labelLike
model.lexicalRefinement
model.limitedPhrase
model.linePart
model.listLike
model.measureLike
model.milestoneLike
model.morphLike
model.msItemPart
model.msQuoteLike
model.nameLike
model.nameLike.agent
model.noteLike
model.oddDecl
model.oddRef
model.offsetLike
model.orgPart
model.orgStateLike
model.pLike
model.pLike.front
model.pPart.data
model.pPart.edit
model.pPart.editorial
model.pPart.msdesc
model.pPart.transcriptional
model.persNamePart
model.persStateLike
model.personLike
model.personPart
model.phrase
model.phrase.xml
model.physDescPart
model.placeLike
model.placeNamePart
model.placeStateLike
model.profileDescPart
model.ptrLike
model.ptrLike.form
model.publicationStmtPart.agency
model.publicationStmtPart.detail
model.qLike
model.quoteLike
model.rdgLike
model.rdgPart
model.recordingPart
model.resourceLike
model.respLike
model.segLike
model.settingPart
model.sourceDescPart
model.specDescLike
model.stageLike
model.teiHeaderPart
model.textDescPart
model.titlepagePart
typeindicates whether this is a model class or an attribute class
Status Required
Datatype teidata.enumerated
Legal values are:
model
(content model) members of this class appear in the same content models
atts
(attributes) members of this class share common attributes
generateindicates which alternation and sequence instantiations of a model class may be referenced. By default, all variations are permitted.
Status Optional
Datatype 1–5 occurrences of teidata.enumerated separated by whitespace
Legal values are:
alternation
members of the class are alternatives
sequence
members of the class are to be provided in sequence
sequenceOptional
members of the class may be provided, in sequence, but are optional
sequenceOptionalRepeatable
members of the class may be provided one or more times, in sequence, but are optional.
sequenceRepeatable
members of the class may be provided one or more times, in sequence
Member of
Contained by
May contain
Note

The content of the tei_customization classSpec is somewhat more restrictive than TEI. To wit, neither altIdent nor equiv are permitted, there can be at most one gloss and must be one and only one desc.

Example
<classSpec module="teitype="model"
 ident="model.segLike">

 <desc>groups elements used for arbitrary segmentation.</desc>
 <classes>
  <memberOf key="model.phrase"/>
 </classes>
 <remarks>
  <p>The principles on which segmentation is carried out, and
     any special codes or attribute values used, should be defined explicitly
     in the <gi>segmentation</gi> element of the <gi>encodingDesc</gi> within
     the associated TEI header.</p>
 </remarks>
</classSpec>
Content model
<content>
 <sequence minOccurs="1maxOccurs="1">
  <elementRef minOccurs="0maxOccurs="1"
   key="gloss"/>

  <classRef minOccurs="0maxOccurs="1"
   key="model.descLike"/>

  <elementRef minOccurs="0maxOccurs="1"
   key="classes"/>

  <elementRef minOccurs="0"
   maxOccurs="unboundedkey="constraintSpec"/>

  <elementRef minOccurs="0maxOccurs="1"
   key="attList"/>

  <elementRef minOccurs="0"
   maxOccurs="unboundedkey="exemplum"/>

  <elementRef minOccurs="0"
   maxOccurs="unboundedkey="remarks"/>

  <elementRef minOccurs="0"
   maxOccurs="unboundedkey="listRef"/>

 </sequence>
</content>
Schema Declaration
element classSpec
{
   cust_att.global.attributes,
   cust_att.identified.attribute.module,
   cust_att.identified.attribute.predeclare,
   cust_att.combinable.attribute.mode,
   cust_att.deprecated.attribute.validUntil,
   attribute ident
   {
      "att.ascribed"
    | "att.breaking"
    | "att.cReferencing"
    | "att.canonical"
    | "att.citing"
    | "att.combinable"
    | "att.coordinated"
    | "att.damaged"
    | "att.datable"
    | "att.datable.custom"
    | "att.datable.iso"
    | "att.datable.w3c"
    | "att.datcat"
    | "att.declarable"
    | "att.declaring"
    | "att.deprecated"
    | "att.dimensions"
    | "att.divLike"
    | "att.docStatus"
    | "att.duration"
    | "att.duration.iso"
    | "att.duration.w3c"
    | "att.editLike"
    | "att.edition"
    | "att.enjamb"
    | "att.entryLike"
    | "att.fragmentable"
    | "att.global"
    | "att.global.analytic"
    | "att.global.change"
    | "att.global.facs"
    | "att.global.linking"
    | "att.global.rendition"
    | "att.global.responsibility"
    | "att.global.source"
    | "att.handFeatures"
    | "att.identified"
    | "att.internetMedia"
    | "att.interpLike"
    | "att.lexicographic"
    | "att.linguistic"
    | "att.measurement"
    | "att.media"
    | "att.metrical"
    | "att.milestoneUnit"
    | "att.msClass"
    | "att.msExcerpt"
    | "att.namespaceable"
    | "att.naming"
    | "att.notated"
    | "att.partials"
    | "att.patternReplacement"
    | "att.personal"
    | "att.placement"
    | "att.pointing"
    | "att.pointing.group"
    | "att.ranging"
    | "att.rdgPart"
    | "att.repeatable"
    | "att.resourced"
    | "att.scoping"
    | "att.segLike"
    | "att.sortable"
    | "att.spanning"
    | "att.styleDef"
    | "att.tableDecoration"
    | "att.textCritical"
    | "att.timed"
    | "att.transcriptional"
    | "att.translatable"
    | "att.typed"
    | "att.witnessed"
    | "att.written"
    | "model.addrPart"
    | "model.addressLike"
    | "model.applicationLike"
    | "model.availabilityPart"
    | "model.biblLike"
    | "model.biblPart"
    | "model.castItemPart"
    | "model.catDescPart"
    | "model.certLike"
    | "model.choicePart"
    | "model.common"
    | "model.contentPart"
    | "model.correspActionPart"
    | "model.correspContextPart"
    | "model.correspDescPart"
    | "model.dateLike"
    | "model.descLike"
    | "model.dimLike"
    | "model.div1Like"
    | "model.div2Like"
    | "model.div3Like"
    | "model.div4Like"
    | "model.div5Like"
    | "model.div6Like"
    | "model.div7Like"
    | "model.divBottom"
    | "model.divBottomPart"
    | "model.divGenLike"
    | "model.divLike"
    | "model.divPart"
    | "model.divPart.spoken"
    | "model.divTop"
    | "model.divTopPart"
    | "model.divWrapper"
    | "model.editorialDeclPart"
    | "model.egLike"
    | "model.emphLike"
    | "model.encodingDescPart"
    | "model.entryLike"
    | "model.entryPart"
    | "model.entryPart.top"
    | "model.eventLike"
    | "model.featureVal"
    | "model.featureVal.complex"
    | "model.featureVal.single"
    | "model.formPart"
    | "model.frontPart"
    | "model.frontPart.drama"
    | "model.gLike"
    | "model.global"
    | "model.global.edit"
    | "model.global.meta"
    | "model.global.spoken"
    | "model.glossLike"
    | "model.gramPart"
    | "model.graphicLike"
    | "model.headLike"
    | "model.hiLike"
    | "model.highlighted"
    | "model.imprintPart"
    | "model.inter"
    | "model.lLike"
    | "model.lPart"
    | "model.labelLike"
    | "model.lexicalRefinement"
    | "model.limitedPhrase"
    | "model.linePart"
    | "model.listLike"
    | "model.measureLike"
    | "model.milestoneLike"
    | "model.morphLike"
    | "model.msItemPart"
    | "model.msQuoteLike"
    | "model.nameLike"
    | "model.nameLike.agent"
    | "model.noteLike"
    | "model.oddDecl"
    | "model.oddRef"
    | "model.offsetLike"
    | "model.orgPart"
    | "model.orgStateLike"
    | "model.pLike"
    | "model.pLike.front"
    | "model.pPart.data"
    | "model.pPart.edit"
    | "model.pPart.editorial"
    | "model.pPart.msdesc"
    | "model.pPart.transcriptional"
    | "model.persNamePart"
    | "model.persStateLike"
    | "model.personLike"
    | "model.personPart"
    | "model.phrase"
    | "model.phrase.xml"
    | "model.physDescPart"
    | "model.placeLike"
    | "model.placeNamePart"
    | "model.placeStateLike"
    | "model.profileDescPart"
    | "model.ptrLike"
    | "model.ptrLike.form"
    | "model.publicationStmtPart.agency"
    | "model.publicationStmtPart.detail"
    | "model.qLike"
    | "model.quoteLike"
    | "model.rdgLike"
    | "model.rdgPart"
    | "model.recordingPart"
    | "model.resourceLike"
    | "model.respLike"
    | "model.segLike"
    | "model.settingPart"
    | "model.sourceDescPart"
    | "model.specDescLike"
    | "model.stageLike"
    | "model.teiHeaderPart"
    | "model.textDescPart"
    | "model.titlepagePart"
    | teidata.enumerated
   },
   attribute type { "model" | "atts" },
   attribute generate
   {
      list
      {
         (
            "alternation"
          | "sequence"
          | "sequenceOptional"
          | "sequenceOptionalRepeatable"
          | "sequenceRepeatable"
         ),
         (
            "alternation"
          | "sequence"
          | "sequenceOptional"
          | "sequenceOptionalRepeatable"
          | "sequenceRepeatable"
         )?,
         (
            "alternation"
          | "sequence"
          | "sequenceOptional"
          | "sequenceOptionalRepeatable"
          | "sequenceRepeatable"
         )?,
         (
            "alternation"
          | "sequence"
          | "sequenceOptional"
          | "sequenceOptionalRepeatable"
          | "sequenceRepeatable"
         )?,
         (
            "alternation"
          | "sequence"
          | "sequenceOptional"
          | "sequenceOptionalRepeatable"
          | "sequenceRepeatable"
         )?
      }
   }?,
   (
      cust_gloss?,
      cust_model.descLike?,
      cust_classes?,
      cust_constraintSpec*,
      cust_attList?,
      cust_exemplum*,
      cust_remarks*,
      cust_listRef*
   )
}

<code>

<code> contains literal code from some formal language such as a programming language. [22.1.1. Phrase Level Terms]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
lang(formal language) a name identifying the formal language in which the code is expressed
Status Optional
Datatype teidata.word
Member of
Contained by
May containCharacter data only
Example
<code lang="JAVA"> Size fCheckbox1Size = new Size();
fCheckbox1Size.Height = 500;
fCheckbox1Size.Width = 500;
xCheckbox1.setSize(fCheckbox1Size);
</code>
Content model
<content>
 <textNode/>
</content>
Schema Declaration
element code
{
   cust_att.global.attributes,
   attribute lang { teidata.word }?,
   text
}

<constraint>

<constraint> (constraint rules) the formal rules of a constraint [22.5. Element Specifications]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Contained by
May containEmpty element
Note

For our purposes, constraints must be expressed in ISO Schematron. (TEI permits others, including non-XML expressions, although there is no processing of anything other ISO Schematron.)

Example
<constraintSpec ident="isoconstraint"
 scheme="schematron">

 <constraint>
  <s:assert test="tei:fileDesc/tei:titleStmt/tei:title[@type='main']"> a main title must be supplied
  </s:assert>
 </constraint>
</constraintSpec>
Example
<constraintSpec ident="local"
 scheme="private">

 <constraint>
   (output = (ident(title) ident(author) "You must supply a title or an author"))
 </constraint>
</constraintSpec>
Content model
<content>
 <alternate minOccurs="1"
  maxOccurs="unbounded">

  <elementRef key="sch_assert"/>
  <elementRef key="sch_let"/>
  <elementRef key="sch_ns"/>
  <elementRef key="sch_report"/>
  <elementRef key="sch_rule"/>
  <elementRef key="sch_pattern"/>
 </alternate>
</content>
Schema Declaration
element constraint
{
   cust_att.global.attributes,
   ( sch_assert | sch_let | sch_ns | sch_report | sch_rule | sch_pattern )+
}

<constraintSpec>

<constraintSpec> (constraint on schema) contains a formal constraint, typically expressed in a rule-based schema language, to which a construct must conform in order to be considered valid [22.5. Element Specifications]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.identified (@module, @ident, @predeclare) (att.combinable (@mode) (att.deprecated (@validUntil)) ) att.typed (@type, @subtype)
schemesupplies the name of the language in which the constraints are defined
Status Required
Datatype teidata.enumerated
Suggested values include:
schematron
(ISO Schematron)
Note

These Guidelines no longer recommend, and the available TEI stylesheets no longer support, the use of Schematron 1.x within constraintSpec. Thus the value schematron is used to indicate that ISO Schematron is used within the constraintSpec.

Member of
Contained by
May contain
Example

This constraint uses Schematron to enforce the presence of the spanTo attribute (which comes from an attribute class) on the <addSpan> element:

<constraintSpec ident="demo-c1"
 scheme="schematron">

 <desc>Enforce the presence of the <att>spanTo</att> attribute</desc>
 <constraint>
  <sch:assert test="@spanTo">The spanTo= attribute of <sch:name/>
     is required.</sch:assert>
 </constraint>
</constraintSpec>
Example
<constraintSpec ident="demo-c2"
 scheme="schematron">

 <desc>Implement an accessibility rule which says that pictures should
   have textual explanations</desc>
 <constraint>
  <sch:report test="not(tei:figDesc or tei:head)"> You should
     provide information in a figure from which
     we can construct an alt attribute in HTML </sch:report>
 </constraint>
</constraintSpec>
Example

This constraint uses SPITBOL (a language which is not expressed in XML) to check whether the title and author are identical:

<constraintSpec ident="local"
 scheme="SPITBOL">

 <constraint>
   (output = leq(title,author) "title and author cannot be the same")
 </constraint>
</constraintSpec>
SchematronRelationship between scheme attribute and contents: Schematron 1.x

<sch:ns prefix="s"
 uri="http://www.ascc.net/xml/schematron"/>

<sch:report test="tei:constraint/s:* and @scheme = ('isoschematron','schematron')">Rules
in the Schematron 1.* language must be inside a constraintSpec
with a value other than 'schematron' or 'isoschematron' on the
scheme attribute</sch:report>
SchematronRelationship between scheme attribute and contents: ISO Schematron

<sch:ns prefix="sch"
 uri="http://purl.oclc.org/dsdl/schematron"/>

<sch:report test="tei:constraint/sch:* and not( @scheme eq 'schematron')">Rules
in the ISO Schematron language must be inside a constraintSpec
with the value 'schematron' on the scheme attribute</sch:report>
Schematron

<sch:ns prefix="sch"
 uri="http://purl.oclc.org/dsdl/schematron"/>

<sch:rule context="tei:macroSpec/tei:constraintSpec[@scheme eq 'schematron']/tei:constraint">
<sch:report test="sch:assert|sch:report">An ISO Schematron constraint specification for a macro should not
have an 'assert' or 'report' element without a parent 'rule' element</sch:report>
</sch:rule>
Content model
<content>
 <sequence>
  <alternate minOccurs="0"
   maxOccurs="unbounded">

   <classRef key="model.glossLike"/>
   <classRef key="model.descLike"/>
  </alternate>
  <elementRef key="constraint"
   minOccurs="0"/>

 </sequence>
</content>
Schema Declaration
element constraintSpec
{
   cust_att.global.attributes,
   cust_att.identified.attributes,
   cust_att.typed.attributes,
   attribute scheme { "schematron" | teidata.enumerated },
   ( ( cust_model.glossLike | cust_model.descLike )*, cust_constraint? )
}

<content>

<content> (content model) contains a declaration of the intended content model for the element (or other construct) being specified. [22.5. Element Specifications]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
autoPrefixcontrols whether or not pattern names generated in the corresponding RELAX NG schema source are automatically prefixed to avoid potential nameclashes.
Status Optional
Datatype teidata.truthValue
Legal values are:
true
Each name referenced in e.g. a <rng:ref> element within a content model is automatically prefixed by the value of the prefix attribute on the current schemaSpec [Default]
false
No prefixes are added: any prefix required by the value of the prefix attribute on the current schemaSpec must therefore be supplied explicitly, as appropriate.
Contained by
May contain
Note

As the example shows, content models may be expressed using the RELAX NG syntax directly. To avoid ambiguity when schemas using elements from different namespaces are created, the name supplied for an element in a content model will be automatically prefixed by a short string, as specified by the prefix attribute on schemaSpec. The autoPrefix attribute may be used to reverse this behaviour.

The macro macro.schemaPattern defines which elements may be used to define content models. Alternatively, a content model may be expressed using the TEI valList element.

Example

This content element indicates that the element being specified has no content:

<content/>
Example

This content element defines a content model allowing either a sequence of paragraphs or a series of msItem elements optionally preceded by a summary:

<content>
 <alternate>
  <classRef key="model.pLike"
   maxOccurs="unbounded"/>

  <sequence>
   <elementRef key="summaryminOccurs="0"
    maxOccurs="1"/>

   <elementRef key="msItem"
    maxOccurs="unbounded"/>

  </sequence>
 </alternate>
</content>
Example

This content model defines a content model allowing either a sequence of paragraphs or a series of msItem elements optionally preceded by a summary:

<content>
 <rng:choice>
  <rng:oneOrMore>
   <rng:ref name="model.pLike"/>
  </rng:oneOrMore>
  <rng:group>
   <rng:optional>
    <rng:ref name="summary"/>
   </rng:optional>
   <rng:oneOrMore>
    <rng:ref name="msItem"/>
   </rng:oneOrMore>
  </rng:group>
 </rng:choice>
</content>
Content model
<content>
 <alternate>
  <classRef key="model.contentPart"
   minOccurs="0maxOccurs="unbounded"/>

  <anyElement require="http://relaxng.org/ns/structure/1.0"
   minOccurs="1maxOccurs="unbounded"/>

 </alternate>
</content>
Schema Declaration
element content
{
   cust_att.global.attributes,
   attribute autoPrefix { "true" | "false" }?,
   ( cust_model.contentPart* | anyElement-content+ )
}

<correspAction>

<correspAction> (correspondence action) contains a structured description of the place, the name of a person/organization and the date related to the sending/receiving of a message or any other action related to the correspondence. [2.4.6. Correspondence Description]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.sortable (@sortKey) att.typed (type, @subtype)
typedescribes the nature of the action.
Derived fromatt.typed
Status Optional
Datatype teidata.enumerated
Suggested values include:
sent
information concerning the sending or dispatch of a message.
received
information concerning the receipt of a message.
transmitted
information concerning the transmission of a message, i.e. between the dispatch and the next receipt, redirect or forwarding.
redirected
information concerning the redirection of an unread message.
forwarded
information concerning the forwarding of a message.
Member of
Contained by
header: correspDesc
May contain
Example
<correspAction type="sent">
 <persName>Adelbert von Chamisso</persName>
 <settlement>Vertus</settlement>
 <date when="1807-01-29"/>
</correspAction>
Content model
<content>
 <alternate>
  <classRef key="model.correspActionPart"
   minOccurs="1maxOccurs="unbounded"/>

  <classRef key="model.pLikeminOccurs="1"
   maxOccurs="unbounded"/>

 </alternate>
</content>
Schema Declaration
element correspAction
{
   cust_att.global.attributes,
   cust_att.typed.attribute.subtype,
   cust_att.sortable.attributes,
   attribute type
   {
      "sent"
    | "received"
    | "transmitted"
    | "redirected"
    | "forwarded"
    | teidata.enumerated
   }?,
   ( cust_model.correspActionPart+ | cust_model.pLike+ )
}

<correspContext>

<correspContext> (correspondence context) provides references to preceding or following correspondence related to this piece of correspondence. [2.4.6. Correspondence Description]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
header: correspDesc
May contain
core: note p ptr ref
Example
<correspContext>
 <ptr type="nextsubtype="toAuthor"
  target="http://tei.ibi.hu-berlin.de/berliner-intellektuelle/manuscript?Brief101VarnhagenanBoeckh"/>

 <ptr type="prevsubtype="fromAuthor"
  target="http://tei.ibi.hu-berlin.de/berliner-intellektuelle/manuscript?Brief103BoeckhanVarnhagen"/>

</correspContext>
Example
<correspContext>
 <ref type="prev"
  target="http://weber-gesamtausgabe.de/A040962">
Previous letter of
 <persName>Carl Maria von Weber</persName> to
 <persName>Caroline Brandt</persName>:
 <date when="1816-12-30">December 30, 1816</date>
 </ref>
 <ref type="next"
  target="http://weber-gesamtausgabe.de/A041003">
Next letter of
 <persName>Carl Maria von Weber</persName> to
 <persName>Caroline Brandt</persName>:
 <date when="1817-01-05">January 5, 1817</date>
 </ref>
</correspContext>
Content model
<content>
 <classRef key="model.correspContextPart"
  minOccurs="1maxOccurs="unbounded"/>

</content>
Schema Declaration
element correspContext
{
   cust_att.global.attributes,
   cust_model.correspContextPart+
}

<correspDesc>

<correspDesc> (correspondence description) contains a description of the actions related to one act of correspondence. [2.4.6. Correspondence Description]
Moduleheader
AttributesAttributes att.declarable (@default) att.canonical (@key, @ref) att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.typed (@type, @subtype)
Contained by
May contain
Example
<correspDesc>
 <correspAction type="sent">
  <persName>Carl Maria von Weber</persName>
  <settlement>Dresden</settlement>
  <date when="1817-06-23">23 June 1817</date>
 </correspAction>
 <correspAction type="received">
  <persName>Caroline Brandt</persName>
  <settlement>Prag</settlement>
 </correspAction>
 <correspContext>
  <ref type="prev"
   target="http://www.weber-gesamtausgabe.de/A041209">
Previous letter of
  <persName>Carl Maria von Weber</persName>
     to <persName>Caroline Brandt</persName>:
  <date from="1817-06-19to="1817-06-20">June 19/20, 1817</date>
  </ref>
  <ref type="next"
   target="http://www.weber-gesamtausgabe.de/A041217">
Next letter of
  <persName>Carl Maria von Weber</persName> to
  <persName>Caroline Brandt</persName>:
  <date when="1817-06-27">June 27, 1817</date>
  </ref>
 </correspContext>
</correspDesc>
Content model
<content>
 <alternate>
  <classRef key="model.correspDescPart"
   minOccurs="1maxOccurs="unbounded"/>

  <classRef key="model.pLikeminOccurs="1"
   maxOccurs="unbounded"/>

 </alternate>
</content>
Schema Declaration
element correspDesc
{
   cust_att.declarable.attributes,
   cust_att.canonical.attributes,
   cust_att.global.attributes,
   cust_att.typed.attributes,
   ( cust_model.correspDescPart+ | cust_model.pLike+ )
}

<dataFacet>

<dataFacet> Restricts the value of the strings used to represent values of a datatype, according to XML Schemas: Part 2: Datatypes. [22.5.3.1. Datatypes]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
namethe name of the facet.
Status Required
Datatype teidata.word
Legal values are:
length
minLength
maxLength
pattern
enumeration
whiteSpace
maxInclusive
minInclusive
maxExclusive
minExclusive
totalDigits
fractionDigits
valuethe facet value.
Status Required
Datatype string
Contained by
tagdocs: dataRef
May containEmpty element
Note

This element is only allowed when the parent dataRef refers with name to a datatype from the specification XML Schemas: Part 2: Datatypes.

Example
<datatype>
 <dataRef name="decimal">
  <dataFacet name="maxInclusive"
   value="360.0"/>

  <dataFacet name="minInclusive"
   value="-360.0"/>

 </dataRef>
</datatype>
Example
<dataSpec ident="data.percentage">
 <desc>datatype used for attributes taking an integer value between 0 and 99</desc>
 <content>
  <dataRef name="nonNegativeInteger">
   <dataFacet name="maxInclusive"
    value="99"/>

   <dataFacet name="minInclusivevalue="0"/>
  </dataRef>
 </content>
</dataSpec>
Content model
<content/>
Schema Declaration
element dataFacet
{
   cust_att.global.attributes,
   attribute name
   {
      "length"
    | "minLength"
    | "maxLength"
    | "pattern"
    | "enumeration"
    | "whiteSpace"
    | "maxInclusive"
    | "minInclusive"
    | "maxExclusive"
    | "minExclusive"
    | "totalDigits"
    | "fractionDigits"
   },
   attribute value { string },
   empty
}

<dataRef>

<dataRef> identifies the datatype of an attribute value, either by referencing an item in an externally defined datatype library, or by pointing to a TEI-defined data specification [22.5.3.1. Datatypes]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
key
Status Optional
Datatype teidata.enumerated
Legal values are:
teidata.certainty
teidata.count
teidata.duration.iso
teidata.duration.w3c
teidata.enumerated
teidata.interval
teidata.language
teidata.name
teidata.namespace
teidata.namespaceOrName
teidata.nullOrName
teidata.numeric
teidata.outputMeasurement
teidata.pattern
teidata.percentage
teidata.point
teidata.pointer
teidata.prefix
teidata.probCert
teidata.probability
teidata.replacement
teidata.sex
teidata.temporal.iso
teidata.temporal.w3c
teidata.text
teidata.truthValue
teidata.unboundedInt
teidata.version
teidata.versionNumber
teidata.word
teidata.xTruthValue
(extended truth value)
teidata.xmlName
teidata.xpath
namethe name of a datatype in the list provided by XML Schemas: Part 2: Datatypes
Status Optional
Datatype teidata.xmlName
refa pointer to a datatype defined in some datatype library
Status Optional
Datatype teidata.pointer
restrictionsupplies a string representing a regular expression providing additional constraints on the strings used to represent values of this datatype
Status Optional
Datatype teidata.pattern
Member of
Contained by
May contain
tagdocs: dataFacet
Note

Only one of the attributes key, name, and ref may be used.

Note

dataFacet children are only allowed when dataRef refers with name to a datatype from the specification XML Schemas: Part 2: Datatypes.

Example
<schemaSpec ident="myTEI"
 source="http://www.tei-c.org/Vault/P5/current/xml/tei/odd/p5subset.xml">

<!-- ... -->
 <dataRef key="teidata.enumerated"/>
<!-- ... -->
</schemaSpec>
Example
<schemaSpec ident="myTEI"
 source="http://www.tei-c.org/Vault/P5/current/xml/tei/odd/p5subset.xml">

<!-- ... -->
 <dataRef name="float"/>
<!-- ... -->
</schemaSpec>
Example
<dataSpec ident="data.percentage">
 <desc>datatype used for attributes taking an integer value between 0 and 99</desc>
 <content>
  <dataRef name="nonNegativeInteger"
   restriction="[0-9][0-9]?"/>

 </content>
</dataSpec>
Schematron

<sch:rule context="tei:dataRef[tei:dataFacet]">
<sch:assert test="@namerole="nonfatal">Data facets can only be specified for references to datatypes specified by
XML Schemas: Part 2: Datatypes</sch:assert>
</sch:rule>
Schematron

<sch:rule context="tei:dataRef[tei:dataFacet]">
<sch:report test="@restriction"
 role="nonfatal">
The attribute restriction cannot be used when dataFacet elements are present.</sch:report>
</sch:rule>
Content model
<content>
 <elementRef minOccurs="0"
  maxOccurs="unboundedkey="dataFacet"/>

</content>
Schema Declaration
element dataRef
{
   cust_att.global.attributes,
   attribute key
   {
      "teidata.certainty"
    | "teidata.count"
    | "teidata.duration.iso"
    | "teidata.duration.w3c"
    | "teidata.enumerated"
    | "teidata.interval"
    | "teidata.language"
    | "teidata.name"
    | "teidata.namespace"
    | "teidata.namespaceOrName"
    | "teidata.nullOrName"
    | "teidata.numeric"
    | "teidata.outputMeasurement"
    | "teidata.pattern"
    | "teidata.percentage"
    | "teidata.point"
    | "teidata.pointer"
    | "teidata.prefix"
    | "teidata.probCert"
    | "teidata.probability"
    | "teidata.replacement"
    | "teidata.sex"
    | "teidata.temporal.iso"
    | "teidata.temporal.w3c"
    | "teidata.text"
    | "teidata.truthValue"
    | "teidata.unboundedInt"
    | "teidata.version"
    | "teidata.versionNumber"
    | "teidata.word"
    | "teidata.xTruthValue"
    | "teidata.xmlName"
    | "teidata.xpath"
   }?,
   ( attribute name { teidata.xmlName }? | attribute ref { teidata.pointer }? ),
   attribute restriction { teidata.pattern }?,
   cust_dataFacet*
}

<dataSpec>

<dataSpec> (datatype specification) documents a datatype. [22.3. Specification Elements 22.7. Macro Specifications]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.identified (@module, @ident, @predeclare) (att.combinable (@mode) (att.deprecated (@validUntil)) )
Member of
Contained by
May contain
Example
<dataSpec ident="teidata.pointer">
 <desc versionDate="2013-01-19"
  xml:lang="en">
defines the range of
   attribute values used to provide a single URI, absolute or relative,
   pointing to some other resource, either within the current document
   or elsewhere.</desc>
 <content>
  <dataRef name="anyURI"/>
 </content>
</dataSpec>
Content model
<content>
 <sequence>
  <alternate minOccurs="0"
   maxOccurs="unbounded">

   <classRef key="model.glossLike"/>
   <classRef key="model.descLike"/>
  </alternate>
  <alternate minOccurs="0"
   maxOccurs="unbounded">

   <elementRef key="content"/>
   <elementRef key="valList"/>
  </alternate>
  <elementRef key="constraintSpec"
   minOccurs="0maxOccurs="unbounded"/>

  <elementRef key="exemplumminOccurs="0"
   maxOccurs="unbounded"/>

  <elementRef key="remarksminOccurs="0"
   maxOccurs="unbounded"/>

  <elementRef key="listRefminOccurs="0"
   maxOccurs="unbounded"/>

 </sequence>
</content>
Schema Declaration
element dataSpec
{
   cust_att.global.attributes,
   cust_att.identified.attributes,
   (
      ( cust_model.glossLike | cust_model.descLike )*,
      ( cust_content | cust_valList )*,
      cust_constraintSpec*,
      cust_exemplum*,
      cust_remarks*,
      cust_listRef*
   )
}

<datatype>

<datatype> specifies the declared value for an attribute, by referring to any datatype defined by the chosen schema language. [1.4.2. Datatype Specifications 22.5.3. Attribute List Specification]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
minOccurs(minimum number of occurences) indicates the minimum number of times this datatype may occur in the specification of the attribute being defined
Derived fromatt.repeatable
Status Optional
Datatype teidata.count
Default 1
maxOccurs(maximum number of occurences) indicates the maximum number of times this datatype may occur in the specification of the attribute being defined
Derived fromatt.repeatable
Status Optional
Datatype teidata.unboundedInt
Default 1
Contained by
tagdocs: attDef
May contain
tagdocs: dataRef
Note

In the TEI scheme, most datatypes are expressed using pre-defined TEI macros, which map a name in the form teidata.xxxx to a datatype defined by RELAX NG or the W3C Schema Language.

Example
<datatype>
 <dataRef name="token"/>
</datatype>
Example
<datatype>
 <dataRef key="teidata.enumerated"/>
</datatype>
Example

The encoding in the following example requires that the attribute being defined contain at least two URIs in its value, as is the case for the target attribute of <join>.

<datatype minOccurs="2"
 maxOccurs="unbounded">

 <dataRef key="teidata.pointer"/>
</datatype>
Content model
<content>
 <alternate>
  <elementRef key="dataRef"/>
  <anyElement require="http://relaxng.org/ns/structure/1.0"/>
 </alternate>
</content>
Schema Declaration
element datatype
{
   cust_att.global.attributes,
   attribute minOccurs { teidata.count }?,
   attribute maxOccurs { teidata.unboundedInt }?,
   ( cust_dataRef | anyElement-datatype )
}

<date>

<date> contains a date in any format. [3.5.4. Dates and Times 2.2.4. Publication, Distribution, Licensing, etc. 2.6. The Revision Description 3.11.2.4. Imprint, Size of a Document, and Reprint Information 15.2.3. The Setting Description 13.3.6. Dates and Times]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.datable (@calendar, @period) (att.datable.w3c (@when, @notBefore, @notAfter, @from, @to)) (att.datable.iso (@when-iso, @notBefore-iso, @notAfter-iso, @from-iso, @to-iso)) (att.datable.custom (@when-custom, @notBefore-custom, @notAfter-custom, @from-custom, @to-custom, @datingPoint, @datingMethod)) att.editLike (@evidence, @instant) att.dimensions (@unit, @quantity, @extent, @precision, @scope) (att.ranging (@atLeast, @atMost, @min, @max, @confidence)) att.typed (@type, @subtype)
Member of
Contained by
May contain
Example
<date when="1980-02">early February 1980</date>
Example
Given on the <date when="1977-06-12">Twelfth Day
of June in the Year of Our Lord One Thousand Nine Hundred and Seventy-seven of the Republic
the Two Hundredth and first and of the University the Eighty-Sixth.</date>
Example
<date when="1990-09">September 1990</date>
Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">

  <textNode/>
  <classRef key="model.gLike"/>
  <classRef key="model.phrase"/>
  <classRef key="model.global"/>
 </alternate>
</content>
Schema Declaration
element date
{
   cust_att.global.attributes,
   cust_att.datable.attributes,
   cust_att.editLike.attributes,
   cust_att.dimensions.attributes,
   cust_att.typed.attributes,
   ( text | cust_model.gLike | cust_model.phrase | cust_model.global )*
}

<defaultVal>

<defaultVal> (default value) specifies the default declared value for an attribute. [22.5.3. Attribute List Specification]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.deprecated (@validUntil)
Contained by
tagdocs: attDef
May containCharacter data only
Note

any legal declared value or TEI-defined keyword

Example
<defaultVal>#IMPLIED</defaultVal>
Content model
<content>
 <textNode/>
</content>
Schema Declaration
element defaultVal
{
   cust_att.global.attributes,
   cust_att.deprecated.attributes,
   text
}

<desc>

<desc> (description) contains a brief description of the object documented by its parent element, typically a documentation element or an entity. [22.4.1. Description of Components]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.translatable (@versionDate) att.typed (@type, @subtype)
Member of
Contained by
May contain
Note

When used in a specification element such as elementSpec, TEI convention requires that this be expressed as a finite clause, begining with an active verb.

Example
<desc>contains a brief description of the purpose and intended use of a documentation element, or a brief characterisation of a parent entity </desc>
Content model
<content>
 <macroRef key="macro.limitedContent"/>
</content>
Schema Declaration
element desc
{
   cust_att.global.attributes,
   cust_att.translatable.attributes,
   cust_att.typed.attributes,
   cust_macro.limitedContent
}

<distributor>

<distributor> supplies the name of a person or other agency responsible for the distribution of a text. [2.2.4. Publication, Distribution, Licensing, etc.]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
May contain
Example
<distributor>Oxford Text Archive</distributor>
<distributor>Redwood and Burn Ltd</distributor>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element distributor { cust_att.global.attributes, cust_macro.phraseSeq }

<div>

<div> (text division) contains a subdivision of the front, body, or back of a text. [4.1. Divisions of the Body]
Moduletextstructure
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.divLike (@org, @sample) (att.fragmentable (@part)) att.declaring (@decls) att.written (@hand) att.typed (type, @subtype)
type
Status Optional
Datatype teidata.enumerated
Suggested values include:
section
subsection
subsubsection
Member of
Contained by
textstructure: back body div front
May contain
Example
<body>
 <div type="part">
  <head>Fallacies of Authority</head>
  <p>The subject of which is Authority in various shapes, and the object, to repress all
     exercise of the reasoning faculty.</p>
  <div n="1type="chapter">
   <head>The Nature of Authority</head>
   <p>With reference to any proposed measures having for their object the greatest
       happiness of the greatest number [...]</p>
   <div n="1.1type="section">
    <head>Analysis of Authority</head>
    <p>What on any given occasion is the legitimate weight or influence to be attached to
         authority [...] </p>
   </div>
   <div n="1.2type="section">
    <head>Appeal to Authority, in What Cases Fallacious.</head>
    <p>Reference to authority is open to the charge of fallacy when [...] </p>
   </div>
  </div>
 </div>
</body>
Schematron

<s:report test="ancestor::tei:l"> Abstract model violation: Lines may not contain higher-level structural elements such as div.
</s:report>
Schematron

<s:report test="ancestor::tei:p or ancestor::tei:ab and not(ancestor::tei:floatingText)"> Abstract model violation: p and ab may not contain higher-level structural elements such as div.
</s:report>
Content model
<content>
 <sequence minOccurs="1maxOccurs="1">
  <alternate minOccurs="0"
   maxOccurs="unbounded">

   <classRef key="model.divTop"/>
   <classRef key="model.global"/>
  </alternate>
  <sequence minOccurs="0maxOccurs="1">
   <alternate minOccurs="1maxOccurs="1">
    <sequence minOccurs="1"
     maxOccurs="unbounded">

     <alternate minOccurs="1maxOccurs="1">
      <classRef key="model.divLike"/>
      <classRef key="model.divGenLike"/>
     </alternate>
     <classRef key="model.global"
      minOccurs="0maxOccurs="unbounded"/>

    </sequence>
    <sequence minOccurs="1maxOccurs="1">
     <sequence minOccurs="1"
      maxOccurs="unbounded">

      <classRef key="model.common"/>
      <classRef key="model.global"
       minOccurs="0maxOccurs="unbounded"/>

     </sequence>
     <sequence minOccurs="0"
      maxOccurs="unbounded">

      <alternate minOccurs="1"
       maxOccurs="1">

       <classRef key="model.divLike"/>
       <classRef key="model.divGenLike"/>
      </alternate>
      <classRef key="model.global"
       minOccurs="0maxOccurs="unbounded"/>

     </sequence>
    </sequence>
   </alternate>
   <sequence minOccurs="0"
    maxOccurs="unbounded">

    <classRef key="model.divBottom"/>
    <classRef key="model.global"
     minOccurs="0maxOccurs="unbounded"/>

   </sequence>
  </sequence>
 </sequence>
</content>
Schema Declaration
element div
{
   cust_att.global.attributes,
   cust_att.divLike.attributes,
   cust_att.typed.attribute.subtype,
   cust_att.declaring.attributes,
   cust_att.written.attributes,
   attribute type
   {
      "section" | "subsection" | "subsubsection" | teidata.enumerated
   }?,
   (
      ( cust_model.divTop | cust_model.global )*,
      (
         (
            (
               ( cust_model.divLike | cust_model.divGenLike ),
               cust_model.global*
            )+
          | (
               ( cust_model.common, cust_model.global* )+,
               (
                  ( cust_model.divLike | cust_model.divGenLike ),
                  cust_model.global*
               )*
            )
         ),
         ( cust_model.divBottom, cust_model.global* )*
      )?
   )
}

<divGen>

<divGen> (automatically generated text division) indicates the location at which a textual division generated automatically by a text-processing application is to appear. [3.8.2. Index Entries]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
type
Status Optional
Datatype teidata.enumerated
Legal values are:
attcat
(Catalogue of Attributes)
attclasscat
(Catalogue of Attribute Classes)
elementcat
(Catalogue of Elements)
macrocat
(Catalogue of Macros)
modelclasscat
(Catalogue of Model Classes)
toc
(Table of Contents)
Member of
Contained by
textstructure: back body div front
May contain
core: head
Note

This element is intended primarily for use in document production or manipulation, rather than in the transcription of pre-existing materials; it makes it easier to specify the location of indices, tables of contents, etc., to be generated by text preparation or word processing software.

Example

One use for this element is to allow document preparation software to generate an index and insert it in the appropriate place in the output. The example below assumes that the indexName attribute on <index> elements in the text has been used to specify index entries for the two generated indexes, named NAMES and THINGS:

<back>
 <div1 type="backmat">
  <head>Bibliography</head>
<!-- ... -->
 </div1>
 <div1 type="backmat">
  <head>Indices</head>
  <divGen n="Index Nominumtype="NAMES"/>
  <divGen n="Index Rerumtype="THINGS"/>
 </div1>
</back>
Example

Another use for divGen is to specify the location of an automatically produced table of contents:

<front>
<!--<titlePage>...</titlePage>-->
 <divGen type="toc"/>
 <div>
  <head>Preface</head>
  <p> ... </p>
 </div>
</front>
Content model
<content>
 <classRef key="model.headLike"
  minOccurs="0maxOccurs="unbounded"/>

</content>
Schema Declaration
element divGen
{
   cust_att.global.attributes,
   attribute type
   {
      "attcat"
    | "attclasscat"
    | "elementcat"
    | "macrocat"
    | "modelclasscat"
    | "toc"
   }?,
   cust_model.headLike*
}

<edition>

<edition> describes the particularities of one edition of a text. [2.2.2. The Edition Statement]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
core: bibl
header: editionStmt
May contain
Example
<edition>First edition <date>Oct 1990</date>
</edition>
<edition n="S2">Students' edition</edition>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element edition { cust_att.global.attributes, cust_macro.phraseSeq }

<editionStmt>

<editionStmt> (edition statement) groups information relating to one edition of a text. [2.2.2. The Edition Statement 2.2. The File Description]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Contained by
May contain
Example
<editionStmt>
 <edition n="S2">Students' edition</edition>
 <respStmt>
  <resp>Adapted by </resp>
  <name>Elizabeth Kirk</name>
 </respStmt>
</editionStmt>
Example
<editionStmt>
 <p>First edition, <date>Michaelmas Term, 1991.</date>
 </p>
</editionStmt>
Content model
<content>
 <alternate>
  <classRef key="model.pLikeminOccurs="1"
   maxOccurs="unbounded"/>

  <sequence>
   <elementRef key="edition"/>
   <classRef key="model.respLike"
    minOccurs="0maxOccurs="unbounded"/>

  </sequence>
 </alternate>
</content>
Schema Declaration
element editionStmt
{
   cust_att.global.attributes,
   ( cust_model.pLike+ | ( cust_edition, cust_model.respLike* ) )
}

<editor>

<editor> contains a 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. [3.11.2.2. Titles, Authors, and Editors]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.naming (@role, @nymRef) (att.canonical (@key, @ref))
Member of
Contained by
May contain
Note

A consistent format should be adopted.

Particularly where cataloguing is likely to be based on the content of the header, it is advisable to use generally recognized authority lists for the exact form of personal names.

Example
<editor role="Technical_Editor">Ron Van den Branden</editor>
<editor role="Editor-in-Chief">John Walsh</editor>
<editor role="Managing_Editor">Anne Baillot</editor>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element editor
{
   cust_att.global.attributes,
   cust_att.naming.attributes,
   cust_macro.phraseSeq
}

<eg>

<eg> (example) contains any kind of illustrative example. [22.5. Element Specifications 22.5.3. Attribute List Specification]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
header: change licence
tagdocs: exemplum
textstructure: body div
May contain
Note

If the example contains material in XML markup, either it must be enclosed within a CDATA marked section, or character entity references must be used to represent the markup delimiters. If the example contains well-formed XML, it should be marked using the more specific egXML element.

Example
<p>The
<gi>term</gi> element is declared using the following syntax:
<eg><![CDATA[<!ELEMENT term (%phrase.content;)>]]</eg>
</p>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element eg { cust_att.global.attributes, cust_macro.phraseSeq }

<egXML> [http://www.tei-c.org/ns/Examples]

<egXML> (example of XML) a single XML fragment demonstrating the use of some XML, such as elements, attributes, or processing instructions, etc., in which the egXML element functions as the root element. [22.1.1. Phrase Level Terms]
Namespacehttp://www.tei-c.org/ns/Examples
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
validindicates the intended validity of the example with respect to a schema.
Status Optional
Datatype teidata.enumerated
Legal values are:
true
the example is intended to be fully valid, assuming that its root element, or a provided root element, could have been used as a possible root element in the schema concerned. [Default]
feasible
the example could be transformed into a valid document by inserting any number of valid attributes and child elements anywhere within it; or it is valid against a version of the schema concerned in which the provision of character data, list, element, or attribute values has been made optional.
false
the example is not intended to be valid, and contains deliberate errors.
Member of
Contained by
May contain
tagdocs: egXML
character data
Note

In the source of the TEI Guidelines, this element declares itself and its content as belonging to the namespace http://www.tei-c.org/ns/Examples. This enables the content of the element to be validated independently against the TEI scheme. Where this element is used outside this context, a different namespace or none at all may be preferable. The content must however be a well-formed XML fragment or document: where this is not the case, the more general eg element should be used in preference.

Example
<egXML><div>
  <head>A slide about <gi>egXML</gi>
  </head>
  <list>
   <item>
    <gi>egXML</gi> can be used to give XML examples in the TEI
       Examples namespace</item>
   <item>Attributes values for <att>valid</att>:
   <list rend="collapsed">
     <item>
      <val rend="green">true</val>: intended to be fully
           valid</item>
     <item>
      <val rend="amber">feasible</val>: valid if missing nodes
           provided</item>
     <item>
      <val rend="red">false</val>: not intended to be valid</item>
    </list>
   </item>
   <item>The <att>rend</att> attribute in the TEI namespace can be
       used for recording how parts of the example was rendered.</item>
  </list>
</div>
</egXML>
Example
<egXML valid="feasiblesource="#UND"><text>
  <front>
<!-- front matter for the whole group -->
  </front>
  <group>
   <text>
<!-- first text -->
   </text>
   <text>
<!-- second text -->
   </text>
  </group>
</text>
<!-- This example is not valid TEI, but could be made so by adding missing components -->
</egXML>
Example
      <egXML xmlns="http://www.tei-c.org/ns/Examples" valid="false">          <para xml:lang="en">Doubloons are a pirate's best friend</para>       </egXML>     
Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">

  <textNode/>
  <elementRef key="egXML"/>
  <anyElement except="http://www.tei-c.org/ns/1.0"/>
 </alternate>
</content>
Schema Declaration
element egXML
{
   cust_att.global.attributes,
   attribute valid { "true" | "feasible" | "false" }?,
   ( text | cust_egXML | anyElement-egXML )*
}

<elementRef>

<elementRef> points to the specification for some element which is to be included in a schema [22.2. Modules and Schemas]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.repeatable (@minOccurs, @maxOccurs)
key
Status Required
Datatype teidata.enumerated
Legal values are:
TEI
(TEI document)
ab
(anonymous block)
abbr
(abbreviation)
abstract
accMat
(accompanying material)
acquisition
activity
actor
add
(addition)
addName
(additional name)
addSpan
(added span of text)
additional
additions
addrLine
(address line)
address
adminInfo
(administrative information)
affiliation
age
alt
(alternation)
altGrp
(alternation group)
altIdent
(alternate identifier)
altIdentifier
(alternative identifier)
alternate
am
(abbreviation marker)
analytic
(analytic level)
anchor
(anchor point)
annotationBlock
anyElement
app
(apparatus entry)
appInfo
(application information)
application
arc
argument
att
(attribute)
attDef
(attribute definition)
attList
attRef
(attribute pointer)
author
authority
(release authority)
availability
back
(back matter)
bibl
(bibliographic citation)
biblFull
(fully-structured bibliographic citation)
biblScope
(scope of bibliographic reference)
biblStruct
(structured bibliographic citation)
bicond
(bi-conditional feature-structure constraint)
binary
(binary value)
binaryObject
binding
bindingDesc
(binding description)
birth
bloc
body
(text body)
broadcast
byline
c
(character)
cRefPattern
(canonical reference pattern)
caesura
calendar
calendarDesc
(calendar description)
camera
caption
case
castGroup
(cast list grouping)
castItem
(cast list item)
castList
(cast list)
catDesc
(category description)
catRef
(category reference)
catchwords
category
cb
(column beginning)
cell
certainty
change
channel
(primary channel)
char
(character)
charDecl
(character declarations)
charName
(character name)
charProp
(character property)
choice
cit
(cited quotation)
citedRange
(cited range)
cl
(clause)
classCode
(classification code)
classDecl
(classification declarations)
classRef
classSpec
(class specification)
classes
climate
closer
code
collation
collection
colloc
(collocate)
colophon
cond
(conditional feature-structure constraint)
condition
constitution
constraint
(constraint rules)
constraintSpec
(constraint on schema)
content
(content model)
corr
(correction)
correction
(correction principles)
correspAction
(correspondence action)
correspContext
(correspondence context)
correspDesc
(correspondence description)
country
creation
custEvent
(custodial event)
custodialHist
(custodial history)
damage
damageSpan
(damaged span of text)
dataFacet
dataRef
dataSpec
(datatype specification)
datatype
date
dateline
death
decoDesc
(decoration description)
decoNote
(note on decoration)
def
(definition)
default
(default feature value)
defaultVal
(default value)
del
(deletion)
delSpan
(deleted span of text)
depth
derivation
desc
(description)
dictScrap
(dictionary scrap)
dim
dimensions
distinct
distributor
district
div
(text division)
div1
(level-1 text division)
div2
(level-2 text division)
div3
(level-3 text division)
div4
(level-4 text division)
div5
(level-5 text division)
div6
(level-6 text division)
div7
(level-7 text division)
divGen
(automatically generated text division)
docAuthor
(document author)
docDate
(document date)
docEdition
(document edition)
docImprint
(document imprint)
docTitle
(document title)
domain
(domain of use)
eLeaf
(leaf or terminal node of an embedding tree)
eTree
(embedding tree)
edition
editionStmt
(edition statement)
editor
editorialDecl
(editorial practice declaration)
education
eg
(example)
egXML
(example of XML)
elementRef
elementSpec
(element specification)
email
(electronic mail address)
emph
(emphasized)
empty
encodingDesc
(encoding description)
entry
entryFree
(unstructured entry)
epigraph
epilogue
equipment
equiv
(equivalent)
etym
(etymology)
event
ex
(editorial expansion)
exemplum
expan
(expansion)
explicit
extent
f
(feature)
fDecl
(feature declaration)
fDescr
(feature description (in FSD))
fLib
(feature library)
facsimile
factuality
faith
figDesc
(description of figure)
figure
fileDesc
(file description)
filiation
finalRubric
floatingText
floruit
foliation
foreign
forename
forest
form
(form information group)
formula
front
(front matter)
fs
(feature structure)
fsConstraints
(feature-structure constraints)
fsDecl
(feature structure declaration)
fsDescr
(feature system description (in FSD))
fsdDecl
(feature system declaration)
fsdLink
(feature structure declaration link)
funder
(funding body)
fvLib
(feature-value library)
fw
(forme work)
g
(character or glyph)
gap
gb
(gathering beginning)
gen
(gender)
genName
(generational name component)
geo
(geographical coordinates)
geoDecl
(geographic coordinates declaration)
geogFeat
(geographical feature name)
geogName
(geographical name)
gi
(element name)
gloss
glyph
(character glyph)
glyphName
(character glyph name)
gram
(grammatical information)
gramGrp
(grammatical information group)
graph
graphic
group
handDesc
(description of hands)
handNote
(note on hand)
handNotes
handShift
head
(heading)
headItem
(heading for list items)
headLabel
(heading for list labels)
height
heraldry
hi
(highlighted)
history
hom
(homograph)
hyph
(hyphenation)
hyphenation
iNode
(intermediate (or internal) node)
iType
(inflectional class)
ident
(identifier)
idno
(identifier)
if
iff
(if and only if)
imprimatur
imprint
incident
incipit
index
(index entry)
institution
interaction
interp
(interpretation)
interpGrp
(interpretation group)
interpretation
item
join
joinGrp
(join group)
keywords
kinesic
l
(verse line)
label
lacunaEnd
lacunaStart
lang
(language name)
langKnowledge
(language knowledge)
langKnown
(language known)
langUsage
(language usage)
language
layout
layoutDesc
(layout description)
lb
(line beginning)
lbl
(label)
leaf
lem
(lemma)
lg
(line group)
licence
line
link
linkGrp
(link group)
list
listApp
(list of apparatus entries)
listBibl
(citation list)
listChange
listEvent
(list of events)
listForest
listNym
(list of canonical names)
listOrg
(list of organizations)
listPerson
(list of persons)
listPlace
(list of places)
listPrefixDef
(list of prefix definitions)
listRef
(list of references)
listRelation
listTranspose
listWit
(witness list)
localName
(locally-defined property name)
locale
location
locus
locusGrp
m
(morpheme)
macroRef
macroSpec
(macro specification)
mapping
(character mapping)
material
measure
measureGrp
(measure group)
media
meeting
memberOf
mentioned
metDecl
(metrical notation declaration)
metSym
(metrical notation symbol)
metamark
milestone
mod
model
modelGrp
modelSequence
moduleRef
(module reference)
moduleSpec
(module specification)
monogr
(monographic level)
mood
move
(movement)
msContents
(manuscript contents)
msDesc
(manuscript description)
msFrag
(manuscript fragment)
msIdentifier
(manuscript identifier)
msItem
(manuscript item)
msItemStruct
(structured manuscript item)
msName
(alternative name)
msPart
(manuscript part)
musicNotation
name
(name, proper noun)
nameLink
(name link)
namespace
nationality
node
normalization
notatedMusic
note
notesStmt
(notes statement)
num
(number)
number
numeric
(numeric value)
nym
(canonical name)
oRef
(orthographic-form reference)
objectDesc
objectType
occupation
offset
opener
org
(organization)
orgName
(organization name)
orig
(original form)
origDate
(origin date)
origPlace
(origin place)
origin
orth
(orthographic form)
outputRendition
p
(paragraph)
pRef
(pronunciation reference)
param
paramList
paramSpec
particDesc
(participation description)
pause
pb
(page beginning)
pc
(punctuation character)
per
(person)
performance
persName
(personal name)
person
personGrp
(personal group)
persona
phr
(phrase)
physDesc
(physical description)
place
placeName
population
pos
(part of speech)
postBox
(postal box or post office box)
postCode
(postal code)
postscript
precision
prefixDef
(prefix definition)
preparedness
principal
(principal researcher)
profileDesc
(text-profile description)
projectDesc
(project description)
prologue
pron
(pronunciation)
provenance
ptr
(pointer)
pubPlace
(publication place)
publicationStmt
(publication statement)
publisher
punctuation
purpose
q
(quoted)
quotation
quote
(quotation)
rdg
(reading)
rdgGrp
(reading group)
re
(related entry)
recordHist
(recorded history)
recording
(recording event)
recordingStmt
(recording statement)
redo
ref
(reference)
refState
(reference state)
refsDecl
(references declaration)
reg
(regularization)
region
relatedItem
relation
(relationship)
remarks
rendition
repository
residence
resp
(responsibility)
respStmt
(statement of responsibility)
respons
(responsibility)
restore
retrace
revisionDesc
(revision description)
rhyme
role
roleDesc
(role description)
roleName
root
(root node)
row
rs
(referencing string)
rubric
s
(s-unit)
said
(speech or thought)
salute
(salutation)
samplingDecl
(sampling declaration)
schemaRef
(schema reference)
schemaSpec
(schema specification)
scriptDesc
scriptNote
scriptStmt
(script statement)
seal
sealDesc
(seal description)
secFol
(second folio)
secl
(secluded text)
seg
(arbitrary segment)
segmentation
sense
sequence
series
(series information)
seriesStmt
(series statement)
set
(setting)
setting
settingDesc
(setting description)
settlement
sex
shift
sic
(Latin for thus or so )
signatures
signed
(signature)
soCalled
socecStatus
(socio-economic status)
sound
source
sourceDesc
(source description)
sourceDoc
sp
(speech)
spGrp
(speech group)
space
span
spanGrp
(span group)
speaker
specDesc
(specification description)
specGrp
(specification group)
specGrpRef
(reference to a specification group)
specList
(specification list)
sponsor
stage
(stage direction)
stamp
state
stdVals
(standard values)
street
stress
string
(string value)
styleDefDecl
(style definition language declaration)
subc
(subcategorization)
subst
(substitution)
substJoin
(substitution join)
summary
superEntry
supplied
support
supportDesc
(support description)
surface
surfaceGrp
surname
surplus
surrogates
syll
(syllabification)
symbol
(symbolic value)
table
tag
tagUsage
tagsDecl
(tagging declaration)
taxonomy
tech
(technical stage direction)
teiCorpus
teiHeader
(TEI header)
term
terrain
text
textClass
(text classification)
textDesc
(text description)
textLang
(text language)
textNode
then
time
timeline
title
titlePage
(title page)
titlePart
titleStmt
(title statement)
tns
(tense)
trailer
trait
transcriptionDesc
transpose
tree
triangle
(underspecified embedding tree, so called because of its characteristic shape when drawn)
typeDesc
typeNote
u
(utterance)
unclear
undo
unicodeName
(unicode property name)
usg
(usage)
vAlt
(value alternation)
vColl
(collection of values)
vDefault
(value default)
vLabel
(value label)
vMerge
(merged collection of values)
vNot
(value negation)
vRange
(value range)
val
(value)
valDesc
(value description)
valItem
valList
(value list)
value
variantEncoding
view
vocal
w
(word)
watermark
when
width
wit
witDetail
(witness detail)
witEnd
(fragmented witness end)
witStart
(fragmented witness start)
witness
writing
xenoData
(non-TEI metadata)
xr
(cross-reference phrase)
zone
Member of
Contained by
May containEmpty element
Note

Elements are identified by the name supplied as value for the ident attribute on the elementSpec element in which they are declared. TEI element names are unique.

Example
<elementRef key="p"/>

Include in the schema an element named p available from the current default source.

Example
<elementRef key="psource="tei:1.2.1"/>

Include in the schema an element named p available from the TEI P5 1.2.1 release.

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

<elementSpec>

<elementSpec> (element specification) documents the structure, content, and purpose of a single element type. [22.5. Element Specifications 22. Documentation Elements]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.namespaceable (@ns) att.identified (ident, @module, @predeclare) att.combinable (@mode) att.deprecated (@validUntil)
ident
Status Required
Datatype teidata.enumerated
Suggested values include:
TEI
(TEI document) module: textstructure
ab
(anonymous block) module: linking
abbr
(abbreviation) module: core
abstract
module: header
accMat
(accompanying material) module: msdescription
acquisition
module: msdescription
activity
module: corpus
actor
module: drama
add
(addition) module: core
addName
(additional name) module: namesdates
addSpan
(added span of text) module: transcr
additional
module: msdescription
additions
module: msdescription
addrLine
(address line) module: core
address
module: core
adminInfo
(administrative information) module: msdescription
affiliation
module: namesdates
age
module: namesdates
alt
(alternation) module: linking
altGrp
(alternation group) module: linking
altIdent
(alternate identifier) module: tagdocs
altIdentifier
(alternative identifier) module: msdescription
alternate
module: tagdocs
am
(abbreviation marker) module: transcr
analytic
(analytic level) module: core
anchor
(anchor point) module: linking
annotationBlock
module: spoken
anyElement
module: tagdocs
app
(apparatus entry) module: textcrit
appInfo
(application information) module: header
application
module: header
arc
module: nets
argument
module: textstructure
att
(attribute) module: tagdocs
attDef
(attribute definition) module: tagdocs
attList
module: tagdocs
attRef
(attribute pointer) module: tagdocs
author
module: core
authority
(release authority) module: header
availability
module: header
back
(back matter) module: textstructure
bibl
(bibliographic citation) module: core
biblFull
(fully-structured bibliographic citation) module: header
biblScope
(scope of bibliographic reference) module: core
biblStruct
(structured bibliographic citation) module: core
bicond
(bi-conditional feature-structure constraint) module: iso-fs
binary
(binary value) module: iso-fs
binaryObject
module: core
binding
module: msdescription
bindingDesc
(binding description) module: msdescription
birth
module: namesdates
bloc
module: namesdates
body
(text body) module: textstructure
broadcast
module: spoken
byline
module: textstructure
c
(character) module: analysis
cRefPattern
(canonical reference pattern) module: header
caesura
module: verse
calendar
module: header
calendarDesc
(calendar description) module: header
camera
module: drama
caption
module: drama
case
module: dictionaries
castGroup
(cast list grouping) module: drama
castItem
(cast list item) module: drama
castList
(cast list) module: drama
catDesc
(category description) module: header
catRef
(category reference) module: header
catchwords
module: msdescription
category
module: header
cb
(column beginning) module: core
cell
module: figures
certainty
module: certainty
change
module: header
channel
(primary channel) module: corpus
char
(character) module: gaiji
charDecl
(character declarations) module: gaiji
charName
(character name) module: gaiji
charProp
(character property) module: gaiji
choice
module: core
cit
(cited quotation) module: core
citedRange
(cited range) module: core
cl
(clause) module: analysis
classCode
(classification code) module: header
classDecl
(classification declarations) module: header
classRef
module: tagdocs
classSpec
(class specification) module: tagdocs
classes
module: tagdocs
climate
module: namesdates
closer
module: textstructure
code
module: tagdocs
collation
module: msdescription
collection
module: msdescription
colloc
(collocate) module: dictionaries
colophon
module: msdescription
cond
(conditional feature-structure constraint) module: iso-fs
condition
module: msdescription
constitution
module: corpus
constraint
(constraint rules) module: tagdocs
constraintSpec
(constraint on schema) module: tagdocs
content
(content model) module: tagdocs
corr
(correction) module: core
correction
(correction principles) module: header
correspAction
(correspondence action) module: header
correspContext
(correspondence context) module: header
correspDesc
(correspondence description) module: header
country
module: namesdates
creation
module: header
custEvent
(custodial event) module: msdescription
custodialHist
(custodial history) module: msdescription
damage
module: transcr
damageSpan
(damaged span of text) module: transcr
dataFacet
module: tagdocs
dataRef
module: tagdocs
dataSpec
(datatype specification) module: tagdocs
datatype
module: tagdocs
date
module: core
dateline
module: textstructure
death
module: namesdates
decoDesc
(decoration description) module: msdescription
decoNote
(note on decoration) module: msdescription
def
(definition) module: dictionaries
default
(default feature value) module: iso-fs
defaultVal
(default value) module: tagdocs
del
(deletion) module: core
delSpan
(deleted span of text) module: transcr
depth
module: msdescription
derivation
module: corpus
desc
(description) module: core
dictScrap
(dictionary scrap) module: dictionaries
dim
module: msdescription
dimensions
module: msdescription
distinct
module: core
distributor
module: header
district
module: namesdates
div
(text division) module: textstructure
div1
(level-1 text division) module: textstructure
div2
(level-2 text division) module: textstructure
div3
(level-3 text division) module: textstructure
div4
(level-4 text division) module: textstructure
div5
(level-5 text division) module: textstructure
div6
(level-6 text division) module: textstructure
div7
(level-7 text division) module: textstructure
divGen
(automatically generated text division) module: core
docAuthor
(document author) module: textstructure
docDate
(document date) module: textstructure
docEdition
(document edition) module: textstructure
docImprint
(document imprint) module: textstructure
docTitle
(document title) module: textstructure
domain
(domain of use) module: corpus
eLeaf
(leaf or terminal node of an embedding tree) module: nets
eTree
(embedding tree) module: nets
edition
module: header
editionStmt
(edition statement) module: header
editor
module: core
editorialDecl
(editorial practice declaration) module: header
education
module: namesdates
eg
(example) module: tagdocs
egXML
(example of XML) module: tagdocs
elementRef
module: tagdocs
elementSpec
(element specification) module: tagdocs
email
(electronic mail address) module: core
emph
(emphasized) module: core
empty
module: tagdocs
encodingDesc
(encoding description) module: header
entry
module: dictionaries
entryFree
(unstructured entry) module: dictionaries
epigraph
module: textstructure
epilogue
module: drama
equipment
module: spoken
equiv
(equivalent) module: tagdocs
etym
(etymology) module: dictionaries
event
module: namesdates
ex
(editorial expansion) module: transcr
exemplum
module: tagdocs
expan
(expansion) module: core
explicit
module: msdescription
extent
module: header
f
(feature) module: iso-fs
fDecl
(feature declaration) module: iso-fs
fDescr
(feature description (in FSD)) module: iso-fs
fLib
(feature library) module: iso-fs
facsimile
module: transcr
factuality
module: corpus
faith
module: namesdates
figDesc
(description of figure) module: figures
figure
module: figures
fileDesc
(file description) module: header
filiation
module: msdescription
finalRubric
module: msdescription
floatingText
module: textstructure
floruit
module: namesdates
foliation
module: msdescription
foreign
module: core
forename
module: namesdates
forest
module: nets
form
(form information group) module: dictionaries
formula
module: figures
front
(front matter) module: textstructure
fs
(feature structure) module: iso-fs
fsConstraints
(feature-structure constraints) module: iso-fs
fsDecl
(feature structure declaration) module: iso-fs
fsDescr
(feature system description (in FSD)) module: iso-fs
fsdDecl
(feature system declaration) module: iso-fs
fsdLink
(feature structure declaration link) module: iso-fs
funder
(funding body) module: header
fvLib
(feature-value library) module: iso-fs
fw
(forme work) module: transcr
g
(character or glyph) module: gaiji
gap
module: core
gb
(gathering beginning) module: core
gen
(gender) module: dictionaries
genName
(generational name component) module: namesdates
geo
(geographical coordinates) module: namesdates
geoDecl
(geographic coordinates declaration) module: header
geogFeat
(geographical feature name) module: namesdates
geogName
(geographical name) module: namesdates
gi
(element name) module: tagdocs
gloss
module: core
glyph
(character glyph) module: gaiji
glyphName
(character glyph name) module: gaiji
gram
(grammatical information) module: dictionaries
gramGrp
(grammatical information group) module: dictionaries
graph
module: nets
graphic
module: core
group
module: textstructure
handDesc
(description of hands) module: msdescription
handNote
(note on hand) module: header
handNotes
module: transcr
handShift
module: transcr
head
(heading) module: core
headItem
(heading for list items) module: core
headLabel
(heading for list labels) module: core
height
module: msdescription
heraldry
module: msdescription
hi
(highlighted) module: core
history
module: msdescription
hom
(homograph) module: dictionaries
hyph
(hyphenation) module: dictionaries
hyphenation
module: header
iNode
(intermediate (or internal) node) module: nets
iType
(inflectional class) module: dictionaries
ident
(identifier) module: tagdocs
idno
(identifier) module: header
if
module: iso-fs
iff
(if and only if) module: iso-fs
imprimatur
module: textstructure
imprint
module: core
incident
module: spoken
incipit
module: msdescription
index
(index entry) module: core
institution
module: msdescription
interaction
module: corpus
interp
(interpretation) module: analysis
interpGrp
(interpretation group) module: analysis
interpretation
module: header
item
module: core
join
module: linking
joinGrp
(join group) module: linking
keywords
module: header
kinesic
module: spoken
l
(verse line) module: core
label
module: core
lacunaEnd
module: textcrit
lacunaStart
module: textcrit
lang
(language name) module: dictionaries
langKnowledge
(language knowledge) module: namesdates
langKnown
(language known) module: namesdates
langUsage
(language usage) module: header
language
module: header
layout
module: msdescription
layoutDesc
(layout description) module: msdescription
lb
(line beginning) module: core
lbl
(label) module: dictionaries
leaf
module: nets
lem
(lemma) module: textcrit
lg
(line group) module: core
licence
module: header
line
module: transcr
link
module: linking
linkGrp
(link group) module: linking
list
module: core
listApp
(list of apparatus entries) module: textcrit
listBibl
(citation list) module: core
listChange
module: header
listEvent
(list of events) module: namesdates
listForest
module: nets
listNym
(list of canonical names) module: namesdates
listOrg
(list of organizations) module: namesdates
listPerson
(list of persons) module: namesdates
listPlace
(list of places) module: namesdates
listPrefixDef
(list of prefix definitions) module: header
listRef
(list of references) module: tagdocs
listRelation
module: namesdates
listTranspose
module: transcr
listWit
(witness list) module: textcrit
localName
(locally-defined property name) module: gaiji
locale
module: corpus
location
module: namesdates
locus
module: msdescription
locusGrp
module: msdescription
m
(morpheme) module: analysis
macroRef
module: tagdocs
macroSpec
(macro specification) module: tagdocs
mapping
(character mapping) module: gaiji
material
module: msdescription
measure
module: core
measureGrp
(measure group) module: core
media
module: core
meeting
module: core
memberOf
module: tagdocs
mentioned
module: core
metDecl
(metrical notation declaration) module: verse
metSym
(metrical notation symbol) module: verse
metamark
module: transcr
milestone
module: core
mod
module: transcr
model
module: tagdocs
modelGrp
module: tagdocs
modelSequence
module: tagdocs
moduleRef
(module reference) module: tagdocs
moduleSpec
(module specification) module: tagdocs
monogr
(monographic level) module: core
mood
module: dictionaries
move
(movement) module: drama
msContents
(manuscript contents) module: msdescription
msDesc
(manuscript description) module: msdescription
msFrag
(manuscript fragment) module: msdescription
msIdentifier
(manuscript identifier) module: msdescription
msItem
(manuscript item) module: msdescription
msItemStruct
(structured manuscript item) module: msdescription
msName
(alternative name) module: msdescription
msPart
(manuscript part) module: msdescription
musicNotation
module: msdescription
name
(name, proper noun) module: core
nameLink
(name link) module: namesdates
namespace
module: header
nationality
module: namesdates
node
module: nets
normalization
module: header
notatedMusic
module: figures
note
module: core
notesStmt
(notes statement) module: header
num
(number) module: core
number
module: dictionaries
numeric
(numeric value) module: iso-fs
nym
(canonical name) module: namesdates
oRef
(orthographic-form reference) module: dictionaries
objectDesc
module: msdescription
objectType
module: msdescription
occupation
module: namesdates
offset
module: namesdates
opener
module: textstructure
org
(organization) module: namesdates
orgName
(organization name) module: namesdates
orig
(original form) module: core
origDate
(origin date) module: msdescription
origPlace
(origin place) module: msdescription
origin
module: msdescription
orth
(orthographic form) module: dictionaries
outputRendition
module: tagdocs
p
(paragraph) module: core
pRef
(pronunciation reference) module: dictionaries
param
module: tagdocs
paramList
module: tagdocs
paramSpec
module: tagdocs
particDesc
(participation description) module: corpus
pause
module: spoken
pb
(page beginning) module: core
pc
(punctuation character) module: analysis
per
(person) module: dictionaries
performance
module: drama
persName
(personal name) module: namesdates
person
module: namesdates
personGrp
(personal group) module: namesdates
persona
module: namesdates
phr
(phrase) module: analysis
physDesc
(physical description) module: msdescription
place
module: namesdates
placeName
module: namesdates
population
module: namesdates
pos
(part of speech) module: dictionaries
postBox
(postal box or post office box) module: core
postCode
(postal code) module: core
postscript
module: textstructure
precision
module: certainty
prefixDef
(prefix definition) module: header
preparedness
module: corpus
principal
(principal researcher) module: header
profileDesc
(text-profile description) module: header
projectDesc
(project description) module: header
prologue
module: drama
pron
(pronunciation) module: dictionaries
provenance
module: msdescription
ptr
(pointer) module: core
pubPlace
(publication place) module: core
publicationStmt
(publication statement) module: header
publisher
module: core
punctuation
module: header
purpose
module: corpus
q
(quoted) module: core
quotation
module: header
quote
(quotation) module: core
rdg
(reading) module: textcrit
rdgGrp
(reading group) module: textcrit
re
(related entry) module: dictionaries
recordHist
(recorded history) module: msdescription
recording
(recording event) module: spoken
recordingStmt
(recording statement) module: spoken
redo
module: transcr
ref
(reference) module: core
refState
(reference state) module: header
refsDecl
(references declaration) module: header
reg
(regularization) module: core
region
module: namesdates
relatedItem
module: core
relation
(relationship) module: namesdates
remarks
module: tagdocs
rendition
module: header
repository
module: msdescription
residence
module: namesdates
resp
(responsibility) module: core
respStmt
(statement of responsibility) module: core
respons
(responsibility) module: certainty
restore
module: transcr
retrace
module: transcr
revisionDesc
(revision description) module: header
rhyme
module: verse
role
module: drama
roleDesc
(role description) module: drama
roleName
module: namesdates
root
(root node) module: nets
row
module: figures
rs
(referencing string) module: core
rubric
module: msdescription
s
(s-unit) module: analysis
said
(speech or thought) module: core
salute
(salutation) module: textstructure
samplingDecl
(sampling declaration) module: header
schemaRef
(schema reference) module: header
schemaSpec
(schema specification) module: tagdocs
scriptDesc
module: msdescription
scriptNote
module: header
scriptStmt
(script statement) module: spoken
seal
module: msdescription
sealDesc
(seal description) module: msdescription
secFol
(second folio) module: msdescription
secl
(secluded text) module: transcr
seg
(arbitrary segment) module: linking
segmentation
module: header
sense
module: dictionaries
sequence
module: tagdocs
series
(series information) module: core
seriesStmt
(series statement) module: header
set
(setting) module: drama
setting
module: corpus
settingDesc
(setting description) module: corpus
settlement
module: namesdates
sex
module: namesdates
shift
module: spoken
sic
(Latin for thus or so ) module: core
signatures
module: msdescription
signed
(signature) module: textstructure
soCalled
module: core
socecStatus
(socio-economic status) module: namesdates
sound
module: drama
source
module: msdescription
sourceDesc
(source description) module: header
sourceDoc
module: transcr
sp
(speech) module: core
spGrp
(speech group) module: drama
space
module: transcr
span
module: analysis
spanGrp
(span group) module: analysis
speaker
module: core
specDesc
(specification description) module: tagdocs
specGrp
(specification group) module: tagdocs
specGrpRef
(reference to a specification group) module: tagdocs
specList
(specification list) module: tagdocs
sponsor
module: header
stage
(stage direction) module: core
stamp
module: msdescription
state
module: namesdates
stdVals
(standard values) module: header
street
module: core
stress
module: dictionaries
string
(string value) module: iso-fs
styleDefDecl
(style definition language declaration) module: header
subc
(subcategorization) module: dictionaries
subst
(substitution) module: transcr
substJoin
(substitution join) module: transcr
summary
module: msdescription
superEntry
module: dictionaries
supplied
module: transcr
support
module: msdescription
supportDesc
(support description) module: msdescription
surface
module: transcr
surfaceGrp
module: transcr
surname
module: namesdates
surplus
module: transcr
surrogates
module: msdescription
syll
(syllabification) module: dictionaries
symbol
(symbolic value) module: iso-fs
table
module: figures
tag
module: tagdocs
tagUsage
module: header
tagsDecl
(tagging declaration) module: header
taxonomy
module: header
tech
(technical stage direction) module: drama
teiCorpus
module: core
teiHeader
(TEI header) module: header
term
module: core
terrain
module: namesdates
text
module: textstructure
textClass
(text classification) module: header
textDesc
(text description) module: corpus
textLang
(text language) module: core
textNode
module: tagdocs
then
module: iso-fs
time
module: core
timeline
module: linking
title
module: core
titlePage
(title page) module: textstructure
titlePart
module: textstructure
titleStmt
(title statement) module: header
tns
(tense) module: dictionaries
trailer
module: textstructure
trait
module: namesdates
transcriptionDesc
module: spoken
transpose
module: transcr
tree
module: nets
triangle
(underspecified embedding tree, so called because of its characteristic shape when drawn) module: nets
typeDesc
module: msdescription
typeNote
module: msdescription
u
(utterance) module: spoken
unclear
module: core
undo
module: transcr
unicodeName
(unicode property name) module: gaiji
usg
(usage) module: dictionaries
vAlt
(value alternation) module: iso-fs
vColl
(collection of values) module: iso-fs
vDefault
(value default) module: iso-fs
vLabel
(value label) module: iso-fs
vMerge
(merged collection of values) module: iso-fs
vNot
(value negation) module: iso-fs
vRange
(value range) module: iso-fs
val
(value) module: tagdocs
valDesc
(value description) module: tagdocs
valItem
module: tagdocs
valList
(value list) module: tagdocs
value
module: gaiji
variantEncoding
module: textcrit
view
module: drama
vocal
module: spoken
w
(word) module: analysis
watermark
module: msdescription
when
module: linking
width
module: msdescription
wit
module: textcrit
witDetail
(witness detail) module: textcrit
witEnd
(fragmented witness end) module: textcrit
witStart
(fragmented witness start) module: textcrit
witness
module: textcrit
writing
module: spoken
xenoData
(non-TEI metadata) module: header
xr
(cross-reference phrase) module: dictionaries
zone
module: transcr
prefixspecifies a default prefix which will be prepended to all patterns relating to the element, unless otherwise stated.
Status Optional
Datatype 0–1 occurrences of teidata.xmlName separated by whitespace
Note

Colons, although permitted inside the value, will cause an invalid schema to be generated.

Member of
Contained by
May contain
Example
<elementSpec module="tagdocsident="code">
 <gloss/>
 <desc>contains literal code</desc>
 <classes>
  <memberOf key="model.emphLike"/>
 </classes>
 <content>
  <textNode/>
 </content>
 <attList>
  <attDef ident="typeusage="opt">
   <desc>the language of the code</desc>
   <datatype>
    <dataRef key="teidata.enumerated"/>
   </datatype>
  </attDef>
 </attList>
</elementSpec>
Schematron

<sch:assert test="@mode">in a customization ODD, the mode= attribute of
<elementSpec> should be specified</sch:assert>
<sch:report test="not( @module ) and not( @mode='add')">the module= attribute of <elementSpec> must be specified anytime the mode= is
not 'add'</sch:report>
Schematron

<sch:report test="//tei:elementSpec[ @ident eq current()/@ident and not( . is current() ) ]">Current ODD processors will not correctly handle more than one <elementSpec> with the same @ident</sch:report>
Schematron

<sch:report test="@mode='delete' and @ident='TEI'">Removing <TEI> from your
schema guarantees it is not TEI conformant</sch:report>
<sch:report test="@mode='delete' and @ident='teiHeader'">Removing <teiHeader>
from your schema guarantees it is not TEI conformant</sch:report>
<sch:report test="@mode='delete' and @ident='fileDesc'">Removing <fileDesc> from
your schema guarantees it is not TEI conformant</sch:report>
<sch:report test="@mode='delete' and @ident='titleStmt'">Removing <titleStmt>
from your schema guarantees it is not TEI conformant</sch:report>
<sch:report test="@mode='delete' and @ident='title'">Removing <title> from your
schema guarantees it is not TEI conformant</sch:report>
<sch:report test="@mode='delete' and @ident='publicationStmt'">Removing
<publicationStmt> from your schema guarantees it is not TEI
conformant</sch:report>
<sch:report test="@mode='delete' and @ident='sourceDesc'">Removing <sourceDesc>
from your schema guarantees it is not TEI conformant</sch:report>
Schematron

<sch:rule context="tei:elementSpec[@mode = ('add','replace')]">
<sch:assert test="tei:content">When adding a new element (whether replacing an old one or not), a content model must be specified; but this <elementSpec> does not have a <content> child.</sch:assert>
</sch:rule>
Schematron

<sch:rule context="tei:elementSpec[ @mode eq 'delete']">
<sch:report test="*">When used to delete an element from your schema, the <elementSpec> should be empty</sch:report>
</sch:rule>
Content model
<content>
 <sequence minOccurs="1maxOccurs="1">
  <elementRef key="altIdentminOccurs="0"
   maxOccurs="1"/>

  <elementRef key="equivminOccurs="0"
   maxOccurs="1"/>

  <elementRef key="glossminOccurs="0"
   maxOccurs="1"/>

  <classRef key="model.descLike"
   expand="sequenceOptional"/>

  <elementRef key="classesminOccurs="0"
   maxOccurs="1"/>

  <elementRef key="contentminOccurs="0"
   maxOccurs="1"/>

  <elementRef key="valListminOccurs="0"
   maxOccurs="1"/>

  <elementRef key="constraintSpec"
   minOccurs="0maxOccurs="unbounded"/>

  <elementRef key="attListminOccurs="0"
   maxOccurs="1"/>

  <elementRef key="exemplumminOccurs="0"
   maxOccurs="unbounded"/>

  <elementRef key="remarksminOccurs="0"
   maxOccurs="unbounded"/>

  <elementRef key="listRefminOccurs="0"
   maxOccurs="unbounded"/>

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

<email>

<email> (electronic mail address) contains an email address identifying a location to which email messages can be delivered. [3.5.2. Addresses]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
May contain
Note

The format of a modern Internet email address is defined in RFC 2822

Example
<email>membership@tei-c.org</email>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element email { cust_att.global.attributes, cust_macro.phraseSeq }

<emph>

<emph> (emphasized) marks words or phrases which are stressed or emphasized for linguistic or rhetorical effect. [3.3.2.2. Emphatic Words and Phrases 3.3.2. Emphasis, Foreign Words, and Unusual Language]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
May contain
Example
You took the car and did <emph>what</emph>?!!
Example
<q>What it all comes to is this,</q> he said.
<q>
 <emph>What
   does Christopher Robin do in the morning nowadays?</emph>
</q>
Content model
<content>
 <macroRef key="macro.paraContent"/>
</content>
Schema Declaration
element emph { cust_att.global.attributes, cust_macro.paraContent }

<empty>

<empty> indicates the presence of an empty node within a content model [22. Documentation Elements]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
May containEmpty element
Example
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">

  <empty/>
  <elementRef key="hi"/>
 </alternate>
</content>
Content model
<content/>
Schema Declaration
element empty { cust_att.global.attributes, empty }

<encodingDesc>

<encodingDesc> (encoding description) documents the relationship between an electronic text and the source or sources from which it was derived. [2.3. The Encoding Description 2.1.1. The TEI Header and Its Components]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
header: teiHeader
May contain
Example
<encodingDesc>
 <p>Basic encoding, capturing lexical information only. All
   hyphenation, punctuation, and variant spellings normalized. No
   formatting or layout information preserved.</p>
</encodingDesc>
Content model
<content>
 <alternate minOccurs="1"
  maxOccurs="unbounded">

  <classRef key="model.encodingDescPart"/>
  <classRef key="model.pLike"/>
 </alternate>
</content>
Schema Declaration
element encodingDesc
{
   cust_att.global.attributes,
   ( cust_model.encodingDescPart | cust_model.pLike )+
}

<equiv>

<equiv> (equivalent) specifies a component which is considered equivalent to the parent element, either by co-reference, or by external link. [3.3.4. Terms, Glosses, Equivalents, and Descriptions 22.4.1. Description of Components]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.internetMedia (@mimeType)
namea single word which follows the rules defining a legal XML name (see http://www.w3.org/TR/REC-xml/#dt-name), naming the underlying concept of which the parent is a representation.
Status Optional
Datatype teidata.name
uri(uniform resource identifier) references the underlying concept of which the parent is a representation by means of some external identifier
Status Optional
Datatype teidata.pointer
filterreferences an external script which contains a method to transform instances of this element to canonical TEI
Status Optional
Datatype teidata.pointer
Member of
Contained by
May containEmpty element
Note

The mimeType attribute should be used to supply the MIME media type of the filter script specified by the filter attribute.

Example

The following example declares that the <bo> element is conceptually equivalent to the markup construct <hi rend='bold'>, and that an external definition of this concept is available from the URI indicated

<elementSpec ident="himode="change">
 <equiv name="BOLD"/>
 <desc>bold typography</desc>
 <attList>
  <attDef ident="rendmode="change">
   <valList>
    <valItem ident="bold"/>
   </valList>
  </attDef>
 </attList>
</elementSpec>
<elementSpec ident="bomode="add">
 <equiv name="BOLD"
  uri="http://www.example.com/typesetting/bold"/>

</elementSpec>
Content model
<content>
</content>
Schema Declaration
element equiv
{
   cust_att.global.attributes,
   cust_att.internetMedia.attributes,
   attribute name { teidata.name }?,
   attribute uri { teidata.pointer }?,
   attribute filter { teidata.pointer }?,
   empty
}

<exemplum>

<exemplum> groups an example demonstrating the use of an element along with optional paragraphs of commentary. [22.5. Element Specifications]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.typed (@type, @subtype) att.translatable (@versionDate)
Contained by
May contain
core: p
tagdocs: eg egXML
Example
<exemplum xml:lang="en">
 <p>The <gi>name</gi> element can be used for both personal names and place names:</p>
 <eg xml:space="preserve"><![CDATA[ <q>My dear <name type="person">Mr.           Bennet</name>,</q> said his lady to him one day,           <q>have you heard that <name type="place">Netherfield           Park</name> is let at last?</q>]]></eg>
 <p>As shown above, the <att>type</att> attribute may be used to distinguish the one from the
   other.</p>
</exemplum>
Content model
<content>
 <sequence>
  <classRef key="model.pLikeminOccurs="0"
   maxOccurs="unbounded"/>

  <alternate>
   <elementRef key="egXML"/>
   <elementRef key="eg"/>
  </alternate>
  <classRef key="model.pLikeminOccurs="0"
   maxOccurs="unbounded"/>

 </sequence>
</content>
Schema Declaration
element exemplum
{
   cust_att.global.attributes,
   cust_att.typed.attributes,
   cust_att.translatable.attributes,
   ( cust_model.pLike*, ( cust_egXML | cust_eg ), cust_model.pLike* )
}

<expan>

<expan> (expansion) contains the expansion of an abbreviation. [3.5.5. Abbreviations and Their Expansions]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.editLike (@evidence, @instant)
Member of
Contained by
May contain
Note

The content of this element should be the expanded abbreviation, usually (but not always) a complete word or phrase. The <ex> element provided by the transcr module may be used to mark up sequences of letters supplied within such an expansion.

Note

If abbreviations are expanded silently, this practice should be documented in the <editorialDecl>, either with a <normalization> element or a p.

Example
The address is Southmoor
<choice>
 <expan>Road</expan>
 <abbr>Rd</abbr>
</choice>
Example
<choice xml:lang="la">
 <abbr>Imp</abbr>
 <expan>Imp<ex>erator</ex>
 </expan>
</choice>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element expan
{
   cust_att.global.attributes,
   cust_att.editLike.attributes,
   cust_macro.phraseSeq
}

<extent>

<extent> describes the approximate size of a text stored on some carrier medium or of some other object, digital or non-digital, specified in any convenient units. [2.2.3. Type and Extent of File 2.2. The File Description 3.11.2.4. Imprint, Size of a Document, and Reprint Information 10.7.1. Object Description]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
core: bibl
May contain
Example
<extent>3200 sentences</extent>
<extent>between 10 and 20 Mb</extent>
<extent>ten 3.5 inch high density diskettes</extent>
Example

The <measure> element may be used to supply normalised or machine tractable versions of the size or sizes concerned.

<extent>
 <measure unit="MiBquantity="4.2">About four megabytes</measure>
 <measure unit="pagesquantity="245">245 pages of source
   material</measure>
</extent>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element extent { cust_att.global.attributes, cust_macro.phraseSeq }

<fallback> [http://www.example.org/cannot/really/use/XInclude]

<fallback>
Namespacehttp://www.example.org/cannot/really/use/XInclude
Modulederived-module-tei_customization
Contained by
derived-module-tei_customization: include
May contain
character data
Content model
<content>
 <alternate minOccurs="1"
  maxOccurs="unbounded">

  <textNode/>
  <classRef key="macro.anyXML"/>
 </alternate>
</content>
Schema Declaration
element fallback { ( text | cust_macro.anyXML )+ }

<figDesc>

<figDesc> (description of figure) contains a brief prose description of the appearance or content of a graphic figure, for use when documenting an image without displaying it. [14.4. Specific Elements for Graphic Images]
Modulefigures
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Contained by
figures: figure
May contain
Note

This element is intended for use as an alternative to the content of its parent figure element ; for example, to display when the image is required but the equipment in use cannot display graphic images. It may also be used for indexing or documentary purposes.

Example
<figure>
 <graphic url="emblem1.png"/>
 <head>Emblemi d'Amore</head>
 <figDesc>A pair of naked winged cupids, each holding a
   flaming torch, in a rural setting.</figDesc>
</figure>
Content model
<content>
 <macroRef key="macro.limitedContent"/>
</content>
Schema Declaration
element figDesc { cust_att.global.attributes, cust_macro.limitedContent }

<figure>

<figure> groups elements representing or containing graphic information such as an illustration, formula, or figure. [14.4. Specific Elements for Graphic Images]
Modulefigures
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.placement (@place) att.typed (@type, @subtype)
Member of
Contained by
May contain
Example
<figure>
 <head>The View from the Bridge</head>
 <figDesc>A Whistleresque view showing four or five sailing boats in the foreground, and a
   series of buoys strung out between them.</figDesc>
 <graphic url="http://www.example.org/fig1.png"
  scale="0.5"/>

</figure>
Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">

  <classRef key="model.headLike"/>
  <classRef key="model.common"/>
  <elementRef key="figDesc"/>
  <classRef key="model.graphicLike"/>
  <classRef key="model.global"/>
  <classRef key="model.divBottom"/>
 </alternate>
</content>
Schema Declaration
element figure
{
   cust_att.global.attributes,
   cust_att.placement.attributes,
   cust_att.typed.attributes,
   (
      cust_model.headLike
    | cust_model.common
    | cust_figDesc
    | cust_model.graphicLike
    | cust_model.global
    | cust_model.divBottom
   )*
}

<fileDesc>

<fileDesc> (file description) contains a full bibliographic description of an electronic file. [2.2. The File Description 2.1.1. The TEI Header and Its Components]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Contained by
May contain
Note

The major source of information for those seeking to create a catalogue entry or bibliographic citation for an electronic file. As such, it provides a title and statements of responsibility together with details of the publication or distribution of the file, of any series to which it belongs, and detailed bibliographic notes for matters not addressed elsewhere in the header. It also contains a full bibliographic description for the source or sources from which the electronic text was derived.

Example
<fileDesc>
 <titleStmt>
  <title>The shortest possible TEI document</title>
 </titleStmt>
 <publicationStmt>
  <p>Distributed as part of TEI P5</p>
 </publicationStmt>
 <sourceDesc>
  <p>No print source exists: this is an original digital text</p>
 </sourceDesc>
</fileDesc>
Content model
<content>
 <sequence>
  <sequence>
   <elementRef key="titleStmt"/>
   <elementRef key="editionStmt"
    minOccurs="0"/>

   <elementRef key="extentminOccurs="0"/>
   <elementRef key="publicationStmt"/>
   <elementRef key="seriesStmt"
    minOccurs="0"/>

   <elementRef key="notesStmt"
    minOccurs="0"/>

  </sequence>
  <elementRef key="sourceDesc"
   minOccurs="1maxOccurs="unbounded"/>

 </sequence>
</content>
Schema Declaration
element fileDesc
{
   cust_att.global.attributes,
   (
      (
         cust_titleStmt,
         cust_editionStmt?,
         cust_extent?,
         cust_publicationStmt,
         cust_seriesStmt?,
         cust_notesStmt?
      ),
      cust_sourceDesc+
   )
}

<foreign>

<foreign> identifies a word or phrase as belonging to some language other than that of the surrounding text. [3.3.2.1. Foreign Words or Expressions]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
May contain
Note

The global xml:lang attribute should be supplied for this element to identify the language of the word or phrase marked. As elsewhere, its value should be a language tag as defined in 6.1. Language Identification.

This element is intended for use only where no other element is available to mark the phrase or words concerned. The global xml:lang attribute should be used in preference to this element where it is intended to mark the language of the whole of some text element.

The <distinct> element may be used to identify phrases belonging to sublanguages or registers not generally regarded as true languages.

Example
This is
heathen Greek to you still? Your <foreign xml:lang="la">lapis
philosophicus</foreign>?
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element foreign { cust_att.global.attributes, cust_macro.phraseSeq }

<formula>

<formula> contains a mathematical or other formula. [14.2. Formulæ and Mathematical Expressions]
Modulefigures
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.notated (@notation)
Member of
Contained by
May contain
figures: formula
character data
Example
<formula notation="tex">$E=mc^2$</formula>
Example
<formula notation="none">E=mc<hi rend="sup">2</hi>
</formula>
Example
<formula notation="mathml">
 <m:math>
  <m:mi>E</m:mi>
  <m:mo>=</m:mo>
  <m:mi>m</m:mi>
  <m:msup>
   <m:mrow>
    <m:mi>c</m:mi>
   </m:mrow>
   <m:mrow>
    <m:mn>2</m:mn>
   </m:mrow>
  </m:msup>
 </m:math>
</formula>
Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">

  <textNode/>
  <classRef key="model.graphicLike"/>
  <classRef key="model.hiLike"/>
 </alternate>
</content>
Schema Declaration
element formula
{
   cust_att.global.attributes,
   cust_att.notated.attributes,
   ( text | cust_model.graphicLike | cust_model.hiLike )*
}

<front>

<front> (front matter) contains any prefatory matter (headers, abstracts, title page, prefaces, dedications, etc.) found at the start of a document, before the main body. [4.6. Title Pages 4. Default Text Structure]
Moduletextstructure
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.declaring (@decls)
Contained by
textstructure: text
May contain
figures: figure
textstructure: div
Note

Because cultural conventions differ as to which elements are grouped as front matter and which as back matter, the content models for the front and back elements are identical.

Example
<front>
 <epigraph>
  <quote>Nam Sibyllam quidem Cumis ego ipse oculis meis vidi in ampulla
     pendere, et cum illi pueri dicerent: <q xml:lang="gr">Σίβυλλα τί
       θέλεις</q>; respondebat illa: <q xml:lang="gr">ὰποθανεῖν θέλω.</q>
  </quote>
 </epigraph>
 <div type="dedication">
  <p>For Ezra Pound <q xml:lang="it">il miglior fabbro.</q>
  </p>
 </div>
</front>
Example
<front>
 <div type="dedication">
  <p>To our three selves</p>
 </div>
 <div type="preface">
  <head>Author's Note</head>
  <p>All the characters in this book are purely imaginary, and if the
     author has used names that may suggest a reference to living persons
     she has done so inadvertently. ...</p>
 </div>
</front>
Example
<front>
 <div type="abstract">
  <div>
   <head> BACKGROUND:</head>
   <p>Food insecurity can put children at greater risk of obesity because
       of altered food choices and nonuniform consumption patterns.</p>
  </div>
  <div>
   <head> OBJECTIVE:</head>
   <p>We examined the association between obesity and both child-level
       food insecurity and personal food insecurity in US children.</p>
  </div>
  <div>
   <head> DESIGN:</head>
   <p>Data from 9,701 participants in the National Health and Nutrition
       Examination Survey, 2001-2010, aged 2 to 11 years were analyzed.
       Child-level food insecurity was assessed with the US Department of
       Agriculture's Food Security Survey Module based on eight
       child-specific questions. Personal food insecurity was assessed with
       five additional questions. Obesity was defined, using physical
       measurements, as body mass index (calculated as kg/m2) greater than
       or equal to the age- and sex-specific 95th percentile of the Centers
       for Disease Control and Prevention growth charts. Logistic
       regressions adjusted for sex, race/ethnic group, poverty level, and
       survey year were conducted to describe associations between obesity
       and food insecurity.</p>
  </div>
  <div>
   <head> RESULTS:</head>
   <p>Obesity was significantly associated with personal food insecurity
       for children aged 6 to 11 years (odds ratio=1.81; 95% CI 1.33 to
       2.48), but not in children aged 2 to 5 years (odds ratio=0.88; 95%
       CI 0.51 to 1.51). Child-level food insecurity was not associated
       with obesity among 2- to 5-year-olds or 6- to 11-year-olds.</p>
  </div>
  <div>
   <head> CONCLUSIONS:</head>
   <p>Personal food insecurity is associated with an increased risk of
       obesity only in children aged 6 to 11 years. Personal
       food-insecurity measures may give different results than aggregate
       food-insecurity measures in children.</p>
  </div>
 </div>
</front>
Content model
<content>
 <sequence>
  <alternate minOccurs="0"
   maxOccurs="unbounded">

   <classRef key="model.frontPart"/>
   <classRef key="model.pLike"/>
   <classRef key="model.pLike.front"/>
   <classRef key="model.global"/>
  </alternate>
  <sequence minOccurs="0">
   <alternate>
    <sequence>
     <classRef key="model.div1Like"/>
     <alternate minOccurs="0"
      maxOccurs="unbounded">

      <classRef key="model.div1Like"/>
      <classRef key="model.frontPart"/>
      <classRef key="model.global"/>
     </alternate>
    </sequence>
    <sequence>
     <classRef key="model.divLike"/>
     <alternate minOccurs="0"
      maxOccurs="unbounded">

      <classRef key="model.divLike"/>
      <classRef key="model.frontPart"/>
      <classRef key="model.global"/>
     </alternate>
    </sequence>
   </alternate>
   <sequence minOccurs="0">
    <classRef key="model.divBottom"/>
    <alternate minOccurs="0"
     maxOccurs="unbounded">

     <classRef key="model.divBottom"/>
     <classRef key="model.global"/>
    </alternate>
   </sequence>
  </sequence>
 </sequence>
</content>
Schema Declaration
element front
{
   cust_att.global.attributes,
   cust_att.declaring.attributes,
   (
      (
         cust_model.frontPart
       | cust_model.pLike
       | cust_model.pLike.front
       | cust_model.global
      )*,
      (
         (
            (
               cust_model.div1Like,
               (
                  cust_model.div1Like
                | cust_model.frontPart
                | cust_model.global
               )*
            )
          | (
               cust_model.divLike,
               (
                  cust_model.divLike
                | cust_model.frontPart
                | cust_model.global
               )*
            )
         ),
         (
            cust_model.divBottom,
            ( cust_model.divBottom | cust_model.global )*
         )?
      )?
   )
}

<funder>

<funder> (funding body) specifies the name of an individual, institution, or organization responsible for the funding of a project or text. [2.2.1. The Title Statement]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.canonical (@key, @ref)
Member of
Contained by
May contain
Note

Funders provide financial support for a project; they are distinct from sponsors (see element sponsor), who provide intellectual support and authority.

Example
<funder>The National Endowment for the Humanities, an independent federal agency</funder>
<funder>Directorate General XIII of the Commission of the European Communities</funder>
<funder>The Andrew W. Mellon Foundation</funder>
<funder>The Social Sciences and Humanities Research Council of Canada</funder>
Content model
<content>
 <macroRef key="macro.phraseSeq.limited"/>
</content>
Schema Declaration
element funder
{
   cust_att.global.attributes,
   cust_att.canonical.attributes,
   cust_macro.phraseSeq.limited
}

<gi>

<gi> (element name) contains the name (generic identifier) of an element. [22. Documentation Elements 22.5. Element Specifications]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
scheme
Status Optional
Datatype teidata.enumerated
Suggested values include:
imaginary
extreme
(Extreme conference proceedings markup)
DBK
(Docbook)
SMIL
Schematron
HTML
(XHTML)
SVG
WWP
DHQ
Member of
Contained by
May containEmpty element
Example
<p>The <gi>xhtml:li</gi> element is roughly analogous to the <gi>item</gi> element, as is the
<gi scheme="DBK">listItem</gi> element.</p>

This example shows the use of both a namespace prefix and the schema attribute as alternative ways of indicating that the gi in question is not a TEI element name: in practice only one method should be adopted.

Content model
<content>
 <dataRef key="teidata.name"/>
</content>
Schema Declaration
element gi
{
   cust_att.global.attributes,
   attribute scheme
   {
      "imaginary"
    | "extreme"
    | "DBK"
    | "SMIL"
    | "Schematron"
    | "HTML"
    | "SVG"
    | "WWP"
    | "DHQ"
    | teidata.enumerated
   }?,
   teidata.name
}

<gloss>

<gloss> identifies a phrase or word used to provide a gloss or definition for some other word or phrase. [3.3.4. Terms, Glosses, Equivalents, and Descriptions 22.4.1. Description of Components]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.declaring (@decls) att.translatable (@versionDate) att.typed (@type, @subtype) att.pointing (@targetLang, @target, @evaluate) att.cReferencing (@cRef)
Member of
Contained by
May contain
Note

The target and cRef attributes are mutually exclusive.

Example
We may define <term xml:id="tdpvrend="sc">discoursal point of view</term> as
<gloss target="#tdpv">the relationship, expressed
through discourse structure, between the implied author or some other addresser, and the
fiction.</gloss>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element gloss
{
   cust_att.global.attributes,
   cust_att.declaring.attributes,
   cust_att.translatable.attributes,
   cust_att.typed.attributes,
   cust_att.pointing.attributes,
   cust_att.cReferencing.attributes,
   cust_macro.phraseSeq
}

<graphic>

<graphic> indicates the location of a graphic or illustration, either forming part of a text, or providing an image of it. [3.9. Graphics and Other Non-textual Components 11.1. Digital Facsimiles]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.media (@width, @height, @scale) (att.internetMedia (@mimeType)) att.resourced (@url) att.declaring (@decls)
Member of
Contained by
May contain
core: desc
Note

The mimeType attribute should be used to supply the MIME media type of the image specified by the url attribute.

Within the body of a text, a graphic element indicates the presence of a graphic component in the source itself. Within the context of a <facsimile> or <sourceDoc> element, however, a graphic element provides an additional digital representation of some part of the source being encoded.

Example
<figure>
 <graphic url="fig1.png"/>
 <head>Figure One: The View from the Bridge</head>
 <figDesc>A Whistleresque view showing four or five sailing boats in the foreground, and a
   series of buoys strung out between them.</figDesc>
</figure>
Example
<facsimile>
 <surfaceGrp n="leaf1">
  <surface>
   <graphic url="page1.png"/>
  </surface>
  <surface>
   <graphic url="page2-highRes.png"/>
   <graphic url="page2-lowRes.png"/>
  </surface>
 </surfaceGrp>
</facsimile>
Content model
<content>
 <classRef key="model.descLike"
  minOccurs="0maxOccurs="unbounded"/>

</content>
Schema Declaration
element graphic
{
   cust_att.global.attributes,
   cust_att.media.attributes,
   cust_att.resourced.attributes,
   cust_att.declaring.attributes,
   cust_model.descLike*
}
<head> (heading) contains any type of heading, for example the title of a section, or the heading of a list, glossary, manuscript description, etc. [4.2.1. Headings and Trailers]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.typed (@type, @subtype) att.placement (@place) att.written (@hand)
Member of
Contained by
core: divGen list
figures: figure table
textstructure: back body div front
May contain
Note

The head element is used for headings at all levels; software which treats (e.g.) chapter headings, section headings, and list titles differently must determine the proper processing of a head element based on its structural position. A head occurring as the first element of a list is the title of that list; one occurring as the first element of a <div1> is the title of that chapter or section.

Example

The most common use for the head element is to mark the headings of sections. In older writings, the headings or incipits may be rather longer than usual in modern works. If a section has an explicit ending as well as a heading, it should be marked as a <trailer>, as in this example:

<div1 n="Itype="book">
 <head>In the name of Christ here begins the first book of the ecclesiastical history of
   Georgius Florentinus, known as Gregory, Bishop of Tours.</head>
 <div2 type="section">
  <head>In the name of Christ here begins Book I of the history.</head>
  <p>Proposing as I do ...</p>
  <p>From the Passion of our Lord until the death of Saint Martin four hundred and twelve
     years passed.</p>
  <trailer>Here ends the first Book, which covers five thousand, five hundred and ninety-six
     years from the beginning of the world down to the death of Saint Martin.</trailer>
 </div2>
</div1>
Example

When headings are not inline with the running text (see e.g. the heading "Secunda conclusio") they might however be encoded as if. The actual placement in the source document can be captured with the place attribute.

<div type="subsection">
 <head place="margin">Secunda conclusio</head>
 <p>
  <lb n="1251"/>
  <hi rend="large">Potencia: habitus: et actus: recipiunt speciem ab obiectis<supplied>.</supplied>
  </hi>
  <lb n="1252"/>Probatur sic. Omne importans necessariam habitudinem ad proprium
   [...]
 </p>
</div>
Example

The head element is also used to mark headings of other units, such as lists:

With a few exceptions, connectives are equally
useful in all kinds of discourse: description, narration, exposition, argument. <list rend="bulleted">
 <head>Connectives</head>
 <item>above</item>
 <item>accordingly</item>
 <item>across from</item>
 <item>adjacent to</item>
 <item>again</item>
 <item>
<!-- ... -->
 </item>
</list>
Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">

  <textNode/>
  <elementRef key="lg"/>
  <classRef key="model.gLike"/>
  <classRef key="model.phrase"/>
  <classRef key="model.inter"/>
  <classRef key="model.lLike"/>
  <classRef key="model.global"/>
 </alternate>
</content>
Schema Declaration
element head
{
   cust_att.global.attributes,
   cust_att.typed.attributes,
   cust_att.placement.attributes,
   cust_att.written.attributes,
   (
      text
    | lg
    | cust_model.gLike
    | cust_model.phrase
    | cust_model.inter
    | cust_model.lLike
    | cust_model.global
   )*
}

<headItem>

<headItem> (heading for list items) contains the heading for the item or gloss column in a glossary list or similar structured list. [3.7. Lists]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Contained by
core: list
May contain
Note

The headItem element may appear only if each item in the list is preceded by a label.

Example
The simple, straightforward statement of an
idea is preferable to the use of a worn-out expression. <list type="gloss">
 <headLabel rend="smallcaps">TRITE</headLabel>
 <headItem rend="smallcaps">SIMPLE, STRAIGHTFORWARD</headItem>
 <label>bury the hatchet</label>
 <item>stop fighting, make peace</item>
 <label>at loose ends</label>
 <item>disorganized</item>
 <label>on speaking terms</label>
 <item>friendly</item>
 <label>fair and square</label>
 <item>completely honest</item>
 <label>at death's door</label>
 <item>near death</item>
</list>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element headItem { cust_att.global.attributes, cust_macro.phraseSeq }

<headLabel>

<headLabel> (heading for list labels) contains the heading for the label or term column in a glossary list or similar structured list. [3.7. Lists]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Contained by
core: list
May contain
Note

The headLabel element may appear only if each item in the list is preceded by a label.

Example
The simple, straightforward statement of an
idea is preferable to the use of a worn-out expression. <list type="gloss">
 <headLabel rend="smallcaps">TRITE</headLabel>
 <headItem rend="smallcaps">SIMPLE, STRAIGHTFORWARD</headItem>
 <label>bury the hatchet</label>
 <item>stop fighting, make peace</item>
 <label>at loose ends</label>
 <item>disorganized</item>
 <label>on speaking terms</label>
 <item>friendly</item>
 <label>fair and square</label>
 <item>completely honest</item>
 <label>at death's door</label>
 <item>near death</item>
</list>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element headLabel { cust_att.global.attributes, cust_macro.phraseSeq }

<hi>

<hi> (highlighted) marks a word or phrase as graphically distinct from the surrounding text, for reasons concerning which no claim is made. [3.3.2.2. Emphatic Words and Phrases 3.3.2. Emphasis, Foreign Words, and Unusual Language]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.written (@hand)
Member of
Contained by
May contain
Example
<hi rend="gothic">And this Indenture further witnesseth</hi>
that the said <hi rend="italic">Walter Shandy</hi>, merchant,
in consideration of the said intended marriage ...
Content model
<content>
 <macroRef key="macro.paraContent"/>
</content>
Schema Declaration
element hi
{
   cust_att.global.attributes,
   cust_att.written.attributes,
   cust_macro.paraContent
}

<ident>

<ident> (identifier) contains an identifier or name for an object of some kind in a formal language. ident is used for tokens such as variable names, class names, type names, function names etc. in formal programming languages. [22.1.1. Phrase Level Terms]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.typed (type, @subtype)
type
Status Optional
Datatype teidata.enumerated
Suggested values include:
ge
(general entity name)
rng
(RELAX NG identifier)
frag
(DTD fragment identifier)
macro
ns
(namespace)
schema
pe
(parameter entity name)
datatype
file
module
class
Member of
Contained by
May containCharacter data only
Note

In running prose, this element may be used for any kind of identifier in any formal language. It should not be used for element and attribute names in XML, for which the special elements gi and att are provided.

Example
<ident type="ns">http://www.tei-c.org/ns/Examples</ident>
Content model
<content>
 <textNode/>
</content>
Schema Declaration
element ident
{
   cust_att.global.attributes,
   cust_att.typed.attribute.subtype,
   attribute type
   {
      "ge"
    | "rng"
    | "frag"
    | "macro"
    | "ns"
    | "schema"
    | "pe"
    | "datatype"
    | "file"
    | "module"
    | "class"
    | teidata.enumerated
   }?,
   text
}

<idno>

<idno> (identifier) supplies any form of identifier used to identify some object, such as a bibliographic item, a person, a title, an organization, etc. in a standardized way. [2.2.4. Publication, Distribution, Licensing, etc. 2.2.5. The Series Statement 3.11.2.4. Imprint, Size of a Document, and Reprint Information]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.sortable (@sortKey) att.datable (@calendar, @period) (att.datable.w3c (@when, @notBefore, @notAfter, @from, @to)) (att.datable.iso (@when-iso, @notBefore-iso, @notAfter-iso, @from-iso, @to-iso)) (att.datable.custom (@when-custom, @notBefore-custom, @notAfter-custom, @from-custom, @to-custom, @datingPoint, @datingMethod)) att.typed (type, @subtype)
type
Status Optional
Datatype teidata.enumerated
Suggested values include:
doi
(Digital Object Identifier)
isbn
(International Standard Book Number)
url
any form of web address
Member of
Contained by
May contain
header: idno
character data
Note

idno should be used for labels which identify an object or concept in a formal cataloguing system such as a database or an RDF store, or in a distributed system such as the World Wide Web. Some suggested values for type on idno are ISBN, ISSN, DOI, and URI.

Example
<idno type="ISBN">978-1-906964-22-1</idno>
<idno type="ISSN">0143-3385</idno>
<idno type="DOI">10.1000/123</idno>
<idno type="URI">http://www.worldcat.org/oclc/185922478</idno>
<idno type="URI">http://authority.nzetc.org/463/</idno>
<idno type="LT">Thomason Tract E.537(17)</idno>
<idno type="Wing">C695</idno>
<idno type="oldCat">
 <g ref="#sym"/>345
</idno>

In the last case, the identifier includes a non-Unicode character which is defined elsewhere by means of a <glyph> or <char> element referenced here as #sym.

Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">

  <textNode/>
  <classRef key="model.gLike"/>
  <elementRef key="idno"/>
 </alternate>
</content>
Schema Declaration
element idno
{
   cust_att.global.attributes,
   cust_att.sortable.attributes,
   cust_att.datable.attributes,
   cust_att.typed.attribute.subtype,
   attribute type { "doi" | "isbn" | "url" | teidata.enumerated }?,
   ( text | cust_model.gLike | cust_idno )*
}

<imprint>

<imprint> groups information relating to the publication or distribution of a bibliographic item. [3.11.2.4. Imprint, Size of a Document, and Reprint Information]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Contained by
May contain
Example
<imprint>
 <pubPlace>Oxford</pubPlace>
 <publisher>Clarendon Press</publisher>
 <date>1987</date>
</imprint>
Content model
<content>
 <sequence>
  <alternate minOccurs="0"
   maxOccurs="unbounded">

   <elementRef key="classCode"/>
   <elementRef key="catRef"/>
  </alternate>
  <sequence minOccurs="1"
   maxOccurs="unbounded">

   <alternate>
    <classRef key="model.imprintPart"/>
    <classRef key="model.dateLike"/>
   </alternate>
   <elementRef key="respStmtminOccurs="0"
    maxOccurs="unbounded"/>

   <classRef key="model.global"
    minOccurs="0maxOccurs="unbounded"/>

  </sequence>
 </sequence>
</content>
Schema Declaration
element imprint
{
   cust_att.global.attributes,
   (
      ( classCode | catRef )*,
      (
         ( cust_model.imprintPart | cust_model.dateLike ),
         cust_respStmt*,
         cust_model.global*
      )+
   )
}

<include> [http://www.example.org/cannot/really/use/XInclude]

<include>
Namespacehttp://www.example.org/cannot/really/use/XInclude
Modulederived-module-tei_customization
AttributesAttributes
href
Status Optional
Datatype teidata.pointer
parse
Status Optional
Legal values are:
xml
[Default]
text
xpointer
Status Optional
Datatype teidata.text
encoding
Status Optional
Datatype teidata.text
accept
Status Optional
Datatype teidata.text
accept-language
Status Optional
Datatype teidata.text
Contained by
May contain
derived-module-tei_customization: fallback
Content model
<content>
 <elementRef key="fallbackminOccurs="0"
  maxOccurs="1"/>

</content>
Schema Declaration
element include
{
   attribute href { teidata.pointer }?,
   attribute parse { "xml" | "text" }?,
   attribute xpointer { teidata.text }?,
   attribute encoding { teidata.text }?,
   attribute accept { teidata.text }?,
   attribute accept-language { teidata.text }?,
   cust_fallback?
}

<item>

<item> contains one component of a list. [3.7. Lists 2.6. The Revision Description]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.sortable (@sortKey)
Contained by
core: list
May contain
Note

May contain simple prose or a sequence of chunks.

Whatever string of characters is used to label a list item in the copy text may be used as the value of the global n attribute, but it is not required that numbering be recorded explicitly. In ordered lists, the n attribute on the item element is by definition synonymous with the use of the label element to record the enumerator of the list item. In glossary lists, however, the term being defined should be given with the label element, not n.

Example
<list rend="numbered">
 <head>Here begin the chapter headings of Book IV</head>
 <item n="4.1">The death of Queen Clotild.</item>
 <item n="4.2">How King Lothar wanted to appropriate one third of the Church revenues.</item>
 <item n="4.3">The wives and children of Lothar.</item>
 <item n="4.4">The Counts of the Bretons.</item>
 <item n="4.5">Saint Gall the Bishop.</item>
 <item n="4.6">The priest Cato.</item>
 <item> ...</item>
</list>
Content model
<content>
 <macroRef key="macro.specialPara"/>
</content>
Schema Declaration
element item
{
   cust_att.global.attributes,
   cust_att.sortable.attributes,
   cust_macro.specialPara
}

<label>

<label> contains any label or heading used to identify part of a text, typically but not exclusively in a list or glossary. [3.7. Lists]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.typed (@type, @subtype) att.placement (@place) att.written (@hand)
Member of
Contained by
May contain
Example

Labels are commonly used for the headwords in glossary lists; note the use of the global xml:lang attribute to set the default language of the glossary list to Middle English, and identify the glosses and headings as modern English or Latin:

<list type="glossxml:lang="enm">
 <head xml:lang="en">Vocabulary</head>
 <headLabel xml:lang="en">Middle English</headLabel>
 <headItem xml:lang="en">New English</headItem>
 <label>nu</label>
 <item xml:lang="en">now</item>
 <label>lhude</label>
 <item xml:lang="en">loudly</item>
 <label>bloweth</label>
 <item xml:lang="en">blooms</item>
 <label>med</label>
 <item xml:lang="en">meadow</item>
 <label>wude</label>
 <item xml:lang="en">wood</item>
 <label>awe</label>
 <item xml:lang="en">ewe</item>
 <label>lhouth</label>
 <item xml:lang="en">lows</item>
 <label>sterteth</label>
 <item xml:lang="en">bounds, frisks (cf. <cit>
   <ref>Chaucer, K.T.644</ref>
   <quote>a courser, <term>sterting</term>as the fyr</quote>
  </cit>
 </item>
 <label>verteth</label>
 <item xml:lang="la">pedit</item>
 <label>murie</label>
 <item xml:lang="en">merrily</item>
 <label>swik</label>
 <item xml:lang="en">cease</item>
 <label>naver</label>
 <item xml:lang="en">never</item>
</list>
Example

Labels may also be used to record explicitly the numbers or letters which mark list items in ordered lists, as in this extract from Gibbon's Autobiography. In this usage the label element is synonymous with the n attribute on the item element:

I will add two facts, which have seldom occurred
in the composition of six, or at least of five quartos. <list rend="runontype="ordered">
 <label>(1)</label>
 <item>My first rough manuscript, without any intermediate copy, has been sent to the press.</item>
 <label>(2) </label>
 <item>Not a sheet has been seen by any human eyes, excepting those of the author and the
   printer: the faults and the merits are exclusively my own.</item>
</list>
Example

Labels may also be used for other structured list items, as in this extract from the journal of Edward Gibbon:

<list type="gloss">
 <label>March 1757.</label>
 <item>I wrote some critical observations upon Plautus.</item>
 <label>March 8th.</label>
 <item>I wrote a long dissertation upon some lines of Virgil.</item>
 <label>June.</label>
 <item>I saw Mademoiselle Curchod — <quote xml:lang="la">Omnia vincit amor, et nos cedamus
     amori.</quote>
 </item>
 <label>August.</label>
 <item>I went to Crassy, and staid two days.</item>
</list>

Note that the label might also appear within the item rather than as its sibling. Though syntactically valid, this usage is not recommended TEI practice.

Example

Labels may also be used to represent a label or heading attached to a paragraph or sequence of paragraphs not treated as a structural division, or to a group of verse lines. Note that, in this case, the label element appears within the p or <lg> element, rather than as a preceding sibling of it.

<p>[...]
<lb/>&amp; n’entrer en mauuais &amp; mal-heu-
<lb/>ré meſnage. Or des que le conſente-
<lb/>ment des parties y eſt le mariage eſt
<lb/> arreſté, quoy que de faict il ne ſoit
<label place="margin">Puiſſance maritale
   entre les Romains.</label>
 <lb/> conſommé. Depuis la conſomma-
<lb/>tion du mariage la femme eſt ſoubs
<lb/> la puiſſance du mary, s’il n’eſt eſcla-
<lb/>ue ou enfant de famille : car en ce
<lb/> cas, la femme, qui a eſpouſé vn en-
<lb/>fant de famille, eſt ſous la puiſſance
[...]</p>

In this example the text of the label appears in the right hand margin of the original source, next to the paragraph it describes, but approximately in the middle of it.

If so desired the type attribute may be used to distinguish different categories of label.

Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element label
{
   cust_att.global.attributes,
   cust_att.typed.attributes,
   cust_att.placement.attributes,
   cust_att.written.attributes,
   cust_macro.phraseSeq
}

<licence>

<licence> contains information about a licence or other legal agreement applicable to the text. [2.2.4. Publication, Distribution, Licensing, etc.]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.pointing (@targetLang, @target, @evaluate) att.datable (@calendar, @period) (att.datable.w3c (@when, @notBefore, @notAfter, @from, @to)) (att.datable.iso (@when-iso, @notBefore-iso, @notAfter-iso, @from-iso, @to-iso)) (att.datable.custom (@when-custom, @notBefore-custom, @notAfter-custom, @from-custom, @to-custom, @datingPoint, @datingMethod))
Member of
Contained by
header: availability
May contain
Note

A licence element should be supplied for each licence agreement applicable to the text in question. The target attribute may be used to reference a full version of the licence. The when, notBefore, notAfter, from or to attributes may be used in combination to indicate the date or dates of applicability of the licence.

Example
<licence target="http://www.nzetc.org/tm/scholarly/tei-NZETC-Help.html#licensing"> Licence: Creative Commons Attribution-Share Alike 3.0 New Zealand Licence
</licence>
Example
<availability>
 <licence target="http://creativecommons.org/licenses/by/3.0/"
  notBefore="2013-01-01">

  <p>The Creative Commons Attribution 3.0 Unported (CC BY 3.0) Licence
     applies to this document.</p>
  <p>The licence was added on January 1, 2013.</p>
 </licence>
</availability>
Content model
<content>
 <macroRef key="macro.specialPara"/>
</content>
Schema Declaration
element licence
{
   cust_att.global.attributes,
   cust_att.pointing.attributes,
   cust_att.datable.attributes,
   cust_macro.specialPara
}

<list>

<list> contains any sequence of items organized as a list. [3.7. Lists]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.sortable (@sortKey) att.typed (type, @subtype)
typedescribes the nature of the items in the list.
Derived fromatt.typed
Status Optional
Datatype teidata.enumerated
Suggested values include:
gloss
each list item glosses some term or concept, which is given by a label element preceding the list item.
index
each list item is an entry in an index such as the alphabetical topical index at the back of a print volume.
instructions
each list item is a step in a sequence of instructions, as in a recipe.
litany
each list item is one of a sequence of petitions, supplications or invocations, typically in a religious ritual.
syllogism
each list item is part of an argument consisting of two or more propositions and a final conclusion derived from them.
Note

Previous versions of these Guidelines recommended the use of type on list to encode the rendering or appearance of a list (whether it was bulleted, numbered, etc.). The current recommendation is to use the rend or style attributes for these aspects of a list, while using type for the more appropriate task of characterizing the nature of the content of a list.

Note

The formal syntax of the element declarations allows label tags to be omitted from lists tagged <list type="gloss">; this is however a semantic error.

Member of
Contained by
May contain
Note

May contain an optional heading followed by a series of items, or a series of label and item pairs, the latter being optionally preceded by one or two specialized headings.

Example
<list rend="numbered">
 <item>a butcher</item>
 <item>a baker</item>
 <item>a candlestick maker, with
 <list rend="bulleted">
   <item>rings on his fingers</item>
   <item>bells on his toes</item>
  </list>
 </item>
</list>
Example
<list type="syllogismrend="bulleted">
 <item>All Cretans are liars.</item>
 <item>Epimenides is a Cretan.</item>
 <item>ERGO Epimenides is a liar.</item>
</list>
Example
<list type="litanyrend="simple">
 <item>God save us from drought.</item>
 <item>God save us from pestilence.</item>
 <item>God save us from wickedness in high places.</item>
 <item>Praise be to God.</item>
</list>
Example

The following example treats the short numbered clauses of Anglo-Saxon legal codes as lists of items. The text is from an ordinance of King Athelstan (924–939):

<div1 type="section">
 <head>Athelstan's Ordinance</head>
 <list rend="numbered">
  <item n="1">Concerning thieves. First, that no thief is to be spared who is caught with
     the stolen goods, [if he is] over twelve years and [if the value of the goods is] over
     eightpence.
  <list rend="numbered">
    <item n="1.1">And if anyone does spare one, he is to pay for the thief with his
         wergild — and the thief is to be no nearer a settlement on that account — or to
         clear himself by an oath of that amount.</item>
    <item n="1.2">If, however, he [the thief] wishes to defend himself or to escape, he is
         not to be spared [whether younger or older than twelve].</item>
    <item n="1.3">If a thief is put into prison, he is to be in prison 40 days, and he may
         then be redeemed with 120 shillings; and the kindred are to stand surety for him
         that he will desist for ever.</item>
    <item n="1.4">And if he steals after that, they are to pay for him with his wergild,
         or to bring him back there.</item>
    <item n="1.5">And if he steals after that, they are to pay for him with his wergild,
         whether to the king or to him to whom it rightly belongs; and everyone of those who
         supported him is to pay 120 shillings to the king as a fine.</item>
   </list>
  </item>
  <item n="2">Concerning lordless men. And we pronounced about these lordless men, from whom
     no justice can be obtained, that one should order their kindred to fetch back such a
     person to justice and to find him a lord in public meeting.
  <list rend="numbered">
    <item n="2.1">And if they then will not, or cannot, produce him on that appointed day,
         he is then to be a fugitive afterwards, and he who encounters him is to strike him
         down as a thief.</item>
    <item n="2.2">And he who harbours him after that, is to pay for him with his wergild
         or to clear himself by an oath of that amount.</item>
   </list>
  </item>
  <item n="3">Concerning the refusal of justice. The lord who refuses justice and upholds
     his guilty man, so that the king is appealed to, is to repay the value of the goods and
     120 shillings to the king; and he who appeals to the king before he demands justice as
     often as he ought, is to pay the same fine as the other would have done, if he had
     refused him justice.
  <list rend="numbered">
    <item n="3.1">And the lord who is an accessory to a theft by his slave, and it becomes
         known about him, is to forfeit the slave and be liable to his wergild on the first
         occasionp if he does it more often, he is to be liable to pay all that he owns.</item>
    <item n="3.2">And likewise any of the king's treasurers or of our reeves, who has been
         an accessory of thieves who have committed theft, is to liable to the same.</item>
   </list>
  </item>
  <item n="4">Concerning treachery to a lord. And we have pronounced concerning treachery to
     a lord, that he [who is accused] is to forfeit his life if he cannot deny it or is
     afterwards convicted at the three-fold ordeal.</item>
 </list>
</div1>

Note that nested lists have been used so the tagging mirrors the structure indicated by the two-level numbering of the clauses. The clauses could have been treated as a one-level list with irregular numbering, if desired.

Example
<p>These decrees, most blessed Pope Hadrian, we propounded in the public council ... and they
confirmed them in our hand in your stead with the sign of the Holy Cross, and afterwards
inscribed with a careful pen on the paper of this page, affixing thus the sign of the Holy
Cross.
<list rend="simple">
  <item>I, Eanbald, by the grace of God archbishop of the holy church of York, have
     subscribed to the pious and catholic validity of this document with the sign of the Holy
     Cross.</item>
  <item>I, Ælfwold, king of the people across the Humber, consenting have subscribed with
     the sign of the Holy Cross.</item>
  <item>I, Tilberht, prelate of the church of Hexham, rejoicing have subscribed with the
     sign of the Holy Cross.</item>
  <item>I, Higbald, bishop of the church of Lindisfarne, obeying have subscribed with the
     sign of the Holy Cross.</item>
  <item>I, Ethelbert, bishop of Candida Casa, suppliant, have subscribed with thef sign of
     the Holy Cross.</item>
  <item>I, Ealdwulf, bishop of the church of Mayo, have subscribed with devout will.</item>
  <item>I, Æthelwine, bishop, have subscribed through delegates.</item>
  <item>I, Sicga, patrician, have subscribed with serene mind with the sign of the Holy
     Cross.</item>
 </list>
</p>
Schematron

<sch:rule context="tei:list[@type='gloss']">
<sch:assert test="tei:label">The content of a "gloss" list should include a sequence of one or more pairs of a label element followed by an item element</sch:assert>
</sch:rule>
Content model
<content>
 <sequence>
  <alternate minOccurs="0"
   maxOccurs="unbounded">

   <classRef key="model.divTop"/>
   <classRef key="model.global"/>
  </alternate>
  <alternate>
   <sequence minOccurs="1"
    maxOccurs="unbounded">

    <elementRef key="item"/>
    <classRef key="model.global"
     minOccurs="0maxOccurs="unbounded"/>

   </sequence>
   <sequence>
    <elementRef key="headLabel"
     minOccurs="0"/>

    <elementRef key="headItem"
     minOccurs="0"/>

    <sequence minOccurs="1"
     maxOccurs="unbounded">

     <elementRef key="label"/>
     <classRef key="model.global"
      minOccurs="0maxOccurs="unbounded"/>

     <elementRef key="item"/>
     <classRef key="model.global"
      minOccurs="0maxOccurs="unbounded"/>

    </sequence>
   </sequence>
  </alternate>
  <sequence minOccurs="0"
   maxOccurs="unbounded">

   <classRef key="model.divBottom"/>
   <classRef key="model.global"
    minOccurs="0maxOccurs="unbounded"/>

  </sequence>
 </sequence>
</content>
Schema Declaration
element list
{
   cust_att.global.attributes,
   cust_att.sortable.attributes,
   cust_att.typed.attribute.subtype,
   attribute type
   {
      "gloss"
    | "index"
    | "instructions"
    | "litany"
    | "syllogism"
    | teidata.enumerated
   }?,
   (
      ( cust_model.divTop | cust_model.global )*,
      (
         ( cust_item, cust_model.global* )+
       | (
            cust_headLabel?,
            cust_headItem?,
            ( cust_label, cust_model.global*, cust_item, cust_model.global* )+
         )
      ),
      ( cust_model.divBottom, cust_model.global* )*
   )
}

<listChange>

<listChange> groups a number of change descriptions associated with either the creation of a source text or the revision of an encoded text. [2.6. The Revision Description 11.7. Identifying Changes and Revisions]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.sortable (@sortKey) att.typed (@type, @subtype)
orderedindicates whether the ordering of its child change elements is to be considered significant or not
Status Optional
Datatype teidata.truthValue
Default true
Contained by
May contain
Note

When this element appears within the <creation> element it documents the set of revision campaigns or stages identified during the evolution of the original text. When it appears within the revisionDesc element, it documents only changes made during the evolution of the encoded representation of that text.

Example
<revisionDesc>
 <listChange>
  <change when="1991-11-11who="#LB"> deleted chapter 10 </change>
  <change when="1991-11-02who="#MSM"> completed first draft </change>
 </listChange>
</revisionDesc>
Example
<profileDesc>
 <creation>
  <listChange ordered="true">
   <change xml:id="CHG-1">First stage, written in ink by a writer</change>
   <change xml:id="CHG-2">Second stage, written in Goethe's hand using pencil</change>
   <change xml:id="CHG-3">Fixation of the revised passages and further revisions by
       Goethe using ink</change>
   <change xml:id="CHG-4">Addition of another stanza in a different hand,
       probably at a later stage</change>
  </listChange>
 </creation>
</profileDesc>
Content model
<content>
 <alternate minOccurs="1"
  maxOccurs="unbounded">

  <elementRef key="listChange"/>
  <elementRef key="change"/>
 </alternate>
</content>
Schema Declaration
element listChange
{
   cust_att.global.attributes,
   cust_att.sortable.attributes,
   cust_att.typed.attributes,
   attribute ordered { teidata.truthValue }?,
   ( cust_listChange | cust_change )+
}

<listPrefixDef>

<listPrefixDef> (list of prefix definitions) contains a list of definitions of prefixing schemes used in data.pointer values, showing how abbreviated URIs using each scheme may be expanded into full URIs. [16.2.3. Using Abbreviated Pointers]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
May contain
Example

In this example, two private URI scheme prefixes are defined and patterns are provided for dereferencing them. Each prefix is also supplied with a human-readable explanation in a p element.

<listPrefixDef>
 <prefixDef ident="psn"
  matchPattern="([A-Z]+)"
  replacementPattern="personography.xml#$1">

  <p> Private URIs using the <code>psn</code>
     prefix are pointers to <gi>person</gi>
     elements in the personography.xml file.
     For example, <code>psn:MDH</code>
     dereferences to <code>personography.xml#MDH</code>.
  </p>
 </prefixDef>
 <prefixDef ident="bibl"
  matchPattern="([a-z]+[a-z0-9]*)"
  replacementPattern="http://www.example.com/getBibl.xql?id=$1">

  <p> Private URIs using the <code>bibl</code> prefix can be
     expanded to form URIs which retrieve the relevant
     bibliographical reference from www.example.com.
  </p>
 </prefixDef>
</listPrefixDef>
Content model
<content>
 <alternate minOccurs="1"
  maxOccurs="unbounded">

  <elementRef key="prefixDef"/>
  <elementRef key="listPrefixDef"/>
 </alternate>
</content>
Schema Declaration
element listPrefixDef
{
   cust_att.global.attributes,
   ( cust_prefixDef | cust_listPrefixDef )+
}

<listRef>

<listRef> (list of references) supplies a list of significant references to places where this element is discussed, in the current document or elsewhere.
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
May contain
core: ptr ref
Example
<listRef>
 <ptr target="#ddc12"/>
</listRef>
Content model
<content>
 <classRef key="model.ptrLike"
  minOccurs="1maxOccurs="unbounded"/>

</content>
Schema Declaration
element listRef { cust_att.global.attributes, cust_model.ptrLike+ }

<macroRef>

<macroRef> points to the specification for some pattern which is to be included in a schema [22.7. Macro Specifications]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
key
Status Required
Datatype teidata.enumerated
Suggested values include:
data.certainty
data.count
data.duration.iso
data.duration.w3c
data.enumerated
data.interval
data.language
data.name
data.namespace
data.numeric
data.outputMeasurement
data.pattern
(regular expression pattern)
data.percentage
data.point
data.pointer
data.probability
data.replacement
data.sex
data.temporal.iso
data.temporal.w3c
data.text
data.truthValue
data.version
data.versionNumber
data.word
data.xTruthValue
(extended truth value)
data.xmlName
data.xpath
macro.anyXML
macro.limitedContent
(paragraph content)
macro.paraContent
(paragraph content)
macro.phraseSeq
(phrase sequence)
macro.phraseSeq.limited
(limited phrase sequence)
macro.schemaPattern
macro.specialPara
('special' paragraph content)
macro.xtext
(extended text)
Member of
Contained by
May containEmpty element
Note

Patterns or macros are identified by the name supplied as value for the ident attribute on the macroSpec element in which they are declared. All TEI macro names are unique.

Example
<schemaSpec ident="myTEI"
 source="http://www.tei-c.org/Vault/P5/current/xml/tei/odd/p5subset.xml">

<!-- ... -->
 <macroRef key="macro.paraContent"/>
<!-- ... -->
</schemaSpec>
Content model
<content/>
Schema Declaration
element macroRef
{
   cust_att.global.attributes,
   attribute key
   {
      "data.certainty"
    | "data.count"
    | "data.duration.iso"
    | "data.duration.w3c"
    | "data.enumerated"
    | "data.interval"
    | "data.language"
    | "data.name"
    | "data.namespace"
    | "data.numeric"
    | "data.outputMeasurement"
    | "data.pattern"
    | "data.percentage"
    | "data.point"
    | "data.pointer"
    | "data.probability"
    | "data.replacement"
    | "data.sex"
    | "data.temporal.iso"
    | "data.temporal.w3c"
    | "data.text"
    | "data.truthValue"
    | "data.version"
    | "data.versionNumber"
    | "data.word"
    | "data.xTruthValue"
    | "data.xmlName"
    | "data.xpath"
    | "macro.anyXML"
    | "macro.limitedContent"
    | "macro.paraContent"
    | "macro.phraseSeq"
    | "macro.phraseSeq.limited"
    | "macro.schemaPattern"
    | "macro.specialPara"
    | "macro.xtext"
    | teidata.enumerated
   },
   empty
}

<macroSpec>

<macroSpec> (macro specification) documents the function and implementation of a pattern. [22.3. Specification Elements 22.7. Macro Specifications]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.identified (@module, @ident, @predeclare) (att.combinable (@mode) (att.deprecated (@validUntil)) )
typeindicates which type of entity should be generated, when an ODD processor is generating a module using XML DTD syntax.
Status Optional
Datatype teidata.enumerated
Legal values are:
pe
(parameter entity)
dt
(datatype entity)
Member of
Contained by
May contain
Example
<macroSpec module="teitype="pe"
 ident="macro.phraseSeq">

 <content>
  <alternate minOccurs="0"
   maxOccurs="unbounded">

   <textNode/>
   <classRef key="model.gLike"/>
   <classRef key="model.phrase"/>
   <classRef key="model.global"/>
  </alternate>
 </content>
</macroSpec>
Content model
<content>
 <sequence>
  <alternate minOccurs="0"
   maxOccurs="unbounded">

   <classRef key="model.glossLike"/>
   <classRef key="model.descLike"/>
  </alternate>
  <alternate minOccurs="0"
   maxOccurs="unbounded">

   <elementRef key="content"/>
   <elementRef key="valList"/>
  </alternate>
  <elementRef key="constraintSpec"
   minOccurs="0maxOccurs="unbounded"/>

  <elementRef key="exemplumminOccurs="0"
   maxOccurs="unbounded"/>

  <elementRef key="remarksminOccurs="0"
   maxOccurs="unbounded"/>

  <elementRef key="listRefminOccurs="0"
   maxOccurs="unbounded"/>

 </sequence>
</content>
Schema Declaration
element macroSpec
{
   cust_att.global.attributes,
   cust_att.identified.attributes,
   attribute type { "pe" | "dt" }?,
   (
      ( cust_model.glossLike | cust_model.descLike )*,
      ( cust_content | cust_valList )*,
      cust_constraintSpec*,
      cust_exemplum*,
      cust_remarks*,
      cust_listRef*
   )
}

<media>

<media> indicates the location of any form of external media such as an audio or video clip etc. [3.9. Graphics and Other Non-textual Components]
Modulecore
AttributesAttributes att.typed (@type, @subtype) att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.resourced (@url) att.declaring (@decls) att.timed (@start, @end) att.media (@width, @height, @scale)
mimeType(MIME media type) specifies the applicable multimedia internet mail extension (MIME) media type
Derived fromatt.internetMedia
Status Required
Datatype 1–∞ occurrences of teidata.word separated by whitespace
Member of
Contained by
May contain
core: desc
Note

The attributes available for this element are not appropriate in all cases. For example, it makes no sense to specify the temporal duration of a graphic. Such errors are not currently detected.

The mimeType attribute must be used to specify the MIME media type of the resource specified by the url attribute.

Example
<figure>
 <media mimeType="image/pngurl="fig1.png"/>
 <head>Figure One: The View from the Bridge</head>
 <figDesc>A Whistleresque view showing four or five sailing boats in the foreground, and a
   series of buoys strung out between them.</figDesc>
</figure>
Example
<media mimeType="audio/wav"
 url="dingDong.wavdur="PT10S">

 <desc>Ten seconds of bellringing sound</desc>
</media>
Example
<media mimeType="video/mp4"
 url="clip45.mp4dur="PT45Mwidth="500px">

 <desc>A 45 minute video clip to be displayed in a window 500
   px wide</desc>
</media>
Content model
<content>
 <classRef key="model.descLike"
  minOccurs="0maxOccurs="unbounded"/>

</content>
Schema Declaration
element media
{
   cust_att.typed.attributes,
   cust_att.global.attributes,
   cust_att.media.attribute.width,
   cust_att.media.attribute.height,
   cust_att.media.attribute.scale,
   cust_att.resourced.attributes,
   cust_att.declaring.attributes,
   cust_att.timed.attributes,
   attribute mimeType { list { teidata.word+ } },
   cust_model.descLike*
}

<meeting>

<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. [3.11.2.2. Titles, Authors, and Editors]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.canonical (@key, @ref)
Member of
Contained by
core: bibl list
figures: figure table
textstructure: body div front
May contain
Example
<div>
 <meeting>Ninth International Conference on Middle High German Textual Criticism, Aachen,
   June 1998.</meeting>
 <list type="attendance">
  <head>List of Participants</head>
  <item>
   <persName>...</persName>
  </item>
  <item>
   <persName>...</persName>
  </item>
<!--...-->
 </list>
 <p>...</p>
</div>
Content model
<content>
 <macroRef key="macro.limitedContent"/>
</content>
Schema Declaration
element meeting
{
   cust_att.global.attributes,
   cust_att.canonical.attributes,
   cust_macro.limitedContent
}

<memberOf>

<memberOf> specifies class membership of the documented element or class. [22.4.3. Classification of Components]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
key
Status Optional
Datatype teidata.enumerated
Suggested values include:
att.ascribed
att.breaking
att.cReferencing
att.canonical
att.citing
att.combinable
att.coordinated
att.damaged
att.datable
att.datable.custom
att.datable.iso
att.datable.w3c
att.datcat
att.declarable
att.declaring
att.deprecated
att.dimensions
att.divLike
att.docStatus
att.duration
att.duration.iso
att.duration.w3c
att.editLike
att.edition
att.enjamb
(enjambement)
att.entryLike
att.fragmentable
att.global
att.global.analytic
att.global.change
att.global.facs
att.global.linking
att.global.rendition
att.global.responsibility
att.global.source
att.handFeatures
att.identified
att.internetMedia
att.interpLike
att.lexicographic
att.linguistic
att.measurement
att.media
att.metrical
att.milestoneUnit
att.msClass
att.msExcerpt
(manuscript excerpt)
att.namespaceable
att.naming
att.notated
att.partials
att.patternReplacement
att.personal
(attributes for components of names usually, but not necessarily, personal names)
att.placement
att.pointing
att.pointing.group
att.ranging
att.rdgPart
att.repeatable
att.resourced
att.scoping
att.segLike
att.sortable
att.spanning
att.styleDef
att.tableDecoration
att.textCritical
att.timed
att.transcriptional
att.translatable
att.typed
att.witnessed
att.written
model.addrPart
model.addressLike
model.applicationLike
model.availabilityPart
model.biblLike
model.biblPart
model.castItemPart
model.catDescPart
model.certLike
model.choicePart
model.common
model.contentPart
model.correspActionPart
model.correspContextPart
model.correspDescPart
model.dateLike
model.descLike
model.dimLike
model.div1Like
model.div2Like
model.div3Like
model.div4Like
model.div5Like
model.div6Like
model.div7Like
model.divBottom
model.divBottomPart
model.divGenLike
model.divLike
model.divPart
model.divPart.spoken
model.divTop
model.divTopPart
model.divWrapper
model.editorialDeclPart
model.egLike
model.emphLike
model.encodingDescPart
model.entryLike
model.entryPart
model.entryPart.top
model.eventLike
model.featureVal
model.featureVal.complex
model.featureVal.single
model.formPart
model.frontPart
model.frontPart.drama
model.gLike
model.global
model.global.edit
model.global.meta
model.global.spoken
model.glossLike
model.gramPart
model.graphicLike
model.headLike
model.hiLike
model.highlighted
model.imprintPart
model.inter
model.lLike
model.lPart
model.labelLike
model.lexicalRefinement
model.limitedPhrase
model.linePart
model.listLike
model.measureLike
model.milestoneLike
model.morphLike
model.msItemPart
model.msQuoteLike
model.nameLike
model.nameLike.agent
model.noteLike
model.oddDecl
model.oddRef
model.offsetLike
model.orgPart
model.orgStateLike
model.pLike
model.pLike.front
model.pPart.data
model.pPart.edit
model.pPart.editorial
model.pPart.msdesc
model.pPart.transcriptional
model.persNamePart
model.persStateLike
model.personLike
model.personPart
model.phrase
model.phrase.xml
model.physDescPart
model.placeLike
model.placeNamePart
model.placeStateLike
model.profileDescPart
model.ptrLike
model.ptrLike.form
model.publicationStmtPart.agency
model.publicationStmtPart.detail
model.qLike
model.quoteLike
model.rdgLike
model.rdgPart
model.recordingPart
model.resourceLike
model.respLike
model.segLike
model.settingPart
model.sourceDescPart
model.specDescLike
model.stageLike
model.teiHeaderPart
model.textDescPart
model.titlepagePart
modespecifies the effect of this declaration on its parent module.
Status Optional
Datatype teidata.enumerated
Legal values are:
add
this declaration is added to the current definitions [Default]
delete
this declaration and all of its children are removed from the current setup
maxsupplies the maximum number of times the element can occur in elements which use this model class in their content model
Status Optional
Datatype teidata.numeric
minsupplies the minumum number of times the element must occur in elements which use this model class in their content model
Status Optional
Datatype teidata.numeric
Contained by
tagdocs: classes
May containCharacter data only
Note

Elements or classes which are members of multiple (unrelated) classes will have more than one memberOf element, grouped by a classes element. If an element is a member of a class C1, which is itself a subclass of a class C2, there is no need to state this, other than in the documentation for class C1.

Any additional comment or explanation of the class membership may be provided as content for this element.

Example
<memberOf key="model.divLike"/>
<memberOf key="att.identified"/>

This element will appear in any content model which references model.divLike, and will have attributes defined in att.identified (in addition to any defined explicitly for this element).

Content model
<content>
 <macroRef key="macro.xtext"/>
</content>
Schema Declaration
element memberOf
{
   cust_att.global.attributes,
   attribute key
   {
      "att.ascribed"
    | "att.breaking"
    | "att.cReferencing"
    | "att.canonical"
    | "att.citing"
    | "att.combinable"
    | "att.coordinated"
    | "att.damaged"
    | "att.datable"
    | "att.datable.custom"
    | "att.datable.iso"
    | "att.datable.w3c"
    | "att.datcat"
    | "att.declarable"
    | "att.declaring"
    | "att.deprecated"
    | "att.dimensions"
    | "att.divLike"
    | "att.docStatus"
    | "att.duration"
    | "att.duration.iso"
    | "att.duration.w3c"
    | "att.editLike"
    | "att.edition"
    | "att.enjamb"
    | "att.entryLike"
    | "att.fragmentable"
    | "att.global"
    | "att.global.analytic"
    | "att.global.change"
    | "att.global.facs"
    | "att.global.linking"
    | "att.global.rendition"
    | "att.global.responsibility"
    | "att.global.source"
    | "att.handFeatures"
    | "att.identified"
    | "att.internetMedia"
    | "att.interpLike"
    | "att.lexicographic"
    | "att.linguistic"
    | "att.measurement"
    | "att.media"
    | "att.metrical"
    | "att.milestoneUnit"
    | "att.msClass"
    | "att.msExcerpt"
    | "att.namespaceable"
    | "att.naming"
    | "att.notated"
    | "att.partials"
    | "att.patternReplacement"
    | "att.personal"
    | "att.placement"
    | "att.pointing"
    | "att.pointing.group"
    | "att.ranging"
    | "att.rdgPart"
    | "att.repeatable"
    | "att.resourced"
    | "att.scoping"
    | "att.segLike"
    | "att.sortable"
    | "att.spanning"
    | "att.styleDef"
    | "att.tableDecoration"
    | "att.textCritical"
    | "att.timed"
    | "att.transcriptional"
    | "att.translatable"
    | "att.typed"
    | "att.witnessed"
    | "att.written"
    | "model.addrPart"
    | "model.addressLike"
    | "model.applicationLike"
    | "model.availabilityPart"
    | "model.biblLike"
    | "model.biblPart"
    | "model.castItemPart"
    | "model.catDescPart"
    | "model.certLike"
    | "model.choicePart"
    | "model.common"
    | "model.contentPart"
    | "model.correspActionPart"
    | "model.correspContextPart"
    | "model.correspDescPart"
    | "model.dateLike"
    | "model.descLike"
    | "model.dimLike"
    | "model.div1Like"
    | "model.div2Like"
    | "model.div3Like"
    | "model.div4Like"
    | "model.div5Like"
    | "model.div6Like"
    | "model.div7Like"
    | "model.divBottom"
    | "model.divBottomPart"
    | "model.divGenLike"
    | "model.divLike"
    | "model.divPart"
    | "model.divPart.spoken"
    | "model.divTop"
    | "model.divTopPart"
    | "model.divWrapper"
    | "model.editorialDeclPart"
    | "model.egLike"
    | "model.emphLike"
    | "model.encodingDescPart"
    | "model.entryLike"
    | "model.entryPart"
    | "model.entryPart.top"
    | "model.eventLike"
    | "model.featureVal"
    | "model.featureVal.complex"
    | "model.featureVal.single"
    | "model.formPart"
    | "model.frontPart"
    | "model.frontPart.drama"
    | "model.gLike"
    | "model.global"
    | "model.global.edit"
    | "model.global.meta"
    | "model.global.spoken"
    | "model.glossLike"
    | "model.gramPart"
    | "model.graphicLike"
    | "model.headLike"
    | "model.hiLike"
    | "model.highlighted"
    | "model.imprintPart"
    | "model.inter"
    | "model.lLike"
    | "model.lPart"
    | "model.labelLike"
    | "model.lexicalRefinement"
    | "model.limitedPhrase"
    | "model.linePart"
    | "model.listLike"
    | "model.measureLike"
    | "model.milestoneLike"
    | "model.morphLike"
    | "model.msItemPart"
    | "model.msQuoteLike"
    | "model.nameLike"
    | "model.nameLike.agent"
    | "model.noteLike"
    | "model.oddDecl"
    | "model.oddRef"
    | "model.offsetLike"
    | "model.orgPart"
    | "model.orgStateLike"
    | "model.pLike"
    | "model.pLike.front"
    | "model.pPart.data"
    | "model.pPart.edit"
    | "model.pPart.editorial"
    | "model.pPart.msdesc"
    | "model.pPart.transcriptional"
    | "model.persNamePart"
    | "model.persStateLike"
    | "model.personLike"
    | "model.personPart"
    | "model.phrase"
    | "model.phrase.xml"
    | "model.physDescPart"
    | "model.placeLike"
    | "model.placeNamePart"
    | "model.placeStateLike"
    | "model.profileDescPart"
    | "model.ptrLike"
    | "model.ptrLike.form"
    | "model.publicationStmtPart.agency"
    | "model.publicationStmtPart.detail"
    | "model.qLike"
    | "model.quoteLike"
    | "model.rdgLike"
    | "model.rdgPart"
    | "model.recordingPart"
    | "model.resourceLike"
    | "model.respLike"
    | "model.segLike"
    | "model.settingPart"
    | "model.sourceDescPart"
    | "model.specDescLike"
    | "model.stageLike"
    | "model.teiHeaderPart"
    | "model.textDescPart"
    | "model.titlepagePart"
    | teidata.enumerated
   }?,
   attribute mode { "add" | "delete" }?,
   attribute max { teidata.numeric }?,
   attribute min { teidata.numeric }?,
   cust_macro.xtext
}

<mentioned>

<mentioned> marks words or phrases mentioned, not used. [3.3.3. Quotation]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
May contain
Example
There is thus a
striking accentual difference between a verbal form like <mentioned xml:id="X234xml:lang="el">eluthemen</mentioned>
<gloss target="#X234">we were released,</gloss> accented on the second syllable of the
word, and its participial derivative
<mentioned xml:id="X235xml:lang="el">lutheis</mentioned>
<gloss target="#X235">released,</gloss> accented on the last.
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element mentioned { cust_att.global.attributes, cust_macro.phraseSeq }

<model>

<model> describes the processing intended for a specified element. [22.5.4.1. The TEI processing model]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
behaviournames the process or function which this processing model uses in order to produce output.
Status Required
Datatype teidata.enumerated
Suggested values include:
alternate
(default, alternate) support display of alternative visualisations, for example by displaying the preferred content, by displaying both in parallel, or by toggling between the two.
anchor
(id) create an identifiable anchor point in the output.
block
(content) create a block structure
body
(content) create the body of a document.
break
(type, label) create a line, column, or page break according to the value of type
cell
(content) create a table cell
cit
(content, source) show the content, with an indication of the source
document
(content) start a new output document
figure
(title) make a figure with the title as caption
glyph
(uri) show a character by looking up reference to a chardesc at the given URI
graphic
(url, width, height, scale, title) if url is present, uses it to display graphic, else display a placeholder image.
heading
(content, level) creates a heading.
index
(type) generate list according to type.
inline
(content, label) creates inline element out of content
link
(content, uri) create hyperlink
list
(content) create a list.
listItem
(content) create a list item.
metadata
(content) create metadata section
note
(content, place, label) create a note, often out of line, depending on the value of place; could be margin, footnote, endnote, inline
omit
do nothing, do not process children
paragraph
(content) create a paragraph out of content.
row
(content) create a table row
section
(content) create a new section of the output document
table
(content) create a table
text
(content) create literal text
title
(content) create document title
predicatethe condition under which this model applies, given as an XPath predicate expression.
Status Optional
Datatype teidata.xpath
useSourceRenditionwhether to obey any rendition attribute which is present.
Status Optional
Datatype teidata.truthValue
Note

If the useSourceRendition attribute is not specified, or has the value false, any renditional information specified in the source document should be ignored.

outputthe intended output.
Status Optional
Datatype teidata.enumerated
Sample values include:
web
the output is intended for presentation in a web format
print
the output is intended for presentation in a print format
plain
the output is intended for presentation in a plain text format
Note

If the output attribute is not specified, this model is assumed to apply for all forms of output.

cssClassthe name of a CSS class which should be associated with this element
Status Optional
Datatype 1–∞ occurrences of teidata.name separated by whitespace
Contained by
May contain
Note

The intended output to be generated for a particular behaviour of a processing model may be documented in one or all of the three following ways. Firstly, the cssClass attribute may be used to specify the name of a CSS style in some associated CSS stylesheet which is to be applied to each occurrence of a specified element found (in a given context, for a specified output). Secondly, the attribute useSourceRendition may be used to indicate that the default rendition for occurrences of this element, as defined by a <rendition> element in the document header, should be applied. Thirdly, the styling to be applied may be specified explicitly as content of a child outputRendition element. When more than one of these options is used, they are understood to be combined in accordance with the rules for multiple declaration of the styling language used.

Example
<model behaviour="inline"/>
Example
<elementSpec mode="changeident="quote">
 <model predicate="ancestor::p"
  behaviour="inline">

  <desc versionDate="2015-08-21"
   xml:lang="en">
If it's inside a paragraph then it's
     inline</desc>
 </model>
 <model predicate="not(ancestor::p)"
  behaviour="block">

  <desc versionDate="2015-08-21"
   xml:lang="en">
If it's not inside a paragraph then it is
     block level</desc>
 </model>
</elementSpec>
Example
<model predicate="parent::person"
 behaviour="inline">

 <desc versionDate="2015-08-21"
  xml:lang="en">
If it is a child of a person element, treat as
   inline</desc>
</model>
Example
<model behaviour="inline">
 <outputRendition>font-weight:bold</outputRendition>
</model>
Example
<model behaviour="inlineoutput="print"/>
Example
<model predicate="ancestor::p"
 behaviour="inline">

 <param name="contentvalue="@n"/>
</model>
Example
<elementSpec mode="changeident="date">
 <model output="printpredicate="text()"
  behaviour="inline"/>

 <model output="print"
  predicate="@when and not(text())behaviour="inline">

  <param name="contentvalue="@when"/>
 </model>
 <model predicate="@whenoutput="web"
  behaviour="alternate">

  <param name="alternatevalue="@when"/>
 </model>
</elementSpec>
Example
<elementSpec mode="changeident="choice">
 <model predicate="sic and corr"
  behaviour="alternate">

  <param name="defaultvalue="corr"/>
  <param name="alternatevalue="sic"/>
 </model>
 <model predicate="abbr and expan"
  behaviour="alternate">

  <param name="defaultvalue="expan"/>
  <param name="alternatevalue="abbr"/>
 </model>
 <model predicate="orig and reg"
  behaviour="alternate">

  <param name="defaultvalue="reg"/>
  <param name="alternatevalue="orig"/>
 </model>
</elementSpec>
SchematronIt is ambigous to have 2 models that have both the same output and have no predicate (and thus select the same set of nodes).

<sch:rule context="tei:model[ not( parent::tei:modelSequence ) ][ not( @predicate ) ]">
<sch:let name="output"
 value="normalize-space( @output )"/>

<sch:report test="following-sibling::tei:model [ not( @predicate )] [ normalize-space( @output ) eq $output ]"> There are 2 (or more) 'model' elements in this '<sch:value-of select="local-name(..)"/>'
that have no predicate, but are targeted to the same output
("<sch:value-of select="( $output, parent::modelGrp/@output, 'all')[1]"/>")</sch:report>
</sch:rule>
SchematronIt is ambigous to have 2 models that have both the same output and the same predicate (and thus select the same set of nodes).

<sch:rule context="tei:model[ not( parent::tei:modelSequence ) ][ @predicate ]">
<sch:let name="predicate"
 value="normalize-space( @predicate )"/>

<sch:let name="output"
 value="normalize-space( @output )"/>

<sch:report test="following-sibling::tei:model [ normalize-space( @predicate ) eq $predicate ] [ normalize-space( @output ) eq $output ]"> There are 2 (or more) 'model' elements in this
'<sch:value-of select="local-name(..)"/>' that have
the same predicate, and are targeted to the same output
("<sch:value-of select="( $output, parent::modelGrp/@output, 'all')[1]"/>")</sch:report>
</sch:rule>
Content model
<content>
 <sequence>
  <alternate minOccurs="0"
   maxOccurs="unbounded">

   <classRef key="model.glossLike"/>
   <classRef key="model.descLike"/>
  </alternate>
  <elementRef key="paramminOccurs="0"
   maxOccurs="unbounded"/>

  <elementRef key="outputRendition"
   minOccurs="0maxOccurs="unbounded"/>

 </sequence>
</content>
Schema Declaration
element model
{
   cust_att.global.attributes,
   attribute behaviour
   {
      "alternate"
    | "anchor"
    | "block"
    | "body"
    | "break"
    | "cell"
    | "cit"
    | "document"
    | "figure"
    | "glyph"
    | "graphic"
    | "heading"
    | "index"
    | "inline"
    | "link"
    | "list"
    | "listItem"
    | "metadata"
    | "note"
    | "omit"
    | "paragraph"
    | "row"
    | "section"
    | "table"
    | "text"
    | "title"
    | teidata.enumerated
   },
   attribute predicate { teidata.xpath }?,
   attribute useSourceRendition { teidata.truthValue }?,
   attribute output { teidata.enumerated }?,
   attribute cssClass { list { teidata.name+ } }?,
   (
      ( cust_model.glossLike | cust_model.descLike )*,
      cust_param*,
      cust_outputRendition*
   )
}

<modelGrp>

<modelGrp> any grouping of model or modelSequence elements with a common output method [22.5.4.4. Model Contexts and Outputs]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
useSourceRenditionwhether to obey any rendition attribute which is present
Status Optional
Datatype teidata.truthValue
outputthe intended output method
Status Optional
Datatype teidata.enumerated
Suggested values include:
web
the output is intended for presentation in a web format
print
the output is intended for presentation in a print format
plaintext
the output is intended for presentation in a plain text format
Contained by
May contain
Note

The child model elements of a modelGrp are always processed independently.

Example
<elementSpec mode="changeident="abbr">
 <modelGrp output="web">
  <model predicate="parent::choice"
   behaviour="omit"/>

  <model predicate="ancestor::front"
   behaviour="inline">

   <outputRendition>font-style:italic; </outputRendition>
  </model>
  <model predicate="not(parent::choice)"
   behaviour="inline">

   <outputRendition scope="before">content: ' ('</outputRendition>
   <outputRendition scope="after">content: ')'</outputRendition>
  </model>
 </modelGrp>
 <modelGrp output="print">
  <model predicate="parent::choice"
   behaviour="omit"/>

  <model predicate="not(parent::choice)"
   behaviour="note">

   <param name="placevalue="'foot'"/>
  </model>
 </modelGrp>
</elementSpec>
Example
<modelGrp output="print">
 <modelSequence>
  <model behaviour="inline">
   <param name="contentvalue="@n"/>
  </model>
  <model behaviour="note">
   <param name="placevalue="'foot'"/>
  </model>
 </modelSequence>
</modelGrp>
Content model
<content>
 <sequence>
  <alternate minOccurs="0"
   maxOccurs="unbounded">

   <classRef key="model.glossLike"/>
   <classRef key="model.descLike"/>
  </alternate>
  <elementRef key="outputRendition"
   minOccurs="0"/>

  <alternate minOccurs="1"
   maxOccurs="unbounded">

   <elementRef key="modelSequence"/>
   <elementRef key="model"/>
  </alternate>
 </sequence>
</content>
Schema Declaration
element modelGrp
{
   cust_att.global.attributes,
   attribute useSourceRendition { teidata.truthValue }?,
   attribute output { "web" | "print" | "plaintext" | teidata.enumerated }?,
   (
      ( cust_model.glossLike | cust_model.descLike )*,
      cust_outputRendition?,
      ( cust_modelSequence | cust_model )+
   )
}

<modelSequence>

<modelSequence> any sequence of model or modelSequence elements which is to be processed as a single set of actions [22.5.4.7. Model sequence]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
predicatethe condition under which this model applies given as an XPath Predicate Expression
Status Optional
Datatype teidata.xpath
useSourceRenditionwhether to obey any rendition attribute which is present
Status Optional
Datatype teidata.truthValue
outputthe intended output method
Status Optional
Datatype teidata.enumerated
Suggested values include:
web
the output is intended for presentation in a web format
print
the output is intended for presentation in a print format
plaintext
the output is intended for presentation in a plain text format
Contained by
tagdocs: modelGrp
May contain
core: desc gloss
Note

All of the model elements inside a modelSequence element must be processed. The operations indicated by each model child cannot be dependent on any other operation in the sequence. The results must be rendered in the order given by the list of models in the modelSequence.

Example
<modelGrp output="print">
 <modelSequence>
  <model behaviour="inline">
   <param name="contentvalue="@n"/>
  </model>
  <model behaviour="footnote">
   <param name="placevalue="'foot'"/>
  </model>
 </modelSequence>
</modelGrp>
Schematron

<sch:report test="tei:model[@output]"
 role="warning">
The 'model' children
of a 'modelSequence' element inherit the @output attribute of the
parent 'modelSequence', and thus should not have their own</sch:report>
Content model
<content>
 <sequence>
  <alternate minOccurs="0"
   maxOccurs="unbounded">

   <classRef key="model.glossLike"/>
   <classRef key="model.descLike"/>
  </alternate>
  <elementRef key="modelminOccurs="2"
   maxOccurs="unbounded"/>

 </sequence>
</content>
Schema Declaration
element modelSequence
{
   cust_att.global.attributes,
   attribute predicate { teidata.xpath }?,
   attribute useSourceRendition { teidata.truthValue }?,
   attribute output { "web" | "print" | "plaintext" | teidata.enumerated }?,
   (
      ( cust_model.glossLike | cust_model.descLike )*,
      ( cust_model, cust_model, cust_model* )
   )
}

<moduleRef>

<moduleRef> (module reference) references a module which is to be incorporated into a schema. [22.2. Modules and Schemas]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
includesupplies a list of the elements which are to be copied from the specified module into the schema being defined.
Status Optional
Datatype 0–∞ occurrences of teidata.enumerated separated by whitespace
Schematron

<sch:rule context="tei:moduleRef[ @key eq 'textstructure' and @include ]">
<sch:let name="inclusions"
 value="tokenize( @include, '\s+' )"/>

<sch:report test="not('TEI'=$inclusions)">Not including <TEI> in your
schema guarantees it is not TEI conformant, and will likely be outright
invalid</sch:report>
</sch:rule>
<sch:rule context="tei:moduleRef[ @key eq 'header' and @include ]">
<sch:let name="inclusions"
 value="tokenize( @include, '\s+' )"/>

<sch:report test="not('teiHeader'=$inclusions)">Not including <teiHeader>
in your schema guarantees it is not TEI conformant</sch:report>
</sch:rule>
<sch:rule context="tei:moduleRef[ @key eq 'header' and @include ]">
<sch:let name="inclusions"
 value="tokenize( @include, '\s+' )"/>

<sch:report test="not('fileDesc'=$inclusions)">Not including <fileDesc> in
your schema guarantees it is not TEI conformant</sch:report>
</sch:rule>
<sch:rule context="tei:moduleRef[ @key eq 'header' and @include ]">
<sch:let name="inclusions"
 value="tokenize( @include, '\s+' )"/>

<sch:report test="not('titleStmt'=$inclusions)">Not including <titleStmt>
in your schema guarantees it is not TEI conformant</sch:report>
</sch:rule>
<sch:rule context="tei:moduleRef[ @key eq 'header' and @include ]">
<sch:let name="inclusions"
 value="tokenize( @include, '\s+' )"/>

<sch:report test="not('publicationStmt'=$inclusions)">Not including
<publicationStmt> in your schema guarantees it is not TEI
conformant</sch:report>
</sch:rule>
<sch:rule context="tei:moduleRef[ @key eq 'header' and @include ]">
<sch:let name="inclusions"
 value="tokenize( @include, '\s+' )"/>

<sch:report test="not('sourceDesc'=$inclusions)">Not including
<sourceDesc> in your schema guarantees it is not TEI
conformant</sch:report>
</sch:rule>
<sch:rule context="tei:moduleRef[ @key eq 'core' and @include ]">
<sch:let name="inclusions"
 value="tokenize( @include, '\s+' )"/>

<sch:report test="not('title'=$inclusions)">Not including <title> in your
schema guarantees it is not TEI conformant</sch:report>
</sch:rule>
Legal values are:
TEI
(TEI document)
ab
(anonymous block)
abbr
(abbreviation)
abstract
accMat
(accompanying material)
acquisition
activity
actor
add
(addition)
addName
(additional name)
addSpan
(added span of text)
additional
additions
addrLine
(address line)
address
adminInfo
(administrative information)
affiliation
age
alt
(alternation)
altGrp
(alternation group)
altIdent
(alternate identifier)
altIdentifier
(alternative identifier)
alternate
am
(abbreviation marker)
analytic
(analytic level)
anchor
(anchor point)
annotationBlock
anyElement
app
(apparatus entry)
appInfo
(application information)
application
arc
argument
att
(attribute)
attDef
(attribute definition)
attList
attRef
(attribute pointer)
author
authority
(release authority)
availability
back
(back matter)
bibl
(bibliographic citation)
biblFull
(fully-structured bibliographic citation)
biblScope
(scope of bibliographic reference)
biblStruct
(structured bibliographic citation)
bicond
(bi-conditional feature-structure constraint)
binary
(binary value)
binaryObject
binding
bindingDesc
(binding description)
birth
bloc
body
(text body)
broadcast
byline
c
(character)
cRefPattern
(canonical reference pattern)
caesura
calendar
calendarDesc
(calendar description)
camera
caption
case
castGroup
(cast list grouping)
castItem
(cast list item)
castList
(cast list)
catDesc
(category description)
catRef
(category reference)
catchwords
category
cb
(column beginning)
cell
certainty
change
channel
(primary channel)
char
(character)
charDecl
(character declarations)
charName
(character name)
charProp
(character property)
choice
cit
(cited quotation)
citedRange
(cited range)
cl
(clause)
classCode
(classification code)
classDecl
(classification declarations)
classRef
classSpec
(class specification)
classes
climate
closer
code
collation
collection
colloc
(collocate)
colophon
cond
(conditional feature-structure constraint)
condition
constitution
constraint
(constraint rules)
constraintSpec
(constraint on schema)
content
(content model)
corr
(correction)
correction
(correction principles)
correspAction
(correspondence action)
correspContext
(correspondence context)
correspDesc
(correspondence description)
country
creation
custEvent
(custodial event)
custodialHist
(custodial history)
damage
damageSpan
(damaged span of text)
dataFacet
dataRef
dataSpec
(datatype specification)
datatype
date
dateline
death
decoDesc
(decoration description)
decoNote
(note on decoration)
def
(definition)
default
(default feature value)
defaultVal
(default value)
del
(deletion)
delSpan
(deleted span of text)
depth
derivation
desc
(description)
dictScrap
(dictionary scrap)
dim
dimensions
distinct
distributor
district
div
(text division)
div1
(level-1 text division)
div2
(level-2 text division)
div3
(level-3 text division)
div4
(level-4 text division)
div5
(level-5 text division)
div6
(level-6 text division)
div7
(level-7 text division)
divGen
(automatically generated text division)
docAuthor
(document author)
docDate
(document date)
docEdition
(document edition)
docImprint
(document imprint)
docTitle
(document title)
domain
(domain of use)
eLeaf
(leaf or terminal node of an embedding tree)
eTree
(embedding tree)
edition
editionStmt
(edition statement)
editor
editorialDecl
(editorial practice declaration)
education
eg
(example)
egXML
(example of XML)
elementRef
elementSpec
(element specification)
email
(electronic mail address)
emph
(emphasized)
empty
encodingDesc
(encoding description)
entry
entryFree
(unstructured entry)
epigraph
epilogue
equipment
equiv
(equivalent)
etym
(etymology)
event
ex
(editorial expansion)
exemplum
expan
(expansion)
explicit
extent
f
(feature)
fDecl
(feature declaration)
fDescr
(feature description (in FSD))
fLib
(feature library)
facsimile
factuality
faith
figDesc
(description of figure)
figure
fileDesc
(file description)
filiation
finalRubric
floatingText
floruit
foliation
foreign
forename
forest
form
(form information group)
formula
front
(front matter)
fs
(feature structure)
fsConstraints
(feature-structure constraints)
fsDecl
(feature structure declaration)
fsDescr
(feature system description (in FSD))
fsdDecl
(feature system declaration)
fsdLink
(feature structure declaration link)
funder
(funding body)
fvLib
(feature-value library)
fw
(forme work)
g
(character or glyph)
gap
gb
(gathering beginning)
gen
(gender)
genName
(generational name component)
geo
(geographical coordinates)
geoDecl
(geographic coordinates declaration)
geogFeat
(geographical feature name)
geogName
(geographical name)
gi
(element name)
gloss
glyph
(character glyph)
glyphName
(character glyph name)
gram
(grammatical information)
gramGrp
(grammatical information group)
graph
graphic
group
handDesc
(description of hands)
handNote
(note on hand)
handNotes
handShift
head
(heading)
headItem
(heading for list items)
headLabel
(heading for list labels)
height
heraldry
hi
(highlighted)
history
hom
(homograph)
hyph
(hyphenation)
hyphenation
iNode
(intermediate (or internal) node)
iType
(inflectional class)
ident
(identifier)
idno
(identifier)
if
iff
(if and only if)
imprimatur
imprint
incident
incipit
index
(index entry)
institution
interaction
interp
(interpretation)
interpGrp
(interpretation group)
interpretation
item
join
joinGrp
(join group)
keywords
kinesic
l
(verse line)
label
lacunaEnd
lacunaStart
lang
(language name)
langKnowledge
(language knowledge)
langKnown
(language known)
langUsage
(language usage)
language
layout
layoutDesc
(layout description)
lb
(line beginning)
lbl
(label)
leaf
lem
(lemma)
lg
(line group)
licence
line
link
linkGrp
(link group)
list
listApp
(list of apparatus entries)
listBibl
(citation list)
listChange
listEvent
(list of events)
listForest
listNym
(list of canonical names)
listOrg
(list of organizations)
listPerson
(list of persons)
listPlace
(list of places)
listPrefixDef
(list of prefix definitions)
listRef
(list of references)
listRelation
listTranspose
listWit
(witness list)
localName
(locally-defined property name)
locale
location
locus
locusGrp
m
(morpheme)
macroRef
macroSpec
(macro specification)
mapping
(character mapping)
material
measure
measureGrp
(measure group)
media
meeting
memberOf
mentioned
metDecl
(metrical notation declaration)
metSym
(metrical notation symbol)
metamark
milestone
mod
model
modelGrp
modelSequence
moduleRef
(module reference)
moduleSpec
(module specification)
monogr
(monographic level)
mood
move
(movement)
msContents
(manuscript contents)
msDesc
(manuscript description)
msFrag
(manuscript fragment)
msIdentifier
(manuscript identifier)
msItem
(manuscript item)
msItemStruct
(structured manuscript item)
msName
(alternative name)
msPart
(manuscript part)
musicNotation
name
(name, proper noun)
nameLink
(name link)
namespace
nationality
node
normalization
notatedMusic
note
notesStmt
(notes statement)
num
(number)
number
numeric
(numeric value)
nym
(canonical name)
oRef
(orthographic-form reference)
objectDesc
objectType
occupation
offset
opener
org
(organization)
orgName
(organization name)
orig
(original form)
origDate
(origin date)
origPlace
(origin place)
origin
orth
(orthographic form)
outputRendition
p
(paragraph)
pRef
(pronunciation reference)
param
paramList
paramSpec
particDesc
(participation description)
pause
pb
(page beginning)
pc
(punctuation character)
per
(person)
performance
persName
(personal name)
person
personGrp
(personal group)
persona
phr
(phrase)
physDesc
(physical description)
place
placeName
population
pos
(part of speech)
postBox
(postal box or post office box)
postCode
(postal code)
postscript
precision
prefixDef
(prefix definition)
preparedness
principal
(principal researcher)
profileDesc
(text-profile description)
projectDesc
(project description)
prologue
pron
(pronunciation)
provenance
ptr
(pointer)
pubPlace
(publication place)
publicationStmt
(publication statement)
publisher
punctuation
purpose
q
(quoted)
quotation
quote
(quotation)
rdg
(reading)
rdgGrp
(reading group)
re
(related entry)
recordHist
(recorded history)
recording
(recording event)
recordingStmt
(recording statement)
redo
ref
(reference)
refState
(reference state)
refsDecl
(references declaration)
reg
(regularization)
region
relatedItem
relation
(relationship)
remarks
rendition
repository
residence
resp
(responsibility)
respStmt
(statement of responsibility)
respons
(responsibility)
restore
retrace
revisionDesc
(revision description)
rhyme
role
roleDesc
(role description)
roleName
root
(root node)
row
rs
(referencing string)
rubric
s
(s-unit)
said
(speech or thought)
salute
(salutation)
samplingDecl
(sampling declaration)
schemaRef
(schema reference)
schemaSpec
(schema specification)
scriptDesc
scriptNote
scriptStmt
(script statement)
seal
sealDesc
(seal description)
secFol
(second folio)
secl
(secluded text)
seg
(arbitrary segment)
segmentation
sense
sequence
series
(series information)
seriesStmt
(series statement)
set
(setting)
setting
settingDesc
(setting description)
settlement
sex
shift
sic
(Latin for thus or so )
signatures
signed
(signature)
soCalled
socecStatus
(socio-economic status)
sound
source
sourceDesc
(source description)
sourceDoc
sp
(speech)
spGrp
(speech group)
space
span
spanGrp
(span group)
speaker
specDesc
(specification description)
specGrp
(specification group)
specGrpRef
(reference to a specification group)
specList
(specification list)
sponsor
stage
(stage direction)
stamp
state
stdVals
(standard values)
street
stress
string
(string value)
styleDefDecl
(style definition language declaration)
subc
(subcategorization)
subst
(substitution)
substJoin
(substitution join)
summary
superEntry
supplied
support
supportDesc
(support description)
surface
surfaceGrp
surname
surplus
surrogates
syll
(syllabification)
symbol
(symbolic value)
table
tag
tagUsage
tagsDecl
(tagging declaration)
taxonomy
tech
(technical stage direction)
teiCorpus
teiHeader
(TEI header)
term
terrain
text
textClass
(text classification)
textDesc
(text description)
textLang
(text language)
textNode
then
time
timeline
title
titlePage
(title page)
titlePart
titleStmt
(title statement)
tns
(tense)
trailer
trait
transcriptionDesc
transpose
tree
triangle
(underspecified embedding tree, so called because of its characteristic shape when drawn)
typeDesc
typeNote
u
(utterance)
unclear
undo
unicodeName
(unicode property name)
usg
(usage)
vAlt
(value alternation)
vColl
(collection of values)
vDefault
(value default)
vLabel
(value label)
vMerge
(merged collection of values)
vNot
(value negation)
vRange
(value range)
val
(value)
valDesc
(value description)
valItem
valList
(value list)
value
variantEncoding
view
vocal
w
(word)
watermark
when
width
wit
witDetail
(witness detail)
witEnd
(fragmented witness end)
witStart
(fragmented witness start)
witness
writing
xenoData
(non-TEI metadata)
xr
(cross-reference phrase)
zone
exceptsupplies a list of the elements which are not to be copied from the specified module into the schema being defined.
Status Optional
Datatype 0–∞ occurrences of teidata.enumerated separated by whitespace
Schematron

<sch:let name="exceptions"
 value="tokenize( ., '\s+' )"/>

<sch:report test="'TEI'=$exceptions">Removing <TEI> from your schema
guarantees it is not TEI conformant, and will will likely be outright
invalid</sch:report>
<sch:report test="'teiHeader'=$exceptions">Removing <teiHeader> from your
schema guarantees it is not TEI conformant</sch:report>
<sch:report test="'fileDesc'=$exceptions">Removing <fileDesc> from your
schema guarantees it is not TEI conformant</sch:report>
<sch:report test="'titleStmt'=$exceptions">Removing <titleStmt> from your
schema guarantees it is not TEI conformant</sch:report>
<sch:report test="'title'=$exceptions">Removing <title> from your schema
guarantees it is not TEI conformant</sch:report>
<sch:report test="'publicationStmt'=$exceptions">Removing
<publicationStmt> from your schema guarantees it is not TEI
conformant</sch:report>
<sch:report test="'sourceDesc'=$exceptions">Removing <sourceDesc> from
your schema guarantees it is not TEI conformant</sch:report>
Suggested values include:
TEI
(TEI document)
ab
(anonymous block)
abbr
(abbreviation)
abstract
accMat
(accompanying material)
acquisition
activity
actor
add
(addition)
addName
(additional name)
addSpan
(added span of text)
additional
additions
addrLine
(address line)
address
adminInfo
(administrative information)
affiliation
age
alt
(alternation)
altGrp
(alternation group)
altIdent
(alternate identifier)
altIdentifier
(alternative identifier)
alternate
am
(abbreviation marker)
analytic
(analytic level)
anchor
(anchor point)
annotationBlock
anyElement
app
(apparatus entry)
appInfo
(application information)
application
arc
argument
att
(attribute)
attDef
(attribute definition)
attList
attRef
(attribute pointer)
author
authority
(release authority)
availability
back
(back matter)
bibl
(bibliographic citation)
biblFull
(fully-structured bibliographic citation)
biblScope
(scope of bibliographic reference)
biblStruct
(structured bibliographic citation)
bicond
(bi-conditional feature-structure constraint)
binary
(binary value)
binaryObject
binding
bindingDesc
(binding description)
birth
bloc
body
(text body)
broadcast
byline
c
(character)
cRefPattern
(canonical reference pattern)
caesura
calendar
calendarDesc
(calendar description)
camera
caption
case
castGroup
(cast list grouping)
castItem
(cast list item)
castList
(cast list)
catDesc
(category description)
catRef
(category reference)
catchwords
category
cb
(column beginning)
cell
certainty
change
channel
(primary channel)
char
(character)
charDecl
(character declarations)
charName
(character name)
charProp
(character property)
choice
cit
(cited quotation)
citedRange
(cited range)
cl
(clause)
classCode
(classification code)
classDecl
(classification declarations)
classRef
classSpec
(class specification)
classes
climate
closer
code
collation
collection
colloc
(collocate)
colophon
cond
(conditional feature-structure constraint)
condition
constitution
constraint
(constraint rules)
constraintSpec
(constraint on schema)
content
(content model)
corr
(correction)
correction
(correction principles)
correspAction
(correspondence action)
correspContext
(correspondence context)
correspDesc
(correspondence description)
country
creation
custEvent
(custodial event)
custodialHist
(custodial history)
damage
damageSpan
(damaged span of text)
dataFacet
dataRef
dataSpec
(datatype specification)
datatype
date
dateline
death
decoDesc
(decoration description)
decoNote
(note on decoration)
def
(definition)
default
(default feature value)
defaultVal
(default value)
del
(deletion)
delSpan
(deleted span of text)
depth
derivation
desc
(description)
dictScrap
(dictionary scrap)
dim
dimensions
distinct
distributor
district
div
(text division)
div1
(level-1 text division)
div2
(level-2 text division)
div3
(level-3 text division)
div4
(level-4 text division)
div5
(level-5 text division)
div6
(level-6 text division)
div7
(level-7 text division)
divGen
(automatically generated text division)
docAuthor
(document author)
docDate
(document date)
docEdition
(document edition)
docImprint
(document imprint)
docTitle
(document title)
domain
(domain of use)
eLeaf
(leaf or terminal node of an embedding tree)
eTree
(embedding tree)
edition
editionStmt
(edition statement)
editor
editorialDecl
(editorial practice declaration)
education
eg
(example)
egXML
(example of XML)
elementRef
elementSpec
(element specification)
email
(electronic mail address)
emph
(emphasized)
empty
encodingDesc
(encoding description)
entry
entryFree
(unstructured entry)
epigraph
epilogue
equipment
equiv
(equivalent)
etym
(etymology)
event
ex
(editorial expansion)
exemplum
expan
(expansion)
explicit
extent
f
(feature)
fDecl
(feature declaration)
fDescr
(feature description (in FSD))
fLib
(feature library)
facsimile
factuality
faith
figDesc
(description of figure)
figure
fileDesc
(file description)
filiation
finalRubric
floatingText
floruit
foliation
foreign
forename
forest
form
(form information group)
formula
front
(front matter)
fs
(feature structure)
fsConstraints
(feature-structure constraints)
fsDecl
(feature structure declaration)
fsDescr
(feature system description (in FSD))
fsdDecl
(feature system declaration)
fsdLink
(feature structure declaration link)
funder
(funding body)
fvLib
(feature-value library)
fw
(forme work)
g
(character or glyph)
gap
gb
(gathering beginning)
gen
(gender)
genName
(generational name component)
geo
(geographical coordinates)
geoDecl
(geographic coordinates declaration)
geogFeat
(geographical feature name)
geogName
(geographical name)
gi
(element name)
gloss
glyph
(character glyph)
glyphName
(character glyph name)
gram
(grammatical information)
gramGrp
(grammatical information group)
graph
graphic
group
handDesc
(description of hands)
handNote
(note on hand)
handNotes
handShift
head
(heading)
headItem
(heading for list items)
headLabel
(heading for list labels)
height
heraldry
hi
(highlighted)
history
hom
(homograph)
hyph
(hyphenation)
hyphenation
iNode
(intermediate (or internal) node)
iType
(inflectional class)
ident
(identifier)
idno
(identifier)
if
iff
(if and only if)
imprimatur
imprint
incident
incipit
index
(index entry)
institution
interaction
interp
(interpretation)
interpGrp
(interpretation group)
interpretation
item
join
joinGrp
(join group)
keywords
kinesic
l
(verse line)
label
lacunaEnd
lacunaStart
lang
(language name)
langKnowledge
(language knowledge)
langKnown
(language known)
langUsage
(language usage)
language
layout
layoutDesc
(layout description)
lb
(line beginning)
lbl
(label)
leaf
lem
(lemma)
lg
(line group)
licence
line
link
linkGrp
(link group)
list
listApp
(list of apparatus entries)
listBibl
(citation list)
listChange
listEvent
(list of events)
listForest
listNym
(list of canonical names)
listOrg
(list of organizations)
listPerson
(list of persons)
listPlace
(list of places)
listPrefixDef
(list of prefix definitions)
listRef
(list of references)
listRelation
listTranspose
listWit
(witness list)
localName
(locally-defined property name)
locale
location
locus
locusGrp
m
(morpheme)
macroRef
macroSpec
(macro specification)
mapping
(character mapping)
material
measure
measureGrp
(measure group)
media
meeting
memberOf
mentioned
metDecl
(metrical notation declaration)
metSym
(metrical notation symbol)
metamark
milestone
mod
model
modelGrp
modelSequence
moduleRef
(module reference)
moduleSpec
(module specification)
monogr
(monographic level)
mood
move
(movement)
msContents
(manuscript contents)
msDesc
(manuscript description)
msFrag
(manuscript fragment)
msIdentifier
(manuscript identifier)
msItem
(manuscript item)
msItemStruct
(structured manuscript item)
msName
(alternative name)
msPart
(manuscript part)
musicNotation
name
(name, proper noun)
nameLink
(name link)
namespace
nationality
node
normalization
notatedMusic
note
notesStmt
(notes statement)
num
(number)
number
numeric
(numeric value)
nym
(canonical name)
oRef
(orthographic-form reference)
objectDesc
objectType
occupation
offset
opener
org
(organization)
orgName
(organization name)
orig
(original form)
origDate
(origin date)
origPlace
(origin place)
origin
orth
(orthographic form)
outputRendition
p
(paragraph)
pRef
(pronunciation reference)
param
paramList
paramSpec
particDesc
(participation description)
pause
pb
(page beginning)
pc
(punctuation character)
per
(person)
performance
persName
(personal name)
person
personGrp
(personal group)
persona
phr
(phrase)
physDesc
(physical description)
place
placeName
population
pos
(part of speech)
postBox
(postal box or post office box)
postCode
(postal code)
postscript
precision
prefixDef
(prefix definition)
preparedness
principal
(principal researcher)
profileDesc
(text-profile description)
projectDesc
(project description)
prologue
pron
(pronunciation)
provenance
ptr
(pointer)
pubPlace
(publication place)
publicationStmt
(publication statement)
publisher
punctuation
purpose
q
(quoted)
quotation
quote
(quotation)
rdg
(reading)
rdgGrp
(reading group)
re
(related entry)
recordHist
(recorded history)
recording
(recording event)
recordingStmt
(recording statement)
redo
ref
(reference)
refState
(reference state)
refsDecl
(references declaration)
reg
(regularization)
region
relatedItem
relation
(relationship)
remarks
rendition
repository
residence
resp
(responsibility)
respStmt
(statement of responsibility)
respons
(responsibility)
restore
retrace
revisionDesc
(revision description)
rhyme
role
roleDesc
(role description)
roleName
root
(root node)
row
rs
(referencing string)
rubric
s
(s-unit)
said
(speech or thought)
salute
(salutation)
samplingDecl
(sampling declaration)
schemaRef
(schema reference)
schemaSpec
(schema specification)
scriptDesc
scriptNote
scriptStmt
(script statement)
seal
sealDesc
(seal description)
secFol
(second folio)
secl
(secluded text)
seg
(arbitrary segment)
segmentation
sense
sequence
series
(series information)
seriesStmt
(series statement)
set
(setting)
setting
settingDesc
(setting description)
settlement
sex
shift
sic
(Latin for thus or so )
signatures
signed
(signature)
soCalled
socecStatus
(socio-economic status)
sound
source
sourceDesc
(source description)
sourceDoc
sp
(speech)
spGrp
(speech group)
space
span
spanGrp
(span group)
speaker
specDesc
(specification description)
specGrp
(specification group)
specGrpRef
(reference to a specification group)
specList
(specification list)
sponsor
stage
(stage direction)
stamp
state
stdVals
(standard values)
street
stress
string
(string value)
styleDefDecl
(style definition language declaration)
subc
(subcategorization)
subst
(substitution)
substJoin
(substitution join)
summary
superEntry
supplied
support
supportDesc
(support description)
surface
surfaceGrp
surname
surplus
surrogates
syll
(syllabification)
symbol
(symbolic value)
table
tag
tagUsage
tagsDecl
(tagging declaration)
taxonomy
tech
(technical stage direction)
teiCorpus
teiHeader
(TEI header)
term
terrain
text
textClass
(text classification)
textDesc
(text description)
textLang
(text language)
textNode
then
time
timeline
title
titlePage
(title page)
titlePart
titleStmt
(title statement)
tns
(tense)
trailer
trait
transcriptionDesc
transpose
tree
triangle
(underspecified embedding tree, so called because of its characteristic shape when drawn)
typeDesc
typeNote
u
(utterance)
unclear
undo
unicodeName
(unicode property name)
usg
(usage)
vAlt
(value alternation)
vColl
(collection of values)
vDefault
(value default)
vLabel
(value label)
vMerge
(merged collection of values)
vNot
(value negation)
vRange
(value range)
val
(value)
valDesc
(value description)
valItem
valList
(value list)
value
variantEncoding
view
vocal
w
(word)
watermark
when
width
wit
witDetail
(witness detail)
witEnd
(fragmented witness end)
witStart
(fragmented witness start)
witness
writing
xenoData
(non-TEI metadata)
xr
(cross-reference phrase)
zone
key
Status Optional
Datatype teidata.enumerated
Legal values are:
analysis
certainty
core
corpus
dictionaries
drama
figures
gaiji
header
iso-fs
linking
msdescription
namesdates
nets
spoken
tagdocs
tei
textcrit
textstructure
transcr
verse
url(uniform resource locator) refers to a non-TEI module of RELAX NG code by external location
Status Optional
Datatype teidata.pointer
prefixspecifies a default prefix which will be prepended to all patterns from the imported module
Status Optional
Datatype 0–1 occurrences of teidata.xmlName separated by whitespace
Schematron

<s:rule context="tei:moduleRef">
<s:report test="//*[ not( generate-id(.) eq generate-id( current() ) ) ]/@prefix = @prefix">The prefix attribute
of <s:name/> should not match that of any other
element (it would defeat the purpose)</s:report>
</s:rule>
Note

Use of this attribute avoids name collisions (and thus invalid schemas) when the external schema being mixed in with TEI uses a name the TEI or some other included external schema already uses for a pattern.

Member of
Contained by
May contain
tagdocs: content
Note

If neither include nor exclude is supplied, the effect of this element is to make all the declarations contained by the referenced module available to the schema being compiled. If both attributes are supplied, an ODD processor should signal an error.

A TEI module is identified by the name supplied as value for the ident attribute on a moduleSpec element. The source attribute may be used to specify an online source from which the specification of that module may be read. A URI may alternatively be supplied in the case of a non-TEI module, and this is expected to be written as a RELAX NG schema.

If the uri attribute is used, the content element may also be supplied as a child of this element. Its content (which is assumed to be a fragment of RELAX NG code) will be copied along with the content of the resource indicated by the uri attribute into the target RELAX NG schema.

Example
<moduleRef key="linking"/>

This includes all objects available from the linking module.

Example
<moduleRef key="linking"
 except="linkGrp link"/>

This includes all elements available from the linking module except for the <link> and <linkGrp> elements.

Example
<moduleRef key="linking"
 include="linkGrp link"/>

This includes only the <link> and <linkGrp> elements from the linking module.

SchematronThis is not strictly necessary. The TEI patterns have a default prefix (the value of ident of schemaSpec), so if only one external module is imported, it does not need a prefix — there will not be any collisions of pattern names. But it is good practice to use a prefix anyway, and it is required if more than one external module that use patterns with the same name are included. This is the case, in fact, for the RELAX NG and ISO Schematron schemas that are included in this schema.

<sch:rule context="tei:moduleRef[ @url ]">
<sch:assert test="@prefix"> a <moduleRef> that uses the url= attribute should
have a prefix= attribute, too </sch:assert>
</sch:rule>
Schematron

<sch:rule context="tei:moduleRef[ @key ]">
<sch:let name="mykeyvalue="@key"/>
<sch:report test="preceding-sibling::tei:moduleRef[ @key eq $mykey ]">The
'<sch:value-of select="@key"/>' module is included (by reference) more
than once</sch:report>
</sch:rule>
Schematron

<sch:rule context="tei:moduleRef[@key eq 'header']">
<sch:let name="include"
 value="tokenize( normalize-space(@include),' ')"/>

<sch:let name="except"
 value="tokenize( normalize-space(@except), ' ')"/>

<sch:assert test="every $gi in $include satisfies $gi = ( 'teiHeader', 'fileDesc', 'titleStmt', 'sponsor', 'funder', 'principal', 'editionStmt', 'edition', 'extent', 'publicationStmt', 'distributor', 'authority', 'idno', 'availability', 'licence', 'seriesStmt', 'notesStmt', 'sourceDesc', 'biblFull', 'encodingDesc', 'schemaRef', 'projectDesc', 'samplingDecl', 'editorialDecl', 'correction', 'normalization', 'quotation', 'hyphenation', 'segmentation', 'stdVals', 'interpretation', 'punctuation', 'tagsDecl', 'tagUsage', 'namespace', 'rendition', 'styleDefDecl', 'refsDecl', 'cRefPattern', 'prefixDef', 'listPrefixDef', 'refState', 'classDecl', 'taxonomy', 'category', 'catDesc', 'geoDecl', 'appInfo', 'application', 'profileDesc', 'handNote', 'abstract', 'creation', 'langUsage', 'language', 'textClass', 'keywords', 'classCode', 'catRef', 'calendarDesc', 'calendar', 'correspDesc', 'correspAction', 'correspContext', 'xenoData', 'revisionDesc', 'change', 'scriptNote', 'listChange' )">One or more of the elements included on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
<sch:assert test="every $gi in $except satisfies $gi = ( 'teiHeader', 'fileDesc', 'titleStmt', 'sponsor', 'funder', 'principal', 'editionStmt', 'edition', 'extent', 'publicationStmt', 'distributor', 'authority', 'idno', 'availability', 'licence', 'seriesStmt', 'notesStmt', 'sourceDesc', 'biblFull', 'encodingDesc', 'schemaRef', 'projectDesc', 'samplingDecl', 'editorialDecl', 'correction', 'normalization', 'quotation', 'hyphenation', 'segmentation', 'stdVals', 'interpretation', 'punctuation', 'tagsDecl', 'tagUsage', 'namespace', 'rendition', 'styleDefDecl', 'refsDecl', 'cRefPattern', 'prefixDef', 'listPrefixDef', 'refState', 'classDecl', 'taxonomy', 'category', 'catDesc', 'geoDecl', 'appInfo', 'application', 'profileDesc', 'handNote', 'abstract', 'creation', 'langUsage', 'language', 'textClass', 'keywords', 'classCode', 'catRef', 'calendarDesc', 'calendar', 'correspDesc', 'correspAction', 'correspContext', 'xenoData', 'revisionDesc', 'change', 'scriptNote', 'listChange' )">One or more of the elements excepted on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
</sch:rule>
<sch:rule context="tei:moduleRef[@key eq 'core']">
<sch:let name="include"
 value="tokenize( normalize-space(@include),' ')"/>

<sch:let name="except"
 value="tokenize( normalize-space(@except), ' ')"/>

<sch:assert test="every $gi in $include satisfies $gi = ( 'p', 'foreign', 'emph', 'hi', 'distinct', 'said', 'quote', 'q', 'cit', 'mentioned', 'soCalled', 'desc', 'gloss', 'term', 'sic', 'corr', 'choice', 'reg', 'orig', 'gap', 'add', 'del', 'unclear', 'name', 'rs', 'email', 'address', 'addrLine', 'street', 'postCode', 'postBox', 'num', 'measure', 'measureGrp', 'date', 'time', 'abbr', 'expan', 'ptr', 'ref', 'list', 'item', 'label', 'head', 'headLabel', 'headItem', 'note', 'index', 'media', 'graphic', 'binaryObject', 'milestone', 'gb', 'pb', 'lb', 'cb', 'analytic', 'monogr', 'series', 'author', 'editor', 'respStmt', 'resp', 'title', 'meeting', 'imprint', 'publisher', 'biblScope', 'citedRange', 'pubPlace', 'bibl', 'biblStruct', 'listBibl', 'relatedItem', 'l', 'lg', 'sp', 'speaker', 'stage', 'teiCorpus', 'divGen', 'textLang' )">One or more of the elements included on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
<sch:assert test="every $gi in $except satisfies $gi = ( 'p', 'foreign', 'emph', 'hi', 'distinct', 'said', 'quote', 'q', 'cit', 'mentioned', 'soCalled', 'desc', 'gloss', 'term', 'sic', 'corr', 'choice', 'reg', 'orig', 'gap', 'add', 'del', 'unclear', 'name', 'rs', 'email', 'address', 'addrLine', 'street', 'postCode', 'postBox', 'num', 'measure', 'measureGrp', 'date', 'time', 'abbr', 'expan', 'ptr', 'ref', 'list', 'item', 'label', 'head', 'headLabel', 'headItem', 'note', 'index', 'media', 'graphic', 'binaryObject', 'milestone', 'gb', 'pb', 'lb', 'cb', 'analytic', 'monogr', 'series', 'author', 'editor', 'respStmt', 'resp', 'title', 'meeting', 'imprint', 'publisher', 'biblScope', 'citedRange', 'pubPlace', 'bibl', 'biblStruct', 'listBibl', 'relatedItem', 'l', 'lg', 'sp', 'speaker', 'stage', 'teiCorpus', 'divGen', 'textLang' )">One or more of the elements excepted on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
</sch:rule>
<sch:rule context="tei:moduleRef[@key eq 'textstructure']">
<sch:let name="include"
 value="tokenize( normalize-space(@include),' ')"/>

<sch:let name="except"
 value="tokenize( normalize-space(@except), ' ')"/>

<sch:assert test="every $gi in $include satisfies $gi = ( 'TEI', 'text', 'body', 'group', 'floatingText', 'div', 'div1', 'div2', 'div3', 'div4', 'div5', 'div6', 'div7', 'trailer', 'byline', 'dateline', 'argument', 'epigraph', 'opener', 'closer', 'salute', 'signed', 'postscript', 'titlePage', 'docTitle', 'titlePart', 'docAuthor', 'imprimatur', 'docEdition', 'docImprint', 'docDate', 'front', 'back' )">One or more of the elements included on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
<sch:assert test="every $gi in $except satisfies $gi = ( 'TEI', 'text', 'body', 'group', 'floatingText', 'div', 'div1', 'div2', 'div3', 'div4', 'div5', 'div6', 'div7', 'trailer', 'byline', 'dateline', 'argument', 'epigraph', 'opener', 'closer', 'salute', 'signed', 'postscript', 'titlePage', 'docTitle', 'titlePart', 'docAuthor', 'imprimatur', 'docEdition', 'docImprint', 'docDate', 'front', 'back' )">One or more of the elements excepted on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
</sch:rule>
<sch:rule context="tei:moduleRef[@key eq 'gaiji']">
<sch:let name="include"
 value="tokenize( normalize-space(@include),' ')"/>

<sch:let name="except"
 value="tokenize( normalize-space(@except), ' ')"/>

<sch:assert test="every $gi in $include satisfies $gi = ( 'g', 'char', 'charName', 'charProp', 'charDecl', 'glyph', 'glyphName', 'localName', 'mapping', 'unicodeName', 'value' )">One or more of the elements included on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
<sch:assert test="every $gi in $except satisfies $gi = ( 'g', 'char', 'charName', 'charProp', 'charDecl', 'glyph', 'glyphName', 'localName', 'mapping', 'unicodeName', 'value' )">One or more of the elements excepted on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
</sch:rule>
<sch:rule context="tei:moduleRef[@key eq 'verse']">
<sch:let name="include"
 value="tokenize( normalize-space(@include),' ')"/>

<sch:let name="except"
 value="tokenize( normalize-space(@except), ' ')"/>

<sch:assert test="every $gi in $include satisfies $gi = ( 'metDecl', 'metSym', 'caesura', 'rhyme' )">One or more of the elements included on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
<sch:assert test="every $gi in $except satisfies $gi = ( 'metDecl', 'metSym', 'caesura', 'rhyme' )">One or more of the elements excepted on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
</sch:rule>
<sch:rule context="tei:moduleRef[@key eq 'drama']">
<sch:let name="include"
 value="tokenize( normalize-space(@include),' ')"/>

<sch:let name="except"
 value="tokenize( normalize-space(@except), ' ')"/>

<sch:assert test="every $gi in $include satisfies $gi = ( 'set', 'prologue', 'epilogue', 'performance', 'castList', 'castGroup', 'castItem', 'role', 'roleDesc', 'actor', 'spGrp', 'move', 'view', 'camera', 'sound', 'caption', 'tech' )">One or more of the elements included on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
<sch:assert test="every $gi in $except satisfies $gi = ( 'set', 'prologue', 'epilogue', 'performance', 'castList', 'castGroup', 'castItem', 'role', 'roleDesc', 'actor', 'spGrp', 'move', 'view', 'camera', 'sound', 'caption', 'tech' )">One or more of the elements excepted on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
</sch:rule>
<sch:rule context="tei:moduleRef[@key eq 'spoken']">
<sch:let name="include"
 value="tokenize( normalize-space(@include),' ')"/>

<sch:let name="except"
 value="tokenize( normalize-space(@except), ' ')"/>

<sch:assert test="every $gi in $include satisfies $gi = ( 'scriptStmt', 'recordingStmt', 'recording', 'equipment', 'broadcast', 'transcriptionDesc', 'u', 'pause', 'vocal', 'kinesic', 'incident', 'writing', 'shift', 'annotationBlock' )">One or more of the elements included on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
<sch:assert test="every $gi in $except satisfies $gi = ( 'scriptStmt', 'recordingStmt', 'recording', 'equipment', 'broadcast', 'transcriptionDesc', 'u', 'pause', 'vocal', 'kinesic', 'incident', 'writing', 'shift', 'annotationBlock' )">One or more of the elements excepted on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
</sch:rule>
<sch:rule context="tei:moduleRef[@key eq 'dictionaries']">
<sch:let name="include"
 value="tokenize( normalize-space(@include),' ')"/>

<sch:let name="except"
 value="tokenize( normalize-space(@except), ' ')"/>

<sch:assert test="every $gi in $include satisfies $gi = ( 'superEntry', 'entry', 'entryFree', 'hom', 'sense', 'dictScrap', 'form', 'orth', 'pron', 'hyph', 'syll', 'stress', 'gram', 'gen', 'number', 'case', 'per', 'tns', 'mood', 'iType', 'gramGrp', 'pos', 'subc', 'colloc', 'def', 'etym', 'lang', 'usg', 'lbl', 'xr', 're', 'oRef', 'pRef' )">One or more of the elements included on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
<sch:assert test="every $gi in $except satisfies $gi = ( 'superEntry', 'entry', 'entryFree', 'hom', 'sense', 'dictScrap', 'form', 'orth', 'pron', 'hyph', 'syll', 'stress', 'gram', 'gen', 'number', 'case', 'per', 'tns', 'mood', 'iType', 'gramGrp', 'pos', 'subc', 'colloc', 'def', 'etym', 'lang', 'usg', 'lbl', 'xr', 're', 'oRef', 'pRef' )">One or more of the elements excepted on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
</sch:rule>
<sch:rule context="tei:moduleRef[@key eq 'msdescription']">
<sch:let name="include"
 value="tokenize( normalize-space(@include),' ')"/>

<sch:let name="except"
 value="tokenize( normalize-space(@except), ' ')"/>

<sch:assert test="every $gi in $include satisfies $gi = ( 'msDesc', 'catchwords', 'dimensions', 'dim', 'height', 'depth', 'width', 'heraldry', 'locus', 'locusGrp', 'material', 'objectType', 'origDate', 'origPlace', 'secFol', 'signatures', 'stamp', 'watermark', 'msIdentifier', 'institution', 'repository', 'collection', 'altIdentifier', 'msName', 'colophon', 'explicit', 'filiation', 'finalRubric', 'incipit', 'msContents', 'msItem', 'msItemStruct', 'rubric', 'summary', 'physDesc', 'objectDesc', 'supportDesc', 'support', 'collation', 'foliation', 'condition', 'layoutDesc', 'layout', 'handDesc', 'typeDesc', 'typeNote', 'scriptDesc', 'musicNotation', 'decoDesc', 'decoNote', 'additions', 'bindingDesc', 'binding', 'sealDesc', 'seal', 'accMat', 'history', 'origin', 'provenance', 'acquisition', 'additional', 'adminInfo', 'recordHist', 'source', 'custodialHist', 'custEvent', 'surrogates', 'msPart', 'msFrag' )">One or more of the elements included on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
<sch:assert test="every $gi in $except satisfies $gi = ( 'msDesc', 'catchwords', 'dimensions', 'dim', 'height', 'depth', 'width', 'heraldry', 'locus', 'locusGrp', 'material', 'objectType', 'origDate', 'origPlace', 'secFol', 'signatures', 'stamp', 'watermark', 'msIdentifier', 'institution', 'repository', 'collection', 'altIdentifier', 'msName', 'colophon', 'explicit', 'filiation', 'finalRubric', 'incipit', 'msContents', 'msItem', 'msItemStruct', 'rubric', 'summary', 'physDesc', 'objectDesc', 'supportDesc', 'support', 'collation', 'foliation', 'condition', 'layoutDesc', 'layout', 'handDesc', 'typeDesc', 'typeNote', 'scriptDesc', 'musicNotation', 'decoDesc', 'decoNote', 'additions', 'bindingDesc', 'binding', 'sealDesc', 'seal', 'accMat', 'history', 'origin', 'provenance', 'acquisition', 'additional', 'adminInfo', 'recordHist', 'source', 'custodialHist', 'custEvent', 'surrogates', 'msPart', 'msFrag' )">One or more of the elements excepted on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
</sch:rule>
<sch:rule context="tei:moduleRef[@key eq 'transcr']">
<sch:let name="include"
 value="tokenize( normalize-space(@include),' ')"/>

<sch:let name="except"
 value="tokenize( normalize-space(@except), ' ')"/>

<sch:assert test="every $gi in $include satisfies $gi = ( 'facsimile', 'sourceDoc', 'surface', 'surfaceGrp', 'zone', 'addSpan', 'damage', 'damageSpan', 'delSpan', 'ex', 'fw', 'handNotes', 'handShift', 'am', 'restore', 'space', 'subst', 'substJoin', 'supplied', 'surplus', 'secl', 'line', 'listTranspose', 'metamark', 'mod', 'redo', 'retrace', 'transpose', 'undo' )">One or more of the elements included on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
<sch:assert test="every $gi in $except satisfies $gi = ( 'facsimile', 'sourceDoc', 'surface', 'surfaceGrp', 'zone', 'addSpan', 'damage', 'damageSpan', 'delSpan', 'ex', 'fw', 'handNotes', 'handShift', 'am', 'restore', 'space', 'subst', 'substJoin', 'supplied', 'surplus', 'secl', 'line', 'listTranspose', 'metamark', 'mod', 'redo', 'retrace', 'transpose', 'undo' )">One or more of the elements excepted on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
</sch:rule>
<sch:rule context="tei:moduleRef[@key eq 'textcrit']">
<sch:let name="include"
 value="tokenize( normalize-space(@include),' ')"/>

<sch:let name="except"
 value="tokenize( normalize-space(@except), ' ')"/>

<sch:assert test="every $gi in $include satisfies $gi = ( 'app', 'listApp', 'lem', 'rdg', 'rdgGrp', 'witDetail', 'wit', 'listWit', 'witness', 'witStart', 'witEnd', 'lacunaStart', 'lacunaEnd', 'variantEncoding' )">One or more of the elements included on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
<sch:assert test="every $gi in $except satisfies $gi = ( 'app', 'listApp', 'lem', 'rdg', 'rdgGrp', 'witDetail', 'wit', 'listWit', 'witness', 'witStart', 'witEnd', 'lacunaStart', 'lacunaEnd', 'variantEncoding' )">One or more of the elements excepted on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
</sch:rule>
<sch:rule context="tei:moduleRef[@key eq 'namesdates']">
<sch:let name="include"
 value="tokenize( normalize-space(@include),' ')"/>

<sch:let name="except"
 value="tokenize( normalize-space(@except), ' ')"/>

<sch:assert test="every $gi in $include satisfies $gi = ( 'orgName', 'persName', 'surname', 'forename', 'genName', 'nameLink', 'addName', 'roleName', 'placeName', 'bloc', 'country', 'region', 'settlement', 'district', 'offset', 'geogName', 'geogFeat', 'affiliation', 'age', 'birth', 'climate', 'death', 'education', 'event', 'faith', 'floruit', 'geo', 'langKnowledge', 'langKnown', 'listOrg', 'listEvent', 'listPerson', 'listPlace', 'location', 'nationality', 'occupation', 'org', 'listRelation', 'person', 'persona', 'personGrp', 'place', 'population', 'relation', 'residence', 'sex', 'socecStatus', 'state', 'terrain', 'trait', 'nym', 'listNym' )">One or more of the elements included on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
<sch:assert test="every $gi in $except satisfies $gi = ( 'orgName', 'persName', 'surname', 'forename', 'genName', 'nameLink', 'addName', 'roleName', 'placeName', 'bloc', 'country', 'region', 'settlement', 'district', 'offset', 'geogName', 'geogFeat', 'affiliation', 'age', 'birth', 'climate', 'death', 'education', 'event', 'faith', 'floruit', 'geo', 'langKnowledge', 'langKnown', 'listOrg', 'listEvent', 'listPerson', 'listPlace', 'location', 'nationality', 'occupation', 'org', 'listRelation', 'person', 'persona', 'personGrp', 'place', 'population', 'relation', 'residence', 'sex', 'socecStatus', 'state', 'terrain', 'trait', 'nym', 'listNym' )">One or more of the elements excepted on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
</sch:rule>
<sch:rule context="tei:moduleRef[@key eq 'figures']">
<sch:let name="include"
 value="tokenize( normalize-space(@include),' ')"/>

<sch:let name="except"
 value="tokenize( normalize-space(@except), ' ')"/>

<sch:assert test="every $gi in $include satisfies $gi = ( 'table', 'row', 'cell', 'formula', 'notatedMusic', 'figure', 'figDesc' )">One or more of the elements included on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
<sch:assert test="every $gi in $except satisfies $gi = ( 'table', 'row', 'cell', 'formula', 'notatedMusic', 'figure', 'figDesc' )">One or more of the elements excepted on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
</sch:rule>
<sch:rule context="tei:moduleRef[@key eq 'corpus']">
<sch:let name="include"
 value="tokenize( normalize-space(@include),' ')"/>

<sch:let name="except"
 value="tokenize( normalize-space(@except), ' ')"/>

<sch:assert test="every $gi in $include satisfies $gi = ( 'textDesc', 'particDesc', 'settingDesc', 'channel', 'constitution', 'derivation', 'domain', 'factuality', 'interaction', 'preparedness', 'purpose', 'setting', 'locale', 'activity' )">One or more of the elements included on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
<sch:assert test="every $gi in $except satisfies $gi = ( 'textDesc', 'particDesc', 'settingDesc', 'channel', 'constitution', 'derivation', 'domain', 'factuality', 'interaction', 'preparedness', 'purpose', 'setting', 'locale', 'activity' )">One or more of the elements excepted on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
</sch:rule>
<sch:rule context="tei:moduleRef[@key eq 'linking']">
<sch:let name="include"
 value="tokenize( normalize-space(@include),' ')"/>

<sch:let name="except"
 value="tokenize( normalize-space(@except), ' ')"/>

<sch:assert test="every $gi in $include satisfies $gi = ( 'link', 'linkGrp', 'ab', 'anchor', 'seg', 'when', 'timeline', 'join', 'joinGrp', 'alt', 'altGrp' )">One or more of the elements included on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
<sch:assert test="every $gi in $except satisfies $gi = ( 'link', 'linkGrp', 'ab', 'anchor', 'seg', 'when', 'timeline', 'join', 'joinGrp', 'alt', 'altGrp' )">One or more of the elements excepted on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
</sch:rule>
<sch:rule context="tei:moduleRef[@key eq 'analysis']">
<sch:let name="include"
 value="tokenize( normalize-space(@include),' ')"/>

<sch:let name="except"
 value="tokenize( normalize-space(@except), ' ')"/>

<sch:assert test="every $gi in $include satisfies $gi = ( 's', 'cl', 'phr', 'w', 'm', 'c', 'pc', 'span', 'spanGrp', 'interp', 'interpGrp' )">One or more of the elements included on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
<sch:assert test="every $gi in $except satisfies $gi = ( 's', 'cl', 'phr', 'w', 'm', 'c', 'pc', 'span', 'spanGrp', 'interp', 'interpGrp' )">One or more of the elements excepted on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
</sch:rule>
<sch:rule context="tei:moduleRef[@key eq 'iso-fs']">
<sch:let name="include"
 value="tokenize( normalize-space(@include),' ')"/>

<sch:let name="except"
 value="tokenize( normalize-space(@except), ' ')"/>

<sch:assert test="every $gi in $include satisfies $gi = ( 'fsdDecl', 'fsDecl', 'fsDescr', 'fsdLink', 'fDecl', 'fDescr', 'vRange', 'vDefault', 'if', 'then', 'fsConstraints', 'cond', 'bicond', 'iff', 'fs', 'f', 'binary', 'symbol', 'numeric', 'string', 'vLabel', 'vColl', 'default', 'vAlt', 'vNot', 'vMerge', 'fLib', 'fvLib' )">One or more of the elements included on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
<sch:assert test="every $gi in $except satisfies $gi = ( 'fsdDecl', 'fsDecl', 'fsDescr', 'fsdLink', 'fDecl', 'fDescr', 'vRange', 'vDefault', 'if', 'then', 'fsConstraints', 'cond', 'bicond', 'iff', 'fs', 'f', 'binary', 'symbol', 'numeric', 'string', 'vLabel', 'vColl', 'default', 'vAlt', 'vNot', 'vMerge', 'fLib', 'fvLib' )">One or more of the elements excepted on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
</sch:rule>
<sch:rule context="tei:moduleRef[@key eq 'nets']">
<sch:let name="include"
 value="tokenize( normalize-space(@include),' ')"/>

<sch:let name="except"
 value="tokenize( normalize-space(@except), ' ')"/>

<sch:assert test="every $gi in $include satisfies $gi = ( 'graph', 'node', 'arc', 'tree', 'root', 'iNode', 'leaf', 'eTree', 'triangle', 'eLeaf', 'forest', 'listForest' )">One or more of the elements included on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
<sch:assert test="every $gi in $except satisfies $gi = ( 'graph', 'node', 'arc', 'tree', 'root', 'iNode', 'leaf', 'eTree', 'triangle', 'eLeaf', 'forest', 'listForest' )">One or more of the elements excepted on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
</sch:rule>
<sch:rule context="tei:moduleRef[@key eq 'certainty']">
<sch:let name="include"
 value="tokenize( normalize-space(@include),' ')"/>

<sch:let name="except"
 value="tokenize( normalize-space(@except), ' ')"/>

<sch:assert test="every $gi in $include satisfies $gi = ( 'precision', 'certainty', 'respons' )">One or more of the elements included on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
<sch:assert test="every $gi in $except satisfies $gi = ( 'precision', 'certainty', 'respons' )">One or more of the elements excepted on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
</sch:rule>
<sch:rule context="tei:moduleRef[@key eq 'tagdocs']">
<sch:let name="include"
 value="tokenize( normalize-space(@include),' ')"/>

<sch:let name="except"
 value="tokenize( normalize-space(@except), ' ')"/>

<sch:assert test="every $gi in $include satisfies $gi = ( 'att', 'code', 'eg', 'egXML', 'gi', 'ident', 'tag', 'val', 'specList', 'specDesc', 'classRef', 'elementRef', 'macroRef', 'moduleRef', 'moduleSpec', 'schemaSpec', 'specGrp', 'specGrpRef', 'elementSpec', 'classSpec', 'dataSpec', 'macroSpec', 'remarks', 'listRef', 'exemplum', 'classes', 'memberOf', 'equiv', 'altIdent', 'model', 'modelSequence', 'modelGrp', 'outputRendition', 'paramList', 'paramSpec', 'param', 'content', 'sequence', 'alternate', 'constraint', 'constraintSpec', 'attList', 'attDef', 'attRef', 'datatype', 'dataRef', 'dataFacet', 'defaultVal', 'valDesc', 'valItem', 'valList', 'textNode', 'anyElement', 'empty' )">One or more of the elements included on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
<sch:assert test="every $gi in $except satisfies $gi = ( 'att', 'code', 'eg', 'egXML', 'gi', 'ident', 'tag', 'val', 'specList', 'specDesc', 'classRef', 'elementRef', 'macroRef', 'moduleRef', 'moduleSpec', 'schemaSpec', 'specGrp', 'specGrpRef', 'elementSpec', 'classSpec', 'dataSpec', 'macroSpec', 'remarks', 'listRef', 'exemplum', 'classes', 'memberOf', 'equiv', 'altIdent', 'model', 'modelSequence', 'modelGrp', 'outputRendition', 'paramList', 'paramSpec', 'param', 'content', 'sequence', 'alternate', 'constraint', 'constraintSpec', 'attList', 'attDef', 'attRef', 'datatype', 'dataRef', 'dataFacet', 'defaultVal', 'valDesc', 'valItem', 'valList', 'textNode', 'anyElement', 'empty' )">One or more of the elements excepted on the '<sch:value-of select="@key"/>' <moduleRef> are not actually available in that module</sch:assert>
</sch:rule>
Schematron

<s:rule context="tei:moduleRef">
<s:report test="* and @key">Child elements of <s:name/> are only allowed when an external module is being loaded
</s:report>
</s:rule>
Content model
<content>
 <elementRef key="contentminOccurs="0"/>
</content>
Schema Declaration
element moduleRef
{
   cust_att.global.attributes,
   attribute include
   {
      list
      {
         (
            "TEI"
          | "ab"
          | "abbr"
          | "abstract"
          | "accMat"
          | "acquisition"
          | "activity"
          | "actor"
          | "add"
          | "addName"
          | "addSpan"
          | "additional"
          | "additions"
          | "addrLine"
          | "address"
          | "adminInfo"
          | "affiliation"
          | "age"
          | "alt"
          | "altGrp"
          | "altIdent"
          | "altIdentifier"
          | "alternate"
          | "am"
          | "analytic"
          | "anchor"
          | "annotationBlock"
          | "anyElement"
          | "app"
          | "appInfo"
          | "application"
          | "arc"
          | "argument"
          | "att"
          | "attDef"
          | "attList"
          | "attRef"
          | "author"
          | "authority"
          | "availability"
          | "back"
          | "bibl"
          | "biblFull"
          | "biblScope"
          | "biblStruct"
          | "bicond"
          | "binary"
          | "binaryObject"
          | "binding"
          | "bindingDesc"
          | "birth"
          | "bloc"
          | "body"
          | "broadcast"
          | "byline"
          | "c"
          | "cRefPattern"
          | "caesura"
          | "calendar"
          | "calendarDesc"
          | "camera"
          | "caption"
          | "case"
          | "castGroup"
          | "castItem"
          | "castList"
          | "catDesc"
          | "catRef"
          | "catchwords"
          | "category"
          | "cb"
          | "cell"
          | "certainty"
          | "change"
          | "channel"
          | "char"
          | "charDecl"
          | "charName"
          | "charProp"
          | "choice"
          | "cit"
          | "citedRange"
          | "cl"
          | "classCode"
          | "classDecl"
          | "classRef"
          | "classSpec"
          | "classes"
          | "climate"
          | "closer"
          | "code"
          | "collation"
          | "collection"
          | "colloc"
          | "colophon"
          | "cond"
          | "condition"
          | "constitution"
          | "constraint"
          | "constraintSpec"
          | "content"
          | "corr"
          | "correction"
          | "correspAction"
          | "correspContext"
          | "correspDesc"
          | "country"
          | "creation"
          | "custEvent"
          | "custodialHist"
          | "damage"
          | "damageSpan"
          | "dataFacet"
          | "dataRef"
          | "dataSpec"
          | "datatype"
          | "date"
          | "dateline"
          | "death"
          | "decoDesc"
          | "decoNote"
          | "def"
          | "default"
          | "defaultVal"
          | "del"
          | "delSpan"
          | "depth"
          | "derivation"
          | "desc"
          | "dictScrap"
          | "dim"
          | "dimensions"
          | "distinct"
          | "distributor"
          | "district"
          | "div"
          | "div1"
          | "div2"
          | "div3"
          | "div4"
          | "div5"
          | "div6"
          | "div7"
          | "divGen"
          | "docAuthor"
          | "docDate"
          | "docEdition"
          | "docImprint"
          | "docTitle"
          | "domain"
          | "eLeaf"
          | "eTree"
          | "edition"
          | "editionStmt"
          | "editor"
          | "editorialDecl"
          | "education"
          | "eg"
          | "egXML"
          | "elementRef"
          | "elementSpec"
          | "email"
          | "emph"
          | "empty"
          | "encodingDesc"
          | "entry"
          | "entryFree"
          | "epigraph"
          | "epilogue"
          | "equipment"
          | "equiv"
          | "etym"
          | "event"
          | "ex"
          | "exemplum"
          | "expan"
          | "explicit"
          | "extent"
          | "f"
          | "fDecl"
          | "fDescr"
          | "fLib"
          | "facsimile"
          | "factuality"
          | "faith"
          | "figDesc"
          | "figure"
          | "fileDesc"
          | "filiation"
          | "finalRubric"
          | "floatingText"
          | "floruit"
          | "foliation"
          | "foreign"
          | "forename"
          | "forest"
          | "form"
          | "formula"
          | "front"
          | "fs"
          | "fsConstraints"
          | "fsDecl"
          | "fsDescr"
          | "fsdDecl"
          | "fsdLink"
          | "funder"
          | "fvLib"
          | "fw"
          | "g"
          | "gap"
          | "gb"
          | "gen"
          | "genName"
          | "geo"
          | "geoDecl"
          | "geogFeat"
          | "geogName"
          | "gi"
          | "gloss"
          | "glyph"
          | "glyphName"
          | "gram"
          | "gramGrp"
          | "graph"
          | "graphic"
          | "group"
          | "handDesc"
          | "handNote"
          | "handNotes"
          | "handShift"
          | "head"
          | "headItem"
          | "headLabel"
          | "height"
          | "heraldry"
          | "hi"
          | "history"
          | "hom"
          | "hyph"
          | "hyphenation"
          | "iNode"
          | "iType"
          | "ident"
          | "idno"
          | "if"
          | "iff"
          | "imprimatur"
          | "imprint"
          | "incident"
          | "incipit"
          | "index"
          | "institution"
          | "interaction"
          | "interp"
          | "interpGrp"
          | "interpretation"
          | "item"
          | "join"
          | "joinGrp"
          | "keywords"
          | "kinesic"
          | "l"
          | "label"
          | "lacunaEnd"
          | "lacunaStart"
          | "lang"
          | "langKnowledge"
          | "langKnown"
          | "langUsage"
          | "language"
          | "layout"
          | "layoutDesc"
          | "lb"
          | "lbl"
          | "leaf"
          | "lem"
          | "lg"
          | "licence"
          | "line"
          | "link"
          | "linkGrp"
          | "list"
          | "listApp"
          | "listBibl"
          | "listChange"
          | "listEvent"
          | "listForest"
          | "listNym"
          | "listOrg"
          | "listPerson"
          | "listPlace"
          | "listPrefixDef"
          | "listRef"
          | "listRelation"
          | "listTranspose"
          | "listWit"
          | "localName"
          | "locale"
          | "location"
          | "locus"
          | "locusGrp"
          | "m"
          | "macroRef"
          | "macroSpec"
          | "mapping"
          | "material"
          | "measure"
          | "measureGrp"
          | "media"
          | "meeting"
          | "memberOf"
          | "mentioned"
          | "metDecl"
          | "metSym"
          | "metamark"
          | "milestone"
          | "mod"
          | "model"
          | "modelGrp"
          | "modelSequence"
          | "moduleRef"
          | "moduleSpec"
          | "monogr"
          | "mood"
          | "move"
          | "msContents"
          | "msDesc"
          | "msFrag"
          | "msIdentifier"
          | "msItem"
          | "msItemStruct"
          | "msName"
          | "msPart"
          | "musicNotation"
          | "name"
          | "nameLink"
          | "namespace"
          | "nationality"
          | "node"
          | "normalization"
          | "notatedMusic"
          | "note"
          | "notesStmt"
          | "num"
          | "number"
          | "numeric"
          | "nym"
          | "oRef"
          | "objectDesc"
          | "objectType"
          | "occupation"
          | "offset"
          | "opener"
          | "org"
          | "orgName"
          | "orig"
          | "origDate"
          | "origPlace"
          | "origin"
          | "orth"
          | "outputRendition"
          | "p"
          | "pRef"
          | "param"
          | "paramList"
          | "paramSpec"
          | "particDesc"
          | "pause"
          | "pb"
          | "pc"
          | "per"
          | "performance"
          | "persName"
          | "person"
          | "personGrp"
          | "persona"
          | "phr"
          | "physDesc"
          | "place"
          | "placeName"
          | "population"
          | "pos"
          | "postBox"
          | "postCode"
          | "postscript"
          | "precision"
          | "prefixDef"
          | "preparedness"
          | "principal"
          | "profileDesc"
          | "projectDesc"
          | "prologue"
          | "pron"
          | "provenance"
          | "ptr"
          | "pubPlace"
          | "publicationStmt"
          | "publisher"
          | "punctuation"
          | "purpose"
          | "q"
          | "quotation"
          | "quote"
          | "rdg"
          | "rdgGrp"
          | "re"
          | "recordHist"
          | "recording"
          | "recordingStmt"
          | "redo"
          | "ref"
          | "refState"
          | "refsDecl"
          | "reg"
          | "region"
          | "relatedItem"
          | "relation"
          | "remarks"
          | "rendition"
          | "repository"
          | "residence"
          | "resp"
          | "respStmt"
          | "respons"
          | "restore"
          | "retrace"
          | "revisionDesc"
          | "rhyme"
          | "role"
          | "roleDesc"
          | "roleName"
          | "root"
          | "row"
          | "rs"
          | "rubric"
          | "s"
          | "said"
          | "salute"
          | "samplingDecl"
          | "schemaRef"
          | "schemaSpec"
          | "scriptDesc"
          | "scriptNote"
          | "scriptStmt"
          | "seal"
          | "sealDesc"
          | "secFol"
          | "secl"
          | "seg"
          | "segmentation"
          | "sense"
          | "sequence"
          | "series"
          | "seriesStmt"
          | "set"
          | "setting"
          | "settingDesc"
          | "settlement"
          | "sex"
          | "shift"
          | "sic"
          | "signatures"
          | "signed"
          | "soCalled"
          | "socecStatus"
          | "sound"
          | "source"
          | "sourceDesc"
          | "sourceDoc"
          | "sp"
          | "spGrp"
          | "space"
          | "span"
          | "spanGrp"
          | "speaker"
          | "specDesc"
          | "specGrp"
          | "specGrpRef"
          | "specList"
          | "sponsor"
          | "stage"
          | "stamp"
          | "state"
          | "stdVals"
          | "street"
          | "stress"
          | "string"
          | "styleDefDecl"
          | "subc"
          | "subst"
          | "substJoin"
          | "summary"
          | "superEntry"
          | "supplied"
          | "support"
          | "supportDesc"
          | "surface"
          | "surfaceGrp"
          | "surname"
          | "surplus"
          | "surrogates"
          | "syll"
          | "symbol"
          | "table"
          | "tag"
          | "tagUsage"
          | "tagsDecl"
          | "taxonomy"
          | "tech"
          | "teiCorpus"
          | "teiHeader"
          | "term"
          | "terrain"
          | "text"
          | "textClass"
          | "textDesc"
          | "textLang"
          | "textNode"
          | "then"
          | "time"
          | "timeline"
          | "title"
          | "titlePage"
          | "titlePart"
          | "titleStmt"
          | "tns"
          | "trailer"
          | "trait"
          | "transcriptionDesc"
          | "transpose"
          | "tree"
          | "triangle"
          | "typeDesc"
          | "typeNote"
          | "u"
          | "unclear"
          | "undo"
          | "unicodeName"
          | "usg"
          | "vAlt"
          | "vColl"
          | "vDefault"
          | "vLabel"
          | "vMerge"
          | "vNot"
          | "vRange"
          | "val"
          | "valDesc"
          | "valItem"
          | "valList"
          | "value"
          | "variantEncoding"
          | "view"
          | "vocal"
          | "w"
          | "watermark"
          | "when"
          | "width"
          | "wit"
          | "witDetail"
          | "witEnd"
          | "witStart"
          | "witness"
          | "writing"
          | "xenoData"
          | "xr"
          | "zone"
         )*
      }
   }?
   >>
   d41133e2125:tr
   [
      "[#include-required]"
      "<constraint>"
      "<sch:rule "
      "context"
      """=""""
      """tei:moduleRef[ @key eq 'textstructure' and @include ]"""
      """">"""
      " "
      "<sch:let "
      "name"
      """=""""
      "inclusions"
      """""""
      "  "
      "value"
      """=""""
      """tokenize( @include, '\s+' )"""
      """"/>"""
      " "
      "<sch:report "
      "test"
      """=""""
      """not('TEI'=$inclusions)"""
      """">"""
      "Not including <TEI> in your"
      "   schema guarantees it is not TEI conformant, and will likely be outright"
      "   invalid"
      "</sch:report>"
      "</sch:rule>"
      "<sch:rule "
      "context"
      """=""""
      """tei:moduleRef[ @key eq 'header' and @include ]"""
      """">"""
      " "
      "<sch:let "
      "name"
      """=""""
      "inclusions"
      """""""
      "  "
      "value"
      """=""""
      """tokenize( @include, '\s+' )"""
      """"/>"""
      " "
      "<sch:report "
      "test"
      """=""""
      """not('teiHeader'=$inclusions)"""
      """">"""
      "Not including <teiHeader>"
      "   in your schema guarantees it is not TEI conformant"
      "</sch:report>"
      "</sch:rule>"
      "<sch:rule "
      "context"
      """=""""
      """tei:moduleRef[ @key eq 'header' and @include ]"""
      """">"""
      " "
      "<sch:let "
      "name"
      """=""""
      "inclusions"
      """""""
      "  "
      "value"
      """=""""
      """tokenize( @include, '\s+' )"""
      """"/>"""
      " "
      "<sch:report "
      "test"
      """=""""
      """not('fileDesc'=$inclusions)"""
      """">"""
      "Not including <fileDesc> in"
      "   your schema guarantees it is not TEI conformant"
      "</sch:report>"
      "</sch:rule>"
      "<sch:rule "
      "context"
      """=""""
      """tei:moduleRef[ @key eq 'header' and @include ]"""
      """">"""
      " "
      "<sch:let "
      "name"
      """=""""
      "inclusions"
      """""""
      "  "
      "value"
      """=""""
      """tokenize( @include, '\s+' )"""
      """"/>"""
      " "
      "<sch:report "
      "test"
      """=""""
      """not('titleStmt'=$inclusions)"""
      """">"""
      "Not including <titleStmt>"
      "   in your schema guarantees it is not TEI conformant"
      "</sch:report>"
      "</sch:rule>"
      "<sch:rule "
      "context"
      """=""""
      """tei:moduleRef[ @key eq 'header' and @include ]"""
      """">"""
      " "
      "<sch:let "
      "name"
      """=""""
      "inclusions"
      """""""
      "  "
      "value"
      """=""""
      """tokenize( @include, '\s+' )"""
      """"/>"""
      " "
      "<sch:report "
      "test"
      """=""""
      """not('publicationStmt'=$inclusions)"""
      """">"""
      "Not including"
      "   <publicationStmt> in your schema guarantees it is not TEI"
      "   conformant"
      "</sch:report>"
      "</sch:rule>"
      "<sch:rule "
      "context"
      """=""""
      """tei:moduleRef[ @key eq 'header' and @include ]"""
      """">"""
      " "
      "<sch:let "
      "name"
      """=""""
      "inclusions"
      """""""
      "  "
      "value"
      """=""""
      """tokenize( @include, '\s+' )"""
      """"/>"""
      " "
      "<sch:report "
      "test"
      """=""""
      """not('sourceDesc'=$inclusions)"""
      """">"""
      "Not including"
      "   <sourceDesc> in your schema guarantees it is not TEI"
      "   conformant"
      "</sch:report>"
      "</sch:rule>"
      "<sch:rule "
      "context"
      """=""""
      """tei:moduleRef[ @key eq 'core' and @include ]"""
      """">"""
      " "
      "<sch:let "
      "name"
      """=""""
      "inclusions"
      """""""
      "  "
      "value"
      """=""""
      """tokenize( @include, '\s+' )"""
      """"/>"""
      " "
      "<sch:report "
      "test"
      """=""""
      """not('title'=$inclusions)"""
      """">"""
      "Not including <title> in your"
      "   schema guarantees it is not TEI conformant"
      "</sch:report>"
      "</sch:rule>"
      "</constraint>"
   ],
   attribute except
   {
      list
      {
         (
            "TEI"
          | "ab"
          | "abbr"
          | "abstract"
          | "accMat"
          | "acquisition"
          | "activity"
          | "actor"
          | "add"
          | "addName"
          | "addSpan"
          | "additional"
          | "additions"
          | "addrLine"
          | "address"
          | "adminInfo"
          | "affiliation"
          | "age"
          | "alt"
          | "altGrp"
          | "altIdent"
          | "altIdentifier"
          | "alternate"
          | "am"
          | "analytic"
          | "anchor"
          | "annotationBlock"
          | "anyElement"
          | "app"
          | "appInfo"
          | "application"
          | "arc"
          | "argument"
          | "att"
          | "attDef"
          | "attList"
          | "attRef"
          | "author"
          | "authority"
          | "availability"
          | "back"
          | "bibl"
          | "biblFull"
          | "biblScope"
          | "biblStruct"
          | "bicond"
          | "binary"
          | "binaryObject"
          | "binding"
          | "bindingDesc"
          | "birth"
          | "bloc"
          | "body"
          | "broadcast"
          | "byline"
          | "c"
          | "cRefPattern"
          | "caesura"
          | "calendar"
          | "calendarDesc"
          | "camera"
          | "caption"
          | "case"
          | "castGroup"
          | "castItem"
          | "castList"
          | "catDesc"
          | "catRef"
          | "catchwords"
          | "category"
          | "cb"
          | "cell"
          | "certainty"
          | "change"
          | "channel"
          | "char"
          | "charDecl"
          | "charName"
          | "charProp"
          | "choice"
          | "cit"
          | "citedRange"
          | "cl"
          | "classCode"
          | "classDecl"
          | "classRef"
          | "classSpec"
          | "classes"
          | "climate"
          | "closer"
          | "code"
          | "collation"
          | "collection"
          | "colloc"
          | "colophon"
          | "cond"
          | "condition"
          | "constitution"
          | "constraint"
          | "constraintSpec"
          | "content"
          | "corr"
          | "correction"
          | "correspAction"
          | "correspContext"
          | "correspDesc"
          | "country"
          | "creation"
          | "custEvent"
          | "custodialHist"
          | "damage"
          | "damageSpan"
          | "dataFacet"
          | "dataRef"
          | "dataSpec"
          | "datatype"
          | "date"
          | "dateline"
          | "death"
          | "decoDesc"
          | "decoNote"
          | "def"
          | "default"
          | "defaultVal"
          | "del"
          | "delSpan"
          | "depth"
          | "derivation"
          | "desc"
          | "dictScrap"
          | "dim"
          | "dimensions"
          | "distinct"
          | "distributor"
          | "district"
          | "div"
          | "div1"
          | "div2"
          | "div3"
          | "div4"
          | "div5"
          | "div6"
          | "div7"
          | "divGen"
          | "docAuthor"
          | "docDate"
          | "docEdition"
          | "docImprint"
          | "docTitle"
          | "domain"
          | "eLeaf"
          | "eTree"
          | "edition"
          | "editionStmt"
          | "editor"
          | "editorialDecl"
          | "education"
          | "eg"
          | "egXML"
          | "elementRef"
          | "elementSpec"
          | "email"
          | "emph"
          | "empty"
          | "encodingDesc"
          | "entry"
          | "entryFree"
          | "epigraph"
          | "epilogue"
          | "equipment"
          | "equiv"
          | "etym"
          | "event"
          | "ex"
          | "exemplum"
          | "expan"
          | "explicit"
          | "extent"
          | "f"
          | "fDecl"
          | "fDescr"
          | "fLib"
          | "facsimile"
          | "factuality"
          | "faith"
          | "figDesc"
          | "figure"
          | "fileDesc"
          | "filiation"
          | "finalRubric"
          | "floatingText"
          | "floruit"
          | "foliation"
          | "foreign"
          | "forename"
          | "forest"
          | "form"
          | "formula"
          | "front"
          | "fs"
          | "fsConstraints"
          | "fsDecl"
          | "fsDescr"
          | "fsdDecl"
          | "fsdLink"
          | "funder"
          | "fvLib"
          | "fw"
          | "g"
          | "gap"
          | "gb"
          | "gen"
          | "genName"
          | "geo"
          | "geoDecl"
          | "geogFeat"
          | "geogName"
          | "gi"
          | "gloss"
          | "glyph"
          | "glyphName"
          | "gram"
          | "gramGrp"
          | "graph"
          | "graphic"
          | "group"
          | "handDesc"
          | "handNote"
          | "handNotes"
          | "handShift"
          | "head"
          | "headItem"
          | "headLabel"
          | "height"
          | "heraldry"
          | "hi"
          | "history"
          | "hom"
          | "hyph"
          | "hyphenation"
          | "iNode"
          | "iType"
          | "ident"
          | "idno"
          | "if"
          | "iff"
          | "imprimatur"
          | "imprint"
          | "incident"
          | "incipit"
          | "index"
          | "institution"
          | "interaction"
          | "interp"
          | "interpGrp"
          | "interpretation"
          | "item"
          | "join"
          | "joinGrp"
          | "keywords"
          | "kinesic"
          | "l"
          | "label"
          | "lacunaEnd"
          | "lacunaStart"
          | "lang"
          | "langKnowledge"
          | "langKnown"
          | "langUsage"
          | "language"
          | "layout"
          | "layoutDesc"
          | "lb"
          | "lbl"
          | "leaf"
          | "lem"
          | "lg"
          | "licence"
          | "line"
          | "link"
          | "linkGrp"
          | "list"
          | "listApp"
          | "listBibl"
          | "listChange"
          | "listEvent"
          | "listForest"
          | "listNym"
          | "listOrg"
          | "listPerson"
          | "listPlace"
          | "listPrefixDef"
          | "listRef"
          | "listRelation"
          | "listTranspose"
          | "listWit"
          | "localName"
          | "locale"
          | "location"
          | "locus"
          | "locusGrp"
          | "m"
          | "macroRef"
          | "macroSpec"
          | "mapping"
          | "material"
          | "measure"
          | "measureGrp"
          | "media"
          | "meeting"
          | "memberOf"
          | "mentioned"
          | "metDecl"
          | "metSym"
          | "metamark"
          | "milestone"
          | "mod"
          | "model"
          | "modelGrp"
          | "modelSequence"
          | "moduleRef"
          | "moduleSpec"
          | "monogr"
          | "mood"
          | "move"
          | "msContents"
          | "msDesc"
          | "msFrag"
          | "msIdentifier"
          | "msItem"
          | "msItemStruct"
          | "msName"
          | "msPart"
          | "musicNotation"
          | "name"
          | "nameLink"
          | "namespace"
          | "nationality"
          | "node"
          | "normalization"
          | "notatedMusic"
          | "note"
          | "notesStmt"
          | "num"
          | "number"
          | "numeric"
          | "nym"
          | "oRef"
          | "objectDesc"
          | "objectType"
          | "occupation"
          | "offset"
          | "opener"
          | "org"
          | "orgName"
          | "orig"
          | "origDate"
          | "origPlace"
          | "origin"
          | "orth"
          | "outputRendition"
          | "p"
          | "pRef"
          | "param"
          | "paramList"
          | "paramSpec"
          | "particDesc"
          | "pause"
          | "pb"
          | "pc"
          | "per"
          | "performance"
          | "persName"
          | "person"
          | "personGrp"
          | "persona"
          | "phr"
          | "physDesc"
          | "place"
          | "placeName"
          | "population"
          | "pos"
          | "postBox"
          | "postCode"
          | "postscript"
          | "precision"
          | "prefixDef"
          | "preparedness"
          | "principal"
          | "profileDesc"
          | "projectDesc"
          | "prologue"
          | "pron"
          | "provenance"
          | "ptr"
          | "pubPlace"
          | "publicationStmt"
          | "publisher"
          | "punctuation"
          | "purpose"
          | "q"
          | "quotation"
          | "quote"
          | "rdg"
          | "rdgGrp"
          | "re"
          | "recordHist"
          | "recording"
          | "recordingStmt"
          | "redo"
          | "ref"
          | "refState"
          | "refsDecl"
          | "reg"
          | "region"
          | "relatedItem"
          | "relation"
          | "remarks"
          | "rendition"
          | "repository"
          | "residence"
          | "resp"
          | "respStmt"
          | "respons"
          | "restore"
          | "retrace"
          | "revisionDesc"
          | "rhyme"
          | "role"
          | "roleDesc"
          | "roleName"
          | "root"
          | "row"
          | "rs"
          | "rubric"
          | "s"
          | "said"
          | "salute"
          | "samplingDecl"
          | "schemaRef"
          | "schemaSpec"
          | "scriptDesc"
          | "scriptNote"
          | "scriptStmt"
          | "seal"
          | "sealDesc"
          | "secFol"
          | "secl"
          | "seg"
          | "segmentation"
          | "sense"
          | "sequence"
          | "series"
          | "seriesStmt"
          | "set"
          | "setting"
          | "settingDesc"
          | "settlement"
          | "sex"
          | "shift"
          | "sic"
          | "signatures"
          | "signed"
          | "soCalled"
          | "socecStatus"
          | "sound"
          | "source"
          | "sourceDesc"
          | "sourceDoc"
          | "sp"
          | "spGrp"
          | "space"
          | "span"
          | "spanGrp"
          | "speaker"
          | "specDesc"
          | "specGrp"
          | "specGrpRef"
          | "specList"
          | "sponsor"
          | "stage"
          | "stamp"
          | "state"
          | "stdVals"
          | "street"
          | "stress"
          | "string"
          | "styleDefDecl"
          | "subc"
          | "subst"
          | "substJoin"
          | "summary"
          | "superEntry"
          | "supplied"
          | "support"
          | "supportDesc"
          | "surface"
          | "surfaceGrp"
          | "surname"
          | "surplus"
          | "surrogates"
          | "syll"
          | "symbol"
          | "table"
          | "tag"
          | "tagUsage"
          | "tagsDecl"
          | "taxonomy"
          | "tech"
          | "teiCorpus"
          | "teiHeader"
          | "term"
          | "terrain"
          | "text"
          | "textClass"
          | "textDesc"
          | "textLang"
          | "textNode"
          | "then"
          | "time"
          | "timeline"
          | "title"
          | "titlePage"
          | "titlePart"
          | "titleStmt"
          | "tns"
          | "trailer"
          | "trait"
          | "transcriptionDesc"
          | "transpose"
          | "tree"
          | "triangle"
          | "typeDesc"
          | "typeNote"
          | "u"
          | "unclear"
          | "undo"
          | "unicodeName"
          | "usg"
          | "vAlt"
          | "vColl"
          | "vDefault"
          | "vLabel"
          | "vMerge"
          | "vNot"
          | "vRange"
          | "val"
          | "valDesc"
          | "valItem"
          | "valList"
          | "value"
          | "variantEncoding"
          | "view"
          | "vocal"
          | "w"
          | "watermark"
          | "when"
          | "width"
          | "wit"
          | "witDetail"
          | "witEnd"
          | "witStart"
          | "witness"
          | "writing"
          | "xenoData"
          | "xr"
          | "zone"
          | teidata.enumerated
         )*
      }
   }?
   >>
   d41133e2125:tr
   [
      "[#need-required]"
      "<constraint>"
      "<sch:let "
      "name"
      """=""""
      "exceptions"
      """""""
      " "
      "value"
      """=""""
      """tokenize( ., '\s+' )"""
      """"/>"""
      "<sch:report "
      "test"
      """=""""
      """'TEI'=$exceptions"""
      """">"""
      "Removing <TEI> from your schema"
      " guarantees it is not TEI conformant, and will will likely be outright"
      " invalid"
      "</sch:report>"
      "<sch:report "
      "test"
      """=""""
      """'teiHeader'=$exceptions"""
      """">"""
      "Removing <teiHeader> from your"
      " schema guarantees it is not TEI conformant"
      "</sch:report>"
      "<sch:report "
      "test"
      """=""""
      """'fileDesc'=$exceptions"""
      """">"""
      "Removing <fileDesc> from your"
      " schema guarantees it is not TEI conformant"
      "</sch:report>"
      "<sch:report "
      "test"
      """=""""
      """'titleStmt'=$exceptions"""
      """">"""
      "Removing <titleStmt> from your"
      " schema guarantees it is not TEI conformant"
      "</sch:report>"
      "<sch:report "
      "test"
      """=""""
      """'title'=$exceptions"""
      """">"""
      "Removing <title> from your schema"
      " guarantees it is not TEI conformant"
      "</sch:report>"
      "<sch:report "
      "test"
      """=""""
      """'publicationStmt'=$exceptions"""
      """">"""
      "Removing"
      " <publicationStmt> from your schema guarantees it is not TEI"
      " conformant"
      "</sch:report>"
      "<sch:report "
      "test"
      """=""""
      """'sourceDesc'=$exceptions"""
      """">"""
      "Removing <sourceDesc> from"
      " your schema guarantees it is not TEI conformant"
      "</sch:report>"
      "</constraint>"
   ],
   attribute key
   {
      "analysis"
    | "certainty"
    | "core"
    | "corpus"
    | "dictionaries"
    | "drama"
    | "figures"
    | "gaiji"
    | "header"
    | "iso-fs"
    | "linking"
    | "msdescription"
    | "namesdates"
    | "nets"
    | "spoken"
    | "tagdocs"
    | "tei"
    | "textcrit"
    | "textstructure"
    | "transcr"
    | "verse"
   }?,
   ( attribute url { teidata.pointer }? ),
   attribute prefix { teidata.xmlName }?
   >>
   d41133e2125:tr
   [
      "[#not-same-prefix]"
      "<constraint>"
      "<s:rule "
      "context"
      """=""""
      "tei:moduleRef"
      """">"""
      " "
      "<s:report "
      "test"
      """=""""
      """//*[ not( generate-id(.) eq generate-id( current() ) ) ]/@prefix = 
 @prefix"""
      """">"""
      "The prefix attribute"
      "   of "
      "<s:name/>"
      " should not match that of any other"
      "   element (it would defeat the purpose)"
      "</s:report>"
      "</s:rule>"
      "</constraint>"
   ],
   cust_content?
}

<moduleSpec>

<moduleSpec> (module specification) documents the structure, content, and purpose of a single module, i.e. a named and externally visible group of declarations. [22.2. Modules and Schemas]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.identified (@module, @ident, @predeclare) (att.combinable (@mode) (att.deprecated (@validUntil)) ) att.typed (@type, @subtype)
Member of
Contained by
May contain
Example
<moduleSpec ident="namesdates">
 <altIdent type="FPI">Names and Dates</altIdent>
 <desc>Additional elements for names and dates</desc>
</moduleSpec>
Content model
<content>
 <sequence>
  <alternate minOccurs="0"
   maxOccurs="unbounded">

   <classRef key="model.glossLike"/>
   <classRef key="model.descLike"/>
  </alternate>
  <elementRef key="exemplumminOccurs="0"
   maxOccurs="unbounded"/>

  <elementRef key="remarksminOccurs="0"/>
  <elementRef key="listRefminOccurs="0"
   maxOccurs="unbounded"/>

 </sequence>
</content>
Schema Declaration
element moduleSpec
{
   cust_att.global.attributes,
   cust_att.identified.attributes,
   cust_att.typed.attributes,
   (
      ( cust_model.glossLike | cust_model.descLike )*,
      cust_exemplum*,
      cust_remarks?,
      cust_listRef*
   )
}

<name>

<name> (name, proper noun) contains a proper noun or noun phrase. [3.5.1. Referring Strings]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.personal (@full, @sort) (att.naming (@role, @nymRef) (att.canonical (@key, @ref)) ) att.datable (@calendar, @period) (att.datable.w3c (@when, @notBefore, @notAfter, @from, @to)) (att.datable.iso (@when-iso, @notBefore-iso, @notAfter-iso, @from-iso, @to-iso)) (att.datable.custom (@when-custom, @notBefore-custom, @notAfter-custom, @from-custom, @to-custom, @datingPoint, @datingMethod)) att.editLike (@evidence, @instant) att.typed (@type, @subtype)
Member of
Contained by
May contain
Note

Proper nouns referring to people, places, and organizations may be tagged instead with persName, placeName, or orgName, when the TEI module for names and dates is included.

Example
<name type="person">Thomas Hoccleve</name>
<name type="place">Villingaholt</name>
<name type="org">Vetus Latina Institut</name>
<name type="personref="#HOC001">Occleve</name>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element name
{
   cust_att.global.attributes,
   cust_att.personal.attributes,
   cust_att.datable.attributes,
   cust_att.editLike.attributes,
   cust_att.typed.attributes,
   cust_macro.phraseSeq
}

<note>

<note> contains a note or annotation. [3.8.1. Notes and Simple Annotation 2.2.6. The Notes Statement 3.11.2.8. Notes and Statement of Language 9.3.5.4. Notes within Entries]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.placement (@place) att.pointing (@targetLang, @target, @evaluate) att.typed (@type, @subtype) att.written (@hand)
anchoredindicates whether the copy text shows the exact place of reference for the note.
Status Optional
Datatype teidata.truthValue
Default true
Note

In modern texts, notes are usually anchored by means of explicit footnote or endnote symbols. An explicit indication of the phrase or line annotated may however be used instead (e.g. ‘page 218, lines 3–4’). The anchored attribute indicates whether any explicit location is given, whether by symbol or by prose cross-reference. The value true indicates that such an explicit location is indicated in the copy text; the value false indicates that the copy text does not indicate a specific place of attachment for the note. If the specific symbols used in the copy text at the location the note is anchored are to be recorded, use the n attribute.

targetEndpoints to the end of the span to which the note is attached, if the note is not embedded in the text at that point.
Status Optional
Datatype 1–∞ occurrences of teidata.pointer separated by whitespace
Note

This attribute is retained for backwards compatibility; it may be removed at a subsequent release of the Guidelines. The recommended way of pointing to a span of elements is by means of the range function of XPointer, as further described in 16.2.4.6. range().

Member of
Contained by
May contain
Example

In the following example, the translator has supplied a footnote containing an explanation of the term translated as "painterly":

And yet it is not only
in the great line of Italian renaissance art, but even in the
painterly <note place="bottomtype="gloss"
 resp="#MDMH">

 <term xml:lang="de">Malerisch</term>. This word has, in the German, two
distinct meanings, one objective, a quality residing in the object,
the other subjective, a mode of apprehension and creation. To avoid
confusion, they have been distinguished in English as
<mentioned>picturesque</mentioned> and
<mentioned>painterly</mentioned> respectively.
</note> style of the
Dutch genre painters of the seventeenth century that drapery has this
psychological significance.

<!-- elsewhere in the document -->
<respStmt xml:id="MDMH">
 <resp>translation from German to English</resp>
 <name>Hottinger, Marie Donald Mackie</name>
</respStmt>

For this example to be valid, the code MDMH must be defined elsewhere, for example by means of a responsibility statement in the associated TEI header.

Example

The global n attribute may be used to supply the symbol or number used to mark the note's point of attachment in the source text, as in the following example:

Mevorakh b. Saadya's mother, the matriarch of the
family during the second half of the eleventh century, <note n="126anchored="true"> The
alleged mention of Judah Nagid's mother in a letter from 1071 is, in fact, a reference to
Judah's children; cf. above, nn. 111 and 54. </note> is well known from Geniza documents
published by Jacob Mann.

However, if notes are numbered in sequence and their numbering can be reconstructed automatically by processing software, it may well be considered unnecessary to record the note numbers.

Content model
<content>
 <macroRef key="macro.specialPara"/>
</content>
Schema Declaration
element note
{
   cust_att.global.attributes,
   cust_att.placement.attributes,
   cust_att.pointing.attributes,
   cust_att.typed.attributes,
   cust_att.written.attributes,
   attribute anchored { teidata.truthValue }?,
   attribute targetEnd { list { teidata.pointer+ } }?,
   cust_macro.specialPara
}

<notesStmt>

<notesStmt> (notes statement) collects together any notes providing information about a text additional to that recorded in other parts of the bibliographic description. [2.2.6. The Notes Statement 2.2. The File Description]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Contained by
May contain
Note

Information of different kinds should not be grouped together into the same note.

Example
<notesStmt>
 <note>Historical commentary provided by Mark Cohen</note>
 <note>OCR scanning done at University of Toronto</note>
</notesStmt>
Content model
<content>
 <alternate minOccurs="1"
  maxOccurs="unbounded">

  <classRef key="model.noteLike"/>
  <elementRef key="relatedItem"/>
 </alternate>
</content>
Schema Declaration
element notesStmt
{
   cust_att.global.attributes,
   ( cust_model.noteLike | cust_relatedItem )+
}

<num>

<num> (number) contains a number, written in any form. [3.5.3. Numbers and Measures]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.ranging (@atLeast, @atMost, @min, @max, @confidence)
typeindicates the type of numeric value.
Status Optional
Datatype teidata.enumerated
Suggested values include:
cardinal
absolute number, e.g. 21, 21.5
ordinal
ordinal number, e.g. 21st
fraction
fraction, e.g. one half or three-quarters
percentage
a percentage
Note

If a different typology is desired, other values can be used for this attribute.

valuesupplies the value of the number in standard form.
Status Optional
Datatype teidata.numeric
Values a numeric value.
Note

The standard form used is defined by the TEI datatype data.numeric.

Member of
Contained by
May contain
Note

Detailed analyses of quantities and units of measure in historical documents may also use the feature structure mechanism described in chapter 18. Feature Structures. The num element is intended for use in simple applications.

Example
<p>I reached <num type="cardinalvalue="21">twenty-one</num> on
my <num type="ordinalvalue="21">twenty-first</num> birthday</p>
<p>Light travels at <num value="3E10">3×10<hi rend="sup">10</hi>
 </num> cm per second.</p>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element num
{
   cust_att.global.attributes,
   cust_att.ranging.attributes,
   attribute type
   {
      "cardinal" | "ordinal" | "fraction" | "percentage" | teidata.enumerated
   }?,
   attribute value { teidata.numeric }?,
   cust_macro.phraseSeq
}

<orgName>

<orgName> (organization name) contains an organizational name. [13.2.2. Organizational Names]
Modulenamesdates
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.datable (@calendar, @period) (att.datable.w3c (@when, @notBefore, @notAfter, @from, @to)) (att.datable.iso (@when-iso, @notBefore-iso, @notAfter-iso, @from-iso, @to-iso)) (att.datable.custom (@when-custom, @notBefore-custom, @notAfter-custom, @from-custom, @to-custom, @datingPoint, @datingMethod)) att.editLike (@evidence, @instant) att.personal (@full, @sort) (att.naming (@role, @nymRef) (att.canonical (@key, @ref)) ) att.typed (@type, @subtype)
Member of
Contained by
May contain
Example
About a year back, a question of considerable interest was agitated in the <orgName key="PAS1type="voluntary">
 <placeName key="PEN">Pennsyla.</placeName> Abolition Society
</orgName> [...]
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element orgName
{
   cust_att.global.attributes,
   cust_att.datable.attributes,
   cust_att.editLike.attributes,
   cust_att.personal.attributes,
   cust_att.typed.attributes,
   cust_macro.phraseSeq
}

<outputRendition>

<outputRendition> describes the rendering or appearance intended for all occurrences of an element in a specified context for a specified type of output.
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
scopeprovides a way of defining ‘pseudo-elements’, that is, styling rules applicable to specific sub-portions of an element.
Status Optional
Datatype teidata.enumerated
Sample values include:
first-line
styling applies to the first line of the target element.
first-letter
styling applies to the first character of the target element.
before
styling should be applied immediately before the content of the target element.
after
styling should be applied immediately after the content of the target element.
Member of
Contained by
May containCharacter data only
Note

This component of an element specification describes the rendering or appearance intended for all occurrences of the element in a specified context for a specified type of output. The <rendition> element, by contrast, describes the actual rendering or appearance of all occurrences of the specified element in a source document. The useSourceRendition attribute may however be used to indicate that formatting information provided by a <rendition> element is to be combined with any provided by an outputRendition element.

It is strongly recommended that the W3C Cascading Stylesheet language (CSS2 or later) be used to express the required formatting information.

Example
<model predicate="ancestor::p"
 behaviour="inline">

 <outputRendition>font-style: italic;</outputRendition>
</model>
<model behaviour="block">
 <outputRendition>left-margin: 2em;</outputRendition>
</model>
Content model
<content>
 <textNode/>
</content>
Schema Declaration
element outputRendition
{
   cust_att.global.attributes,
   attribute scope { teidata.enumerated }?,
   text
}

<p>

<p> (paragraph) marks paragraphs in prose. [3.1. Paragraphs 7.2.5. Speech Contents]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.declaring (@decls) att.fragmentable (@part) att.written (@hand)
Member of
Contained by
May contain
Example
<p>Hallgerd was outside. <q>There is blood on your axe,</q> she said. <q>What have you
   done?</q>
</p>
<p>
 <q>I have now arranged that you can be married a second time,</q> replied Thjostolf.
</p>
<p>
 <q>Then you must mean that Thorvald is dead,</q> she said.
</p>
<p>
 <q>Yes,</q> said Thjostolf. <q>And now you must think up some plan for me.</q>
</p>
Schematron

<s:report test="not(ancestor::tei:floatingText) and (ancestor::tei:p or ancestor::tei:ab) and not(parent::tei:exemplum |parent::tei:item |parent::tei:note |parent::tei:q |parent::tei:quote |parent::tei:remarks |parent::tei:said |parent::tei:sp |parent::tei:stage |parent::tei:cell |parent::tei:figure )"> Abstract model violation: Paragraphs may not occur inside other paragraphs or ab elements.
</s:report>
Schematron

<s:report test="ancestor::tei:l[not(.//tei:note//tei:p[. = current()])]"> Abstract model violation: Lines may not contain higher-level structural elements such as div, p, or ab.
</s:report>
Content model
<content>
 <macroRef key="macro.paraContent"/>
</content>
Schema Declaration
element p
{
   cust_att.global.attributes,
   cust_att.declaring.attributes,
   cust_att.fragmentable.attributes,
   cust_att.written.attributes,
   cust_macro.paraContent
}

<param>

<param> provides a parameter for a model behaviour by supplying its name and an XPath expression identifying the location of its content. [22.5.4.5. Behaviours and their parameters]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
namea name for the parameter being supplied
Status Required
Datatype teidata.enumerated
Suggested values include:
alternate
when used with behaviour alternate, a parameter of this name supplies one of the pair of possible values; for example the regularized form rather than the original form within a choice element.
default
when used with behaviour alternate, a parameter of this name supplies one of the pair of possible values; for example the original form rather than the regularized form within a choice element.
height
when used with behaviour graphic, a parameter of this name supplies a value for the height of the graphic e.g. "300px", "50%".
id
a parameter of this name should supply a unique identifier for the element being processed; as for example with the anchor behaviour
label
a parameter of this name should supply an expression to be used to label something, for example concat('Page ', @n) for a page break or @n for a footnote reference; typically used with the note or break behaviours
level
when used with the heading behaviour, a parameter of this name supplies a positive integer indicating the hierarchic level of a heading.
link
when used with the link behaviour, a parameter of this name should supply a URL to be used as the target of a link.
place
when used with the note behaviour, a parameter of this name should provide a string which describes the intended placement of some text; typical values include "margin", "footnote", "endnote", "inline", "bottom"
type
a parameter of this name can be used to categorize the specified behaviour in any way; for example the kind of break (when used with the break behaviour) or the kind of index to be generated (if used with the index behaviour) etc.
url
when used with behaviour graphic, a parameter of this name supplies a a URL indicating the graphic intended.
width
when used with behaviour graphic, a parameter of this name supplies a value for the width of the graphic e.g. "400px", "70%".
valuesupplies an XPath expression which when evaluated provides the value for the parameter
Status Required
Datatype teidata.xpath
Contained by
tagdocs: model
May containEmpty element
Note

An implementation may require parameters other than those listed here, and is not required to follow this partial specification.

The names and datatypes of the expected parameters should be documented in the corresponding customization using a paramSpec element. Literal strings provided in an XPath expression should be quoted.

Example

In this example, which will be processed for a choice element which has both <sic> and <corr> child elements, the default parameter will provide the value of the child <corr> element, and the alternate parameter will provide that of the child <sic> elements. If neither param element was supplied, both elements would still be available to an application, but the application would need to distinguish them for itself.

<elementSpec ident="choice">
 <model predicate="sic and corr"
  behaviour="alternate">

  <param name="defaultvalue="corr"/>
  <param name="alternatevalue="sic"/>
 </model>
</elementSpec>
Example
<elementSpec ident="graphicmode="change">
 <model behaviour="graphic">
  <param name="urlvalue="@url"/>
  <param name="widthvalue="@width"/>
  <param name="heightvalue="@height"/>
 </model>
</elementSpec>
Content model
<content/>
Schema Declaration
element param
{
   cust_att.global.attributes,
   attribute name
   {
      "alternate"
    | "default"
    | "height"
    | "id"
    | "label"
    | "level"
    | "link"
    | "place"
    | "type"
    | "url"
    | "width"
    | teidata.enumerated
   },
   attribute value { teidata.xpath },
   empty
}

<paramList>

<paramList> list of parameter specifications
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Contained by
tagdocs: valItem
May contain
tagdocs: paramSpec
Note

The paramList element provides a a mechanism to document parameter specifications using child paramSpec elements.

Example
<valItem ident="alternate">
 <desc versionDate="2015-08-21"
  xml:lang="en">
create a specialized display of alternating elements for displaying the preferred version and an alternative, both at once or by some method of toggling between the two.</desc>
 <paramList>
  <paramSpec ident="default">
   <desc>preferred content</desc>
  </paramSpec>
  <paramSpec ident="alternate">
   <desc>alternate content</desc>
  </paramSpec>
 </paramList>
</valItem>
Content model
<content>
 <elementRef minOccurs="0"
  maxOccurs="unboundedkey="paramSpec"/>

</content>
Schema Declaration
element paramList { cust_att.global.attributes, cust_paramSpec* }

<paramSpec>

<paramSpec> supplies specification for one parameter of a model behaviour [22.5.4.8. Defining a processing model]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.identified (@module, @ident, @predeclare) (att.combinable (@mode) (att.deprecated (@validUntil)) )
Contained by
tagdocs: paramList
May contain
core: desc gloss
tagdocs: altIdent equiv
Note

Where a model behaviour uses more than one parameter, individual paramSpec elements should be grouped together using a paramList element, as above. Parameter specifications are provided within the valItem used to define a particular behaviour, which forms part of the specification of a model element's behaviour attribute. In the example above, the behaviour link has two parameters: content and link.

Using a desc element within a paramSpec is optional but recommended practice.

Example
<valItem ident="link">
 <desc>create a hyperlink</desc>
 <paramList>
  <paramSpec ident="content">
   <desc>supplies the location of some content describing the link</desc>
  </paramSpec>
  <paramSpec ident="link">
   <desc>supplies the location of the intended URL</desc>
  </paramSpec>
 </paramList>
</valItem>
Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">

  <classRef key="model.glossLike"/>
  <classRef key="model.descLike"/>
 </alternate>
</content>
Schema Declaration
element paramSpec
{
   cust_att.global.attributes,
   cust_att.identified.attributes,
   ( cust_model.glossLike | cust_model.descLike )*
}

<persName>

<persName> (personal name) contains a proper noun or proper-noun phrase referring to a person, possibly including one or more of the person's forenames, surnames, honorifics, added names, etc. [13.2.1. Personal Names]
Modulenamesdates
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.datable (@calendar, @period) (att.datable.w3c (@when, @notBefore, @notAfter, @from, @to)) (att.datable.iso (@when-iso, @notBefore-iso, @notAfter-iso, @from-iso, @to-iso)) (att.datable.custom (@when-custom, @notBefore-custom, @notAfter-custom, @from-custom, @to-custom, @datingPoint, @datingMethod)) att.editLike (@evidence, @instant) att.personal (@full, @sort) (att.naming (@role, @nymRef) (att.canonical (@key, @ref)) ) att.typed (@type, @subtype)
Member of
Contained by
May contain
Example
<persName>
 <forename>Edward</forename>
 <forename>George</forename>
 <surname type="linked">Bulwer-Lytton</surname>, <roleName>Baron Lytton of
 <placeName>Knebworth</placeName>
 </roleName>
</persName>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element persName
{
   cust_att.global.attributes,
   cust_att.datable.attributes,
   cust_att.editLike.attributes,
   cust_att.personal.attributes,
   cust_att.typed.attributes,
   cust_macro.phraseSeq
}

<placeName>

<placeName> contains an absolute or relative place name. [13.2.3. Place Names]
Modulenamesdates
AttributesAttributes att.datable (@calendar, @period) (att.datable.w3c (@when, @notBefore, @notAfter, @from, @to)) (att.datable.iso (@when-iso, @notBefore-iso, @notAfter-iso, @from-iso, @to-iso)) (att.datable.custom (@when-custom, @notBefore-custom, @notAfter-custom, @from-custom, @to-custom, @datingPoint, @datingMethod)) att.editLike (@evidence, @instant) att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.personal (@full, @sort) (att.naming (@role, @nymRef) (att.canonical (@key, @ref)) ) att.typed (@type, @subtype)
Member of
Contained by
May contain
Example
<placeName>
 <settlement>Rochester</settlement>
 <region>New York</region>
</placeName>
Example
<placeName>
 <geogName>Arrochar Alps</geogName>
 <region>Argylshire</region>
</placeName>
Example
<placeName>
 <measure>10 miles</measure>
 <offset>Northeast of</offset>
 <settlement>Attica</settlement>
</placeName>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element placeName
{
   cust_att.datable.attributes,
   cust_att.editLike.attributes,
   cust_att.global.attributes,
   cust_att.personal.attributes,
   cust_att.typed.attributes,
   cust_macro.phraseSeq
}

<postBox>

<postBox> (postal box or post office box) contains a number or other identifier for some postal delivery point other than a street address. [3.5.2. Addresses]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
core: address
May containCharacter data only
Note

The position and nature of postal codes is highly country-specific; the conventions appropriate to the country concerned should be used.

Example
<postBox>P.O. Box 280</postBox>
Example
<postBox>Postbus 532</postBox>
Content model
<content>
 <textNode/>
</content>
Schema Declaration
element postBox { cust_att.global.attributes, text }

<postCode>

<postCode> (postal code) contains a numerical or alphanumeric code used as part of a postal address to simplify sorting or delivery of mail. [3.5.2. Addresses]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
core: address
May containCharacter data only
Note

The position and nature of postal codes is highly country-specific; the conventions appropriate to the country concerned should be used.

Example
<postCode>HR1 3LR</postCode>
Example
<postCode>60142-7</postCode>
Content model
<content>
 <textNode/>
</content>
Schema Declaration
element postCode { cust_att.global.attributes, text }

<prefixDef>

<prefixDef> (prefix definition) defines a prefixing scheme used in data.pointer values, showing how abbreviated URIs using the scheme may be expanded into full URIs. [16.2.3. Using Abbreviated Pointers]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.patternReplacement (@matchPattern, @replacementPattern)
identsupplies a name which functions as the prefix for an abbreviated pointing scheme such as a private URI scheme. The prefix constitutes the text preceding the first colon.
Status Required
Datatype teidata.prefix
Note

The value is limited to teidata.prefix so that it may be mapped directly to a URI prefix.

Contained by
May contain
core: p
Note

The abbreviated pointer may be dereferenced to produce either an absolute or a relative URI reference. In the latter case it is combined with the value of xml:base in force at the place where the pointing attribute occurs to form an absolute URI in the usual manner as prescribed by XML Base.

Example
<prefixDef ident="ref"
 matchPattern="([a-z]+)"
 replacementPattern="../../references/references.xml#$1">

 <p> In the context of this project, private URIs with
   the prefix "ref" point to <gi>div</gi> elements in
   the project's global references.xml file.
 </p>
</prefixDef>
Content model
<content>
 <classRef key="model.pLikeminOccurs="0"
  maxOccurs="unbounded"/>

</content>
Schema Declaration
element prefixDef
{
   cust_att.global.attributes,
   cust_att.patternReplacement.attributes,
   attribute ident { teidata.prefix },
   cust_model.pLike*
}

<principal>

<principal> (principal researcher) supplies the name of the principal researcher responsible for the creation of an electronic text. [2.2.1. The Title Statement]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.canonical (@key, @ref)
Member of
Contained by
May contain
Example
<principal ref="http://viaf.org/viaf/105517912">Gary Taylor</principal>
Content model
<content>
 <macroRef key="macro.phraseSeq.limited"/>
</content>
Schema Declaration
element principal
{
   cust_att.global.attributes,
   cust_att.canonical.attributes,
   cust_macro.phraseSeq.limited
}

<projectDesc>

<projectDesc> (project description) describes in detail the aim or purpose for which an electronic file was encoded, together with any other relevant information concerning the process by which it was assembled or collected. [2.3.1. The Project Description 2.3. The Encoding Description 15.3.2. Declarable Elements]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.declarable (@default)
Member of
Contained by
header: encodingDesc
May contain
core: p
Example
<projectDesc>
 <p>Texts collected for use in the Claremont Shakespeare Clinic, June 1990</p>
</projectDesc>
Content model
<content>
 <classRef key="model.pLikeminOccurs="1"
  maxOccurs="unbounded"/>

</content>
Schema Declaration
element projectDesc
{
   cust_att.global.attributes,
   cust_att.declarable.attributes,
   cust_model.pLike+
}

<ptr>

<ptr> (pointer) defines a pointer to another location. [3.6. Simple Links and Cross-References 16.1. Links]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.pointing (@targetLang, @target, @evaluate) att.internetMedia (@mimeType) att.typed (@type, @subtype) att.declaring (@decls) att.cReferencing (@cRef)
Member of
Contained by
May containEmpty element
Example
<ptr target="#p143 #p144"/>
<ptr target="http://www.tei-c.org"/>
<ptr cRef="1.3.4"/>
Schematron

<s:report test="@target and @cRef">Only one of the
attributes @target and @cRef may be supplied on <s:name/>.</s:report>
Content model
<content>
</content>
Schema Declaration
element ptr
{
   cust_att.global.attributes,
   cust_att.pointing.attributes,
   cust_att.internetMedia.attributes,
   cust_att.typed.attributes,
   cust_att.declaring.attributes,
   cust_att.cReferencing.attributes,
   empty
}

<publicationStmt>

<publicationStmt> (publication statement) groups information concerning the publication or distribution of an electronic or other text. [2.2.4. Publication, Distribution, Licensing, etc. 2.2. The File Description]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Contained by
May contain
Note

Where a publication statement contains several members of the model.publicationStmtPart.agency or model.publicationStmtPart.detail classes rather than one or more paragraphs or anonymous blocks, care should be taken to ensure that the repeated elements are presented in a meaningful order. It is a conformance requirement that elements supplying information about publication place, address, identifier, availability, and date be given following the name of the publisher, distributor, or authority concerned, and preferably in that order.

Example
<publicationStmt>
 <publisher>C. Muquardt </publisher>
 <pubPlace>Bruxelles &amp; Leipzig</pubPlace>
 <date when="1846"/>
</publicationStmt>
Example
<publicationStmt>
 <publisher>Chadwyck Healey</publisher>
 <pubPlace>Cambridge</pubPlace>
 <availability>
  <p>Available under licence only</p>
 </availability>
 <date when="1992">1992</date>
</publicationStmt>
Example
<publicationStmt>
 <publisher>Zea Books</publisher>
 <pubPlace>Lincoln, NE</pubPlace>
 <date>2017</date>
 <availability>
  <p>This is an open access work licensed under a Creative Commons Attribution 4.0 International license.</p>
 </availability>
 <ptr target="http://digitalcommons.unl.edu/zeabook/55"/>
</publicationStmt>
Content model
<content>
 <alternate>
  <sequence minOccurs="1"
   maxOccurs="unbounded">

   <classRef key="model.publicationStmtPart.agency"/>
   <classRef key="model.publicationStmtPart.detail"
    minOccurs="0maxOccurs="unbounded"/>

  </sequence>
  <classRef key="model.pLikeminOccurs="1"
   maxOccurs="unbounded"/>

 </alternate>
</content>
Schema Declaration
element publicationStmt
{
   cust_att.global.attributes,
   (
      (
         cust_model.publicationStmtPart.agency,
         cust_model.publicationStmtPart.detail*
      )+
    | cust_model.pLike+
   )
}

<publisher>

<publisher> provides the name of the organization responsible for the publication or distribution of a bibliographic item. [3.11.2.4. Imprint, Size of a Document, and Reprint Information 2.2.4. Publication, Distribution, Licensing, etc.]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
May contain
Note

Use the full form of the name by which a company is usually referred to, rather than any abbreviation of it which may appear on a title page

Example
<imprint>
 <pubPlace>Oxford</pubPlace>
 <publisher>Clarendon Press</publisher>
 <date>1987</date>
</imprint>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element publisher { cust_att.global.attributes, cust_macro.phraseSeq }

<pubPlace>

<pubPlace> (publication place) contains the name of the place where a bibliographic item was published. [3.11.2.4. Imprint, Size of a Document, and Reprint Information]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.naming (@role, @nymRef) (att.canonical (@key, @ref))
Member of
Contained by
May contain
Example
<publicationStmt>
 <publisher>Oxford University Press</publisher>
 <pubPlace>Oxford</pubPlace>
 <date>1989</date>
</publicationStmt>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element pubPlace
{
   cust_att.global.attributes,
   cust_att.naming.attributes,
   cust_macro.phraseSeq
}

<punctuation>

<punctuation> specifies editorial practice adopted with respect to punctuation marks in the original. [2.3.3. The Editorial Practices Declaration 3.2. Treatment of Punctuation]
Moduleheader
AttributesAttributes att.declarable (@default) att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
marksindicates whether or not punctation marks have been retained as content within the text.
Status Optional
Datatype teidata.enumerated
Legal values are:
none
no punctuation marks have been retained
some
some punctuation marks have been retained
all
all punctuation marks have been retained
placementindicates the positioning of punctuation marks that are associated with marked up text as being encoded within the element surrounding the text or immediately before or after it.
Status Optional
Datatype teidata.enumerated
Legal values are:
internal
punctuation marks found at the start or end of a marked up text component are included within its surrounding element;
external
punctuation marks found at the start or end of a marked up text component appear immediately before or after the surrounding element
Contained by
May contain
core: p
Example
<punctuation marks="all"
 placement="internal">

 <p>All punctuation marks in the source text have been retained and represented using the
   appropriate Unicode code point. In cases where a punctuation mark and nearby markup convey
   the same information (for example, a sentence ends with a question mark and is also tagged
   as <gi>s</gi>) the punctuation mark is captured as content within the element.</p>
</punctuation>
Example

External placement of punctuation:

<p>I would agree with Saint Augustine that “<quote>An unjust law is no law at all</quote>.”</p>
Example

Internal placement of punctuation:

<p>I would agree with Saint Augustine that <quote>“An unjust law is no law at all.”</quote>
</p>
Content model
<content>
 <classRef key="model.pLikeminOccurs="0"
  maxOccurs="unbounded"/>

</content>
Schema Declaration
element punctuation
{
   cust_att.declarable.attributes,
   cust_att.global.attributes,
   attribute marks { "none" | "some" | "all" }?,
   attribute placement { "internal" | "external" }?,
   cust_model.pLike*
}

<q>

<q> (quoted) contains material which is distinguished from the surrounding text using quotation marks or a similar method, 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. [3.3.3. Quotation]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.ascribed (@who)
typemay be used to indicate whether the offset passage is spoken or thought, or to characterize it more finely.
Status Optional
Datatype teidata.enumerated
Suggested values include:
spoken
representation of speech
thought
representation of thought, e.g. internal monologue
written
quotation from a written source
soCalled
authorial distance
foreign
distinct
linguistically distinct
term
technical term
emph
rhetorically emphasized
mentioned
refering to itself, not its normal referent
Member of
Contained by
May contain
Note

May be used to indicate that a passage is distinguished from the surrounding text for reasons concerning which no claim is made. When used in this manner, q may be thought of as syntactic sugar for hi with a value of rend that indicates the use of such mechanisms as quotation marks.

Example
It is spelled <q>Tübingen</q> — to enter the
letter <q>u</q> with an umlaut hold down the <q>option</q> key and press
<q>0 0 f c</q>
Content model
<content>
 <macroRef key="macro.specialPara"/>
</content>
Schema Declaration
element q
{
   cust_att.global.attributes,
   cust_att.ascribed.attributes,
   attribute type
   {
      "spoken"
    | "thought"
    | "written"
    | "soCalled"
    | "foreign"
    | "distinct"
    | "term"
    | "emph"
    | "mentioned"
    | teidata.enumerated
   }?,
   cust_macro.specialPara
}

<quote>

<quote> (quotation) contains a phrase or passage attributed by the narrator or author to some agency external to the text. [3.3.3. Quotation 4.3.1. Grouped Texts]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.typed (@type, @subtype) att.notated (@notation)
Member of
Contained by
May contain
Note

If a bibliographic citation is supplied for the source of a quotation, the two may be grouped using the cit element.

Example
Lexicography has shown little sign of being affected by the
work of followers of J.R. Firth, probably best summarized in his
slogan, <quote>You shall know a word by the company it
keeps</quote>
<ref>(Firth, 1957)</ref>
Content model
<content>
 <macroRef key="macro.specialPara"/>
</content>
Schema Declaration
element quote
{
   cust_att.global.attributes,
   cust_att.typed.attributes,
   cust_att.notated.attributes,
   cust_macro.specialPara
}

<ref>

<ref> (reference) defines a reference to another location, possibly modified by additional text or comment. [3.6. Simple Links and Cross-References 16.1. Links]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.pointing (@targetLang, @target, @evaluate) att.internetMedia (@mimeType) att.typed (@type, @subtype) att.declaring (@decls) att.cReferencing (@cRef)
Member of
Contained by
May contain
Note

The target and cRef attributes are mutually exclusive.

Example
See especially <ref target="http://www.natcorp.ox.ac.uk/Texts/A02.xml#s2">the second
sentence</ref>
Example
See also <ref target="#locution">s.v. <term>locution</term>
</ref>.
Schematron

<s:report test="@target and @cRef">Only one of the
attributes @target' and @cRef' may be supplied on <s:name/>
</s:report>
Content model
<content>
 <macroRef key="macro.paraContent"/>
</content>
Schema Declaration
element ref
{
   cust_att.global.attributes,
   cust_att.pointing.attributes,
   cust_att.internetMedia.attributes,
   cust_att.typed.attributes,
   cust_att.declaring.attributes,
   cust_att.cReferencing.attributes,
   cust_macro.paraContent
}

<relatedItem>

<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. [3.11.2.7. Related Items]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.typed (@type, @subtype)
targetpoints to the related bibliographic element by means of an absolute or relative URI reference
Status Optional
Datatype teidata.pointer
Member of
Contained by
core: bibl
header: notesStmt
May contain
core: bibl ptr ref
header: biblFull
Note

If the target attribute is used to reference the related bibliographic item, the element must be empty.

Example
<biblStruct>
 <monogr>
  <author>Shirley, James</author>
  <title type="main">The gentlemen of Venice</title>
  <imprint>
   <pubPlace>New York</pubPlace>
   <publisher>Readex Microprint</publisher>
   <date>1953</date>
  </imprint>
  <extent>1 microprint card, 23 x 15 cm.</extent>
 </monogr>
 <series>
  <title>Three centuries of drama: English, 1642–1700</title>
 </series>
 <relatedItem type="otherForm">
  <biblStruct>
   <monogr>
    <author>Shirley, James</author>
    <title type="main">The gentlemen of Venice</title>
    <title type="sub">a tragi-comedie presented at the private house in Salisbury
         Court by Her Majesties servants</title>
    <imprint>
     <pubPlace>London</pubPlace>
     <publisher>H. Moseley</publisher>
     <date>1655</date>
    </imprint>
    <extent>78 p.</extent>
   </monogr>
  </biblStruct>
 </relatedItem>
</biblStruct>
Schematron

<sch:report test="@target and count( child::* ) > 0">If the @target attribute on <sch:name/> is used, the
relatedItem element must be empty</sch:report>
<sch:assert test="@target or child::*">A relatedItem element should have either a 'target' attribute
or a child element to indicate the related bibliographic item</sch:assert>
Content model
<content>
 <alternate minOccurs="0">
  <classRef key="model.biblLike"/>
  <classRef key="model.ptrLike"/>
 </alternate>
</content>
Schema Declaration
element relatedItem
{
   cust_att.global.attributes,
   cust_att.typed.attributes,
   attribute target { teidata.pointer }?,
   ( cust_model.biblLike | cust_model.ptrLike )?
}

<remarks>

<remarks> contains any commentary or discussion about the usage of an element, attribute, class, or entity not otherwise documented within the containing element. [22.5. Element Specifications 22.5.3. Attribute List Specification 22.6. Class Specifications 22.7. Macro Specifications]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.translatable (@versionDate)
Contained by
May contain
core: p
Note

Contains at least one paragraph, unless it is empty.

As defined in ODD, must contain paragraphs; should be special.para

Example
<remarks>
 <p>This element is probably redundant.</p>
</remarks>
Content model
<content>
 <classRef key="model.pLikeminOccurs="1"
  maxOccurs="unbounded"/>

</content>
Schema Declaration
element remarks
{
   cust_att.global.attributes,
   cust_att.translatable.attributes,
   cust_model.pLike+
}

<resp>

<resp> (responsibility) contains a phrase describing the nature of a person's intellectual responsibility, or an organization's role in the production or distribution of a work. [3.11.2.2. Titles, Authors, and Editors 2.2.1. The Title Statement 2.2.2. The Edition Statement 2.2.5. The Series Statement]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.canonical (@key, @ref) att.datable (@calendar, @period) (att.datable.w3c (@when, @notBefore, @notAfter, @from, @to)) (att.datable.iso (@when-iso, @notBefore-iso, @notAfter-iso, @from-iso, @to-iso)) (att.datable.custom (@when-custom, @notBefore-custom, @notAfter-custom, @from-custom, @to-custom, @datingPoint, @datingMethod))
Contained by
core: respStmt
May contain
Note

The attribute ref, inherited from the class att.canonical may be used to indicate the kind of responsibility in a normalized form by referring directly to a standardized list of responsibility types, such as that maintained by a naming authority, for example the list maintained at http://www.loc.gov/marc/relators/relacode.html for bibliographic usage.

Example
<respStmt>
 <resp ref="http://id.loc.gov/vocabulary/relators/com.html">compiler</resp>
 <name>Edward Child</name>
</respStmt>
Content model
<content>
 <macroRef key="macro.phraseSeq.limited"/>
</content>
Schema Declaration
element resp
{
   cust_att.global.attributes,
   cust_att.canonical.attributes,
   cust_att.datable.attributes,
   cust_macro.phraseSeq.limited
}

<respStmt>

<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. May also be used to encode information about individuals or organizations which have played a role in the production or distribution of a bibliographic work. [3.11.2.2. Titles, Authors, and Editors 2.2.1. The Title Statement 2.2.2. The Edition Statement 2.2.5. The Series Statement]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.canonical (@key, @ref)
Member of
Contained by
May contain
core: name note resp
namesdates: orgName persName
Example
<respStmt>
 <resp>transcribed from original ms</resp>
 <persName>Claus Huitfeldt</persName>
</respStmt>
Example
<respStmt>
 <resp>converted to XML encoding</resp>
 <name>Alan Morrison</name>
</respStmt>
Content model
<content>
 <sequence>
  <alternate>
   <sequence>
    <elementRef key="respminOccurs="1"
     maxOccurs="unbounded"/>

    <classRef key="model.nameLike.agent"
     minOccurs="1maxOccurs="unbounded"/>

   </sequence>
   <sequence>
    <classRef key="model.nameLike.agent"
     minOccurs="1maxOccurs="unbounded"/>

    <elementRef key="respminOccurs="1"
     maxOccurs="unbounded"/>

   </sequence>
  </alternate>
  <elementRef key="noteminOccurs="0"
   maxOccurs="unbounded"/>

 </sequence>
</content>
Schema Declaration
element respStmt
{
   cust_att.global.attributes,
   cust_att.canonical.attributes,
   (
      (
         ( cust_resp+, cust_model.nameLike.agent+ )
       | ( cust_model.nameLike.agent+, cust_resp+ )
      ),
      cust_note*
   )
}

<revisionDesc>

<revisionDesc> (revision description) summarizes the revision history for a file. [2.6. The Revision Description 2.1.1. The TEI Header and Its Components]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.docStatus (@status)
Contained by
header: teiHeader
May contain
core: list
Note

If present on this element, the status attribute should indicate the current status of the document. The same attribute may appear on any change to record the status at the time of that change. Conventionally change elements should be given in reverse date order, with the most recent change at the start of the list.

Example
<revisionDesc status="embargoed">
 <change when="1991-11-11who="#LB"> deleted chapter 10 </change>
</revisionDesc>
Content model
<content>
 <alternate>
  <elementRef key="list"/>
  <elementRef key="listChange"/>
  <elementRef key="changeminOccurs="1"
   maxOccurs="unbounded"/>

 </alternate>
</content>
Schema Declaration
element revisionDesc
{
   cust_att.global.attributes,
   cust_att.docStatus.attributes,
   ( cust_list | cust_listChange | cust_change+ )
}

<row>

<row> contains one row of a table. [14.1.1. TEI Tables]
Modulefigures
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.tableDecoration (@role, @rows, @cols)
Contained by
figures: table
May contain
figures: cell
Example
<row role="data">
 <cell role="label">Classics</cell>
 <cell>Idle listless and unimproving</cell>
</row>
Content model
<content>
 <elementRef key="cellminOccurs="1"
  maxOccurs="unbounded"/>

</content>
Schema Declaration
element row
{
   cust_att.global.attributes,
   cust_att.tableDecoration.attributes,
   cust_cell+
}

<rs>

<rs> (referencing string) contains a general purpose name or referring string. [13.2.1. Personal Names 3.5.1. Referring Strings]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.naming (@role, @nymRef) (att.canonical (@key, @ref)) att.typed (@type, @subtype)
Member of
Contained by
May contain
Example
<q>My dear <rs type="person">Mr. Bennet</rs>, </q> said <rs type="person">his lady</rs>
to him one day,
<q>have you heard that <rs type="place">Netherfield Park</rs> is let at
last?</q>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element rs
{
   cust_att.global.attributes,
   cust_att.naming.attributes,
   cust_att.typed.attributes,
   cust_macro.phraseSeq
}

<said>

<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. [3.3.3. Quotation]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.ascribed (@who)
aloudmay be used to indicate whether the quoted matter is regarded as having been vocalized or signed.
Status Optional
Datatype teidata.xTruthValue
<p> Celia thought privately, <said aloud="false">Dorothea quite despises Sir James Chettam;
   I believe she would not accept him.</said> Celia felt that this was a pity.

<!-- ... -->
</p>
Note

The value true indicates the encoded passage was expressed outwardly (whether spoken, signed, sung, screamed, chanted, etc.); the value false indicates that the encoded passage was thought, but not outwardly expressed.

directmay be used to indicate whether the quoted matter is regarded as direct or indirect speech.
Status Optional
Datatype teidata.xTruthValue
Default true

<!-- in the header --><editorialDecl>
 <quotation marks="none"/>
</editorialDecl>
<!-- ... -->
<p> Tantripp had brought a card, and said that there was a gentleman waiting in the lobby.
The courier had told him that <said direct="false">only Mrs. Casaubon was at home</said>,
but he said <said direct="false">he was a relation of Mr. Casaubon's: would she see him?</said>
</p>
Note

The value true indicates the speech or thought is represented directly; the value false that speech or thought is represented indirectly, e.g. by use of a marked verbal aspect.

Member of
Contained by
May contain
Example

<!-- in the header --><editorialDecl>
 <quotation marks="all"/>
</editorialDecl>
<!-- ... -->
<p>
 <said>"Our minstrel here will warm the old man's heart with song, dazzle him with jewels and
   gold"</said>, a troublemaker simpered. <said>"He'll trample on the Duke's camellias, spill
   his wine, and blunt his sword, and say his name begins with X, and in the end the Duke
   will say, <said>'Take Saralinda, with my blessing, O lordly Prince of Rags and Tags, O
     rider of the sun!'</said>"</said>
</p>
Example
<p>
 <said aloud="truerend="pre(“) post(”)">Hmmm</said>, said a small voice in his ear.
<said aloud="truerend="pre(“) post(”)">Difficult. Very difficult. Plenty of courage, I see.
   Not a bad mind either. there's talent, oh my goodness, yes — and a nice thirst to prove
   yourself, now that's interesting. … So where shall I put you?</said>
</p>
<p>Harry gripped the edges of the stool and thought, <said aloud="falserend="italic">Not
   Slytherin, not Slytherin</said>.</p>
Content model
<content>
 <macroRef key="macro.specialPara"/>
</content>
Schema Declaration
element said
{
   cust_att.global.attributes,
   cust_att.ascribed.attributes,
   attribute aloud { teidata.xTruthValue }?,
   attribute direct { teidata.xTruthValue }?,
   cust_macro.specialPara
}

<schemaRef>

<schemaRef> (schema reference) describes or points to a related customization or schema file [2.3.9. The Schema Specification]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.typed (@type, @subtype) att.resourced (@url)
keythe identifier used for the customization or schema
Status Optional
Datatype teidata.xmlName
Member of
Contained by
header: encodingDesc
May contain
core: desc
Example
<schemaRef type="interchangeODD"
 url="http://www.tei-c.org/release/xml/tei/custom/odd/tei_lite.odd"/>

<schemaRef type="interchangeRNG"
 url="http://www.tei-c.org/release/xml/tei/custom/odd/tei_lite.rng"/>

<schemaRef type="projectODD"
 url="file:///schema/project.odd"/>
Content model
<content>
 <classRef key="model.descLike"
  minOccurs="0"/>

</content>
Schema Declaration
element schemaRef
{
   cust_att.global.attributes,
   cust_att.typed.attributes,
   cust_att.resourced.attributes,
   attribute key { teidata.xmlName }?,
   cust_model.descLike?
}

<schemaSpec>

<schemaSpec> (schema specification) generates a TEI-conformant schema and documentation for it. [2.3. The Encoding Description 22.2. Modules and Schemas 23.5.1. Making a Unified ODD]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.identified (@module, @ident, @predeclare) (att.combinable (@mode) (att.deprecated (@validUntil)) ) att.namespaceable (@ns) att.docStatus (@status)
startspecifies entry points to the schema, i.e. which elements may be used as the root of documents conforming to it.
Status Optional
Datatype 0–∞ occurrences of teidata.enumerated separated by whitespace
Legal values are:
TEI
(TEI document)
ab
(anonymous block)
abbr
(abbreviation)
abstract
accMat
(accompanying material)
acquisition
activity
actor
add
(addition)
addName
(additional name)
addSpan
(added span of text)
additional
additions
addrLine
(address line)
address
adminInfo
(administrative information)
affiliation
age
alt
(alternation)
altGrp
(alternation group)
altIdent
(alternate identifier)
altIdentifier
(alternative identifier)
alternate
am
(abbreviation marker)
analytic
(analytic level)
anchor
(anchor point)
annotationBlock
anyElement
app
(apparatus entry)
appInfo
(application information)
application
arc
argument
att
(attribute)
attDef
(attribute definition)
attList
attRef
(attribute pointer)
author
authority
(release authority)
availability
back
(back matter)
bibl
(bibliographic citation)
biblFull
(fully-structured bibliographic citation)
biblScope
(scope of bibliographic reference)
biblStruct
(structured bibliographic citation)
bicond
(bi-conditional feature-structure constraint)
binary
(binary value)
binaryObject
binding
bindingDesc
(binding description)
birth
bloc
body
(text body)
broadcast
byline
c
(character)
cRefPattern
(canonical reference pattern)
caesura
calendar
calendarDesc
(calendar description)
camera
caption
case
castGroup
(cast list grouping)
castItem
(cast list item)
castList
(cast list)
catDesc
(category description)
catRef
(category reference)
catchwords
category
cb
(column beginning)
cell
certainty
change
channel
(primary channel)
char
(character)
charDecl
(character declarations)
charName
(character name)
charProp
(character property)
choice
cit
(cited quotation)
citedRange
(cited range)
cl
(clause)
classCode
(classification code)
classDecl
(classification declarations)
classRef
classSpec
(class specification)
classes
climate
closer
code
collation
collection
colloc
(collocate)
colophon
cond
(conditional feature-structure constraint)
condition
constitution
constraint
(constraint rules)
constraintSpec
(constraint on schema)
content
(content model)
corr
(correction)
correction
(correction principles)
correspAction
(correspondence action)
correspContext
(correspondence context)
correspDesc
(correspondence description)
country
creation
custEvent
(custodial event)
custodialHist
(custodial history)
damage
damageSpan
(damaged span of text)
dataFacet
dataRef
dataSpec
(datatype specification)
datatype
date
dateline
death
decoDesc
(decoration description)
decoNote
(note on decoration)
def
(definition)
default
(default feature value)
defaultVal
(default value)
del
(deletion)
delSpan
(deleted span of text)
depth
derivation
desc
(description)
dictScrap
(dictionary scrap)
dim
dimensions
distinct
distributor
district
div
(text division)
div1
(level-1 text division)
div2
(level-2 text division)
div3
(level-3 text division)
div4
(level-4 text division)
div5
(level-5 text division)
div6
(level-6 text division)
div7
(level-7 text division)
divGen
(automatically generated text division)
docAuthor
(document author)
docDate
(document date)
docEdition
(document edition)
docImprint
(document imprint)
docTitle
(document title)
domain
(domain of use)
eLeaf
(leaf or terminal node of an embedding tree)
eTree
(embedding tree)
edition
editionStmt
(edition statement)
editor
editorialDecl
(editorial practice declaration)
education
eg
(example)
egXML
(example of XML)
elementRef
elementSpec
(element specification)
email
(electronic mail address)
emph
(emphasized)
empty
encodingDesc
(encoding description)
entry
entryFree
(unstructured entry)
epigraph
epilogue
equipment
equiv
(equivalent)
etym
(etymology)
event
ex
(editorial expansion)
exemplum
expan
(expansion)
explicit
extent
f
(feature)
fDecl
(feature declaration)
fDescr
(feature description (in FSD))
fLib
(feature library)
facsimile
factuality
faith
figDesc
(description of figure)
figure
fileDesc
(file description)
filiation
finalRubric
floatingText
floruit
foliation
foreign
forename
forest
form
(form information group)
formula
front
(front matter)
fs
(feature structure)
fsConstraints
(feature-structure constraints)
fsDecl
(feature structure declaration)
fsDescr
(feature system description (in FSD))
fsdDecl
(feature system declaration)
fsdLink
(feature structure declaration link)
funder
(funding body)
fvLib
(feature-value library)
fw
(forme work)
g
(character or glyph)
gap
gb
(gathering beginning)
gen
(gender)
genName
(generational name component)
geo
(geographical coordinates)
geoDecl
(geographic coordinates declaration)
geogFeat
(geographical feature name)
geogName
(geographical name)
gi
(element name)
gloss
glyph
(character glyph)
glyphName
(character glyph name)
gram
(grammatical information)
gramGrp
(grammatical information group)
graph
graphic
group
handDesc
(description of hands)
handNote
(note on hand)
handNotes
handShift
head
(heading)
headItem
(heading for list items)
headLabel
(heading for list labels)
height
heraldry
hi
(highlighted)
history
hom
(homograph)
hyph
(hyphenation)
hyphenation
iNode
(intermediate (or internal) node)
iType
(inflectional class)
ident
(identifier)
idno
(identifier)
if
iff
(if and only if)
imprimatur
imprint
incident
incipit
index
(index entry)
institution
interaction
interp
(interpretation)
interpGrp
(interpretation group)
interpretation
item
join
joinGrp
(join group)
keywords
kinesic
l
(verse line)
label
lacunaEnd
lacunaStart
lang
(language name)
langKnowledge
(language knowledge)
langKnown
(language known)
langUsage
(language usage)
language
layout
layoutDesc
(layout description)
lb
(line beginning)
lbl
(label)
leaf
lem
(lemma)
lg
(line group)
licence
line
link
linkGrp
(link group)
list
listApp
(list of apparatus entries)
listBibl
(citation list)
listChange
listEvent
(list of events)
listForest
listNym
(list of canonical names)
listOrg
(list of organizations)
listPerson
(list of persons)
listPlace
(list of places)
listPrefixDef
(list of prefix definitions)
listRef
(list of references)
listRelation
listTranspose
listWit
(witness list)
localName
(locally-defined property name)
locale
location
locus
locusGrp
m
(morpheme)
macroRef
macroSpec
(macro specification)
mapping
(character mapping)
material
measure
measureGrp
(measure group)
media
meeting
memberOf
mentioned
metDecl
(metrical notation declaration)
metSym
(metrical notation symbol)
metamark
milestone
mod
model
modelGrp
modelSequence
moduleRef
(module reference)
moduleSpec
(module specification)
monogr
(monographic level)
mood
move
(movement)
msContents
(manuscript contents)
msDesc
(manuscript description)
msFrag
(manuscript fragment)
msIdentifier
(manuscript identifier)
msItem
(manuscript item)
msItemStruct
(structured manuscript item)
msName
(alternative name)
msPart
(manuscript part)
musicNotation
name
(name, proper noun)
nameLink
(name link)
namespace
nationality
node
normalization
notatedMusic
note
notesStmt
(notes statement)
num
(number)
number
numeric
(numeric value)
nym
(canonical name)
oRef
(orthographic-form reference)
objectDesc
objectType
occupation
offset
opener
org
(organization)
orgName
(organization name)
orig
(original form)
origDate
(origin date)
origPlace
(origin place)
origin
orth
(orthographic form)
outputRendition
p
(paragraph)
pRef
(pronunciation reference)
param
paramList
paramSpec
particDesc
(participation description)
pause
pb
(page beginning)
pc
(punctuation character)
per
(person)
performance
persName
(personal name)
person
personGrp
(personal group)
persona
phr
(phrase)
physDesc
(physical description)
place
placeName
population
pos
(part of speech)
postBox
(postal box or post office box)
postCode
(postal code)
postscript
precision
prefixDef
(prefix definition)
preparedness
principal
(principal researcher)
profileDesc
(text-profile description)
projectDesc
(project description)
prologue
pron
(pronunciation)
provenance
ptr
(pointer)
pubPlace
(publication place)
publicationStmt
(publication statement)
publisher
punctuation
purpose
q
(quoted)
quotation
quote
(quotation)
rdg
(reading)
rdgGrp
(reading group)
re
(related entry)
recordHist
(recorded history)
recording
(recording event)
recordingStmt
(recording statement)
redo
ref
(reference)
refState
(reference state)
refsDecl
(references declaration)
reg
(regularization)
region
relatedItem
relation
(relationship)
remarks
rendition
repository
residence
resp
(responsibility)
respStmt
(statement of responsibility)
respons
(responsibility)
restore
retrace
revisionDesc
(revision description)
rhyme
role
roleDesc
(role description)
roleName
root
(root node)
row
rs
(referencing string)
rubric
s
(s-unit)
said
(speech or thought)
salute
(salutation)
samplingDecl
(sampling declaration)
schemaRef
(schema reference)
schemaSpec
(schema specification)
scriptDesc
scriptNote
scriptStmt
(script statement)
seal
sealDesc
(seal description)
secFol
(second folio)
secl
(secluded text)
seg
(arbitrary segment)
segmentation
sense
sequence
series
(series information)
seriesStmt
(series statement)
set
(setting)
setting
settingDesc
(setting description)
settlement
sex
shift
sic
(Latin for thus or so )
signatures
signed
(signature)
soCalled
socecStatus
(socio-economic status)
sound
source
sourceDesc
(source description)
sourceDoc
sp
(speech)
spGrp
(speech group)
space
span
spanGrp
(span group)
speaker
specDesc
(specification description)
specGrp
(specification group)
specGrpRef
(reference to a specification group)
specList
(specification list)
sponsor
stage
(stage direction)
stamp
state
stdVals
(standard values)
street
stress
string
(string value)
styleDefDecl
(style definition language declaration)
subc
(subcategorization)
subst
(substitution)
substJoin
(substitution join)
summary
superEntry
supplied
support
supportDesc
(support description)
surface
surfaceGrp
surname
surplus
surrogates
syll
(syllabification)
symbol
(symbolic value)
table
tag
tagUsage
tagsDecl
(tagging declaration)
taxonomy
tech
(technical stage direction)
teiCorpus
teiHeader
(TEI header)
term
terrain
text
textClass
(text classification)
textDesc
(text description)
textLang
(text language)
textNode
then
time
timeline
title
titlePage
(title page)
titlePart
titleStmt
(title statement)
tns
(tense)
trailer
trait
transcriptionDesc
transpose
tree
triangle
(underspecified embedding tree, so called because of its characteristic shape when drawn)
typeDesc
typeNote
u
(utterance)
unclear
undo
unicodeName
(unicode property name)
usg
(usage)
vAlt
(value alternation)
vColl
(collection of values)
vDefault
(value default)
vLabel
(value label)
vMerge
(merged collection of values)
vNot
(value negation)
vRange
(value range)
val
(value)
valDesc
(value description)
valItem
valList
(value list)
value
variantEncoding
view
vocal
w
(word)
watermark
when
width
wit
witDetail
(witness detail)
witEnd
(fragmented witness end)
witStart
(fragmented witness start)
witness
writing
xenoData
(non-TEI metadata)
xr
(cross-reference phrase)
zone
prefixspecifies a default prefix which will be prepended to all patterns relating to TEI elements, unless otherwise stated.
Status Optional
Datatype 0–1 occurrences of teidata.xmlName separated by whitespace
Note

Use of this attribute allows an external schema which has an element with the same local name as a TEI element to be mixed in.

targetLang(target language) specifies which language to use when creating the objects in a schema if names for elements or attributes are available in more than one language
Status Optional
Datatype teidata.language
docLang(documentation language) specifies which languages to use when creating documentation if the description for an element, attribute, class or macro is available in more than one language
Status Optional
Datatype 1–∞ occurrences of teidata.language separated by whitespace
defaultExceptions(default namespace exclusions) provides a list of namespaces and/or prefixed element names to be excluded by default from anyName in RELAX NG schemas
Status Recommended
Datatype 1–∞ occurrences of teidata.namespaceOrName separated by whitespace
Default http://www.tei-c.org/ns/1.0 teix:egXML
Note

Specifies defaults for the except attribute of anyElement. RELAX NG validation (unless DTD Compatibility Mode is turned off) requires that any elements which may take an xml:id be excluded from the content of anyName name classes. For normal TEI purposes, this includes anything in the TEI namespace and the egXML element. The defaultExceptions attribute sets the global defaults for these exclusions. Element prefixes must be declared using a namespace declaration on the parent or an ancestor element.

Member of
Contained by
figures: cell figure
tagdocs: specGrp
textstructure: body div
May contain
Note

The content of the tei_customization schemaSpec is somewhat more restrictive than TEI. To wit,

  • neither altIdent nor equiv are permitted
  • there can be at most one gloss, which (if present) must precede the desc
  • there must be one and only one desc
  • the four core modules must be included
  • the value of start requires values that are valid TEI element names
Example
<schemaSpec prefix="TEI_ident="testsvg"
 start="TEI svg">

 <moduleRef source="tei:current"
  key="header"/>

 <moduleRef key="core"/>
 <moduleRef key="drama"/>
 <moduleRef url="svg11.rng"/>
</schemaSpec>

This schema combines elements from the current versions of the drama and core modules, the current release version of the header module, and elements from an existing RELAX NG schema available from the URL indicated.

Schematron(required modules)

<sch:assert test=" ( tei:moduleRef[ @key eq 'tei'] or tei:specGrpRef[ id( substring-after( normalize-space( @target ), '#') )/tei:moduleRef[ @key eq 'tei'] ] ) and ( tei:moduleRef[ @key eq 'core'] or tei:specGrpRef[ id( substring-after( normalize-space( @target ), '#') )/tei:moduleRef[ @key eq 'core'] ] ) and ( tei:moduleRef[ @key eq 'header'] or tei:specGrpRef[ id( substring-after( normalize-space( @target ), '#') )/tei:moduleRef[ @key eq 'header'] ] ) and ( tei:moduleRef[ @key eq 'textstructure'] or tei:specGrpRef[ id( substring-after( normalize-space( @target ), '#') )/tei:moduleRef[ @key eq 'textstructure'] ] ) "> missing one or more of the required modules (tei, core, header,
textstructure). </sch:assert>
SchematronA <*Spec> element should either be within schemaSpec, or be in a specGrp referred to by a specGrpRef wihin schemaSpec.

<sch:rule context="tei:classSpec[ not( ancestor::tei:schemaSpec ) ] | tei:elementSpec[ not( ancestor::tei:schemaSpec ) ] | tei:macroSpec[ not( ancestor::tei:schemaSpec ) ]">
<sch:assert test="//tei:schemaSpec//tei:specGrpRef [ substring-after( normalize-space( @target ), '#') eq current()/ancestor::tei:specGrp/@xml:id ]"><sch:name/>> should be in <schemaSpec> or referred to from within
<schemaSpec></sch:assert>
</sch:rule>
SchematronTEI permits schemaSpec as a repeatable child of div (or body) or of encodingDesc. But roma only processes the first schemaSpec found (in document order). So we just limit ourselves to 1 and only 1.

<sch:rule context="/">
<sch:report test="count( //tei:schemaSpec ) eq 0">There's no <schemaSpec>, so
this isn't much of a TEI customization</sch:report>
<sch:report test="count( //tei:schemaSpec ) gt 1">You have more than one
<schemaSpec>; current ODD processors will only look at the first
one</sch:report>
</sch:rule>
Content model
<content>
 <elementRef key="glossminOccurs="0"
  maxOccurs="1"/>

 <elementRef key="descminOccurs="1"
  maxOccurs="1"/>

 <alternate minOccurs="0"
  maxOccurs="unbounded">

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

<sequence>

<sequence> indicates that the constructs referenced by its children form a sequence [22.5.1. Defining Content Models]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.repeatable (@minOccurs, @maxOccurs)
preserveOrderif true, indicates that the order in which component elements of a sequence appear in a document must correspond to the order in which they are given in the content model.
Status Optional
Datatype teidata.truthValue
Member of
Contained by
May contain
Example
<content>
 <sequence>
  <alternate>
   <elementRef key="name"/>
   <elementRef key="persName"/>
  </alternate>
  <elementRef key="placeNameminOccurs="0"
   maxOccurs="5"/>

 </sequence>
</content>

This example content model matches a sequence consisting of either a name or a persName followed by nothing, or by a sequence of up to five placeName elements.

Schematron

<sch:assert test="count(*)>1">The sequence element must have at least two child elements</sch:assert>
Content model
<content>
 <classRef key="model.contentPart"
  maxOccurs="unbounded"/>

</content>
Schema Declaration
element sequence
{
   cust_att.global.attributes,
   cust_att.repeatable.attributes,
   attribute preserveOrder { teidata.truthValue }?,
   cust_model.contentPart+
}

<seriesStmt>

<seriesStmt> (series statement) groups information about the series, if any, to which a publication belongs. [2.2.5. The Series Statement 2.2. The File Description]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Contained by
May contain
Example
<seriesStmt>
 <title>Machine-Readable Texts for the Study of Indian Literature</title>
 <respStmt>
  <resp>ed. by</resp>
  <name>Jan Gonda</name>
 </respStmt>
 <biblScope unit="volume">1.2</biblScope>
 <idno type="ISSN">0 345 6789</idno>
</seriesStmt>
Content model
<content>
 <alternate>
  <classRef key="model.pLikeminOccurs="1"
   maxOccurs="unbounded"/>

  <sequence>
   <elementRef key="titleminOccurs="1"
    maxOccurs="unbounded"/>

   <alternate minOccurs="0"
    maxOccurs="unbounded">

    <elementRef key="editor"/>
    <elementRef key="respStmt"/>
   </alternate>
   <alternate minOccurs="0"
    maxOccurs="unbounded">

    <elementRef key="idno"/>
    <elementRef key="biblScope"/>
   </alternate>
  </sequence>
 </alternate>
</content>
Schema Declaration
element seriesStmt
{
   cust_att.global.attributes,
   (
      cust_model.pLike+
    | (
         cust_title+,
         ( cust_editor | cust_respStmt )*,
         ( cust_idno | cust_biblScope )*
      )
   )
}

<soCalled>

<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. [3.3.3. Quotation]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
May contain
Example
To edge his way along
the crowded paths of life, warning all human sympathy to keep its distance, was what the
knowing ones call <soCalled>nuts</soCalled> to Scrooge.
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element soCalled { cust_att.global.attributes, cust_macro.phraseSeq }

<sourceDesc>

<sourceDesc> (source description) describes the source from which an electronic text was derived or generated, typically a bibliographic description in the case of a digitized text, or a phrase such as "born digital" for a text which has no previous existence. [2.2.7. The Source Description]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.declarable (@default)
Contained by
May contain
core: bibl list p
figures: table
header: biblFull
Example
<sourceDesc>
 <bibl>
  <title level="a">The Interesting story of the Children in the Wood</title>. In
 <author>Victor E Neuberg</author>, <title>The Penny Histories</title>.
 <publisher>OUP</publisher>
  <date>1968</date>. </bibl>
</sourceDesc>
Example
<sourceDesc>
 <p>Born digital: no previous source exists.</p>
</sourceDesc>
Content model
<content>
 <alternate>
  <classRef key="model.pLikeminOccurs="1"
   maxOccurs="unbounded"/>

  <alternate minOccurs="1"
   maxOccurs="unbounded">

   <classRef key="model.biblLike"/>
   <classRef key="model.sourceDescPart"/>
   <classRef key="model.listLike"/>
  </alternate>
 </alternate>
</content>
Schema Declaration
element sourceDesc
{
   cust_att.global.attributes,
   cust_att.declarable.attributes,
   (
      cust_model.pLike+
    | ( cust_model.biblLike | cust_model.sourceDescPart | cust_model.listLike )+
   )
}

<specDesc>

<specDesc> (specification description) indicates that a description of the specified element or class should be included at this point within a document. [22.1.2. Element and Attribute Descriptions]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
key(identifier) supplies the identifier of the documentary element or class for which a description is to be obtained.
Status Optional
Datatype teidata.name
<specDesc key="emph"/>
atts(attributes) supplies attribute names for which descriptions should additionally be obtained.
Status Recommended
Datatype 0–∞ occurrences of teidata.name separated by whitespace
<specDesc key="foreign"
 atts="usage xml:lang"/>
Note

The attribute names listed may include both attributes inherited from a class and those defined explicitly for the associated element.

Member of
Contained by
May containEmpty element
Note

The description is usually displayed as a label and an item. The list of attributes may include some which are inherited by virtue of an element's class membership; descriptions for such attributes may also be retrieved using another specDesc, this time pointing at the relevant class.

Example
<specDesc key="orth"/>
Example
<specDesc key="emph"/>
Example
<specDesc key="foreign"
 atts="usage xml:lang"/>
Content model
<content>
</content>
Schema Declaration
element specDesc
{
   cust_att.global.attributes,
   attribute key { teidata.name }?,
   attribute atts { list { teidata.name* } }?,
   empty
}

<specGrp>

<specGrp> (specification group) contains any convenient grouping of specifications for use within the current module. [22.2. Modules and Schemas]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
May contain
Note

A specification group is referenced by means of its xml:id attribute. The declarations it contains may be included in a schemaSpec or moduleSpec element only by reference (using a specGrpRef element): it may not be nested within a moduleSpec element.

Different ODD processors may generate representations of the specifications contained by a specGrp in different concrete syntaxes.

Example
<specGrp xml:id="xDAILC">
 <elementSpec ident="s">
<!-- ... -->
 </elementSpec>
 <elementSpec ident="cl">
<!-- ... -->
 </elementSpec>
 <elementSpec ident="w">
<!-- ... -->
 </elementSpec>
 <elementSpec ident="m">
<!-- ... -->
 </elementSpec>
 <elementSpec ident="c">
<!-- ... -->
 </elementSpec>
</specGrp>

This specification group with identifier xDAILC contains specifications for the elements <s>,<cl>,<w>, etc.

Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">

  <classRef key="model.oddDecl"/>
  <classRef key="model.oddRef"/>
  <classRef key="model.divPart"/>
 </alternate>
</content>
Schema Declaration
element specGrp
{
   cust_att.global.attributes,
   ( cust_model.oddDecl | cust_model.oddRef | cust_model.divPart )*
}

<specGrpRef>

<specGrpRef> (reference to a specification group) indicates that the declarations contained by the specGrp referenced should be inserted at this point. [22.2. Modules and Schemas]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
targetpoints at the specification group which logically belongs here.
Status Required
Datatype teidata.pointer
Member of
Contained by
May containEmpty element
Note

In ODD documentation processing, a specGrpRef usually produces a comment indicating that a set of declarations printed in another section will be inserted at this point in the specGrp being discussed. In schema processing, the contents of the specified specGrp are made available for inclusion in the generated schema.

The specification group identified by the target attribute will normally be part of the current ODD document.

Example
<p>This part of the module contains declarations for names of persons, places, and
organisations: <specGrpRef target="#names.pers"/>
 <specGrpRef target="#names.place"/>
 <specGrpRef target="#names.org"/>
</p>
<!-- elsewhere -->
<specGrp xml:id="names.pers">
<!--... -->
</specGrp>
<!-- elsewhere -->
<specGrp xml:id="names.place">
<!--... -->
</specGrp>
<!-- elsewhere -->
<specGrp xml:id="names.org">
<!--... -->
</specGrp>
Content model
<content>
</content>
Schema Declaration
element specGrpRef
{
   cust_att.global.attributes,
   attribute target { teidata.pointer },
   empty
}

<specList>

<specList> (specification list) marks where a list of descriptions is to be inserted into the prose documentation. [22.1.2. Element and Attribute Descriptions]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
May contain
tagdocs: specDesc
Example
<specList>
 <specDesc key="refState"
  atts="delim length"/>

 <specDesc key="div"/>
</specList>
Content model
<content>
 <elementRef key="specDescminOccurs="1"
  maxOccurs="unbounded"/>

</content>
Schema Declaration
element specList { cust_att.global.attributes, cust_specDesc+ }
<sponsor> specifies the name of a sponsoring organization or institution. [2.2.1. The Title Statement]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.canonical (@key, @ref)
Member of
Contained by
May contain
Note

Sponsors give their intellectual authority to a project; they are to be distinguished from funders (see element funder), who provide the funding but do not necessarily take intellectual responsibility.

Example
<sponsor>Association for Computers and the Humanities</sponsor>
<sponsor>Association for Computational Linguistics</sponsor>
<sponsor ref="http://www.allc.org/">Association for Literary and Linguistic Computing</sponsor>
Content model
<content>
 <macroRef key="macro.phraseSeq.limited"/>
</content>
Schema Declaration
element sponsor
{
   cust_att.global.attributes,
   cust_att.canonical.attributes,
   cust_macro.phraseSeq.limited
}

<street>

<street> contains 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. [3.5.2. Addresses]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
core: address
May contain
Note

The order and presentation of house names and numbers and street names, etc., may vary considerably in different countries. The encoding should reflect the order which is appropriate in the country concerned.

Example
<street>via della Faggiola, 36</street>
Example
<street>
 <name>Duntaggin</name>, 110 Southmoor Road
</street>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element street { cust_att.global.attributes, cust_macro.phraseSeq }

<styleDefDecl>

<styleDefDecl> (style definition language declaration) specifies the name of the formal language in which style or renditional information is supplied elsewhere in the document. The specific version of the scheme may also be supplied. [2.3.5. The Default Style Definition Language Declaration]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.declarable (@default) att.styleDef (@scheme, @schemeVersion)
Member of
Contained by
header: encodingDesc
May contain
core: p
Example
<styleDefDecl scheme="css"
 schemeVersion="2.1"/>

<!-- ... -->
<tagsDecl>
 <rendition xml:id="boldface">font-weight: bold;</rendition>
 <rendition xml:id="italicstyle">font-style: italic;</rendition>
</tagsDecl>
Content model
<content>
 <classRef key="model.pLikeminOccurs="0"
  maxOccurs="unbounded"/>

</content>
Schema Declaration
element styleDefDecl
{
   cust_att.global.attributes,
   cust_att.declarable.attributes,
   cust_att.styleDef.attributes,
   cust_model.pLike*
}

<table>

<table> contains text displayed in tabular form, in rows and columns. [14.1.1. TEI Tables]
Modulefigures
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.typed (@type, @subtype)
rowsindicates the number of rows in the table.
Status Optional
Datatype teidata.count
Note

If no number is supplied, an application must calculate the number of rows.

Rows should be presented from top to bottom.

cols(columns) indicates the number of columns in each row of the table.
Status Optional
Datatype teidata.count
Note

If no number is supplied, an application must calculate the number of columns.

Within each row, columns should be presented left to right.

Member of
Contained by
May contain
Note

Contains an optional heading and a series of rows.

Any rendition information should be supplied using the global rend attribute, at the table, row, or cell level as appropriate.

Example
<table rows="4cols="4">
 <head>Poor Men's Lodgings in Norfolk (Mayhew, 1843)</head>
 <row role="label">
  <cell role="data"/>
  <cell role="data">Dossing Cribs or Lodging Houses</cell>
  <cell role="data">Beds</cell>
  <cell role="data">Needys or Nightly Lodgers</cell>
 </row>
 <row role="data">
  <cell role="label">Bury St Edmund's</cell>
  <cell role="data">5</cell>
  <cell role="data">8</cell>
  <cell role="data">128</cell>
 </row>
 <row role="data">
  <cell role="label">Thetford</cell>
  <cell role="data">3</cell>
  <cell role="data">6</cell>
  <cell role="data">36</cell>
 </row>
 <row role="data">
  <cell role="label">Attleboro'</cell>
  <cell role="data">3</cell>
  <cell role="data">5</cell>
  <cell role="data">20</cell>
 </row>
 <row role="data">
  <cell role="label">Wymondham</cell>
  <cell role="data">1</cell>
  <cell role="data">11</cell>
  <cell role="data">22</cell>
 </row>
</table>
Content model
<content>
 <sequence>
  <alternate minOccurs="0"
   maxOccurs="unbounded">

   <classRef key="model.headLike"/>
   <classRef key="model.global"/>
  </alternate>
  <alternate>
   <sequence minOccurs="1"
    maxOccurs="unbounded">

    <elementRef key="row"/>
    <classRef key="model.global"
     minOccurs="0maxOccurs="unbounded"/>

   </sequence>
   <sequence minOccurs="1"
    maxOccurs="unbounded">

    <classRef key="model.graphicLike"/>
    <classRef key="model.global"
     minOccurs="0maxOccurs="unbounded"/>

   </sequence>
  </alternate>
  <sequence minOccurs="0"
   maxOccurs="unbounded">

   <classRef key="model.divBottom"/>
   <classRef key="model.global"
    minOccurs="0maxOccurs="unbounded"/>

  </sequence>
 </sequence>
</content>
Schema Declaration
element table
{
   cust_att.global.attributes,
   cust_att.typed.attributes,
   attribute rows { teidata.count }?,
   attribute cols { teidata.count }?,
   (
      ( cust_model.headLike | cust_model.global )*,
      (
         ( cust_row, cust_model.global* )+
       | ( cust_model.graphicLike, cust_model.global* )+
      ),
      ( cust_model.divBottom, cust_model.global* )*
   )
}

<tag>

<tag> contains text of a complete start- or end-tag, possibly including attribute specifications, but excluding the opening and closing markup delimiter characters. [22. Documentation Elements]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
typeindicates the type of XML tag intended
Status Optional
Datatype teidata.enumerated
Legal values are:
start
a start-tag, with delimiters < and > is intended
end
an end-tag, with delimiters </ and > is intended
empty
a empty tag, with delimiters < and /> is intended
pi
a pi (processing instruction), with delimiters <? and ?> is intended
comment
a comment, with delimiters <!-- and --> is intended
ms
a marked-section, with delimiters <[CDATA[ and ]]> is intended
schemesupplies the name of the schema in which this tag is defined.
Status Optional
Datatype teidata.enumerated
Sample values include:
TEI
(text encoding initiative) This tag is defined as part of the TEI scheme. [Default]
DBK
(docbook) this tag is part of the Docbook scheme.
XX
(unknown) this tag is part of an unknown scheme.
Schematron
HTML
Member of
Contained by
May containCharacter data only
Example
Mark the start of each italicised phrase with a
<tag>hi rend="it"</tag> tag, and its end with a <tag type="end">hi</tag> tag.
<tag type="comment">Example updated on 2008-04-05</tag>
Content model
<content>
 <textNode/>
</content>
Schema Declaration
element tag
{
   cust_att.global.attributes,
   attribute type { "start" | "end" | "empty" | "pi" | "comment" | "ms" }?,
   attribute scheme { teidata.enumerated }?,
   text
}

<TEI>

<TEI> (TEI document) contains a single TEI-conformant document, combining a single TEI header with one or more members of the model.resourceLike class. Multiple TEI elements may be combined to form a <teiCorpus> element. [4. Default Text Structure 15.1. Varieties of Composite Text]
Moduletextstructure
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.typed (@type, @subtype)
versionspecifies the version number of the TEI Guidelines against which this document is valid.
Status Optional
Datatype teidata.version
Note

Major editions of the Guidelines have long been informally referred to by a name made up of the letter P (for Proposal) followed by a digit. The current release is one of the many releases of the fifth major edition of the Guidelines, known as P5. This attribute may be used to associate a TEI document with a specific release of the P5 Guidelines, in the absence of a more precise association provided by the source attribute on the associated schemaSpec.

Contained by
May contain
header: teiHeader
textstructure: text
Note

This element is required. It is customary to specify the TEI namespace http://www.tei-c.org/ns/1.0 on it, using the xmlns attribute.

Example
<TEI version="3.3.0" xmlns="http://www.tei-c.org/ns/1.0">
 <teiHeader>
  <fileDesc>
   <titleStmt>
    <title>The shortest TEI Document Imaginable</title>
   </titleStmt>
   <publicationStmt>
    <p>First published as part of TEI P2, this is the P5
         version using a name space.</p>
   </publicationStmt>
   <sourceDesc>
    <p>No source: this is an original work.</p>
   </sourceDesc>
  </fileDesc>
 </teiHeader>
 <text>
  <body>
   <p>This is about the shortest TEI document imaginable.</p>
  </body>
 </text>
</TEI>
Example
<TEI version="2.9.1" xmlns="http://www.tei-c.org/ns/1.0">
 <teiHeader>
  <fileDesc>
   <titleStmt>
    <title>A TEI Document containing four page images </title>
   </titleStmt>
   <publicationStmt>
    <p>Unpublished demonstration file.</p>
   </publicationStmt>
   <sourceDesc>
    <p>No source: this is an original work.</p>
   </sourceDesc>
  </fileDesc>
 </teiHeader>
 <facsimile>
  <graphic url="page1.png"/>
  <graphic url="page2.png"/>
  <graphic url="page3.png"/>
  <graphic url="page4.png"/>
 </facsimile>
</TEI>
Schematron

<s:ns prefix="tei"
 uri="http://www.tei-c.org/ns/1.0"/>

<s:ns prefix="xs"
 uri="http://www.w3.org/2001/XMLSchema"/>
Schematron

<s:ns prefix="rng"
 uri="http://relaxng.org/ns/structure/1.0"/>
Content model
<content>
 <sequence>
  <elementRef key="teiHeader"/>
  <classRef key="model.resourceLike"
   minOccurs="1maxOccurs="unbounded"/>

 </sequence>
</content>
Schema Declaration
element TEI
{
   cust_att.global.attributes,
   cust_att.typed.attributes,
   attribute version { teidata.version }?,
   ( cust_teiHeader, cust_model.resourceLike+ )
}

<teiHeader>

<teiHeader> (TEI header) supplies descriptive and declarative metadata associated with a digital resource or set of resources. [2.1.1. The TEI Header and Its Components 15.1. Varieties of Composite Text]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Contained by
textstructure: TEI
May contain
Note

One of the few elements unconditionally required in any TEI document.

Example
<teiHeader>
 <fileDesc>
  <titleStmt>
   <title>Shakespeare: the first folio (1623) in electronic form</title>
   <author>Shakespeare, William (1564–1616)</author>
   <respStmt>
    <resp>Originally prepared by</resp>
    <name>Trevor Howard-Hill</name>
   </respStmt>
   <respStmt>
    <resp>Revised and edited by</resp>
    <name>Christine Avern-Carr</name>
   </respStmt>
  </titleStmt>
  <publicationStmt>
   <distributor>Oxford Text Archive</distributor>
   <address>
    <addrLine>13 Banbury Road, Oxford OX2 6NN, UK</addrLine>
   </address>
   <idno type="OTA">119</idno>
   <availability>
    <p>Freely available on a non-commercial basis.</p>
   </availability>
   <date when="1968">1968</date>
  </publicationStmt>
  <sourceDesc>
   <bibl>The first folio of Shakespeare, prepared by Charlton Hinman (The Norton Facsimile,
       1968)</bibl>
  </sourceDesc>
 </fileDesc>
 <encodingDesc>
  <projectDesc>
   <p>Originally prepared for use in the production of a series of old-spelling
       concordances in 1968, this text was extensively checked and revised for use during the
       editing of the new Oxford Shakespeare (Wells and Taylor, 1989).</p>
  </projectDesc>
  <editorialDecl>
   <correction>
    <p>Turned letters are silently corrected.</p>
   </correction>
   <normalization>
    <p>Original spelling and typography is retained, except that long s and ligatured
         forms are not encoded.</p>
   </normalization>
  </editorialDecl>
  <refsDecl xml:id="ASLREF">
   <cRefPattern matchPattern="(\S+) ([^.]+)\.(.*)"
    replacementPattern="#xpath(//div1[@n='$1']/div2/[@n='$2']//lb[@n='$3'])">

    <p>A reference is created by assembling the following, in the reverse order as that
         listed here: <list>
      <item>the <att>n</att> value of the preceding <gi>lb</gi>
      </item>
      <item>a period</item>
      <item>the <att>n</att> value of the ancestor <gi>div2</gi>
      </item>
      <item>a space</item>
      <item>the <att>n</att> value of the parent <gi>div1</gi>
      </item>
     </list>
    </p>
   </cRefPattern>
  </refsDecl>
 </encodingDesc>
 <revisionDesc>
  <list>
   <item>
    <date when="1989-04-12">12 Apr 89</date> Last checked by CAC</item>
   <item>
    <date when="1989-03-01">1 Mar 89</date> LB made new file</item>
  </list>
 </revisionDesc>
</teiHeader>
Content model
<content>
 <sequence>
  <elementRef key="fileDesc"/>
  <classRef key="model.teiHeaderPart"
   minOccurs="0maxOccurs="unbounded"/>

  <elementRef key="revisionDesc"
   minOccurs="0"/>

 </sequence>
</content>
Schema Declaration
element teiHeader
{
   cust_att.global.attributes,
   ( cust_fileDesc, cust_model.teiHeaderPart*, cust_revisionDesc? )
}

<term>

<term> contains a single-word, multi-word, or symbolic designation which is regarded as a technical term. [3.3.4. Terms, Glosses, Equivalents, and Descriptions]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.declaring (@decls) att.pointing (@targetLang, @target, @evaluate) att.typed (@type, @subtype) att.canonical (@key, @ref) att.sortable (@sortKey) att.cReferencing (@cRef)
Member of
Contained by
May contain
Note

When this element appears within an <index> element, it is understood to supply the form under which an index entry is to be made for that location. Elsewhere, it is understood simply to indicate that its content is to be regarded as a technical or specialised term. It may be associated with a gloss element by means of its ref attribute; alternatively a gloss element may point to a term element by means of its target attribute.

In formal terminological work, there is frequently discussion over whether terms must be atomic or may include multi-word lexical items, symbolic designations, or phraseological units. The term element may be used to mark any of these. No position is taken on the philosophical issue of what a term can be; the looser definition simply allows the term element to be used by practitioners of any persuasion.

As with other members of the att.canonical class, instances of this element occuring in a text may be associated with a canonical definition, either by means of a URI (using the ref attribute), or by means of some system-specific code value (using the key attribute). Because the mutually exclusive target and cRef attributes overlap with the function of the ref attribute, they are deprecated and may be removed at a subsequent release.

Example
A computational device that infers structure
from grammatical strings of words is known as a <term>parser</term>, and much of the history
of NLP over the last 20 years has been occupied with the design of parsers.
Example
We may define <term xml:id="TDPV1rend="sc">discoursal point of view</term> as
<gloss target="#TDPV1">the relationship, expressed
through discourse structure, between the implied author or some other addresser, and the
fiction.</gloss>
Example
We may define <term ref="#TDPV2rend="sc">discoursal point of view</term> as
<gloss xml:id="TDPV2">the relationship, expressed
through discourse structure, between the implied author or some other addresser, and the
fiction.</gloss>
Example
We discuss Leech's concept of <term ref="myGlossary.xml#TDPV2rend="sc">discoursal point of view</term> below.
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element term
{
   cust_att.global.attributes,
   cust_att.declaring.attributes,
   cust_att.pointing.attributes,
   cust_att.typed.attributes,
   cust_att.canonical.attributes,
   cust_att.sortable.attributes,
   cust_att.cReferencing.attributes,
   cust_macro.phraseSeq
}

<text>

<text> contains a single text of any kind, whether unitary or composite, for example a poem or drama, a collection of essays, a novel, a dictionary, or a corpus sample. [4. Default Text Structure 15.1. Varieties of Composite Text]
Moduletextstructure
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.declaring (@decls) att.typed (@type, @subtype) att.written (@hand)
Member of
Contained by
textstructure: TEI
May contain
core: note
figures: figure
textstructure: back body front
Note

This element should not be used to represent a text which is inserted at an arbitrary point within the structure of another, for example as in an embedded or quoted narrative; the <floatingText> is provided for this purpose.

Example
<text>
 <front>
  <docTitle>
   <titlePart>Autumn Haze</titlePart>
  </docTitle>
 </front>
 <body>
  <l>Is it a dragonfly or a maple leaf</l>
  <l>That settles softly down upon the water?</l>
 </body>
</text>
Example

The body of a text may be replaced by a group of nested texts, as in the following schematic:

<text>
 <front>
<!-- front matter for the whole group -->
 </front>
 <group>
  <text>
<!-- first text -->
  </text>
  <text>
<!-- second text -->
  </text>
 </group>
</text>
Content model
<content>
 <sequence>
  <classRef key="model.global"
   minOccurs="0maxOccurs="unbounded"/>

  <sequence minOccurs="0">
   <elementRef key="front"/>
   <classRef key="model.global"
    minOccurs="0maxOccurs="unbounded"/>

  </sequence>
  <alternate>
   <elementRef key="body"/>
   <elementRef key="group"/>
  </alternate>
  <classRef key="model.global"
   minOccurs="0maxOccurs="unbounded"/>

  <sequence minOccurs="0">
   <elementRef key="back"/>
   <classRef key="model.global"
    minOccurs="0maxOccurs="unbounded"/>

  </sequence>
 </sequence>
</content>
Schema Declaration
element text
{
   cust_att.global.attributes,
   cust_att.declaring.attributes,
   cust_att.typed.attributes,
   cust_att.written.attributes,
   (
      cust_model.global*,
      ( cust_front, cust_model.global* )?,
      ( cust_body | group ),
      cust_model.global*,
      ( cust_back, cust_model.global* )?
   )
}

<textLang>

<textLang> (text language) describes the languages and writing systems identified within the bibliographic work being described, rather than its description. [3.11.2.4. Imprint, Size of a Document, and Reprint Information 10.6.6. Languages and Writing Systems]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
mainLang(main language) supplies a code which identifies the chief language used in the bibliographic work.
Status Optional
Datatype teidata.language
otherLangs(other languages) one or more codes identifying any other languages used in the bibliographic work.
Status Optional
Datatype 0–∞ occurrences of teidata.language separated by whitespace
Member of
Contained by
core: bibl
May contain
Note

This element should not be used to document the languages or writing systems used for the bibliographic or manuscript description itself: as for all other TEI elements, such information should be provided by means of the global xml:lang attribute attached to the element containing the description.

In all cases, languages should be identified by means of a standardized ‘language tag’ generated according to BCP 47. Additional documentation for the language may be provided by a <language> element in the TEI Header.

Example
<textLang mainLang="enotherLangs="la"> Predominantly in English with Latin
glosses</textLang>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
Schema Declaration
element textLang
{
   cust_att.global.attributes,
   attribute mainLang { teidata.language }?,
   attribute otherLangs { list { teidata.language* } }?,
   cust_macro.phraseSeq
}

<textNode>

<textNode> indicates the presence of a text node in a content model [22. Documentation Elements]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
May containEmpty element
Example
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">

  <textNode/>
  <elementRef key="hi"/>
  <elementRef key="seg"/>
 </alternate>
</content>
Content model
<content/>
Schema Declaration
element textNode { cust_att.global.attributes, empty }

<time>

<time> contains a phrase defining a time of day in any format. [3.5.4. Dates and Times]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.datable (@calendar, @period) (att.datable.w3c (@when, @notBefore, @notAfter, @from, @to)) (att.datable.iso (@when-iso, @notBefore-iso, @notAfter-iso, @from-iso, @to-iso)) (att.datable.custom (@when-custom, @notBefore-custom, @notAfter-custom, @from-custom, @to-custom, @datingPoint, @datingMethod)) att.editLike (@evidence, @instant) att.dimensions (@unit, @quantity, @extent, @precision, @scope) (att.ranging (@atLeast, @atMost, @min, @max, @confidence)) att.typed (@type, @subtype)
Member of
Contained by
May contain
Example
As he sat smiling, the
quarter struck — <time when="11:45:00">the quarter to twelve</time>.
Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">

  <textNode/>
  <classRef key="model.gLike"/>
  <classRef key="model.phrase"/>
  <classRef key="model.global"/>
 </alternate>
</content>
Schema Declaration
element time
{
   cust_att.global.attributes,
   cust_att.datable.attributes,
   cust_att.editLike.attributes,
   cust_att.dimensions.attributes,
   cust_att.typed.attributes,
   ( text | cust_model.gLike | cust_model.phrase | cust_model.global )*
}

<title>

<title> contains a title for any kind of work. [3.11.2.2. Titles, Authors, and Editors 2.2.1. The Title Statement 2.2.5. The Series Statement]
Modulecore
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.canonical (@key, @ref) att.datable (@calendar, @period) (att.datable.w3c (@when, @notBefore, @notAfter, @from, @to)) (att.datable.iso (@when-iso, @notBefore-iso, @notAfter-iso, @from-iso, @to-iso)) (att.datable.custom (@when-custom, @notBefore-custom, @notAfter-custom, @from-custom, @to-custom, @datingPoint, @datingMethod)) att.typed (type, @subtype)
typeclassifies the title according to some convenient typology.
Derived fromatt.typed
Status Optional
Datatype teidata.enumerated
Sample values include:
main
main title
sub
(subordinate) subtitle, title of part
alt
(alternate) alternate title, often in another language, by which the work is also known
short
abbreviated form of title
desc
(descriptive) descriptive paraphrase of the work functioning as a title
Note

This attribute is provided for convenience in analysing titles and processing them according to their type; where such specialized processing is not necessary, there is no need for such analysis, and the entire title, including subtitles and any parallel titles, may be enclosed within a single title element.

levelindicates the bibliographic level for a title, that is, whether it identifies an article, book, journal, series, or unpublished material.
Status Optional
Datatype teidata.enumerated
Legal values are:
a
(analytic) the title applies to an analytic item, such as an article, poem, or other work published as part of a larger item.
m
(monographic) the title applies to a monograph such as a book or other item considered to be a distinct publication, including single volumes of multi-volume works
j
(journal) the title applies to any serial or periodical publication such as a journal, magazine, or newspaper
s
(series) the title applies to a series of otherwise distinct publications such as a collection
u
(unpublished) the title applies to any unpublished material (including theses and dissertations unless published by a commercial press)
Note

The level of a title is sometimes implied by its context: for example, a title appearing directly within an <analytic> element is ipso facto of level ‘a’, and one appearing within a <series> element of level ‘s’. For this reason, the level attribute is not required in contexts where its value can be unambiguously inferred. Where it is supplied in such contexts, its value should not contradict the value implied by its parent element.

Member of
Contained by
May contain
Note

The attributes key and ref, inherited from the class att.canonical may be used to indicate the canonical form for the title; the former, by supplying (for example) the identifier of a record in some external library system; the latter by pointing to an XML element somewhere containing the canonical form of the title.

Example
<title>Information Technology and the Research Process: Proceedings of
a conference held at Cranfield Institute of Technology, UK,
18–21 July 1989</title>
Example
<title>Hardy's Tess of the D'Urbervilles: a machine readable
edition</title>
Example
<title type="full">
 <title type="main">Synthèse</title>
 <title type="sub">an international journal for
   epistemology, methodology and history of
   science</title>
</title>
Content model
<content>
 <macroRef key="macro.paraContent"/>
</content>
Schema Declaration
element title
{
   cust_att.global.attributes,
   cust_att.canonical.attributes,
   cust_att.typed.attribute.subtype,
   cust_att.datable.attributes,
   attribute type { teidata.enumerated }?,
   attribute level { "a" | "m" | "j" | "s" | "u" }?,
   cust_macro.paraContent
}

<titleStmt>

<titleStmt> (title statement) groups information about the title of a work and those responsible for its content. [2.2.1. The Title Statement 2.2. The File Description]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Contained by
May contain
Example
<titleStmt>
 <title>Capgrave's Life of St. John Norbert: a machine-readable transcription</title>
 <respStmt>
  <resp>compiled by</resp>
  <name>P.J. Lucas</name>
 </respStmt>
</titleStmt>
Content model
<content>
 <sequence>
  <elementRef key="titleminOccurs="1"
   maxOccurs="unbounded"/>

  <classRef key="model.respLike"
   minOccurs="0maxOccurs="unbounded"/>

 </sequence>
</content>
Schema Declaration
element titleStmt
{
   cust_att.global.attributes,
   ( cust_title+, cust_model.respLike* )
}

<val>

<val> (value) contains a single attribute value. [22. Documentation Elements 22.5.3. Attribute List Specification]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source))
Member of
Contained by
May containCharacter data only
Example
<val>unknown</val>
Content model
<content>
 <textNode/>
</content>
Schema Declaration
element val { cust_att.global.attributes, text }

<valDesc>

<valDesc> (value description) specifies any semantic or syntactic constraint on the value that an attribute may take, additional to the information carried by the datatype element. [22.5.3. Attribute List Specification]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.translatable (@versionDate) att.combinable (@mode) (att.deprecated (@validUntil))
Contained by
tagdocs: attDef
May contain
Example
<valDesc>must point to another <gi>align</gi>
element logically preceding this one.</valDesc>
Content model
<content>
 <macroRef key="macro.phraseSeq.limited"/>
</content>
Schema Declaration
element valDesc
{
   cust_att.global.attributes,
   cust_att.translatable.attributes,
   cust_att.combinable.attributes,
   cust_macro.phraseSeq.limited
}

<valItem>

<valItem> documents a single value in a predefined list of values. [22.5.3. Attribute List Specification]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.combinable (@mode) (att.deprecated (@validUntil))
identspecifies the value concerned.
Status Required
Datatype teidata.text
Contained by
tagdocs: valList
May contain
Example
<valItem ident="dub">
 <altIdent xml:lang="fr">dou</altIdent>
 <equiv name="unknown"/>
 <gloss>dubious</gloss>
 <desc>used when the application of this element is doubtful or uncertain</desc>
</valItem>
Example

The remarks element is only allowed within valItem if the desc element is also present:

<valList type="closed">
 <valItem ident="border">
  <desc>used to signify that there is border around a page.</desc>
 </valItem>
 <valItem ident="border-rule">
  <desc>used to signify that there is a border made of ruled lines.</desc>
 </valItem>
 <valItem ident="border-ornamental">
  <desc>used to signify that there is an ornamental border.</desc>
 </valItem>
 <valItem ident="catch">
  <gloss>catchword</gloss>
  <desc>for catch words.</desc>
 </valItem>
 <valItem ident="lineNum">
  <gloss>line number</gloss>
  <desc>for printed line numbers (usually in poetry).</desc>
 </valItem>
 <valItem ident="listHead">
  <gloss>list heading</gloss>
  <desc>for headings of lists or similar constructs; often used in tables of contents for the
  <q>page</q> heading.</desc>
 </valItem>
 <valItem ident="pageNum">
  <gloss>page number</gloss>
  <desc>for page numbers.</desc>
 </valItem>
 <valItem ident="pressFig">
  <gloss>press figure</gloss>
  <desc>for press figures. These are usually numbers, but are not sequential or regularly
     printed like signatures.</desc>
 </valItem>
 <valItem ident="sig">
  <gloss>signature</gloss>
  <desc>for printed signatures.</desc>
 </valItem>
 <valItem ident="unknown">
  <desc>for a metawork whose function you do not know.</desc>
 </valItem>
 <valItem ident="vol">
  <gloss>volume number</gloss>
  <desc>for printed volume numbers.</desc>
 </valItem>
 <valItem ident="other">
  <desc>anything not covered by the above values.</desc>
  <remarks>
   <p>Used for an ornament, decorated tool line, or symbol(s) that is not officially a
       delimiter (and thus there is no element on which to put <val>pre()</val> or
   <val>post()</val>) but is used to fill space at the bottom of a page so that a
   <gi>floatingText</gi> or similar can start at the top of the next.</p>
  </remarks>
 </valItem>
</valList>
Content model
<content>
 <sequence>
  <classRef key="model.glossLike"
   minOccurs="0maxOccurs="unbounded"/>

  <sequence minOccurs="0">
   <classRef key="model.descLike"
    minOccurs="1maxOccurs="unbounded"/>

   <sequence minOccurs="0"
    maxOccurs="unbounded">

    <classRef key="model.glossLike"
     minOccurs="1maxOccurs="1"/>

    <classRef key="model.descLike"
     minOccurs="0maxOccurs="unbounded"/>

   </sequence>
   <elementRef key="remarksminOccurs="0"
    maxOccurs="unbounded"/>

  </sequence>
  <elementRef key="paramListminOccurs="0"
   maxOccurs="1"/>

 </sequence>
</content>
Schema Declaration
element valItem
{
   cust_att.global.attributes,
   cust_att.combinable.attributes,
   attribute ident { teidata.text },
   (
      cust_model.glossLike*,
      (
         cust_model.descLike+,
         ( cust_model.glossLike, cust_model.descLike* )*,
         cust_remarks*
      )?,
      cust_paramList?
   )
}

<valList>

<valList> (value list) contains one or more valItem elements defining possible values. [22.5.3. Attribute List Specification]
Moduletagdocs
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.combinable (@mode) (att.deprecated (@validUntil))
typespecifies the extensibility of the list of values specified.
Status Required
Datatype teidata.enumerated
Legal values are:
closed
only the values specified are permitted.
semi
(semi-open) all the values specified should be supported, but other values are legal and software should have appropriate fallback processing for them.
open
the values specified are sample values only. [Default]
Member of
Contained by
May contain
tagdocs: valItem
Example
<valList type="closed">
 <valItem ident="req">
  <gloss>required</gloss>
 </valItem>
 <valItem ident="rec">
  <gloss>recommended</gloss>
 </valItem>
 <valItem ident="opt">
  <gloss>optional</gloss>
 </valItem>
</valList>
Content model
<content>
 <elementRef key="valItemminOccurs="0"
  maxOccurs="unbounded"/>

</content>
Schema Declaration
element valList
{
   cust_att.global.attributes,
   cust_att.combinable.attributes,
   attribute type { "closed" | "semi" | "open" },
   cust_valItem*
}

<xenoData>

<xenoData> (non-TEI metadata) provides a container element into which metadata in non-TEI formats may be placed. [2.5. Non-TEI Metadata]
Moduleheader
AttributesAttributes att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.source (@source)) att.declarable (@default) att.typed (@type, @subtype)
Member of
Contained by
header: teiHeader
May containCharacter data only
Example

This example presumes that the prefix dc has been bound to the namespace http://purl.org/dc/elements/1.1/ and the prefix rdf is bound to the namespace http://www.w3.org/1999/02/22-rdf-syntax-ns#. Note: The about attribute on the <rdf:Description> in this example gives a URI indicating the resource to which the metadata contained therein refer. The <rdf:Description> in the second xenoData block has a blank about, meaning it is pointing at the current document, so the RDF is about the document within which it is contained, i.e. the TEI document containing the xenoData block. Similarly, any kind of relative URI may be used, including fragment identifiers (see [ID SG-id in TEI Guidelines]). Do note, however, that if the contents of the xenoData block are to be extracted and used elsewhere, any relative URIs will have to be resolved accordingly.

<xenoData>
 <rdf:RDF>
  <rdf:Description rdf:about="http://www.worldcat.org/oclc/606621663">
   <dc:title>The description of a new world, called the blazing-world</dc:title>
   <dc:creator>The Duchess of Newcastle</dc:creator>
   <dc:date>1667</dc:date>
   <dc:identifier>British Library, 8407.h.10</dc:identifier>
   <dc:subject>utopian fiction</dc:subject>
  </rdf:Description>
 </rdf:RDF>
</xenoData>
<xenoData>
 <rdf:RDF>
  <rdf:Description rdf:about="">
   <dc:title>The Description of a New World, Called the Blazing-World, 1668</dc:title>
   <dc:creator>Cavendish, Margaret (Lucas), Duchess of Newcastle</dc:creator>
   <dc:publisher>Women Writers Project</dc:publisher>
   <dc:date>2002-02-12</dc:date>
   <dc:subject>utopian fiction</dc:subject>
  </rdf:Description>
 </rdf:RDF>
</xenoData>
Example

In this example, the prefix rdf is bound to the namespace http://www.w3.org/1999/02/22-rdf-syntax-ns#, the prefix dc is bound to the namespace http://purl.org/dc/elements/1.1/, and the prefix cc is bound to the namespace http://web.resource.org/cc/.

<xenoData>
 <rdf:RDF>
  <cc:Work rdf:about="">
   <dc:title>Applied Software Project Management - review</dc:title>
   <dc:type rdf:resource="http://purl.org/dc/dcmitype/Text"/>
   <dc:license rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/uk/"/>
  </cc:Work>
  <cc:License rdf:about="http://creativecommons.org/licenses/by-sa/2.0/uk/">
   <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
   <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
   <cc:requires rdf:resource="http://web.resource.org/cc/Notice"/>
   <cc:requires rdf:resource="http://web.resource.org/cc/Attribution"/>
   <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
   <cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike"/>
  </cc:License>
 </rdf:RDF>
</xenoData>
Example

In this example, the prefix dc is again bound to the namespace http://www.openarchives.org/OAI/2.0/oai_dc/, and the prefix oai_dc is bound to the namespace http://www.openarchives.org/OAI/2.0/oai_dc/.

<xenoData>
 <oai_dc:dc>
  <dc:title>The colonial despatches of Vancouver Island and British
     Columbia 1846-1871: 11566, CO 60/2, p. 291; received 13 November.
     Trevelyan to Merivale (Permanent Under-Secretary)</dc:title>
  <dc:date>1858-11-12</dc:date>
  <dc:creator>Trevelyan</dc:creator>
  <dc:publisher>University of Victoria Humanities Computing and Media
     Centre, and UVic Libraries</dc:publisher>
  <dc:type>InteractiveResource</dc:type>
  <dc:format>application/xhtml+xml</dc:format>
  <dc:type>text</dc:type>
  <dc:identifier>http://bcgenesis.uvic.ca/getDoc.htm?id=B585TE13.scx</dc:identifier>
  <dc:rights>This document is licensed under a Creative Commons …</dc:rights>
  <dc:language>(SCHEME=ISO639) en</dc:language>
  <dc:source>Transcribed from microfilm and/or original documents, and
     marked up in TEI P5 XML. The interactive XHTML resource is generated
     from the XHTML using XQuery and XSLT.</dc:source>
  <dc:source>repository: CO</dc:source>
  <dc:source>coNumber: 60</dc:source>
  <dc:source>coVol: 2</dc:source>
  <dc:source>page: 291</dc:source>
  <dc:source>coRegistration: 11566</dc:source>
  <dc:source>received: received 13 November</dc:source>
  <dc:subject>Trevelyan, Sir Charles Edward</dc:subject>
  <dc:subject>Merivale, Herman</dc:subject>
  <dc:subject>Elliot, T. Frederick</dc:subject>
  <dc:subject>Moody, Colonel Richard Clement</dc:subject>
  <dc:subject>Lytton, Sir Edward George Earle Bulwer</dc:subject>
  <dc:subject>Jadis, Vane</dc:subject>
  <dc:subject>Carnarvon, Earl</dc:subject>
  <dc:subject>British Columbia</dc:subject>
  <dc:description>British Columbia correspondence: Public Offices
     document (normally correspondence between government
     departments)</dc:description>
 </oai_dc:dc>
</xenoData>
Example

In this example, the prefix mods is bound to the namespace http://www.loc.gov/mods/v3.

<xenoData>
 <mods:mods>
  <mods:titleInfo>
   <mods:title>Academic adaptation and cross-cultural
       learning experiences of Chinese students at American
       universities</mods:title>
   <mods:subTitle>a narrative inquiry</mods:subTitle>
  </mods:titleInfo>
  <mods:name type="personal"
   authority="local">

   <mods:namePart/>
   <mods:role>
    <mods:roleTerm authority="marcrelator"
     type="text">
Author</mods:roleTerm>
   </mods:role>
   <mods:affiliation>Northeastern University</mods:affiliation>
   <mods:namePart type="given">Hong</mods:namePart>
   <mods:namePart type="family">Zhang</mods:namePart>
  </mods:name>
  <mods:name type="personal"
   authority="local">

   <mods:namePart/>
   <mods:role>
    <mods:roleTerm authority="local"
     type="text">
Advisor</mods:roleTerm>
   </mods:role>
   <mods:namePart type="given">Liliana</mods:namePart>
   <mods:namePart type="family">Meneses</mods:namePart>
  </mods:name>
  
<!-- ... -->
  <mods:typeOfResource>text</mods:typeOfResource>
  <mods:genre>doctoral theses</mods:genre>
  <mods:originInfo>
   <mods:place>
    <mods:placeTerm type="text">Boston (Mass.)</mods:placeTerm>
   </mods:place>
   <mods:publisher>Northeastern University</mods:publisher>
   <mods:copyrightDate encoding="w3cdtf"
    keyDate="yes">
2013</mods:copyrightDate>
  </mods:originInfo>
  <mods:language>
   <mods:languageTerm authority="iso639-2b"
    type="code">
eng</mods:languageTerm>
  </mods:language>
  <mods:physicalDescription>
   <mods:form authority="marcform">electronic</mods:form>
   <mods:digitalOrigin>born digital</mods:digitalOrigin>
  </mods:physicalDescription>
<!-- ... -->
 </mods:mods>
</xenoData>
Content model
<content>
 <alternate>
  <textNode/>
  <anyElement/>
 </alternate>
</content>
Schema Declaration
element xenoData
{
   cust_att.global.attributes,
   cust_att.declarable.attributes,
   cust_att.typed.attributes,
   ( text | anyElement-xenoData )
}

Schema tei_customization: Model classes

model.addressLike

model.addressLike groups elements used to represent a postal or email address. [1. The TEI Infrastructure]
Moduletei
Used by
Membersaddress email

model.addrPart

model.addrPart groups elements such as names or postal codes which may appear as part of a postal address. [3.5.2. Addresses]
Moduletei
Used by
Membersmodel.nameLike [model.nameLike.agent [name orgName persName] model.offsetLike model.persNamePart model.placeStateLike [model.placeNamePart [placeName] ] idno rs] addrLine postBox postCode street

model.availabilityPart

model.availabilityPart groups elements such as licences and paragraphs of text which may appear as part of an availability statement [2.2.4. Publication, Distribution, Licensing, etc.]
Moduletei
Used by
Memberslicence

model.biblLike

model.biblLike groups elements containing a bibliographic description. [3.11. Bibliographic Citations and References]
Moduletei
Used by
Membersbibl biblFull

model.biblPart

model.biblPart groups elements which represent components of a bibliographic description. [3.11. Bibliographic Citations and References]
Moduletei
Used by
Membersmodel.imprintPart [biblScope distributor pubPlace publisher] model.respLike [author editor funder meeting principal respStmt sponsor] availability bibl citedRange edition extent relatedItem textLang

model.choicePart

model.choicePart groups elements (other than choice itself) which can be used within a choice alternation. [3.4. Simple Editorial Changes]
Moduletei
Used by
Membersabbr expan

model.common

model.common groups common chunk- and inter-level elements. [1.3. The TEI Class System]
Moduletei
Used by
Membersmodel.divPart [model.lLike model.pLike [p] schemaSpec] model.inter [model.biblLike [bibl biblFull] model.egLike [eg egXML] model.labelLike [desc label] model.listLike [list table] model.oddDecl [classSpec constraintSpec dataSpec elementSpec listRef macroSpec moduleSpec outputRendition specGrp specGrpRef] model.qLike [model.quoteLike [cit quote] q said] model.stageLike]
Note

This class defines the set of chunk- and inter-level elements; it is used in many content models, including those for textual divisions.

model.contentPart

model.contentPart groups elements which may appear as part of the content element. [22.5.1. Defining Content Models]
Moduletagdocs
Used by
Membersalternate anyElement classRef dataRef elementRef empty macroRef sequence textNode valList

model.correspActionPart

model.correspActionPart groups elements which define the parts (usually names, dates and places) of one action related to the correspondence.
Moduletei
Used by
Membersmodel.addressLike [address email] model.dateLike [date time] model.nameLike [model.nameLike.agent [name orgName persName] model.offsetLike model.persNamePart model.placeStateLike [model.placeNamePart [placeName] ] idno rs] note

model.correspContextPart

model.correspContextPart groups elements which may appear as part of the correspContext element
Moduletei
Used by
Membersmodel.pLike [p] model.ptrLike [ptr ref] note

model.correspDescPart

model.correspDescPart groups together metadata elements for describing correspondence
Moduletei
Used by
MemberscorrespAction correspContext note

model.dateLike

model.dateLike groups elements containing temporal expressions. [3.5.4. Dates and Times 13.3.6. Dates and Times]
Moduletei
Used by
Membersdate time

model.descLike

model.descLike groups elements which contain a description of their function.
Moduletei
Used by
Membersdesc

model.divBottom

model.divBottom groups elements appearing at the end of a text division. [4.2. Elements Common to All Divisions]
Moduletei
Used by
Membersmodel.divBottomPart model.divWrapper [meeting]

model.divGenLike

model.divGenLike groups elements used to represent a structural division which is generated rather than explicitly present in the source.
Moduletei
Used by
MembersdivGen

model.divLike

model.divLike groups elements used to represent un-numbered generic structural divisions.
Moduletei
Used by
Membersdiv

model.divPart

model.divPart groups paragraph-level elements appearing directly within divisions. [1.3. The TEI Class System]
Moduletei
Used by
Membersmodel.lLike model.pLike [p] schemaSpec
Note

Note that this element class does not include members of the model.inter class, which can appear either within or between paragraph-level items.

model.divTop

model.divTop groups elements appearing at the beginning of a text division. [4.2. Elements Common to All Divisions]
Moduletei
Used by
Membersmodel.divTopPart [model.headLike [head] ] model.divWrapper [meeting]

model.divTopPart

model.divTopPart groups elements which can occur only at the beginning of a text division. [4.6. Title Pages]
Moduletei
Used by
Membersmodel.headLike [head]

model.divWrapper

model.divWrapper groups elements which can appear at either top or bottom of a textual division. [4.2. Elements Common to All Divisions]
Moduletei
Used by
Membersmeeting

model.egLike

model.egLike groups elements containing examples or illustrations. [22.1.1. Phrase Level Terms]
Moduletei
Used by
Memberseg egXML

model.emphLike

model.emphLike groups phrase-level elements which are typographically distinct and to which a specific function can be attributed. [3.3. Highlighting and Quotation]
Moduletei
Used by
Memberscode emph foreign gloss ident mentioned soCalled term title

model.encodingDescPart

model.encodingDescPart groups elements which may be used inside encodingDesc and appear multiple times.
Moduletei
Used by
MemberslistPrefixDef projectDesc schemaRef schemaSpec styleDefDecl

model.frontPart

model.frontPart groups elements which appear at the level of divisions within front or back matter. [7.1. Front and Back Matter ]
Moduletei
Used by
Membersmodel.frontPart.drama divGen

model.global

model.global groups elements which may appear at any point within a TEI text. [1.3. The TEI Class System]
Moduletei
Used by
Membersmodel.global.edit model.global.meta model.milestoneLike model.noteLike [note] figure

model.glossLike

model.glossLike groups elements which provide an alternative name, explanation, or description for any markup construct.
Moduletei
Used by
MembersaltIdent equiv gloss

model.graphicLike

model.graphicLike groups elements containing images, formulae, and similar objects. [3.9. Graphics and Other Non-textual Components]
Moduletei
Used by
Membersformula graphic media

model.headLike

model.headLike groups elements used to provide a title or heading at the start of a text division.
Moduletei
Used by
Membershead

model.highlighted

model.highlighted groups phrase-level elements which are typographically distinct. [3.3. Highlighting and Quotation]
Moduletei
Used by
Membersmodel.emphLike [code emph foreign gloss ident mentioned soCalled term title] model.hiLike [hi]

model.hiLike

model.hiLike groups phrase-level elements which are typographically distinct but to which no specific function can be attributed. [3.3. Highlighting and Quotation]
Moduletei
Used by
Membershi

model.imprintPart

model.imprintPart groups the bibliographic elements which occur inside imprints. [3.11. Bibliographic Citations and References]
Moduletei
Used by
MembersbiblScope distributor pubPlace publisher

model.inter

model.inter groups elements which can appear either within or between paragraph-like elements. [1.3. The TEI Class System]
Moduletei
Used by
Membersmodel.biblLike [bibl biblFull] model.egLike [eg egXML] model.labelLike [desc label] model.listLike [list table] model.oddDecl [classSpec constraintSpec dataSpec elementSpec listRef macroSpec moduleSpec outputRendition specGrp specGrpRef] model.qLike [model.quoteLike [cit quote] q said] model.stageLike

model.labelLike

model.labelLike groups elements used to gloss or explain other parts of a document.
Moduletei
Used by
Membersdesc label

model.limitedPhrase

model.limitedPhrase groups phrase-level elements excluding those elements primarily intended for transcription of existing sources. [1.3. The TEI Class System]
Moduletei
Used by
Membersmodel.emphLike [code emph foreign gloss ident mentioned soCalled term title] model.hiLike [hi] model.pPart.data [model.addressLike [address email] model.dateLike [date time] model.measureLike [num] model.nameLike [model.nameLike.agent [name orgName persName] model.offsetLike model.persNamePart model.placeStateLike [model.placeNamePart [placeName] ] idno rs] ] model.pPart.editorial [abbr choice expan] model.pPart.msdesc model.phrase.xml [att gi tag val] model.ptrLike [ptr ref]

model.listLike

model.listLike groups list-like elements. [3.7. Lists]
Moduletei
Used by
Memberslist table

model.measureLike

model.measureLike groups elements which denote a number, a quantity, a measurement, or similar piece of text that conveys some numerical meaning. [3.5.3. Numbers and Measures]
Moduletei
Used by
Membersnum

model.nameLike

model.nameLike groups elements which name or refer to a person, place, or organization.
Moduletei
Used by
Membersmodel.nameLike.agent [name orgName persName] model.offsetLike model.persNamePart model.placeStateLike [model.placeNamePart [placeName] ] idno rs
Note

A superset of the naming elements that may appear in datelines, addresses, statements of responsibility, etc.

model.nameLike.agent

model.nameLike.agent groups elements which contain names of individuals or corporate bodies. [3.5. Names, Numbers, Dates, Abbreviations, and Addresses]
Moduletei
Used by
Membersname orgName persName
Note

This class is used in the content model of elements which reference names of people or organizations.

model.noteLike

model.noteLike groups globally-available note-like elements. [3.8. Notes, Annotation, and Indexing]
Moduletei
Used by
Membersnote

model.oddDecl

model.oddDecl groups elements which generate declarations in some markup language in ODD documents.
Moduletei
Used by
MembersclassSpec constraintSpec dataSpec elementSpec listRef macroSpec moduleSpec outputRendition specGrp specGrpRef

model.oddRef

model.oddRef groups elements which reference declarations in some markup language in ODD documents.
Moduletei
Used by
MembersclassRef dataRef elementRef macroRef moduleRef

model.phrase

model.phrase groups elements which can occur at the level of individual words or phrases. [1.3. The TEI Class System]
Moduletei
Used by
Membersmodel.graphicLike [formula graphic media] model.highlighted [model.emphLike [code emph foreign gloss ident mentioned soCalled term title] model.hiLike [hi] ] model.lPart model.pPart.data [model.addressLike [address email] model.dateLike [date time] model.measureLike [num] model.nameLike [model.nameLike.agent [name orgName persName] model.offsetLike model.persNamePart model.placeStateLike [model.placeNamePart [placeName] ] idno rs] ] model.pPart.edit [model.pPart.editorial [abbr choice expan] model.pPart.transcriptional] model.pPart.msdesc model.phrase.xml [att gi tag val] model.ptrLike [ptr ref] model.segLike model.specDescLike [specDesc specList]
Note

This class of elements can occur within paragraphs, list items, lines of verse, etc.

model.phrase.xml

model.phrase.xml groups phrase-level elements used to encode XML constructs such as element names, attribute names, and attribute values [22. Documentation Elements]
Moduletei
Used by
Membersatt gi tag val

model.placeNamePart

model.placeNamePart groups elements which form part of a place name. [13.2.3. Place Names]
Moduletei
Used by
MembersplaceName

model.placeStateLike

model.placeStateLike groups elements which describe changing states of a place.
Moduletei
Used by
Membersmodel.placeNamePart [placeName]

model.pLike

model.pLike groups paragraph-like elements.
Moduletei
Used by
Membersp

model.pLike.front

model.pLike.front groups paragraph-like elements which can occur as direct constituents of front matter. [4.6. Title Pages]
Moduletei
Used by
Membershead

model.pPart.data

model.pPart.data groups phrase-level elements containing names, dates, numbers, measures, and similar data. [3.5. Names, Numbers, Dates, Abbreviations, and Addresses]
Moduletei
Used by
Membersmodel.addressLike [address email] model.dateLike [date time] model.measureLike [num] model.nameLike [model.nameLike.agent [name orgName persName] model.offsetLike model.persNamePart model.placeStateLike [model.placeNamePart [placeName] ] idno rs]

model.pPart.edit

model.pPart.edit groups phrase-level elements for simple editorial correction and transcription. [3.4. Simple Editorial Changes]
Moduletei
Used by
Membersmodel.pPart.editorial [abbr choice expan] model.pPart.transcriptional

model.pPart.editorial

model.pPart.editorial groups phrase-level elements for simple editorial interventions that may be useful both in transcribing and in authoring. [3.4. Simple Editorial Changes]
Moduletei
Used by
Membersabbr choice expan

model.ptrLike

model.ptrLike groups elements used for purposes of location and reference. [3.6. Simple Links and Cross-References]
Moduletei
Used by
Membersptr ref

model.publicationStmtPart.agency

model.publicationStmtPart.agency groups the child elements of a publicationStmt element of the TEI header that indicate an authorising agent. [2.2.4. Publication, Distribution, Licensing, etc.]
Moduletei
Used by
Membersauthority distributor publisher
Note

The ‘agency’ child elements, while not required, are required if one of the ‘detail’ child elements is to be used. It is not valid to have a ‘detail’ child element without a preceding ‘agency’ child element.

See also model.publicationStmtPart.detail.

model.publicationStmtPart.detail

model.publicationStmtPart.detail groups the agency-specific child elements of the publicationStmt element of the TEI header. [2.2.4. Publication, Distribution, Licensing, etc.]
Moduletei
Used by
Membersmodel.ptrLike [ptr ref] address availability date idno pubPlace
Note

A ‘detail’ child element may not occur unless an ‘agency’ child element precedes it.

See also model.publicationStmtPart.agency.

model.qLike

model.qLike groups elements related to highlighting which can appear either within or between chunk-level elements. [3.3. Highlighting and Quotation]
Moduletei
Used by
Membersmodel.quoteLike [cit quote] q said

model.quoteLike

model.quoteLike groups elements used to directly contain quotations.
Moduletei
Used by
Memberscit quote

model.resourceLike

model.resourceLike groups separate elements which constitute the content of a digital resource, as opposed to its metadata. [1.3. The TEI Class System]
Moduletei
Used by
Memberstext

model.respLike

model.respLike groups elements which are used to indicate intellectual or other significant responsibility, for example within a bibliographic element.
Moduletei
Used by
Membersauthor editor funder meeting principal respStmt sponsor

model.specDescLike

model.specDescLike groups elements for referring to specification elements. [22. Documentation Elements]
Moduletei
Used by
MembersspecDesc specList

model.teiHeaderPart

model.teiHeaderPart groups high level elements which may appear more than once in a TEI header.
Moduletei
Used by
MembersencodingDesc xenoData

Schema tei_customization: Attribute classes

att.ascribed

att.ascribed provides attributes for elements representing speech or action that can be ascribed to a specific individual. [3.3.3. Quotation 8.3. Elements Unique to Spoken Texts]
Moduletei
Memberschange q said
AttributesAttributes
whoindicates the person, or group of people, to whom the element content is ascribed.
Status Optional
Datatype 1–∞ occurrences of teidata.pointer separated by whitespace

In the following example from Hamlet, speeches (<sp>) in the body of the play are linked to <castItem> elements in the <castList> using the who attribute.

<castItem type="role">
 <role xml:id="Barnardo">Bernardo</role>
</castItem>
<castItem type="role">
 <role xml:id="Francisco">Francisco</role>
 <roleDesc>a soldier</roleDesc>
</castItem>
<!-- ... -->
<sp who="#Barnardo">
 <speaker>Bernardo</speaker>
 <l n="1">Who's there?</l>
</sp>
<sp who="#Francisco">
 <speaker>Francisco</speaker>
 <l n="2">Nay, answer me: stand, and unfold yourself.</l>
</sp>
Note

For transcribed speech, this will typically identify a participant or participant group; in other contexts, it will point to any identified <person> element.

att.canonical

att.canonical provides attributes which can be used to associate a representation such as a name or title with canonical information about the object being named or referenced. [13.1.1. Linking Names and Their Referents]
Moduletei
Membersatt.naming [att.personal [name orgName persName placeName] author editor pubPlace rs] correspDesc funder meeting principal resp respStmt sponsor term title
AttributesAttributes
keyprovides an externally-defined means of identifying the entity (or entities) being named, using a coded value of some kind.
Status Optional
Datatype teidata.text
<author>
 <name key="name 427308"
  type="organisation">
[New Zealand Parliament, Legislative Council]</name>
</author>
<author>
 <name key="Hugo, Victor (1802-1885)"
  ref="http://www.idref.fr/026927608">
Victor Hugo</name>
</author>
Note

The value may be a unique identifier from a database, or any other externally-defined string identifying the referent.

No particular syntax is proposed for the values of the key attribute, since its form will depend entirely on practice within a given project. For the same reason, this attribute is not recommended in data interchange, since there is no way of ensuring that the values used by one project are distinct from those used by another. In such a situation, a preferable approach for magic tokens which follows standard practice on the Web is to use a ref attribute whose value is a tag URI as defined in RFC 4151.

ref(reference) provides an explicit means of locating a full definition or identity for the entity being named by means of one or more URIs.
Status Optional
Datatype 1–∞ occurrences of teidata.pointer separated by whitespace
<name ref="http://viaf.org/viaf/109557338"
 type="person">
Seamus Heaney</name>
Note

The value must point directly to one or more XML elements or other resources by means of one or more URIs, separated by whitespace. If more than one is supplied the implication is that the name identifies several distinct entities.

att.citing

att.citing provides attributes for specifying the specific part of a bibliographic item being cited. [1.3.1. Attribute Classes]
Moduletei
MembersbiblScope citedRange
AttributesAttributes
unitidentifies the unit of information conveyed by the element, e.g. columns, pages, volume, entry.
Status Optional
Datatype teidata.enumerated
Suggested values include:
volume
the element contains a volume number.
issue
the element contains an issue number, or volume and issue numbers.
page
the element contains a page number or page range.
line
the element contains a line number or line range.
chapter
the element contains a chapter indication (number and/or title)
part
the element identifies a part of a book or collection.
column
the element identifies a column.
entry
the element identifies an entry number or label in a list of entries.
fromspecifies the starting point of the range of units indicated by the unit attribute.
Status Optional
Datatype teidata.word
tospecifies the end-point of the range of units indicated by the unit attribute.
Status Optional
Datatype teidata.word

att.combinable

att.combinable provides attributes indicating how multiple references to the same object in a schema should be combined
Moduletagdocs
Membersatt.identified [attDef constraintSpec dataSpec macroSpec moduleSpec paramSpec schemaSpec] valDesc valItem valList
AttributesAttributes att.deprecated (@validUntil)
modespecifies the effect of this declaration on its parent object.
Status Optional
Datatype teidata.enumerated
Legal values are:
add
this declaration is added to the current definitions [Default]
delete
if present already, the whole of the declaration for this object is removed from the current setup
change
this declaration changes the declaration of the same name in the current definition
replace
this declaration replaces the declaration of the same name in the current definition
Note

An ODD processor should handle the values for mode as follows:

add
the object should be created (processing any children in add mode); raise an error if an object with the same identifier already exists
replace
use this object in preference to any existing object with the same identifier, and ignore any children of that object; process any new children in replace mode
delete
do not process this object or any existing object with the same identifier; raise an error if any new children supplied
change
process this object, and process its children, and those of any existing object with the same identifier, in change mode

att.cReferencing

att.cReferencing provides an attribute which may be used to supply a canonical reference as a means of identifying the target of a pointer.
Moduletei
Membersgloss ptr ref term
AttributesAttributes
cRef(canonical reference) specifies the destination of the pointer by supplying a canonical reference expressed using the scheme defined in a <refsDecl> element in the TEI header
Status Optional
Datatype teidata.text
Note

The value of cRef should be constructed so that when the algorithm for the resolution of canonical references (described in section 16.2.5. Canonical References) is applied to it the result is a valid URI reference to the intended target

The <refsDecl> to use may be indicated with the decls attribute.

Currently these Guidelines only provide for a single canonical reference to be encoded on any given ptr element.

att.datable

att.datable provides attributes for normalization of elements that contain dates, times, or datable events. [3.5.4. Dates and Times 13.3.6. Dates and Times]
Moduletei
Memberschange date idno licence name orgName persName placeName resp time title
AttributesAttributes att.datable.w3c (@when, @notBefore, @notAfter, @from, @to) att.datable.iso (@when-iso, @notBefore-iso, @notAfter-iso, @from-iso, @to-iso) att.datable.custom (@when-custom, @notBefore-custom, @notAfter-custom, @from-custom, @to-custom, @datingPoint, @datingMethod)
calendarindicates the system or calendar to which the date represented by the content of this element belongs.
Status Optional
Datatype teidata.pointer
Schematron

<sch:rule context="tei:*[@calendar]">
<sch:assert test="string-length(.) gt 0">@calendar indicates the system or calendar to which the date represented by the content of this element
belongs, but this <sch:name/> element has no textual content.</sch:assert>
</sch:rule>
He was born on <date calendar="#gregorian">Feb. 22, 1732</date>
(<date calendar="#julianwhen="1732-02-22"> Feb. 11, 1731/32, O.S.</date>).
Note

Note that the calendar attribute (unlike datingMethod defined in att.datable.custom) defines the calendar system of the date in the original material defined by the parent element, not the calendar to which the date is normalized.

periodsupplies a pointer to some location defining a named period of time within which the datable item is understood to have occurred.
Status Optional
Datatype teidata.pointer
Note

This ‘superclass’ provides attributes that can be used to provide normalized values of temporal information. By default, the attributes from the att.datable.w3c class are provided. If the module for names & dates is loaded, this class also provides attributes from the att.datable.iso and att.datable.custom classes. In general, the possible values of attributes restricted to the W3C datatypes form a subset of those values available via the ISO 8601 standard. However, the greater expressiveness of the ISO datatypes may not be needed, and there exists much greater software support for the W3C datatypes.

att.datable.custom

att.datable.custom provides attributes for normalization of elements that contain datable events to a custom dating system (i.e. other than the Gregorian used by W3 and ISO). [13.3.6. Dates and Times]
Modulenamesdates
Membersatt.datable [change date idno licence name orgName persName placeName resp time title]
AttributesAttributes
when-customsupplies the value of a date or time in some custom standard form.
Status Optional
Datatype 1–∞ occurrences of teidata.word separated by whitespace

The following are examples of custom date or time formats that are not valid ISO or W3C format normalizations, normalized to a different dating system

<p>Alhazen died in Cairo on the
<date when="1040-03-06"
  when-custom="431-06-12">
12th day of Jumada t-Tania, 430 AH
 </date>.</p>
<p>The current world will end at the
<date when="2012-12-21"
  when-custom="13.0.0.0.0">
end of B'ak'tun 13</date>.</p>
<p>The Battle of Meggidu
(<date when-custom="Thutmose_III:23">23rd year of reign of Thutmose III</date>).</p>
<p>Esidorus bixit in pace annos LXX plus minus sub
<date when-custom="Ind:4-10-11">die XI mensis Octobris indictione IIII</date>
</p>

Not all custom date formulations will have Gregorian equivalents.

The when-custom attribute and other custom dating are not constrained to a datatype by the TEI, but individual projects are recommended to regularize and document their dating formats.

notBefore-customspecifies the earliest possible date for the event in some custom standard form.
Status Optional
Datatype 1–∞ occurrences of teidata.word separated by whitespace
notAfter-customspecifies the latest possible date for the event in some custom standard form.
Status Optional
Datatype 1–∞ occurrences of teidata.word separated by whitespace
from-customindicates the starting point of the period in some custom standard form.
Status Optional
Datatype 1–∞ occurrences of teidata.word separated by whitespace
<event xml:id="FIRE1"
 datingMethod="#julianfrom-custom="1666-09-02"
 to-custom="1666-09-05">

 <head>The Great Fire of London</head>
 <p>The Great Fire of London burned through a large part
   of the city of London.</p>
</event>
to-customindicates the ending point of the period in some custom standard form.
Status Optional
Datatype 1–∞ occurrences of teidata.word separated by whitespace
datingPointsupplies a pointer to some location defining a named point in time with reference to which the datable item is understood to have occurred
Status Optional
Datatype teidata.pointer
datingMethodsupplies a pointer to a calendar element or other means of interpreting the values of the custom dating attributes.
Status Optional
Datatype teidata.pointer
Contayning the Originall, Antiquity, Increaſe, Moderne
eſtate, and deſcription of that Citie, written in the yeare
<date when-custom="1598calendar="#julian"
 datingMethod="#julian">
1598</date>. by Iohn Stow
Citizen of London.

In this example, the calendar attribute points to a calendar element for the Julian calendar, specifying that the text content of the date element is a Julian date, and the datingMethod attribute also points to the Julian calendar to indicate that the content of the when-custom attribute value is Julian too.

<date when="1382-06-28"
 when-custom="6890-06-20datingMethod="#creationOfWorld">
μηνὶ Ἰουνίου εἰς <num>κ</num> ἔτους <num>ςωϞ</num>
</date>

In this example, a date is given in a Mediaeval text measured "from the creation of the world", which is normalised (in when) to the Gregorian date, but is also normalized (in when-custom) to a machine-actionable, numeric version of the date from the Creation.

Note

Note that the datingMethod attribute (unlike calendar defined in att.datable) defines the calendar or dating system to which the date described by the parent element is normalized (i.e. in the when-custom or other X-custom attributes), not the calendar of the original date in the element.

att.datable.iso

att.datable.iso provides attributes for normalization of elements that contain datable events using the ISO 8601 standard. [3.5.4. Dates and Times 13.3.6. Dates and Times]
Modulenamesdates
Membersatt.datable [change date idno licence name orgName persName placeName resp time title]
AttributesAttributes
when-isosupplies the value of a date or time in a standard form.
Status Optional
Datatype teidata.temporal.iso

The following are examples of ISO date, time, and date & time formats that are not valid W3C format normalizations.

<date when-iso="1996-09-24T07:25+00">Sept. 24th, 1996 at 3:25 in the morning</date>
<date when-iso="1996-09-24T03:25-04">Sept. 24th, 1996 at 3:25 in the morning</date>
<time when-iso="1999-01-04T20:42-05">4 Jan 1999 at 8:42 pm</time>
<time when-iso="1999-W01-1T20,70-05">4 Jan 1999 at 8:42 pm</time>
<date when-iso="2006-05-18T10:03">a few minutes after ten in the morning on Thu 18 May</date>
<time when-iso="03:00">3 A.M.</time>
<time when-iso="14">around two</time>
<time when-iso="15,5">half past three</time>

All of the examples of the when attribute in the att.datable.w3c class are also valid with respect to this attribute.

He likes to be punctual. I said <q>
 <time when-iso="12">around noon</time>
</q>, and he showed up at <time when-iso="12:00:00">12 O'clock</time> on the dot.

The second occurence of time could have been encoded with the when attribute, as 12:00:00 is a valid time with respect to the W3C XML Schema Part 2: Datatypes Second Edition specification. The first occurence could not.

notBefore-isospecifies the earliest possible date for the event in standard form, e.g. yyyy-mm-dd.
Status Optional
Datatype teidata.temporal.iso
notAfter-isospecifies the latest possible date for the event in standard form, e.g. yyyy-mm-dd.
Status Optional
Datatype teidata.temporal.iso
from-isoindicates the starting point of the period in standard form.
Status Optional
Datatype teidata.temporal.iso
to-isoindicates the ending point of the period in standard form.
Status Optional
Datatype teidata.temporal.iso
Note

The value of these attributes should be a normalized representation of the date, time, or combined date & time intended, in any of the standard formats specified by ISO 8601, using the Gregorian calendar.

Note
If both when-iso and dur-iso are specified, the values should be interpreted as indicating a span of time by its starting time (or date) and duration. That is,
<date when-iso="2007-06-01dur-iso="P8D"/>
indicates the same time period as
<date when-iso="2007-06-01/P8D"/>

In providing a ‘regularized’ form, no claim is made that the form in the source text is incorrect; the regularized form is simply that chosen as the main form for purposes of unifying variant forms under a single heading.

att.datable.w3c

att.datable.w3c provides attributes for normalization of elements that contain datable events conforming to the W3C XML Schema Part 2: Datatypes Second Edition. [3.5.4. Dates and Times 13.3.6. Dates and Times]
Moduletei
Membersatt.datable [change date idno licence name orgName persName placeName resp time title]
AttributesAttributes
whensupplies the value of the date or time in a standard form, e.g. yyyy-mm-dd.
Status Optional
Datatype teidata.temporal.w3c

Examples of W3C date, time, and date & time formats.

<p>
 <date when="1945-10-24">24 Oct 45</date>
 <date when="1996-09-24T07:25:00Z">September 24th, 1996 at 3:25 in the morning</date>
 <time when="1999-01-04T20:42:00-05:00">Jan 4 1999 at 8 pm</time>
 <time when="14:12:38">fourteen twelve and 38 seconds</time>
 <date when="1962-10">October of 1962</date>
 <date when="--06-12">June 12th</date>
 <date when="---01">the first of the month</date>
 <date when="--08">August</date>
 <date when="2006">MMVI</date>
 <date when="0056">AD 56</date>
 <date when="-0056">56 BC</date>
</p>
This list begins in
the year 1632, more precisely on Trinity Sunday, i.e. the Sunday after
Pentecost, in that year the
<date calendar="#julianwhen="1632-06-06">27th of May (old style)</date>.
<opener>
 <dateline>
  <placeName>Dorchester, Village,</placeName>
  <date when="1828-03-02">March 2d. 1828.</date>
 </dateline>
 <salute>To
   Mrs. Cornell,</salute> Sunday <time when="12:00:00">noon.</time>
</opener>
notBeforespecifies the earliest possible date for the event in standard form, e.g. yyyy-mm-dd.
Status Optional
Datatype teidata.temporal.w3c
notAfterspecifies the latest possible date for the event in standard form, e.g. yyyy-mm-dd.
Status Optional
Datatype teidata.temporal.w3c
fromindicates the starting point of the period in standard form, e.g. yyyy-mm-dd.
Status Optional
Datatype teidata.temporal.w3c
toindicates the ending point of the period in standard form, e.g. yyyy-mm-dd.
Status Optional
Datatype teidata.temporal.w3c
Schematron

<sch:rule context="tei:*[@when]">
<sch:report test="@notBefore|@notAfter|@from|@to"
 role="nonfatal">
The @when attribute cannot be used with any other att.datable.w3c attributes.</sch:report>
</sch:rule>
Schematron

<sch:rule context="tei:*[@from]">
<sch:report test="@notBefore"
 role="nonfatal">
The @from and @notBefore attributes cannot be used together.</sch:report>
</sch:rule>
Schematron

<sch:rule context="tei:*[@to]">
<sch:report test="@notAfter"
 role="nonfatal">
The @to and @notAfter attributes cannot be used together.</sch:report>
</sch:rule>
Example
<date from="1863-05-28to="1863-06-01">28 May through 1 June 1863</date>
Note

The value of these attributes should be a normalized representation of the date, time, or combined date & time intended, in any of the standard formats specified by XML Schema Part 2: Datatypes Second Edition, using the Gregorian calendar.

The most commonly-encountered format for the date portion of a temporal attribute is yyyy-mm-dd, but yyyy, --mm, ---dd, yyyy-mm, or --mm-dd may also be used. For the time part, the form hh:mm:ss is used.

Note that this format does not currently permit use of the value 0000 to represent the year 1 BCE; instead the value -0001 should be used.

att.declarable

att.declarable provides attributes for those elements in the TEI header which may be independently selected by means of the special purpose decls attribute. [15.3. Associating Contextual Information with a Text]
Moduletei
Membersavailability bibl biblFull correspDesc projectDesc punctuation sourceDesc styleDefDecl xenoData
AttributesAttributes
defaultindicates whether or not this element is selected by default when its parent is selected.
Status Optional
Datatype teidata.truthValue
Legal values are:
true
This element is selected if its parent is selected
false
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. [Default]
Note

The rules governing the association of declarable elements with individual parts of a TEI text are fully defined in chapter 15.3. Associating Contextual Information with a Text. Only one element of a particular type may have a default attribute with a value of true.

att.declaring

att.declaring provides attributes for elements which may be independently associated with a particular declarable element within the header, thus overriding the inherited default for that element. [15.3. Associating Contextual Information with a Text]
Moduletei
Membersback body div front gloss graphic media p ptr ref term text
AttributesAttributes
declsidentifies one or more declarable elements within the header, which are understood to apply to the element bearing this attribute and its content.
Status Optional
Datatype 1–∞ occurrences of teidata.pointer separated by whitespace
Note

The rules governing the association of declarable elements with individual parts of a TEI text are fully defined in chapter 15.3. Associating Contextual Information with a Text.

att.deprecated

att.deprecated provides attributes indicating how a deprecated feature will be treated in future releases.
Moduletagdocs
Membersatt.combinable [att.identified [attDef constraintSpec dataSpec macroSpec moduleSpec paramSpec schemaSpec] valDesc valItem valList] defaultVal
AttributesAttributes
validUntilprovides a date before which the construct being defined will not be removed.
Status Optional
Datatype date
Schematron

<sch:rule context="tei:*[@validUntil]">
<sch:assert test="@validUntil cast as xs:date ge current-date()">
 <sch:value-of select="if (@ident) then concat('The ',@ident) else concat('This ',local-name(.),' of ',ancestor::tei:*[@ident][1]/@ident)"/>
construct is outdated (as of <sch:value-of select="@validUntil"/>); ODD processors may ignore it, and its use is no longer supported</sch:assert>
<sch:assert role="nonfatal"
 test="@validUntil cast as xs:date ge (current-date() + (60*xs:dayTimeDuration('P1D')))">

 <sch:value-of select="if (@ident) then concat('The ',@ident) else concat('This ',local-name(.),' of ',ancestor::tei:*[@ident][1]/@ident)"/> construct becomes outdated on <sch:value-of select="@validUntil"/>
</sch:assert>
</sch:rule>
Note

The value of this attribute should represent a date (in standard yyyy-mm-dd format) which is later than the date on which the attribute is added to an ODD. Technically, this attribute asserts only the intent to leave a construct in future releases of the markup language being defined up to at least the specified date, and makes no assertion about what happens past that date. In practice, the expectation is that the construct will be removed from future releases of the markup language being defined sometime shortly after the validUntil date.

An ODD processor will typically not process a specification element which has a validUntil date that is in the past. An ODD processor will typically warn users about constructs which have a validUntil date that is in the future. E.g., the documentation for such a construct might include the phrase warning: deprecated in red.

att.dimensions

att.dimensions provides attributes for describing the size of physical objects.
Moduletei
Membersdate time
AttributesAttributes att.ranging (@atLeast, @atMost, @min, @max, @confidence)
unitnames the unit used for the measurement
Status Optional
Datatype teidata.enumerated
Suggested values include:
cm
(centimetres)
mm
(millimetres)
in
(inches)
lines
lines of text
chars
(characters) characters of text
quantityspecifies the length in the units specified
Status Optional
Datatype teidata.numeric
extentindicates the size of the object concerned using a project-specific vocabulary combining quantity and units in a single string of words.
Status Optional
Datatype teidata.text
<gap extent="5 words"/>
<height extent="half the page"/>
precisioncharacterizes the precision of the values specified by the other attributes.
Status Optional
Datatype teidata.certainty
scopewhere the measurement summarizes more than one observation, specifies the applicability of this measurement.
Status Optional
Datatype teidata.enumerated
Sample values include:
all
measurement applies to all instances.
most
measurement applies to most of the instances inspected.
range
measurement applies to only the specified range of instances.

att.divLike

att.divLike provides attributes common to all elements which behave in the same way as divisions. [4. Default Text Structure]
Moduletei
Membersdiv
AttributesAttributes att.fragmentable (@part)
org(organization) specifies how the content of the division is organized.
Status Optional
Datatype teidata.enumerated
Legal values are:
composite
no claim is made about the sequence in which the immediate contents of this division are to be processed, or their inter-relationships.
uniform
the immediate contents of this element are regarded as forming a logical unit, to be processed in sequence. [Default]
sampleindicates whether this division is a sample of the original source and if so, from which part.
Status Optional
Datatype teidata.enumerated
Legal values are:
initial
division lacks material present at end in source.
medial
division lacks material at start and end.
final
division lacks material at start.
unknown
position of sampled material within original unknown.
complete
division is not a sample. [Default]

att.docStatus

att.docStatus provides attributes for use on metadata elements describing the status of a document.
Moduletei
Membersbibl biblFull change revisionDesc schemaSpec
AttributesAttributes
statusdescribes the status of a document either currently or, when associated with a dated element, at the time indicated.
Status Optional
Datatype teidata.enumerated
Sample values include:
approved
candidate
cleared
deprecated
draft
[Default]
embargoed
expired
frozen
galley
proposed
published
recommendation
submitted
unfinished
withdrawn
Example
<revisionDesc status="published">
 <change when="2010-10-21"
  status="published"/>

 <change when="2010-10-02status="cleared"/>
 <change when="2010-08-02"
  status="embargoed"/>

 <change when="2010-05-01status="frozen"
  who="#MSM"/>

 <change when="2010-03-01status="draft"
  who="#LB"/>

</revisionDesc>

att.editLike

att.editLike provides attributes describing the nature of an encoded scholarly intervention or interpretation of any kind. [3.4. Simple Editorial Changes 10.3.1. Origination 13.3.2. The Person Element 11.3.1.1. Core Elements for Transcriptional Work]
Moduletei
Membersdate expan name orgName persName placeName time
AttributesAttributes
evidenceindicates the nature of the evidence supporting the reliability or accuracy of the intervention or interpretation.
Status Optional
Datatype 1–∞ occurrences of teidata.enumerated separated by whitespace
Suggested values include:
internal
there is internal evidence to support the intervention.
external
there is external evidence to support the intervention.
conjecture
the intervention or interpretation has been made by the editor, cataloguer, or scholar on the basis of their expertise.
instantindicates whether this is an instant revision or not.
Status Optional
Datatype teidata.xTruthValue
Default false
Note

The members of this attribute class are typically used to represent any kind of editorial intervention in a text, for example a correction or interpretation, or to date or localize manuscripts etc.

Note

Each pointer on the source (if present) corresponding to a witness or witness group should reference a bibliographic citation such as a <witness>, <msDesc>, or bibl element, or another external bibliographic citation, documenting the source concerned.

att.fragmentable

att.fragmentable provides an attribute for representing fragmentation of a structural element, typically as a consequence of some overlapping hierarchy.
Moduletei
Membersatt.divLike [div] p
AttributesAttributes
partspecifies whether or not its parent element is fragmented in some way, typically by some other overlapping structure: for example a speech which is divided between two or more verse stanzas, a paragraph which is split across a page division, a verse line which is divided between two speakers.
Status Optional
Datatype teidata.enumerated
Legal values are:
Y
(yes) the element is fragmented in some (unspecified) respect
N
(no) the element is not fragmented, or no claim is made as to its completeness [Default]
I
(initial) this is the initial part of a fragmented element
M
(medial) this is a medial part of a fragmented element
F
(final) this is the final part of a fragmented element
Note

The values I, M, or F should be used only where it is clear how the element may be be reconstituted.

att.global

att.global provides attributes common to all elements in the TEI encoding scheme. [1.3.1.1. Global Attributes]
Moduletei
MembersTEI abbr abstract addrLine address altIdent alternate anyElement att attDef attList attRef author authority availability back bibl biblFull biblScope body calendar calendarDesc cell change choice cit citedRange classRef classSpec classes code constraint constraintSpec content correspAction correspContext correspDesc dataFacet dataRef dataSpec datatype date defaultVal desc distributor div divGen edition editionStmt editor eg egXML elementRef elementSpec email emph empty encodingDesc equiv exemplum expan extent figDesc figure fileDesc foreign formula front funder gi gloss graphic head headItem headLabel hi ident idno imprint item label licence list listChange listPrefixDef listRef macroRef macroSpec media meeting memberOf mentioned model modelGrp modelSequence moduleRef moduleSpec name note notesStmt num orgName outputRendition p param paramList paramSpec persName placeName postBox postCode prefixDef principal projectDesc ptr pubPlace publicationStmt publisher punctuation q quote ref relatedItem remarks resp respStmt revisionDesc row rs said schemaRef schemaSpec sequence seriesStmt soCalled sourceDesc specDesc specGrp specGrpRef specList sponsor street styleDefDecl table tag teiHeader term text textLang textNode time title titleStmt val valDesc valItem valList xenoData
AttributesAttributes att.global.source (@source)
xml:id(identifier) provides a unique identifier for the element bearing the attribute.
Status Optional
Schematron

<sch:let name="myID"
 value="normalize-space(.)"/>

<sch:report test="../(ancestor::*|preceding::*)/@xml:id[ normalize-space(.) eq $myID ]">The @xml:id "<sch:value-of select="."/>" on <<sch:value-of select="name(..)"/>> duplicates an @xml:id found earlier in the document</sch:report>
Datatype ID
Note

The xml:id attribute may be used to specify a canonical reference for an element; see section 3.10. Reference Systems.

n(number) gives a number (or other label) for an element, which is not necessarily unique within the document.
Status Optional
Datatype teidata.text
Note

The value of this attribute is always understood to be a single token, even if it contains space or other punctuation characters, and need not be composed of numbers only. It is typically used to specify the numbering of chapters, sections, list items, etc.; it may also be used in the specification of a standard reference system for the text.

xml:lang(language) indicates the language of the element content using a ‘tag’ generated according to BCP 47.
Status Optional
Datatype teidata.language
<p> … The consequences of
this rapid depopulation were the loss of the last
<foreign xml:lang="rap">ariki</foreign> or chief
(Routledge 1920:205,210) and their connections to
ancestral territorial organization.</p>
Note

The xml:lang value will be inherited from the immediately enclosing element, or from its parent, and so on up the document hierarchy. It is generally good practice to specify xml:lang at the highest appropriate level, noticing that a different default may be needed for the teiHeader from that needed for the associated resource element or elements, and that a single TEI document may contain texts in many languages.

The authoritative list of registered language subtags is maintained by IANA and is available at http://www.iana.org/assignments/language-subtag-registry. For a good general overview of the construction of language tags, see http://www.w3.org/International/articles/language-tags/, and for a practical step-by-step guide, see https://www.w3.org/International/questions/qa-choosing-language-tags.en.php.

The value used must conform with BCP 47. If the value is a private use code (i.e., starts with x- or contains -x-), a <language> element with a matching value for its ident attribute should be supplied in the TEI header to document this value. Such documentation may also optionally be supplied for non-private-use codes, though these must remain consistent with their (IETF)Internet Engineering Task Force definitions.

xml:baseprovides a base URI reference with which applications can resolve relative URI references into absolute URI references.
Status Optional
Datatype teidata.pointer
<div type="bibl">
 <head>Bibliography</head>
 <listBibl xml:base="http://www.lib.ucdavis.edu/BWRP/Works/">
  <bibl>
   <author>
    <name>Landon, Letitia Elizabeth</name>
   </author>
   <ref target="LandLVowOf.sgm">
    <title>The Vow of the Peacock</title>
   </ref>
  </bibl>
  <bibl>
   <author>
    <name>Compton, Margaret Clephane</name>
   </author>
   <ref target="NortMIrene.sgm">
    <title>Irene, a Poem in Six Cantos</title>
   </ref>
  </bibl>
  <bibl>
   <author>
    <name>Taylor, Jane</name>
   </author>
   <ref target="TaylJEssay.sgm">
    <title>Essays in Rhyme on Morals and Manners</title>
   </ref>
  </bibl>
 </listBibl>
</div>
xml:spacesignals an intention about how white space should be managed by applications.
Status Optional
Datatype teidata.enumerated
Legal values are:
default
signals that the application's default white-space processing modes are acceptable
preserve
indicates the intent that applications preserve all white space
Note

The XML specification provides further guidance on the use of this attribute. Note that many parsers may not handle xml:space correctly.

att.global.source

att.global.source provides an attribute used by elements to point to an external source. [1.3.1.1.4. Sources, certainty, and responsibility 3.3.3. Quotation 8.3.4. Writing]
Moduletei
Membersatt.global [TEI abbr abstract addrLine address altIdent alternate anyElement att attDef attList attRef author authority availability back bibl biblFull biblScope body calendar calendarDesc cell change choice cit citedRange classRef classSpec classes code constraint constraintSpec content correspAction correspContext correspDesc dataFacet dataRef dataSpec datatype date defaultVal desc distributor div divGen edition editionStmt editor eg egXML elementRef elementSpec email emph empty encodingDesc equiv exemplum expan extent figDesc figure fileDesc foreign formula front funder gi gloss graphic head headItem headLabel hi ident idno imprint item label licence list listChange listPrefixDef listRef macroRef macroSpec media meeting memberOf mentioned model modelGrp modelSequence moduleRef moduleSpec name note notesStmt num orgName outputRendition p param paramList paramSpec persName placeName postBox postCode prefixDef principal projectDesc ptr pubPlace publicationStmt publisher punctuation q quote ref relatedItem remarks resp respStmt revisionDesc row rs said schemaRef schemaSpec sequence seriesStmt soCalled sourceDesc specDesc specGrp specGrpRef specList sponsor street styleDefDecl table tag teiHeader term text textLang textNode time title titleStmt val valDesc valItem valList xenoData]
AttributesAttributes
sourcespecifies the source from which some aspect of this element is drawn.
Status Optional
Datatype 1–∞ occurrences of teidata.pointer separated by whitespace
Note

The source attribute points to an external source. When used on elements describing schema components such as schemaSpec or moduleRef it identifies the source from which declarations for the components of the object being defined may be obtained.

On other elements it provides a pointer to the bibliographical source from which a quotation or citation is drawn.

In either case, the location may be provided using any form of URI, for example an absolute URI, a relative URI, or private scheme URI that is expanded to an absolute URI as documented in a prefixDef.

If more than one location is specified, the default assumption is that the required source should be obtained by combining the resources indicated.

Example
<p>
<!-- ... --> As Willard McCarty (<bibl xml:id="mcc_2012">2012, p.2</bibl>) tells us, <quote source="#mcc_2012">‘Collaboration’ is a problematic and should be a contested
   term.</quote>
<!-- ... -->
</p>
Example
<p>
<!-- ... -->
 <quote source="#chicago_15_ed">Grammatical theories are in flux, and the more we learn, the
   less we seem to know.</quote>
<!-- ... -->
</p>
<!-- ... -->
<bibl xml:id="chicago_15_ed">
 <title level="m">The Chicago Manual of Style</title>,
<edition>15th edition</edition>. <pubPlace>Chicago</pubPlace>: <publisher>University of
   Chicago Press</publisher> (<date>2003</date>), <biblScope unit="page">p.147</biblScope>.

</bibl>
Example
<elementRef key="psource="tei:2.0.1"/>

Include in the schema an element named p available from the TEI P5 2.0.1 release.

Example
<schemaSpec ident="myODD"
 source="mycompiledODD.xml">

<!-- further declarations specifying the components required -->
</schemaSpec>

Create a schema using components taken from the file mycompiledODD.xml.

att.identified

att.identified provides the identifying attribute for elements which can be subsequently referenced by means of a key attribute.
Moduletagdocs
MembersattDef constraintSpec dataSpec macroSpec moduleSpec paramSpec schemaSpec
AttributesAttributes att.combinable (@mode) (att.deprecated (@validUntil))
module
Status Optional
Datatype teidata.enumerated
Legal values are:
analysis
certainty
core
corpus
dictionaries
drama
figures
gaiji
header
iso-fs
linking
msdescription
namesdates
nets
spoken
tagdocs
tei
textcrit
textstructure
transcr
verse
identsupplies the identifier by which this element may be referenced.
Status Required
Datatype teidata.name
predeclaresays whether this object should be predeclared in the tei infrastructure module.
Status Optional
Datatype teidata.truthValue
Default false
Schematron

<s:rule context="tei:elementSpec[@module]|tei:classSpec[@module]|tei:macroSpec[@module]">
<s:assert test=" (not(ancestor::tei:schemaSpec | ancestor::tei:TEI | ancestor::tei:teiCorpus)) or (not(@module) or (not(//tei:moduleSpec) and not(//tei:moduleRef)) or (//tei:moduleSpec[@ident = current()/@module]) or (//tei:moduleRef[@key = current()/@module])) "> Specification <s:value-of select="@ident"/>: the value of the module attribute ("<s:value-of select="@module"/>")
should correspond to an existing module, via a moduleSpec or
moduleRef</s:assert>
</s:rule>

att.internetMedia

att.internetMedia provides attributes for specifying the type of a computer resource using a standard taxonomy.
Moduletei
Membersatt.media [graphic] equiv ptr ref
AttributesAttributes
mimeType(MIME media type) specifies the applicable multimedia internet mail extension (MIME) media type
Status Optional
Datatype 1–∞ occurrences of teidata.word separated by whitespace
Example

In this example mimeType is used to indicate that the URL points to a TEI XML file encoded in UTF-8.

<ref mimeType="application/tei+xml; charset=UTF-8"
 target="http://sourceforge.net/p/tei/code/HEAD/tree/trunk/P5/Source/guidelines-en.xml"/>
Note

This attribute class provides an attribute for describing a computer resource, typically available over the internet, using a value taken from a standard taxonomy. At present only a single taxonomy is supported, the Multipurpose Internet Mail Extensions (MIME) Media Type system. This typology of media types is defined by the Internet Engineering Task Force in RFC 2046. The list of types is maintained by the Internet Assigned Numbers Authority (IANA). The mimeType attribute must have a value taken from this list.

att.media

att.media provides attributes for specifying display and related properties of external media.
Moduletei
Membersgraphic
AttributesAttributes att.internetMedia (@mimeType)
widthWhere the media are displayed, indicates the display width
Status Optional
Datatype teidata.outputMeasurement
heightWhere the media are displayed, indicates the display height
Status Optional
Datatype teidata.outputMeasurement
scaleWhere the media are displayed, indicates a scale factor to be applied when generating the desired display size
Status Optional
Datatype teidata.numeric

att.namespaceable

att.namespaceable provides an attribute indicating the target namespace for an object being created
Moduletagdocs
MemberselementSpec schemaSpec
AttributesAttributes
ns(namespace) specifies the namespace to which this element belongs
Status Optional
Datatype teidata.namespace
Default http://www.tei-c.org/ns/1.0

att.naming

att.naming provides attributes common to elements which refer to named persons, places, organizations etc. [3.5.1. Referring Strings 13.3.5. Names and Nyms]
Moduletei
Membersatt.personal [name orgName persName placeName] author editor pubPlace rs
AttributesAttributes att.canonical (@key, @ref)
rolemay be used to specify further information about the entity referenced by this name in the form of a set of whitespace-separated values, for example the occupation of a person, or the status of a place.
Status Optional
Datatype 1–∞ occurrences of teidata.enumerated separated by whitespace
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.
Status Optional
Datatype 1–∞ occurrences of teidata.pointer separated by whitespace
Note

The value must point directly to one or more XML elements by means of one or more URIs, separated by whitespace. If more than one is supplied, the implication is that the name is associated with several distinct canonical names.

att.notated

att.notated provides an attribute to indicate any specialised notation used for element content.
Moduletei
Membersformula quote
AttributesAttributes
notationnames the notation used for the content of the element.
Status Optional
Datatype teidata.enumerated

att.patternReplacement

att.patternReplacement provides attributes for regular-expression matching and replacement. [16.2.3. Using Abbreviated Pointers 2.3.6.3. Milestone Method 2.3.6. The Reference System Declaration 2.3.6.2. Search-and-Replace Method]
Moduleheader
MembersprefixDef
AttributesAttributes
matchPatternspecifies a regular expression against which the values of other attributes can be matched.
Status Required
Datatype teidata.pattern
Note

The syntax used should follow that defined by W3C XPath syntax. Note that parenthesized groups are used not only for establishing order of precedence and atoms for quantification, but also for creating subpatterns to be referenced by the replacementPattern attribute.

replacementPatternspecifies a ‘replacement pattern’, that is, the skeleton of a relative or absolute URI containing references to groups in the matchPattern which, once subpattern substitution has been performed, complete the URI.
Status Required
Datatype teidata.replacement
Note

The strings $1, $2 etc. are references to the corresponding group in the regular expression specified by matchPattern (counting open parenthesis, left to right). Processors are expected to replace them with whatever matched the corresponding group in the regular expression.

If a digit preceded by a dollar sign is needed in the actual replacement pattern (as opposed to being used as a back reference), the dollar sign must be written as %24.

att.personal

att.personal (attributes for components of names usually, but not necessarily, personal names) common attributes for those elements which form part of a name usually, but not necessarily, a personal name. [13.2.1. Personal Names]
Moduletei
Membersname orgName persName placeName
AttributesAttributes att.naming (@role, @nymRef) (att.canonical (@key, @ref))
fullindicates whether the name component is given in full, as an abbreviation or simply as an initial.
Status Optional
Datatype teidata.enumerated
Legal values are:
yes
the name component is spelled out in full. [Default]
abb
(abbreviated) the name component is given in an abbreviated form.
init
(initial letter) the name component is indicated only by one initial.
sortspecifies the sort order of the name component in relation to others within the name.
Status Optional
Datatype teidata.count

att.placement

att.placement provides attributes for describing where on the source page or object a textual element appears. [3.4.3. Additions, Deletions, and Omissions 11.3.1.4. Additions and Deletions]
Moduletei
Membersfigure head label note
AttributesAttributes
placespecifies where this item is placed.
Status Recommended
Datatype 1–∞ occurrences of teidata.enumerated separated by whitespace
Suggested values include:
below
below the line
bottom
at the foot of the page
margin
in the margin (left, right, or both)
top
at the top of the page
opposite
on the opposite, i.e. facing, page
overleaf
on the other side of the leaf
above
above the line
end
at the end of e.g. chapter or volume.
inline
within the body of the text.
inspace
in a predefined space, for example left by an earlier scribe.
<add place="margin">[An addition written in the margin]</add>
<add place="bottom opposite">[An addition written at the
foot of the current page and also on the facing page]</add>
<note place="bottom">Ibid, p.7</note>

att.pointing

att.pointing provides a set of attributes used by all elements which point to other elements by means of one or more URI references. [1.3.1.1.2. Language Indicators 3.6. Simple Links and Cross-References]
Moduletei
Memberscalendar citedRange gloss licence note ptr ref term
AttributesAttributes
targetLangspecifies the language of the content to be found at the destination referenced by target, using a ‘language tag’ generated according to BCP 47.
Status Optional
Datatype teidata.language
Schematron

<sch:rule context="tei:*[not(self::tei:schemaSpec)][@targetLang]">
<sch:assert test="@target">@targetLang should only be used on <sch:name/> if @target is specified.</sch:assert>
</sch:rule>
<linkGrp xml:id="pol-swh_aln_2.1-linkGrp">
 <ptr xml:id="pol-swh_aln_2.1.1-ptr"
  target="pol/UDHR/text.xml#pol_txt_1-headtype="tuvtargetLang="pl"/>

 <ptr xml:id="pol-swh_aln_2.1.2-ptr"
  target="swh/UDHR/text.xml#swh_txt_1-headtype="tuvtargetLang="sw"/>

</linkGrp>

In the example above, the <linkGrp> combines pointers at parallel fragments of the Universal Declaration of Human Rights: one of them is in Polish, the other in Swahili.

Note

The value must conform to BCP 47. If the value is a private use code (i.e., starts with x- or contains -x-), a <language> element with a matching value for its ident attribute should be supplied in the TEI header to document this value. Such documentation may also optionally be supplied for non-private-use codes, though these must remain consistent with their (IETF)Internet Engineering Task Force definitions.

targetspecifies the destination of the reference by supplying one or more URI References
Status Optional
Datatype 1–∞ occurrences of teidata.pointer separated by whitespace
Note

One or more syntactically valid URI references, separated by whitespace. Because whitespace is used to separate URIs, no whitespace is permitted inside a single URI. If a whitespace character is required in a URI, it should be escaped with the normal mechanism, e.g. TEI%20Consortium.

evaluatespecifies the intended meaning when the target of a pointer is itself a pointer.
Status Optional
Datatype teidata.enumerated
Legal values are:
all
if the element pointed to is itself a pointer, then the target of that pointer will be taken, and so on, until an element is found which is not a pointer.
one
if the element pointed to is itself a pointer, then its target (whether a pointer or not) is taken as the target of this pointer.
none
no further evaluation of targets is carried out beyond that needed to find the element specified in the pointer's target.
Note

If no value is given, the application program is responsible for deciding (possibly on the basis of user input) how far to trace a chain of pointers.

att.ranging

att.ranging provides attributes for describing numerical ranges.
Moduletei
Membersatt.dimensions [date time] num
AttributesAttributes
atLeastgives a minimum estimated value for the approximate measurement.
Status Optional
Datatype teidata.numeric
atMostgives a maximum estimated value for the approximate measurement.
Status Optional
Datatype teidata.numeric
minwhere the measurement summarizes more than one observation or a range, supplies the minimum value observed.
Status Optional
Datatype teidata.numeric
maxwhere the measurement summarizes more than one observation or a range, supplies the maximum value observed.
Status Optional
Datatype teidata.numeric
confidencespecifies the degree of statistical confidence (between zero and one) that a value falls within the range specified by min and max, or the proportion of observed values that fall within that range.
Status Optional
Datatype teidata.probability
Example
The MS. was lost in transmission by mail from <del rend="overstrike">
 <gap reason="illegible"
  extent="one or two lettersatLeast="1atMost="2unit="chars"/>

</del> Philadelphia to the Graphic office, New York.

att.repeatable

att.repeatable supplies attributes for the elements which define component parts of a content model.
Moduletagdocs
Membersalternate anyElement classRef elementRef sequence
AttributesAttributes
minOccurs(minimum number of occurences) indicates the smallest number of times this component may occur.
Status Optional
Datatype teidata.count
Default 1
maxOccurs(maximum number of occurences) indicates the largest number of times this component may occur.
Status Optional
Datatype teidata.unboundedInt
Default 1
Schematron

<sch:rule context="*[ @minOccurs and @maxOccurs ]">
<sch:let name="min"
 value="@minOccurs cast as xs:integer"/>

<sch:let name="max"
 value="if ( normalize-space( @maxOccurs ) eq 'unbounded') then -1 else @maxOccurs cast as xs:integer"/>

<sch:assert test="$max eq -1 or $max ge $min">@maxOccurs should be greater than or equal to @minOccurs</sch:assert>
</sch:rule>
<sch:rule context="*[ @minOccurs and not( @maxOccurs ) ]">
<sch:assert test="@minOccurs cast as xs:integer lt 2">When @maxOccurs is not specified, @minOccurs must be 0 or 1</sch:assert>
</sch:rule>
Note

The value of minOccurs must always be less than or equal to that of maxOccurs. Since the default value of maxOccurs is 1, when maxOccurs is not specified minOccurs must always be less than or equal to 1. The default value of minOccurs is also 1, and therefore, when minOccurs is not specified the value of maxOccurs must always be greater than or equal to 1. An ODD processor should raise an error if either of these conditions is not met.

att.resourced

att.resourced provides attributes by which a resource (such as an externally held media file) may be located.
Moduletei
Membersgraphic media schemaRef
AttributesAttributes
url(uniform resource locator) specifies the URL from which the media concerned may be obtained.
Status Required
Datatype teidata.pointer

att.sortable

att.sortable provides attributes for elements in lists or groups that are sortable, but whose sorting key cannot be derived mechanically from the element content. [9.1. Dictionary Body and Overall Structure]
Moduletei
Membersbibl biblFull correspAction idno item list listChange term
AttributesAttributes
sortKeysupplies the sort key for this element in an index, list or group which contains it.
Status Optional
Datatype teidata.word
David's other principal backer, Josiah
ha-Kohen <index indexName="NAMES">
 <term sortKey="Azarya_Josiah_Kohen">Josiah ha-Kohen b. Azarya</term>
</index> b. Azarya, son of one of the last gaons of Sura was David's own first
cousin.
Note

The sort key is used to determine the sequence and grouping of entries in an index. It provides a sequence of characters which, when sorted with the other values, will produced the desired order; specifics of sort key construction are application-dependent

Dictionary order often differs from the collation sequence of machine-readable character sets; in English-language dictionaries, an entry for 4-H will often appear alphabetized under ‘fourh’, and McCoy may be alphabetized under ‘maccoy’, while A1, A4, and A5 may all appear in numeric order ‘alphabetized’ between ‘a-’ and ‘AA’. The sort key is required if the orthography of the dictionary entry does not suffice to determine its location.

att.styleDef

att.styleDef provides attributes to specify the name of a formal definition language used to provide formatting or rendition information.
Moduletei
MembersstyleDefDecl
AttributesAttributes
schemeidentifies the language used to describe the rendition.
Status Optional
Datatype teidata.enumerated
Legal values are:
css
Cascading Stylesheet Language
xslfo
Extensible Stylesheet Language Formatting Objects
free
Informal free text description
other
A user-defined rendition description language
Note

If no value for the @scheme attribute is provided, then the default assumption should be that CSS is in use.

schemeVersionsupplies a version number for the style language provided in scheme.
Status Optional
Datatype teidata.versionNumber
Schematron

<sch:rule context="tei:*[@schemeVersion]">
<sch:assert test="@scheme and not(@scheme = 'free')"> @schemeVersion can only be used if @scheme is specified.
</sch:assert>
</sch:rule>
Note

If schemeVersion is used, then scheme should also appear, with a value other than free.

att.tableDecoration

att.tableDecoration provides attributes used to decorate rows or cells of a table. [14. Tables, Formulæ, Graphics and Notated Music]
Moduletei
Memberscell row
AttributesAttributes
roleindicates the kind of information held in this cell or in each cell of this row.
Status Optional
Datatype teidata.enumerated
Suggested values include:
label
labelling or descriptive information only.
data
data values. [Default]
Note

When this attribute is specified on a row, its value is the default for all cells in this row. When specified on a cell, its value overrides any default specified by the role attribute of the parent row element.

rowsindicates the number of rows occupied by this cell or row.
Status Optional
Datatype teidata.count
Default 1
Note

A value greater than one indicates that this cell spans several rows. Where several cells span multiple rows, it may be more convenient to use nested tables.

cols(columns) indicates the number of columns occupied by this cell or row.
Status Optional
Datatype teidata.count
Default 1
Note

A value greater than one indicates that this cell or row spans several columns. Where an initial cell spans an entire row, it may be better treated as a heading.

att.timed

att.timed provides attributes common to those elements which have a duration in time, expressed either absolutely or by reference to an alignment map. [8.3.5. Temporal Information]
Moduletei
Membersmedia
AttributesAttributes
startindicates the location within a temporal alignment at which this element begins.
Status Optional
Datatype teidata.pointer
Note

If no value is supplied, the element is assumed to follow the immediately preceding element at the same hierarchic level.

endindicates the location within a temporal alignment at which this element ends.
Status Optional
Datatype teidata.pointer
Note

If no value is supplied, the element is assumed to precede the immediately following element at the same hierarchic level.

att.translatable

att.translatable provides attributes used to indicate the status of a translatable portion of an ODD document.
Moduletei
Membersdesc exemplum gloss remarks valDesc
AttributesAttributes
versionDatespecifies the date on which the source text was extracted and sent to the translator
Status Optional
Datatype teidata.temporal.w3c
Note

The versionDate attribute can be used to determine whether a translation might need to be revisited, by comparing the modification date on the containing file with the versionDate value on the translation. If the file has changed, changelogs can be checked to see whether the source text has been modified since the translation was made.

att.typed

att.typed provides attributes which can be used to classify or subclassify elements in any way. [1.3.1. Attribute Classes 17.1.1. Words and Above 3.5.1. Referring Strings 3.6. Simple Links and Cross-References 3.5.5. Abbreviations and Their Expansions 3.12.1. Core Tags for Verse 7.2.5. Speech Contents 4.1.1. Un-numbered Divisions 4.1.2. Numbered Divisions 4.2.1. Headings and Trailers 4.4. Virtual Divisions 13.3.2.3. Personal Relationships 11.3.1.1. Core Elements for Transcriptional Work 16.1.1. Pointers and Links 16.3. Blocks, Segments, and Anchors 12.2. Linking the Apparatus to the Text 22.5.1.2. Defining Content Models: RELAX NG 8.3. Elements Unique to Spoken Texts 23.3.1.4. Modification of Attribute and Attribute Value Lists]
Moduletei
MembersTEI altIdent bibl change cit constraintSpec correspDesc date desc exemplum figure gloss head label listChange media moduleSpec name note orgName persName placeName ptr quote ref relatedItem rs schemaRef table term text time xenoData
AttributesAttributes
typecharacterizes the element in some sense, using any convenient classification scheme or typology.
Status Optional
Datatype teidata.enumerated
<div type="verse">
 <head>Night in Tarras</head>
 <lg type="stanza">
  <l>At evening tramping on the hot white road</l>
  <l></l>
 </lg>
 <lg type="stanza">
  <l>A wind sprang up from nowhere as the sky</l>
  <l></l>
 </lg>
</div>
Note

The type attribute is present on a number of elements, not all of which are members of att.typed, usually because these elements restrict the possible values for the attribute in a specific way.

subtypeprovides a sub-categorization of the element, if needed
Status Optional
Datatype teidata.enumerated
Note

The subtype attribute may be used to provide any sub-classification for the element additional to that provided by its type attribute.

Schematron

<sch:rule context="tei:*[@subtype]">
<sch:assert test="@type">The <sch:name/> element should not be categorized in detail with @subtype unless also categorized in general with @type</sch:assert>
</sch:rule>
Note

When appropriate, values from an established typology should be used. Alternatively a typology may be defined in the associated TEI header. If values are to be taken from a project-specific list, this should be defined using the valList element in the project-specific schema description, as described in 23.3.1.4. Modification of Attribute and Attribute Value Lists .

att.written

att.written provides an attribute to indicate the hand in which the textual content of an element was written in the source being transcribed. [1.3.1. Attribute Classes]
Moduletei
Membersdiv head hi label note p text
AttributesAttributes
handpoints to a <handNote> element describing the hand considered responsible for the textual content of the element concerned.
Status Optional
Datatype teidata.pointer

Schema tei_customization: Datatypes

teidata.certainty

teidata.certainty defines the range of attribute values expressing a degree of certainty.
Moduletei
Used by
Content model
<content>
 <valList type="closed">
  <valItem ident="high"/>
  <valItem ident="medium"/>
  <valItem ident="low"/>
  <valItem ident="unknown"/>
 </valList>
</content>
Declaration
cust_teidata.certainty = "high" | "medium" | "low" | "unknown"
Note

Certainty may be expressed by one of the predefined symbolic values high, medium, or low. The value unknown should be used in cases where the encoder does not wish to assert an opinion about the matter.

teidata.count

teidata.count defines the range of attribute values used for a non-negative integer value used as a count.
Moduletei
Used by
Element:
Content model
<content>
 <dataRef name="nonNegativeInteger"/>
</content>
Declaration
cust_teidata.count = xsd:nonNegativeInteger
Note

Any positive integer value or zero is permitted

teidata.duration.iso

teidata.duration.iso defines the range of attribute values available for representation of a duration in time using ISO 8601 standard formats
Moduletei
Used by
Content model
<content>
 <dataRef name="token"
  restriction="[0-9.,DHMPRSTWYZ/:+\-]+"/>

</content>
Declaration
cust_teidata.duration.iso = token { pattern = "[0-9.,DHMPRSTWYZ/:+\-]+" }
Example
<time dur-iso="PT0,75H">three-quarters of an hour</time>
Example
<date dur-iso="P1,5D">a day and a half</date>
Example
<date dur-iso="P14D">a fortnight</date>
Example
<time dur-iso="PT0.02S">20 ms</time>
Note

A duration is expressed as a sequence of number-letter pairs, preceded by the letter P; the letter gives the unit and may be Y (year), M (month), D (day), H (hour), M (minute), or S (second), in that order. The numbers are all unsigned integers, except for the last, which may have a decimal component (using either . or , as the decimal point; the latter is preferred). If any number is 0, then that number-letter pair may be omitted. If any of the H (hour), M (minute), or S (second) number-letter pairs are present, then the separator T must precede the first ‘time’ number-letter pair.

For complete details, see ISO 8601 Data elements and interchange formats — Information interchange — Representation of dates and times.

teidata.duration.w3c

teidata.duration.w3c defines the range of attribute values available for representation of a duration in time using W3C datatypes.
Moduletei
Used by
Content model
<content>
 <dataRef name="duration"/>
</content>
Declaration
cust_teidata.duration.w3c = xsd:duration
Example
<time dur="PT45M">forty-five minutes</time>
Example
<date dur="P1DT12H">a day and a half</date>
Example
<date dur="P7D">a week</date>
Example
<time dur="PT0.02S">20 ms</time>
Note

A duration is expressed as a sequence of number-letter pairs, preceded by the letter P; the letter gives the unit and may be Y (year), M (month), D (day), H (hour), M (minute), or S (second), in that order. The numbers are all unsigned integers, except for the S number, which may have a decimal component (using . as the decimal point). If any number is 0, then that number-letter pair may be omitted. If any of the H (hour), M (minute), or S (second) number-letter pairs are present, then the separator T must precede the first ‘time’ number-letter pair.

For complete details, see the W3C specification.

teidata.enumerated

teidata.enumerated defines the range of attribute values expressed as a single XML name taken from a list of documented possibilities.
Moduletei
Used by
Element:
Content model
<content>
 <dataRef key="teidata.word"/>
</content>
Declaration
cust_teidata.enumerated = teidata.word
Note

Attributes using this datatype must contain a single ‘word’ which contains only letters, digits, punctuation characters, or symbols: thus it cannot include whitespace.

Typically, the list of documented possibilities will be provided (or exemplified) by a value list in the associated attribute specification, expressed with a valList element.

teidata.language

teidata.language defines the range of attribute values used to identify a particular combination of human language and writing system. [6.1. Language Identification]
Moduletei
Used by
Element:
Content model
<content>
 <alternate>
  <dataRef name="language"/>
  <valList>
   <valItem ident=""/>
  </valList>
 </alternate>
</content>
Declaration
cust_teidata.language = xsd:language | ( "" )
Note

The values for this attribute are language ‘tags’ as defined in BCP 47. Currently BCP 47 comprises RFC 5646 and RFC 4647; over time, other IETF documents may succeed these as the best current practice.

A ‘language tag’, per BCP 47, is assembled from a sequence of components or subtags separated by the hyphen character (-, U+002D). The tag is made of the following subtags, in the following order. Every subtag except the first is optional. If present, each occurs only once, except the fourth and fifth components (variant and extension), which are repeatable.

language
The IANA-registered code for the language. This is almost always the same as the ISO 639 2-letter language code if there is one. The list of available registered language subtags can be found at http://www.iana.org/assignments/language-subtag-registry. It is recommended that this code be written in lower case.
script
The ISO 15924 code for the script. These codes consist of 4 letters, and it is recommended they be written with an initial capital, the other three letters in lower case. The canonical list of codes is maintained by the Unicode Consortium, and is available at http://unicode.org/iso15924/iso15924-codes.html. The IETF recommends this code be omitted unless it is necessary to make a distinction you need.
region
Either an ISO 3166 country code or a UN M.49 region code that is registered with IANA (not all such codes are registered, e.g. UN codes for economic groupings or codes for countries for which there is already an ISO 3166 2-letter code are not registered). The former consist of 2 letters, and it is recommended they be written in upper case; the list of codes can be searched or browsed at https://www.iso.org/obp/ui/#search/code/. The latter consist of 3 digits; the list of codes can be found at http://unstats.un.org/unsd/methods/m49/m49.htm.
variant
An IANA-registered variation. These codes are used to indicate additional, well-recognized variations that define a language or its dialects that are not covered by other available subtags.
extension
An extension has the format of a single letter followed by a hyphen followed by additional subtags. These exist to allow for future extension to BCP 47, but as of this writing no such extensions are in use.
private use
An extension that uses the initial subtag of the single letter x (i.e., starts with x-) has no meaning except as negotiated among the parties involved. These should be used with great care, since they interfere with the interoperability that use of RFC 4646 is intended to promote. In order for a document that makes use of these subtags to be TEI-conformant, a corresponding <language> element must be present in the TEI header.

There are two exceptions to the above format. First, there are language tags in the IANA registry that do not match the above syntax, but are present because they have been ‘grandfathered’ from previous specifications.

Second, an entire language tag can consist of only a private use subtag. These tags start with x-, and do not need to follow any further rules established by the IETF and endorsed by these Guidelines. Like all language tags that make use of private use subtags, the language in question must be documented in a corresponding <language> element in the TEI header.

Examples include

sn
Shona
zh-TW
Taiwanese
zh-Hant-HK
Chinese written in traditional script as used in Hong Kong
en-SL
English as spoken in Sierra Leone
pl
Polish
es-MX
Spanish as spoken in Mexico
es-419
Spanish as spoken in Latin America

The W3C Internationalization Activity has published a useful introduction to BCP 47, Language tags in HTML and XML.

teidata.name

teidata.name defines the range of attribute values expressed as an XML Name.
Moduletei
Used by
att giElement:
Content model
<content>
 <dataRef name="Name"/>
</content>
Declaration
cust_teidata.name = xsd:Name
Note

Attributes using this datatype must contain a single word which follows the rules defining a legal XML name (see http://www.w3.org/TR/REC-xml/#dt-name): for example they cannot include whitespace or begin with digits.

teidata.namespace

teidata.namespace defines the range of attribute values used to indicate XML namespaces as defined by the W3C Namespaces in XML Technical Recommendation.
Moduletei
Used by
Element:
Content model
<content>
 <dataRef name="anyURI"/>
</content>
Declaration
cust_teidata.namespace = xsd:anyURI
Note

The range of syntactically valid values is defined by RFC 3986 Uniform Resource Identifier (URI): Generic Syntax

teidata.namespaceOrName

teidata.namespaceOrName defines attribute values which contain either an absolute namespace URI or a qualified XML name.
Moduletei
Used by
Element:
Content model
<content>
 <alternate>
  <dataRef name="anyURI">
   <dataFacet name="pattern"
    value="[^/]+:.*"/>

  </dataRef>
  <dataRef name="Name">
   <dataFacet name="patternvalue=".+:.+"/>
  </dataRef>
 </alternate>
</content>
Declaration
cust_teidata.namespaceOrName = xsd:anyURI | xsd:Name

teidata.numeric

teidata.numeric defines the range of attribute values used for numeric values.
Moduletei
Used by
Element:
Content model
<content>
 <alternate>
  <dataRef name="double"/>
  <dataRef name="token"
   restriction="(\-?[\d]+/\-?[\d]+)"/>

  <dataRef name="decimal"/>
 </alternate>
</content>
Declaration
cust_teidata.numeric =
   xsd:double | token { pattern = "(\-?[\d]+/\-?[\d]+)" } | xsd:decimal
Note

Any numeric value, represented as a decimal number, in floating point format, or as a ratio.

To represent a floating point number, expressed in scientific notation, ‘E notation’, a variant of ‘exponential notation’, may be used. In this format, the value is expressed as two numbers separated by the letter E. The first number, the significand (sometimes called the mantissa) is given in decimal format, while the second is an integer. The value is obtained by multiplying the mantissa by 10 the number of times indicated by the integer. Thus the value represented in decimal notation as 1000.0 might be represented in scientific notation as 10E3.

A value expressed as a ratio is represented by two integer values separated by a solidus (/) character. Thus, the value represented in decimal notation as 0.5 might be represented as a ratio by the string 1/2.

teidata.outputMeasurement

teidata.outputMeasurement defines a range of values for use in specifying the size of an object that is intended for display.
Moduletei
Used by
Content model
<content>
 <dataRef name="token"
  restriction="[\-+]?\d+(\.\d+)?(%|cm|mm|in|pt|pc|px|em|ex|gd|rem|vw|vh|vm)"/>

</content>
Declaration
cust_teidata.outputMeasurement =
   token
   {
      pattern = "[\-+]?\d+(\.\d+)?(%|cm|mm|in|pt|pc|px|em|ex|gd|rem|vw|vh|vm)"
   }
Example
<figure>
 <head>The TEI Logo</head>
 <figDesc>Stylized yellow angle brackets with the letters <mentioned>TEI</mentioned> in
   between and <mentioned>text encoding initiative</mentioned> underneath, all on a white
   background.</figDesc>
 <graphic height="600pxwidth="600px"
  url="http://www.tei-c.org/logos/TEI-600.jpg"/>

</figure>
Note

These values map directly onto the values used by XSL-FO and CSS. For definitions of the units see those specifications; at the time of this writing the most complete list is in the CSS3 working draft.

teidata.pattern

teidata.pattern defines attribute values which are expressed as a regular expression.
Moduletei
Used by
Element:
Content model
<content>
 <dataRef name="token"/>
</content>
Declaration
cust_teidata.pattern = token
Note
A regular expression, often called a pattern, is an expression that describes a set of strings. They are usually used to give a concise description of a set, without having to list all elements. For example, the set containing the three strings Handel, Händel, and Haendel can be described by the pattern H(ä|ae?)ndel (or alternatively, it is said that the pattern H(ä|ae?)ndel matches each of the three strings)
Wikipedia

This TEI datatype is mapped to the XSD token datatype, and may therefore contain any string of characters. However, it is recommended that the value used conform to the particular flavour of regular expression syntax supported by XSD Schema.

teidata.pointer

teidata.pointer defines the range of attribute values used to provide a single URI, absolute or relative, pointing to some other resource, either within the current document or elsewhere.
Moduletei
Used by
Element:
Content model
<content>
 <dataRef name="anyURI"/>
</content>
Declaration
cust_teidata.pointer = xsd:anyURI
Note

The range of syntactically valid values is defined by RFC 3986 Uniform Resource Identifier (URI): Generic Syntax. Note that the values themselves are encoded using RFC 3987 Internationalized Resource Identifiers (IRIs) mapping to URIs. For example, https://secure.wikimedia.org/wikipedia/en/wiki/% is encoded as https://secure.wikimedia.org/wikipedia/en/wiki/%25 while http://موقع.وزارة-الاتصالات.مصر/ is encoded as http://xn--4gbrim.xn----rmckbbajlc6dj7bxne2c.xn--wgbh1c/

teidata.prefix

teidata.prefix defines a range of values that may function as a URI scheme name.
Moduletei
Used by
Element:
Content model
<content>
 <dataRef name="token"
  restriction="[a-z][a-z0-9\+\.\-]*"/>

</content>
Declaration
cust_teidata.prefix = token { pattern = "[a-z][a-z0-9\+\.\-]*" }
Note

This datatype is used to constrain a string of characters to one that can be used as a URI scheme name according to RFC 3986, section 3.1. Thus only the 26 lowercase letters a–z, the 10 digits 0–9, the plus sign, the period, and the hyphen are permitted, and the value must start with a letter.

teidata.probability

teidata.probability defines the range of attribute values expressing a probability.
Moduletei
Used by
Content model
<content>
 <dataRef name="double"/>
</content>
Declaration
cust_teidata.probability = xsd:double
Note

Probability is expressed as a real number between 0 and 1; 0 representing certainly false and 1 representing certainly true.

teidata.probCert

teidata.probCert defines a range of attribute values which can be expressed either as a numeric probability or as a coded certainty value.
Moduletei
Used by
Content model
<content>
 <alternate>
  <dataRef key="teidata.probability"/>
  <dataRef key="teidata.certainty"/>
 </alternate>
</content>
Declaration
cust_teidata.probCert = teidata.probability | teidata.certainty

teidata.replacement

teidata.replacement defines attribute values which contain a replacement template.
Moduletei
Used by
Content model
<content>
 <textNode/>
</content>
Declaration
cust_teidata.replacement = text

teidata.temporal.iso

teidata.temporal.iso defines the range of attribute values expressing a temporal expression such as a date, a time, or a combination of them, that conform to the international standard Data elements and interchange formats – Information interchange – Representation of dates and times.
Moduletei
Used by
Content model
<content>
 <alternate>
  <dataRef name="date"/>
  <dataRef name="gYear"/>
  <dataRef name="gMonth"/>
  <dataRef name="gDay"/>
  <dataRef name="gYearMonth"/>
  <dataRef name="gMonthDay"/>
  <dataRef name="time"/>
  <dataRef name="dateTime"/>
  <dataRef name="token"
   restriction="[0-9.,DHMPRSTWYZ/:+\-]+"/>

 </alternate>
</content>
Declaration
cust_teidata.temporal.iso =
   xsd:date
 | xsd:gYear
 | xsd:gMonth
 | xsd:gDay
 | xsd:gYearMonth
 | xsd:gMonthDay
 | xsd:time
 | xsd:dateTime
 | token { pattern = "[0-9.,DHMPRSTWYZ/:+\-]+" }
Note

If it is likely that the value used is to be compared with another, then a time zone indicator should always be included, and only the dateTime representation should be used.

For all representations for which ISO 8601 describes both a basic and an extended format, these Guidelines recommend use of the extended format.

While ISO 8601 permits the use of both 00:00 and 24:00 to represent midnight, these Guidelines strongly recommend against the use of 24:00.

teidata.temporal.w3c

teidata.temporal.w3c defines the range of attribute values expressing a temporal expression such as a date, a time, or a combination of them, that conform to the W3C XML Schema Part 2: Datatypes Second Edition specification.
Moduletei
Used by
Content model
<content>
 <alternate>
  <dataRef name="date"/>
  <dataRef name="gYear"/>
  <dataRef name="gMonth"/>
  <dataRef name="gDay"/>
  <dataRef name="gYearMonth"/>
  <dataRef name="gMonthDay"/>
  <dataRef name="time"/>
  <dataRef name="dateTime"/>
 </alternate>
</content>
Declaration
cust_teidata.temporal.w3c =
   xsd:date
 | xsd:gYear
 | xsd:gMonth
 | xsd:gDay
 | xsd:gYearMonth
 | xsd:gMonthDay
 | xsd:time
 | xsd:dateTime
Note

If it is likely that the value used is to be compared with another, then a time zone indicator should always be included, and only the dateTime representation should be used.

teidata.text

teidata.text defines the range of attribute values used to express some kind of identifying string as a single sequence of unicode characters possibly including whitespace.
Moduletei
Used by
Element:
Content model
<content>
 <dataRef name="string"/>
</content>
Declaration
cust_teidata.text = string
Note

Attributes using this datatype must contain a single ‘token’ in which whitespace and other punctuation characters are permitted.

teidata.truthValue

teidata.truthValue defines the range of attribute values used to express a truth value.
Moduletei
Used by
Element:
Content model
<content>
 <dataRef name="boolean"/>
</content>
Declaration
cust_teidata.truthValue = xsd:boolean
Note

The possible values of this datatype are 1 or true, or 0 or false.

This datatype applies only for cases where uncertainty is inappropriate; if the attribute concerned may have a value other than true or false, e.g. unknown, or inapplicable, it should have the extended version of this datatype: data.xTruthValue.

teidata.unboundedInt

teidata.unboundedInt defines an attribute value which can be either any non-negative integer or the string "unbounded".
Moduletei
Used by
Element:
Content model
<content>  <alternate>
  <dataRef name="nonNegativeInteger"/>
  <valList type="closed">
   <valItem ident="unbounded"/>
  </valList>
 </alternate>
</content>
Declaration
cust_teidata.unboundedInt = xsd:nonNegativeInteger | ( "unbounded" )

teidata.version

teidata.version defines the range of attribute values which may be used to specify a TEI or Unicode version number.
Moduletei
Used by
Element:
Content model
<content>
 <dataRef name="token"
  restriction="[\d]+(\.[\d]+){0,2}"/>

</content>
Declaration
cust_teidata.version = token { pattern = "[\d]+(\.[\d]+){0,2}" }
Note

The value of this attribute follows the pattern specified by the Unicode consortium for its version number (http://unicode.org/versions/). A version number contains digits and fullstop characters only. The first number supplied identifies the major version number. A second and third number, for minor and sub-minor version numbers, may also be supplied.

teidata.versionNumber

teidata.versionNumber defines the range of attribute values used for version numbers.
Moduletei
Used by
Content model
<content>
 <dataRef name="token"
  restriction="[\d]+[a-z]*[\d]*(\.[\d]+[a-z]*[\d]*){0,3}"/>

</content>
Declaration
cust_teidata.versionNumber =
   token { pattern = "[\d]+[a-z]*[\d]*(\.[\d]+[a-z]*[\d]*){0,3}" }

teidata.word

teidata.word defines the range of attribute values expressed as a single word or token.
Moduletei
Used by
teidata.enumeratedElement:
Content model
<content>
 <dataRef name="token"
  restriction="(\p{L}|\p{N}|\p{P}|\p{S})+"/>

</content>
Declaration
cust_teidata.word = token { pattern = "(\p{L}|\p{N}|\p{P}|\p{S})+" }
Note

Attributes using this datatype must contain a single ‘word’ which contains only letters, digits, punctuation characters, or symbols: thus it cannot include whitespace.

teidata.xmlName

teidata.xmlName defines attribute values which contain an XML name.
Moduletei
Used by
Element:
Content model
<content>
 <dataRef name="NCName"/>
</content>
Declaration
cust_teidata.xmlName = xsd:NCName
Note

The rules defining an XML name form a part of the XML Specification.

teidata.xpath

teidata.xpath defines attribute values which contain an XPath expression.
Moduletei
Used by
Element:
Content model
<content>
 <textNode/>
</content>
Declaration
cust_teidata.xpath = text
Note

Any XPath expression using the syntax defined in 6.2.

teidata.xTruthValue

teidata.xTruthValue (extended truth value) defines the range of attribute values used to express a truth value which may be unknown.
Moduletei
Used by
Element:
Content model
<content>
 <alternate>
  <dataRef name="boolean"/>
  <valList>
   <valItem ident="unknown"/>
   <valItem ident="inapplicable"/>
  </valList>
 </alternate>
</content>
Declaration
cust_teidata.xTruthValue = xsd:boolean | ( "unknown" | "inapplicable" )
Note

In cases where where uncertainty is inappropriate, use the datatype data.TruthValue.

Schema tei_customization: Macros

macro.anyXML

macro.anyXML defines a content model within which any XML elements are permitted
Deprecatedwill be removed on 2018-06-12
Moduletei
Used by
Content model
<content>
 <alternate>
  <textNode/>
  <anyElement except="teix:egXML http://www.tei-c.org/ns/1.0"/>
 </alternate>
</content>
Declaration
cust_macro.anyXML = text | anyElement-macro.anyXML

macro.limitedContent

macro.limitedContent (paragraph content) defines the content of prose elements that are not used for transcription of extant materials. [1.3. The TEI Class System]
Moduletei
Used by
Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">

  <textNode/>
  <classRef key="model.limitedPhrase"/>
  <classRef key="model.inter"/>
 </alternate>
</content>
Declaration
cust_macro.limitedContent =
   ( text | cust_model.limitedPhrase | cust_model.inter )*

macro.paraContent

macro.paraContent (paragraph content) defines the content of paragraphs and similar elements. [1.3. The TEI Class System]
Moduletei
Used by
Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">

  <textNode/>
  <classRef key="model.gLike"/>
  <classRef key="model.phrase"/>
  <classRef key="model.inter"/>
  <classRef key="model.global"/>
  <elementRef key="lg"/>
  <classRef key="model.lLike"/>
 </alternate>
</content>
Declaration
cust_macro.paraContent =
   (
      text
    | cust_model.gLike
    | cust_model.phrase
    | cust_model.inter
    | cust_model.global
    | lg
    | cust_model.lLike
   )*

macro.phraseSeq

macro.phraseSeq (phrase sequence) defines a sequence of character data and phrase-level elements. [1.4.1. Standard Content Models]
Moduletei
Used by
Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">

  <textNode/>
  <classRef key="model.gLike"/>
  <classRef key="model.phrase"/>
  <classRef key="model.global"/>
 </alternate>
</content>
Declaration
cust_macro.phraseSeq =
   ( text | cust_model.gLike | cust_model.phrase | cust_model.global )*

macro.phraseSeq.limited

macro.phraseSeq.limited (limited phrase sequence) defines a sequence of character data and those phrase-level elements that are not typically used for transcribing extant documents. [1.4.1. Standard Content Models]
Moduletei
Used by
Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">

  <textNode/>
  <classRef key="model.limitedPhrase"/>
  <classRef key="model.global"/>
 </alternate>
</content>
Declaration
cust_macro.phraseSeq.limited =
   ( text | cust_model.limitedPhrase | cust_model.global )*

macro.specialPara

macro.specialPara ('special' paragraph content) defines the content model of elements such as notes or list items, which either contain a series of component-level elements or else have the same structure as a paragraph, containing a series of phrase-level and inter-level elements. [1.3. The TEI Class System]
Moduletei
Used by
Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">

  <textNode/>
  <classRef key="model.gLike"/>
  <classRef key="model.phrase"/>
  <classRef key="model.inter"/>
  <classRef key="model.divPart"/>
  <classRef key="model.global"/>
 </alternate>
</content>
Declaration
cust_macro.specialPara =
   (
      text
    | cust_model.gLike
    | cust_model.phrase
    | cust_model.inter
    | cust_model.divPart
    | cust_model.global
   )*

macro.xtext

macro.xtext (extended text) defines a sequence of character data and gaiji elements.
Moduletei
Used by
Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">

  <textNode/>
  <classRef key="model.gLike"/>
 </alternate>
</content>
Declaration
cust_macro.xtext = ( text | cust_model.gLike )*
Date: 2018-04-07