<schemaSpec>

<schemaSpec> (spécification de schéma) génère un schéma conforme à la TEI et la documentation qui l'accompagne. [2.3 The Encoding Description 22.2 Modules and Schemas 23.5.1 Making a Unified ODD]
Moduletagdocs — Documentation Elements
Attributsatt.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.identified (@ident, @predeclare, @module) (att.combinable (@mode) (att.deprecated (@validUntil)) ) att.namespaceable (@ns) att.docStatus (@status)
startprécise les points d'accès au schéma, i.e. quels sont les éléments permis comme racine des documents XML qui se conforment à ce schéma.
Statut Optionel
Type de données 1–∞ occurrences de teidata.name séparé par un espace
Valeur par défaut TEI
prefixprécise un préfixe qui sera ajouté à tous les modèles de définition des éléments de la TEI. Cela autorise l'introduction des schémas externes ayant des éléments de même nom que ceux de la TEI
Statut Optionel
Type de données 0–1 occurrences de teidata.xmlName séparé par un espace
Note

Les deux-points, bien qu'ils soient permis à l'intérieur de la valeur, provoqueront la génération d'un schéma invalide.

targetLang(langue cible) lorsque des noms pour un élément ou pour un attribut sont disponibles en plusieurs langues, précise quelle langue utiliser lors de la création d'objets dans un schéma .
Statut Optionel
Type de données teidata.language
docLang(langue de documentation) lorsque la description pour un élément, un attribut, une classe ou une macro est disponible en plusieurs langues, précise quelle langue utiliser lors de la création de la documentation.
Statut Optionel
Type de données 1–∞ occurrences de teidata.language séparé par un espace
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
Statut Recommendé
Type de données 1–∞ occurrences de teidata.namespaceOrName séparé par un espace
Valeur par défaut http://www.tei-c.org/ns/1.0 teix:egXML
Membre du
Contenu dans
Peut contenir
Note

Un schéma combine des références aux modules ou aux groupes de spécifications avec d'autres déclarations atomiques. Le traitement d'un élément de schéma doit résoudre tous les conflits entre les déclarations qu'il contient ou les références. Des processeurs ODD différents peuvent générer des schémas et une documentation en utilisant différentes syntaxes concrètes.

Exemple
<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.

Exemple
<schemaSpec ident="Bare-plus"
 source="tei_bare.compiled.oddstart="TEI">

 <moduleRef key="tei"/>
 <moduleRef key="header"/>
 <elementRef key="qsource="tei:3.0.0"/>
 <moduleRef key="textstructure"/>
</schemaSpec>

This schema starts with a pre-existing customization of the TEI called TEI Bare (a customization with a minimal selection of elements). The q element is not available in TEI Bare, but it can be brought back. In this case, we will get the version defined in TEI P5 release 3.0.0

Schematronenforces the deprecation of schemaSpec as a child of anything other than front, body, back, encodingDesc, div, or any of the numbered division elements.

<sch:rule context="tei:schemaSpec|teix:schemaSpec">
<sch:assert test=" parent::teix:egXML | parent::tei:encodingDesc | parent::teix:encodingDesc | parent::tei:front | parent::teix:front | parent::tei:back | parent::teix:back | parent::tei:body | parent::teix:body | parent::tei:div | parent::teix:div | parent::tei:div1 | parent::teix:div1 | parent::tei:div2 | parent::teix:div2 | parent::tei:div3 | parent::teix:div3 | parent::tei:div4 | parent::teix:div4 | parent::tei:div5 | parent::teix:div5 | parent::tei:div6 | parent::teix:div6 | parent::tei:div7 | parent::teix:div7"
 role="nonfatal">
WARNING: use of deprecated construct — the “schemaSpec” element will no longer be a valid child of “<sch:value-of select="name(..)"/>” as of 2021-10-23; instead, it should be a child of “front”, “body”, “back”, “encodingDesc”, or a division element.</sch:assert>
</sch:rule>
Modèle de contenu
<content>
 <sequence>
  <alternate minOccurs="0"
   maxOccurs="unbounded">

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

   <classRef key="model.oddRef"/>
   <classRef key="model.oddDecl"/>
  </alternate>
 </sequence>
</content>
Schéma Declaration
<rng:element name="schemaSpec">
 <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.identified.attributes"/>
 <rng:ref name="att.combinable.attributes"/>
 <rng:ref name="att.deprecated.attributes"/>
 <rng:ref name="att.namespaceable.attributes"/>
 <rng:ref name="att.docStatus.attributes"/>
 <rng:optional>
  <rng:attribute name="start"
   a:defaultValue="TEI">

   <rng:list>
    <rng:oneOrMore>
     <rng:ref name="teidata.name"/>
    </rng:oneOrMore>
   </rng:list>
  </rng:attribute>
 </rng:optional>
 <rng:optional>
  <rng:attribute name="prefix">
   <rng:ref name="teidata.xmlName"/>
  </rng:attribute>
 </rng:optional>
 <rng:optional>
  <rng:attribute name="targetLang">
   <rng:ref name="teidata.language"/>
  </rng:attribute>
 </rng:optional>
 <rng:optional>
  <rng:attribute name="docLang">
   <rng:list>
    <rng:oneOrMore>
     <rng:ref name="teidata.language"/>
    </rng:oneOrMore>
   </rng:list>
  </rng:attribute>
 </rng:optional>
 <rng:optional>
  <rng:attribute name="defaultExceptions"
   a:defaultValue="http://www.tei-c.org/ns/1.0 teix:egXML">

   <rng:list>
    <rng:oneOrMore>
     <rng:ref name="teidata.namespaceOrName"/>
    </rng:oneOrMore>
   </rng:list>
  </rng:attribute>
 </rng:optional>
 <rng:group>
  <rng:zeroOrMore>
   <rng:choice>
    <rng:ref name="model.glossLike"/>
    <rng:ref name="model.descLike"/>
   </rng:choice>
  </rng:zeroOrMore>
  <rng:zeroOrMore>
   <rng:choice>
    <rng:ref name="model.oddRef"/>
    <rng:ref name="model.oddDecl"/>
   </rng:choice>
  </rng:zeroOrMore>
 </rng:group>
</rng:element>
element schemaSpec
{
   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.identified.attributes,
   att.combinable.attributes,
   att.deprecated.attributes,
   att.namespaceable.attributes,
   att.docStatus.attributes,
   attribute start { list { teidata.name+ } }?,
   attribute prefix { teidata.xmlName }?,
   attribute targetLang { teidata.language }?,
   attribute docLang { list { teidata.language+ } }?,
   attribute defaultExceptions { list { teidata.namespaceOrName+ } }?,
   ( ( model.glossLike | model.descLike )*, ( model.oddRef | model.oddDecl )* )
}