<app>

<app> (apparatus entry) contains one entry in a critical apparatus, with an optional lemma and usually one or more reading or a note on the relevant passage. [12.1.1 The Apparatus Entry]
Moduletextcrit — 12 Critical Apparatus
Attributesatt.global (@xml:id, @n, @xml:lang, @rend, @style, @rendition, @xml:base, @xml:space) (att.global.linking (@corresp, @synch, @sameAs, @copyOf, @next, @prev, @exclude, @select)) (att.global.analytic (@ana)) (att.global.facs (@facs)) (att.global.change (@change))
typeclassifies the variation contained in this element according to some convenient typology.
Status Optional
Datatype

<rng:ref name="data.enumerated"/>
data.enumerated
fromidentifies the beginning of the lemma in the base text, if necessary.
Status Optional
Datatype

<rng:ref name="data.pointer"/>
data.pointer
Note

This attribute is only used when the double-end point method of apparatus markup is used.

toidentifies the endpoint of the lemma in the base text, if necessary.
Status Optional
Datatype

<rng:ref name="data.pointer"/>
data.pointer
Note

This attribute is only used when the double-end point method of apparatus markup is used, with the encoded apparatus held in a separate file rather than being embedded in-line in the base-text file.

loc(location) indicates the location of the variation, when the location-referenced method of apparatus markup is used.
Status Optional
Datatype 1–∞ occurrences of 

<rng:ref name="data.word"/>
data.word
separated by whitespace
Values A string containing a canonical reference for the passage to which the variation applies.
Note

This attribute is used only when the location-referenced encoding method is used.

Member of
Contained by
May contain
Declaration

<rng:element name="app">
 <rng:ref name="att.global.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:optional>
  <rng:attribute name="type">
   <rng:ref name="data.enumerated"/>
  </rng:attribute>
 </rng:optional>
 <rng:optional>
  <rng:attribute name="from">
   <rng:ref name="data.pointer"/>
  </rng:attribute>
 </rng:optional>
 <rng:optional>
  <rng:attribute name="to">
   <rng:ref name="data.pointer"/>
  </rng:attribute>
 </rng:optional>
 <rng:optional>
  <rng:attribute name="loc">
   <rng:list>
    <rng:oneOrMore>
     <rng:ref name="data.word"/>
    </rng:oneOrMore>
   </rng:list>
  </rng:attribute>
 </rng:optional>
 <rng:group>
  <rng:zeroOrMore>
   <rng:ref name="model.global"/>
  </rng:zeroOrMore>
  <rng:optional>
   <rng:ref name="lem"/>
   <rng:zeroOrMore>
    <rng:ref name="model.global"/>
   </rng:zeroOrMore>
   <rng:optional>
    <rng:ref name="wit"/>
    <rng:zeroOrMore>
     <rng:ref name="model.global"/>
    </rng:zeroOrMore>
   </rng:optional>
  </rng:optional>
  <rng:zeroOrMore>
   <rng:choice>
    <rng:group>
     <rng:ref name="model.rdgLike"/>
     <rng:zeroOrMore>
      <rng:ref name="model.global"/>
     </rng:zeroOrMore>
     <rng:optional>
      <rng:ref name="wit"/>
      <rng:zeroOrMore>
       <rng:ref name="model.global"/>
      </rng:zeroOrMore>
     </rng:optional>
    </rng:group>
    <rng:group>
     <rng:ref name="rdgGrp"/>
     <rng:zeroOrMore>
      <rng:ref name="model.global"/>
     </rng:zeroOrMore>
     <rng:optional>
      <rng:ref name="wit"/>
      <rng:zeroOrMore>
       <rng:ref name="model.global"/>
      </rng:zeroOrMore>
     </rng:optional>
    </rng:group>
   </rng:choice>
  </rng:zeroOrMore>
 </rng:group>
</rng:element>
element app
{
   att.global.attributes,
   att.global.linking.attributes,
   att.global.analytic.attributes,
   att.global.facs.attributes,
   att.global.change.attributes,
   attribute type { data.enumerated }?,
   attribute from { data.pointer }?,
   attribute to { data.pointer }?,
   attribute loc { list { data.word+ } }?,
   (
      model.global*,
      ( lem, model.global*, ( wit, model.global* )? )?,
      (
         ( model.rdgLike, model.global*, ( wit, model.global* )? )
       | ( rdgGrp, model.global*, ( wit, model.global* )? )
      )*
   )
}
Schematron

<sch:assert
 test="count( descendant::tei:lem[ generate-id( current() ) = generate-id( ancestor::tei:app[1] ) ]) < 2">
Only one <lem> element may appear within a single apparatus
entry, whether it appears outside a <rdgGrp>
element or within it.</sch:assert>
Example
<app>
 <lem wit="#El #Hg">Experience</lem>
 <rdg wit="#La" type="substantive">Experiment</rdg>
 <rdg wit="#Ra2" type="substantive">Eryment</rdg>
</app>
Example
<app type="substantive">
 <rdgGrp type="subvariants">
  <lem wit="#El #Hg">Experience</lem>
  <rdg wit="#Ha4">Experiens</rdg>
 </rdgGrp>
 <rdgGrp type="subvariants">
  <lem wit="#Cp #Ld1">Experiment</lem>
  <rdg wit="#La">Ex<g ref="#per"/>iment</rdg>
 </rdgGrp>
 <rdgGrp type="subvariants">
  <lem>Eriment<wit>[unattested]</wit>
  </lem>
  <rdg wit="#Ra2">Eryment</rdg>
 </rdgGrp>
</app>