<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 — Documentation Elements
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.repeatable (@minOccurs, @maxOccurs)
keythe identifier used for the required class within the source indicated.
Status Required
Datatype teidata.xmlName
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.

includesupplies a list of class members which are to be included in the schema being defined.
Status Optional
Datatype 0–∞ occurrences of teidata.xmlName separated by whitespace
exceptsupplies a list of class members which are to be excluded from the schema being defined.
Status Optional
Datatype 0–∞ occurrences of teidata.xmlName separated by whitespace
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>
 <empty/>
</content>
Schema Declaration
<rng:element name="classRef">
 <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.repeatable.attributes"/>
 <rng:attribute name="key">
  <rng:ref name="teidata.xmlName"/>
 </rng:attribute>
 <rng:optional>
  <rng:attribute name="expand">
   <rng:choice>
    <rng:value>alternate</rng:value>
    <rng:value>sequence</rng:value>
    <rng:value>sequenceOptional</rng:value>
    <rng:value>sequenceOptionalRepeatable</rng:value>
    <rng:value>sequenceRepeatable</rng:value>
   </rng:choice>
  </rng:attribute>
 </rng:optional>
 <rng:choice>
  <rng:optional>
   <rng:attribute name="include">
    <rng:list>
     <rng:zeroOrMore>
      <rng:ref name="teidata.xmlName"/>
     </rng:zeroOrMore>
    </rng:list>
   </rng:attribute>
  </rng:optional>
  <rng:optional>
   <rng:attribute name="except">
    <rng:list>
     <rng:zeroOrMore>
      <rng:ref name="teidata.xmlName"/>
     </rng:zeroOrMore>
    </rng:list>
   </rng:attribute>
  </rng:optional>
 </rng:choice>
 <rng:empty/>
</rng:element>
element classRef
{
   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.repeatable.attributes,
   attribute key { teidata.xmlName },
   attribute expand
   {
      "alternate"
    | "sequence"
    | "sequenceOptional"
    | "sequenceOptionalRepeatable"
    | "sequenceRepeatable"
   }?,
   (
      attribute include { list { teidata.xmlName* } }?
    | attribute except { list { teidata.xmlName* } }?
   ),
   empty
}