<schemaSpec>

<schemaSpec> (스키마 명시) TEI 구조 스키마 및 문서를 생성한다. [2.3 The Encoding Description 22.2 Modules and Schemas 23.5.1 Making a Unified ODD]
모듈 tagdocs — Documentation Elements
속성 att.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)
start⚓︎ 스키마에서 표제 항목 지점을 명시한다. 즉, 어떤 요소가 해당 문서의 뿌리로 사용되는 것이 허용되었는지를 명시한다.
상태 수의적
자료 유형 1–∞ 출현 teidata.name 공백문자로 분리됨
기본값 TEI
prefix⚓︎ TEI 요소와 관련된 모든 유형에 첨가될 접두사를 명시한다. 이는 TEI로서 동일 이름의 요소를 갖는 외부 스키마가 혼용되는 것을 허용한다.
상태 수의적
자료 유형 0–1 출현 teidata.xmlName 공백문자로 분리됨
targetLang⚓︎ (목적 언어) 요소 또는 속성의 이름을 만들기 위해 여러 언어에서 사용가능한 경우, 스키마에서 대상을 만들 때 사용하는 언어를 명시한다.
상태 수의적
자료 유형 teidata.language
docLang⚓︎ (문서화 언어) 요소, 속성, 부류 또는 매크로에 대한 기술이 여러 언어에서 사용 가능한 경우, 문서를 만들 때 사용하는 언어를 명시한다.
상태 수의적
자료 유형 1–∞ 출현 teidata.language 공백문자로 분리됨
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
상태 권고적
자료 유형 1–∞ 출현 teidata.namespaceOrName 공백문자로 분리됨
기본값 http://www.tei-c.org/ns/1.0 teix:egXML
클럽 회원
에 의해 포함된
포함할 수 있다
주석

A schemaSpec combines references to modules, individual element or macro declarations, and specification groups together to form a unified schema.

The processing of the schemaSpec element must resolve any conflicts amongst the declarations it either contains or refers to. Different ODD processors may generate schemas and documentation using different concrete syntaxes.

The source may be specified (on the source attribute) in the form of a private URI, for which the recommended format is tei:x.y.z, where x.y.z indicates the version number, e.g. tei:1.5.1 for 1.5.1 release of TEI P5 or (as a special case) tei:current for whatever is the latest release. The source indicated must provide a set of TEI-conformant specifications in a form directly usable by an ODD processor. By default, this will be the location of the current release of the TEI Guidelines.

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

<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

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

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

   <classRef key="model.oddRef"/>
   <classRef key="model.oddDecl"/>
   <elementRef key="listRef"/>
  </alternate>
 </sequence>
</content>
선언
<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:optional>
    <rng:ref name="teidata.xmlName"/>
   </rng:optional>
  </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.identEquiv"/>
    <rng:ref name="model.descLike"/>
   </rng:choice>
  </rng:zeroOrMore>
  <rng:zeroOrMore>
   <rng:choice>
    <rng:ref name="model.oddRef"/>
    <rng:ref name="model.oddDecl"/>
    <rng:ref name="listRef"/>
   </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.identEquiv | model.descLike )*,
      ( model.oddRef | model.oddDecl | listRef )*
   )
}