<revisionDesc>

<revisionDesc> (revision description) summarizes the revision history for a file. [2.6. The Revision Description 2.1.1. The TEI Header and Its Components]
Module header
Attributes Attributes att.global (xml:id, n, xml:lang) (lim.att.global.fragmentable (part)) (att.global.rendition (rendition)) (att.global.source (source)) att.docStatus (docStatus, metaStatus)
Contained by
header: teiHeader
May contain
header: change
Note
If present on this element, the status attribute should indicate the current status of the document. The same attribute may appear on any change to record the status at the time of that change. Conventionally change elements should be given in reverse date order, with the most recent change at the start of the list.
Examples

<revisionDesc status="embargoed">
   
<change when="1991-11-11" who="#LB"> deleted chapter 10 </change>
</revisionDesc>
Schematron

<sch:pattern>
   
<sch:rule context="tei:revisionDesc">
      
<sch:let name="firstChangeWithDocStatus" value="tei:change[@docStatus][1]"/>
      
<sch:let name="firstChangeWithMetaStatus" value="tei:change[@metaStatus][1]"/>
      
<sch:let name="docStatus" value="@docStatus"/>
      
<sch:let name="metaStatus" value="@metaStatus"/>
      
<sch:assert test="exists($firstChangeWithDocStatus) = exists($metaStatus)">ERROR: If @docStatus appears on a change element or on a revisionDesc, then both the revisionDesc element and at least one change element must feature @docStatus.</sch:assert>
      
<sch:assert test="exists($firstChangeWithMetaStatus) = exists($metaStatus)">ERROR: If @metaStatus appears on a change element or on a revisionDesc, then both the revisionDesc element and at least one change element must feature @metaStatus.</sch:assert>
      
<sch:assert test="exists($docStatus) or exists($metaStatus)">ERROR: At least one of @docStatus or @metaStatus must be present.</sch:assert>
      
<sch:assert test="$docStatus = $firstChangeWithDocStatus/@docStatus">ERROR: The docStatus of the revisionDesc must match the latest change/@docStatu</sch:assert>
      
<sch:assert test="$metaStatus = $firstChangeWithMetaStatus/@metaStatus">ERROR: The metaStatus of the revisionDesc must match the latest change/@metaStatus</sch:assert>
   
</sch:rule>
</sch:pattern>

<sch:pattern>
   
<sch:rule context="tei:revisionDesc[count(tei:change[@when]) gt 1]">
      
<sch:let name="firstChange" value="tei:change[1]"/>
      
<sch:let name="secondChange" value="tei:change[2]"/>
      
<sch:let name="firstDate" value="xs:date(string-join((tokenize($firstChange/@when,'-'),'01','01')[position() lt 4],'-'))"/>
      
<sch:let name="secondDate" value="xs:date(string-join((tokenize($firstChange/@when,'-'),'01','01')[position() lt 4],'-'))"/>
      
<sch:assert test="($firstDate gt $secondDate) or ($firstDate = $secondDate)">ERROR: Change elements should be ordered reverse chronologically (latest first).</sch:assert>
   
</sch:rule>
</sch:pattern>
Source Github

<elementSpec rend="change" module="header" ident="revisionDesc">
   
<gloss>revision description</gloss>
   
<desc>summarizes the revision history for a file.</desc>
   
<classes>
      
<memberOf key="att.global"/>
      
<memberOf key="att.docStatus"/>
   
</classes>
   
<content>
      
<elementRef key="change" minOccurs="1" maxOccurs="unbounded"/>
   
</content>
   
<attList/>
</elementSpec>