<teiCorpus>

<teiCorpus> contains the whole of a TEI encoded corpus, comprising a single corpus header and one or more TEI elements, each containing a single text header and a text. [4 Default Text Structure 15.1 Varieties of Composite Text]
Modulecore — Elements Available in All TEI Documents
Attributesatt.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.rendition (@rend, @style, @rendition)) (att.global.linking (@corresp, @synch, @sameAs, @copyOf, @next, @prev, @exclude, @select)) (att.global.analytic (@ana)) (att.global.facs (@facs)) (att.global.change (@change)) (att.global.responsibility (@cert, @resp)) (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
core: teiCorpus
May contain
core: teiCorpus
header: teiHeader
iso-fs: fsdDecl
textstructure: TEI text
Note

Must contain one TEI header for the corpus, and a series of TEI elements, one for each text.

This element is mandatory when applicable.

Example
<teiCorpus version="3.3.0" xmlns="http://www.tei-c.org/ns/1.0">
 <teiHeader>
<!-- header for corpus -->
 </teiHeader>
 <TEI>
  <teiHeader>
<!-- header for first text -->
  </teiHeader>
  <text>
<!-- content of first text -->
  </text>
 </TEI>
 <TEI>
  <teiHeader>
<!-- header for second text -->
  </teiHeader>
  <text>
<!-- content of second text -->
  </text>
 </TEI>
<!-- more TEI elements here -->
</teiCorpus>
Content model
<content>
 <sequence>
  <elementRef key="teiHeader"/>
  <alternate>
   <sequence>
    <classRef key="model.resourceLike"
     minOccurs="1maxOccurs="unbounded"/>

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

     <elementRef key="TEI"/>
     <elementRef key="teiCorpus"/>
    </alternate>
   </sequence>
   <alternate minOccurs="1"
    maxOccurs="unbounded">

    <elementRef key="TEI"/>
    <elementRef key="teiCorpus"/>
   </alternate>
  </alternate>
 </sequence>
</content>
Schema Declaration
<rng:element name="teiCorpus">
 <rng:ref name="att.global.attributes"/>
 <rng:ref name="att.global.rendition.attributes"/>
 <rng:ref name="att.global.linking.attributes"/>
 <rng:ref name="att.global.analytic.attributes"/>
 <rng:ref name="att.global.facs.attributes"/>
 <rng:ref name="att.global.change.attributes"/>
 <rng:ref name="att.global.responsibility.attributes"/>
 <rng:ref name="att.global.source.attributes"/>
 <rng:ref name="att.typed.attributes"/>
 <rng:optional>
  <rng:attribute name="version">
   <rng:ref name="teidata.version"/>
  </rng:attribute>
 </rng:optional>
 <rng:group>
  <rng:ref name="teiHeader"/>
  <rng:choice>
   <rng:group>
    <rng:oneOrMore>
     <rng:ref name="model.resourceLike"/>
    </rng:oneOrMore>
    <rng:zeroOrMore>
     <rng:choice>
      <rng:ref name="TEI"/>
      <rng:ref name="teiCorpus"/>
     </rng:choice>
    </rng:zeroOrMore>
   </rng:group>
   <rng:oneOrMore>
    <rng:choice>
     <rng:ref name="TEI"/>
     <rng:ref name="teiCorpus"/>
    </rng:choice>
   </rng:oneOrMore>
  </rng:choice>
 </rng:group>
</rng:element>
element teiCorpus
{
   att.global.attributes,
   att.global.rendition.attributes,
   att.global.linking.attributes,
   att.global.analytic.attributes,
   att.global.facs.attributes,
   att.global.change.attributes,
   att.global.responsibility.attributes,
   att.global.source.attributes,
   att.typed.attributes,
   attribute version { teidata.version }?,
   (
      teiHeader,
      ( ( model.resourceLike+, ( TEI | teiCorpus )* ) | ( TEI | teiCorpus )+ )
   )
}