Revision 70be33ceb72f3b33ca91a1f5484e3687d952c88c authored by raffazizzi on 21 March 2023, 18:35:47 UTC, committed by raffazizzi on 21 March 2023, 18:35:47 UTC
1 parent 5c1bdce
p5odds.odd
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright TEI Consortium.
Dual-licensed under CC-by and BSD2 licences
See the file COPYING.txt for details
$Date$
$Id$
-->
<?xml-model href="http://jenkins.tei-c.org/job/TEIP5-dev/lastSuccessfulBuild/artifact/P5/release/xml/tei/odd/p5odds.rnc" type="application/relax-ng-compact-syntax"?>
<?xml-model href="http://jenkins.tei-c.org/job/TEIP5-dev/lastSuccessfulBuild/artifact/P5/release/xml/tei/odd/p5odds.isosch" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0"
xmlns:rng="http://relaxng.org/ns/structure/1.0"
xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
xmlns:sch="http://purl.oclc.org/dsdl/schematron" >
<teiHeader>
<fileDesc>
<titleStmt>
<title>TEI for the TEI Guidelines</title>
<author>Sebastian Rahtz</author>
</titleStmt>
<publicationStmt>
<publisher>TEI Consortium</publisher>
</publicationStmt>
<sourceDesc>
<p>authored from scratch</p>
</sourceDesc>
</fileDesc>
</teiHeader>
<text>
<body>
<schemaSpec ident="p5odds" prefix="TEI_"
start="TEI schemaSpec elementSpec classSpec macroSpec dataSpec div">
<moduleRef key="header"/>
<moduleRef key="core"/>
<moduleRef key="tei"/>
<moduleRef key="gaiji"/>
<moduleRef key="namesdates"/>
<moduleRef key="textstructure" except="div1 div2 div3 div4 div5 div6 div7"/>
<moduleRef key="tagdocs"/>
<moduleRef key="dictionaries"/>
<moduleRef key="linking"/>
<moduleRef key="figures"/>
<moduleRef url="Exemplars/svg11.rng">
<content>
<define xmlns="http://relaxng.org/ns/structure/1.0" combine="choice" name="tei_model.graphicLike">
<ref name="svg"/>
</define>
</content>
</moduleRef>
<moduleRef url="Exemplars/mathml2-main.rng"/>
<moduleRef url="Exemplars/relaxng.rng"/>
<constraintSpec scheme="schematron" ident="when_glosses_English_required">
<desc>Per <ref
target="https://github.com/TEIC/TEI/issues/2037">ticket
237</ref>, Council has decided that every specification
element that has any <gi>gloss</gi> child must have a
<gi>gloss</gi> child in English. This is in order to make
figuring out which glosses need translation easier (or
possible).</desc>
<constraint>
<!-- We attempted to enforce this with an abstract
pattern, but found that oNVDL does not support
abstract patterns. Thus, at least for now, just use
a bulky, straightfoward, ineligant, but easier to
process pattern. -->
<sch:pattern id="en-gloss-if-any">
<sch:rule context=" tei:elementSpec[tei:gloss]
| tei:valItem[tei:gloss]
| tei:attDef[tei:gloss]
| tei:macroSpec[tei:gloss]
| tei:classSpec[tei:gloss]
| tei:dataSpec[tei:gloss]
">
<sch:assert test="tei:gloss[ lang('en') ]">If there is any gloss inside <sch:value-of select="name(.)"/>, there must be an English gloss.</sch:assert>
</sch:rule>
</sch:pattern>
</constraint>
</constraintSpec>
<!-- The abstract pattern version of the same constraint as above: -->
<!-- <constraintSpec scheme="schematron" ident="when_glosses_English_required"> -->
<!-- <desc>Per <ref -->
<!-- target="https://github.com/TEIC/TEI/issues/2037">ticket -->
<!-- 237</ref>, Council has decided that every specification -->
<!-- element that has any <gi>gloss</gi> child must have a -->
<!-- <gi>gloss</gi> child in English. This is in order to make -->
<!-- figuring out which glosses need translation easier (or -->
<!-- possible).</desc> -->
<!-- <constraint> -->
<!-- <sch:pattern abstract="true" id="en-gloss-if-any"> -->
<!-- <!\-\- parameter 'gse' is for "glossed specification element (type)" \-\-> -->
<!-- <sch:rule context="$gse[tei:gloss]"> -->
<!-- <sch:assert test="tei:gloss[ lang('en') ]">If there is any gloss inside <sch:value-of select="name(.)"/>, there must be an English gloss.</sch:assert> -->
<!-- </sch:rule> -->
<!-- </sch:pattern> -->
<!-- </constraint> -->
<!-- </constraintSpec> -->
<!-- <elementSpec ident="elementSpec" mode="change" module="tagdocs"> -->
<!-- <constraintSpec scheme="schematron" ident="EGIA_elementSpec"> -->
<!-- <constraint> -->
<!-- <sch:pattern id="egia-elementSpec" is-a="en-gloss-if-any"> -->
<!-- <sch:param name="gse" value="tei:elementSpec"/> -->
<!-- </sch:pattern> -->
<!-- </constraint> -->
<!-- </constraintSpec> -->
<!-- </elementSpec> -->
<!-- <elementSpec ident="valItem" mode="change" module="tagdocs"> -->
<!-- <constraintSpec scheme="schematron" ident="EGIA_valItem"> -->
<!-- <constraint> -->
<!-- <sch:pattern id="egia-valItem" is-a="en-gloss-if-any"> -->
<!-- <sch:param name="gse" value="tei:valItem"/> -->
<!-- </sch:pattern> -->
<!-- </constraint> -->
<!-- </constraintSpec> -->
<!-- </elementSpec> -->
<!-- <elementSpec ident="attDef" mode="change" module="tagdocs"> -->
<!-- <constraintSpec scheme="schematron" ident="EGIA_attDef"> -->
<!-- <constraint> -->
<!-- <sch:pattern id="egia-attDef" is-a="en-gloss-if-any"> -->
<!-- <sch:param name="gse" value="tei:attDef"/> -->
<!-- </sch:pattern> -->
<!-- </constraint> -->
<!-- </constraintSpec> -->
<!-- </elementSpec> -->
<!-- <elementSpec ident="macroSpec" mode="change" module="tagdocs"> -->
<!-- <constraintSpec scheme="schematron" ident="EGIA_macroSpec"> -->
<!-- <constraint> -->
<!-- <sch:pattern id="egia-macroSpec" is-a="en-gloss-if-any"> -->
<!-- <sch:param name="gse" value="tei:macroSpec"/> -->
<!-- </sch:pattern> -->
<!-- </constraint> -->
<!-- </constraintSpec> -->
<!-- </elementSpec> -->
<!-- <elementSpec ident="classSpec" mode="change" module="tagdocs"> -->
<!-- <constraintSpec scheme="schematron" ident="EGIA_classSpec"> -->
<!-- <constraint> -->
<!-- <sch:pattern id="egia-classSpec" is-a="en-gloss-if-any"> -->
<!-- <sch:param name="gse" value="tei:classSpec"/> -->
<!-- </sch:pattern> -->
<!-- </constraint> -->
<!-- </constraintSpec> -->
<!-- </elementSpec> -->
<!-- <elementSpec ident="dataSpec" mode="change" module="tagdocs"> -->
<!-- <constraintSpec scheme="schematron" ident="EGIA_dataSpec"> -->
<!-- <constraint> -->
<!-- <sch:pattern id="egia-dataSpec" is-a="en-gloss-if-any"> -->
<!-- <sch:param name="gse" value="tei:dataSpec"/> -->
<!-- </sch:pattern> -->
<!-- </constraint> -->
<!-- </constraintSpec> -->
<!-- </elementSpec> -->
<elementSpec ident="egXML" mode="change" module="tagdocs"
ns="http://www.tei-c.org/ns/Examples">
<!--
This definition of <teix:egXML> overrides that of P5 which, for
some reason I don't grok, does not allow a <teix:egXML> descendant.
—Syd, 2018-06-13
-->
<content>
<alternate minOccurs="1" maxOccurs="unbounded">
<textNode/>
<elementRef key="egXML"/>
<anyElement/>
</alternate>
</content>
</elementSpec>
<elementSpec ident="eg" mode="change" module="tagdocs">
<constraintSpec ident="no_leading_nor_trailing_new_newlines" scheme="schematron">
<desc xml:lang="en" versionDate="2020-12-18">
In order to prevent inconsistent <soCalled>sizes</soCalled> of the box
that holds the example in the HTML output, and even moreso to avoid
getting the <quote>bibliography Show all ⚓</quote> looking ugly at the
bottom, there should be no leading nor trailing newlines. If you really
want a newline at the beginning, precede it with U+00A0 (NO-BREAK SPACE);
if you really want a newline at the end, follow it with U+00A0.
</desc>
<constraint>
<sch:report test="matches( .//text()[last()], '
\s*$')">trailing newline not allowed</sch:report>
<sch:report test="matches( .//text()[1], '^\s*
')">leading newline not allowed</sch:report>
</constraint>
</constraintSpec>
</elementSpec>
<macroSpec ident="anyISOSchematron" mode="add">
<content>
<element xmlns="http://relaxng.org/ns/structure/1.0">
<nsName ns="http://purl.oclc.org/dsdl/schematron"/>
<zeroOrMore>
<choice>
<attribute>
<anyName/>
</attribute>
<ref name="anyISOSchematron"/>
<ref name="anySchematronQuickFix"/>
<text/>
</choice>
</zeroOrMore>
</element>
</content>
</macroSpec>
<macroSpec ident="anySchematronQuickFix" mode="add">
<content>
<element xmlns="http://relaxng.org/ns/structure/1.0">
<nsName ns="http://www.schematron-quickfix.com/validator/process"/>
<zeroOrMore>
<choice>
<attribute>
<anyName/>
</attribute>
<ref name="anySchematronQuickFix"/>
<ref name="anyISOSchematron"/>
<text/>
</choice>
</zeroOrMore>
</element>
</content>
</macroSpec>
<!-- in examples we'd like to be able to show use of <xi:include>; of course, -->
<!-- we can't put in an <xi:include> element, or it will be processed! Thus, -->
<!-- here we use a bogus namespace -->
<elementSpec ident="include" ns="http://www.example.org/cannot/really/use/XInclude" mode="add">
<!-- the content and attributes were devised based on my reading of the spec at
http://www.w3.org/TR/2006/REC-xinclude-20061115/, also having looked at
Norm Walsh's implementation for DocBook. -sb -->
<content>
<optional xmlns="http://relaxng.org/ns/structure/1.0">
<ref name="fallback"/>
</optional>
</content>
<attList>
<attDef ident="href">
<datatype>
<data xmlns="http://relaxng.org/ns/structure/1.0" type="anyURI">
<param name="pattern">[^#]+</param>
</data>
</datatype>
</attDef>
<attDef ident="parse">
<defaultVal>xml</defaultVal>
<valList type="closed">
<valItem ident="xml"/>
<valItem ident="text"/>
</valList>
</attDef>
<attDef ident="xpointer">
<datatype>
<data xmlns="http://relaxng.org/ns/structure/1.0" type="string"/>
</datatype>
</attDef>
<attDef ident="encoding">
<datatype>
<data xmlns="http://relaxng.org/ns/structure/1.0" type="string"/>
</datatype>
</attDef>
<attDef ident="accept">
<datatype>
<data xmlns="http://relaxng.org/ns/structure/1.0" type="string"/>
</datatype>
</attDef>
<attDef ident="accept-language">
<datatype>
<data xmlns="http://relaxng.org/ns/structure/1.0" type="string"/>
</datatype>
</attDef>
</attList>
</elementSpec>
<!-- of course <xi:include> refers to <xi:fallback>, so we need to declare-->
<!-- that, too, just in case. -->
<elementSpec ident="fallback" ns="http://www.example.org/cannot/really/use/XInclude" mode="add">
<content>
<oneOrMore xmlns="http://relaxng.org/ns/structure/1.0">
<choice>
<text/>
<?NameList?>
</choice>
</oneOrMore>
</content>
</elementSpec>
<elementSpec module="tagdocs" ident="gi" mode="change">
<attList>
<attDef mode="replace" ident="scheme">
<valList type="closed">
<valItem ident="imaginary"/>
<valItem ident="extreme">
<gloss versionDate="2013-10-30" xml:lang="en">Extreme conference
proceedings markup</gloss>
</valItem>
<valItem ident="DBK">
<gloss versionDate="2013-10-30" xml:lang="en">Docbook</gloss>
</valItem>
<valItem ident="SMIL"/>
<valItem ident="Schematron"/>
<valItem ident="HTML"/>
<valItem ident="SVG"/>
<valItem ident="XHTML"/>
</valList>
</attDef>
</attList>
</elementSpec>
<elementSpec ident="biblScope" mode="change">
<attList>
<attDef mode="replace" ident="type">
<valList type="closed">
<valItem ident="chap">
<gloss versionDate="2013-10-30" xml:lang="en">Chapter</gloss>
</valItem>
<valItem ident="issue">
<gloss versionDate="2013-10-30" xml:lang="en">Issue</gloss>
</valItem>
<valItem ident="note">
<gloss versionDate="2013-10-30" xml:lang="en">Note</gloss>
</valItem>
<valItem ident="part">
<gloss versionDate="2013-10-30" xml:lang="en">Part</gloss>
</valItem>
<valItem ident="pp">
<gloss versionDate="2013-10-30" xml:lang="en">Pages</gloss>
</valItem>
<valItem ident="vol">
<gloss versionDate="2013-10-30" xml:lang="en">Volume</gloss>
</valItem>
</valList>
</attDef>
</attList>
</elementSpec>
<elementSpec ident="divGen" mode="change">
<attList>
<attDef mode="replace" ident="type">
<valList type="closed">
<valItem ident="attcat">
<gloss versionDate="2013-10-30" xml:lang="en">Catalogue of Attributes</gloss>
</valItem>
<valItem ident="attclasscat">
<gloss versionDate="2013-10-30" xml:lang="en">Catalogue of Attribute Classes</gloss>
</valItem>
<valItem ident="elementcat">
<gloss versionDate="2013-10-30" xml:lang="en"> Catalogue of Elements</gloss>
</valItem>
<valItem ident="index">
<gloss versionDate="2013-10-30" xml:lang="en"> Index</gloss>
</valItem>
<valItem ident="macrocat">
<gloss versionDate="2013-10-30" xml:lang="en"> Catalogue of Macros</gloss>
</valItem>
<valItem ident="modelclasscat">
<gloss versionDate="2013-10-30" xml:lang="en">Catalogue of Model Classes</gloss>
</valItem>
<valItem ident="deprecationcat">
<gloss versionDate="2018-09-10" xml:lang="en">Catalogue of Deprecations</gloss>
</valItem>
<valItem ident="toc">
<gloss versionDate="2013-10-30" xml:lang="en">Table of Contents</gloss>
</valItem>
</valList>
</attDef>
</attList>
</elementSpec>
<elementSpec ident="div" mode="change">
<attList>
<attDef mode="replace" ident="type">
<valList type="closed">
<valItem ident="div1"/>
<valItem ident="div2"/>
<valItem ident="div3"/>
<valItem ident="div4"/>
<valItem ident="titlePageVerso"/>
<valItem ident="Dedication"/>
<valItem ident="section"/>
<valItem ident="subsection"/>
<valItem ident="subsubsection"/>
</valList>
</attDef>
</attList>
</elementSpec>
<elementSpec ident="list" mode="change">
<!-- MDH 2014-07-29: per https://sourceforge.net/p/tei/bugs/460,
changes made to specs should be reflected in Guidelines usage, so
the values for @type and @rend below should be reviewed. -->
<attList>
<attDef mode="replace" ident="type">
<valList type="closed">
<valItem ident="ordered">
<gloss versionDate="2013-10-30" xml:lang="en">Numbered list</gloss>
</valItem>
<valItem ident="simple">
<gloss versionDate="2013-10-30" xml:lang="en">Plain list</gloss>
</valItem>
<valItem ident="gloss">
<gloss versionDate="2013-10-30" xml:lang="en">Glossary list</gloss>
</valItem>
<valItem ident="inline">
<gloss versionDate="2013-10-30" xml:lang="en">Inline list</gloss>
</valItem>
</valList>
</attDef>
<attDef mode="replace" ident="rend">
<valList type="closed">
<valItem ident="specList">
<gloss versionDate="2013-10-30" xml:lang="en">Specification list</gloss>
</valItem>
<valItem ident="numbered">
<gloss versionDate="2013-10-30" xml:lang="en">Numbered list</gloss>
</valItem>
<valItem ident="ordered">
<gloss versionDate="2013-10-30" xml:lang="en">Numbered list</gloss>
</valItem>
<valItem ident="simple">
<gloss versionDate="2013-10-30" xml:lang="en">Plain list</gloss>
</valItem>
<valItem ident="gloss">
<gloss versionDate="2013-10-30" xml:lang="en">Glossary list</gloss>
</valItem>
<valItem ident="inline">
<gloss versionDate="2013-10-30" xml:lang="en">Inline list</gloss>
</valItem>
<!-- MDH 2014-07-29: added this value to make changes to
Guidelines source valid per https://sourceforge.net/p/tei/bugs/460.
-->
<valItem ident="bulleted">
<gloss versionDate="2013-10-30" xml:lang="en">Bulleted list</gloss>
</valItem>
</valList>
</attDef>
</attList>
</elementSpec>
<elementSpec module="tagdocs" ident="ident" mode="change">
<attList>
<attDef mode="replace" ident="type">
<valList type="closed">
<valItem ident="field">
<gloss versionDate="2013-10-30" xml:lang="en">field used in a metadata standard</gloss>
</valItem>
<valItem ident="ge">
<gloss versionDate="2013-10-30" xml:lang="en">general entity name</gloss>
</valItem>
<valItem ident="rng">
<gloss versionDate="2013-10-30" xml:lang="en">RELAX NG identifier</gloss>
</valItem>
<valItem ident="frag">
<gloss versionDate="2013-10-30" xml:lang="en">DTD fragment identifier</gloss>
</valItem>
<valItem ident="macro"/>
<valItem ident="ns">
<gloss versionDate="2013-10-30" xml:lang="en">namespace</gloss>
</valItem>
<valItem ident="schema"/>
<valItem ident="pe">
<gloss versionDate="2013-10-30" xml:lang="en">parameter entity name</gloss>
</valItem>
<valItem ident="datatype"/>
<valItem ident="file"/>
<valItem ident="module"/>
<valItem ident="class"/>
</valList>
</attDef>
</attList>
</elementSpec>
<classSpec ident="att.translatable" mode="change" type="atts">
<constraintSpec mode="add"
ident="require-translatability"
scheme="schematron">
<constraint>
<sch:rule context="tei:elementSpec/tei:desc
| tei:elementSpec/tei:gloss
| tei:elementSpec/tei:remarks
| tei:classSpec/tei:desc
| tei:classSpec/tei:gloss
| tei:classSpec/tei:remarks
| tei:macroSpec/tei:desc
| tei:macroSpec/tei:gloss
| tei:macroSpec/tei:remarks
| tei:attDef/tei:desc
| tei:attDef/tei:gloss
| tei:attDef/tei:remarks
| tei:valItem/tei:desc
| tei:valItem/tei:gloss
| tei:valItem/tei:remarks
| tei:moduleSpec/tei:desc
| tei:moduleSpec/tei:gloss
| tei:moduleSpec/tei:remarks
">
<sch:report test="not( @xml:lang and @versionDate )">
Error: both the versionDate and xml:lang attributes on "<sch:name/>" are required when it is a child of "<sch:value-of select="local-name(..)"/>".
</sch:report>
</sch:rule>
</constraint>
</constraintSpec>
<constraintSpec ident="all-sibling-parent-desc" scheme="schematron">
<constraint>
<sch:rule context="*[tei:desc[@versionDate]]">
<sch:report role="nonfatal" test="
count( tei:desc )
ne
count( tei:desc[@versionDate] )
">
Error: sibling 'desc' elements with and without @versionDate.
</sch:report>
</sch:rule>
</constraint>
</constraintSpec>
<constraintSpec ident="all-sibling-parent-gloss" scheme="schematron">
<constraint>
<sch:rule context="*[tei:gloss[@versionDate]]">
<sch:report role="nonfatal" test="
count( tei:gloss )
ne
count( tei:gloss[@versionDate] )
">
Error: sibling 'gloss' elements with and without @versionDate.
</sch:report>
</sch:rule>
</constraint>
</constraintSpec>
<constraintSpec ident="all-sibling-parent-remarks" scheme="schematron">
<constraint>
<sch:rule context="*[tei:remarks[@versionDate]]">
<sch:report role="nonfatal" test="
count( tei:remarks )
ne
count( tei:remarks[@versionDate] )
">
Error: sibling 'remarks' elements with and without @versionDate.
</sch:report>
</sch:rule>
</constraint>
</constraintSpec>
<constraintSpec ident="all-sibling-parent-valDesc" scheme="schematron">
<constraint>
<sch:rule context="*[tei:valDesc[@versionDate]]">
<sch:report role="nonfatal" test="
count( tei:valDesc )
ne
count( tei:valDesc[@versionDate] )
">
Error: sibling 'valDesc' elements with and without @versionDate.
</sch:report>
</sch:rule>
</constraint>
</constraintSpec>
</classSpec>
<classSpec ident="att.identified" mode="change" type="atts">
<attList>
<attDef ident="module" mode="replace">
<valList type="closed" mode="add">
<valItem ident="tei"/>
<valItem ident="core"/>
<valItem ident="analysis"/>
<valItem ident="certainty"/>
<valItem ident="corpus"/>
<valItem ident="dictionaries"/>
<valItem ident="drama"/>
<valItem ident="figures"/>
<valItem ident="gaiji"/>
<valItem ident="header"/>
<valItem ident="iso-fs"/>
<valItem ident="linking"/>
<valItem ident="msdescription"/>
<valItem ident="namesdates"/>
<valItem ident="nets"/>
<valItem ident="spoken"/>
<valItem ident="textcrit"/>
<valItem ident="textstructure"/>
<valItem ident="transcr"/>
<valItem ident="verse"/>
<valItem ident="tagdocs"/>
</valList>
</attDef>
</attList>
</classSpec>
<elementSpec ident="exemplum" mode="change">
<attList>
<attDef mode="change" ident="xml:lang" usage="req"/>
</attList>
</elementSpec>
<elementSpec ident="idno" mode="change">
<attList>
<attDef mode="replace" ident="type">
<valList type="closed">
<valItem ident="DOI">
<gloss versionDate="2013-10-30" xml:lang="en">Digital Object Identifier</gloss>
</valItem>
<valItem ident="FPI">
<gloss versionDate="2021-10-10" xml:lang="en">Formal Public Identifier</gloss>
</valItem>
<valItem ident="ISBN">
<gloss versionDate="2013-10-30" xml:lang="en">International Standard Book Number</gloss>
</valItem>
<valItem ident="url">
<gloss versionDate="2013-10-30" xml:lang="en">any form of web address</gloss>
</valItem>
</valList>
</attDef>
</attList>
</elementSpec>
<elementSpec ident="content" mode="change" module="tagdocs">
<content>
<choice xmlns="http://relaxng.org/ns/structure/1.0">
<group>
<ref name="valList"/>
</group>
<oneOrMore>
<ref name="anyRelax"/>
</oneOrMore>
<zeroOrMore>
<ref name="model.contentPart"/>
</zeroOrMore>
</choice>
</content>
</elementSpec>
<macroSpec ident="anyRelax" mode="add">
<content>
<element xmlns="http://relaxng.org/ns/structure/1.0">
<nsName ns="http://relaxng.org/ns/structure/1.0"/>
<zeroOrMore>
<choice>
<attribute>
<anyName/>
</attribute>
<ref name="anyRelax"/>
<text/>
</choice>
</zeroOrMore>
</element>
</content>
</macroSpec>
<elementSpec mode="change" ident="TEI">
<constraintSpec ident="must-have-attglobal" scheme="schematron" mode="add">
<constraint>
<rule context="tei:elementSpec[not(@mode)]" xmlns="http://purl.oclc.org/dsdl/schematron">
<assert test="tei:classes/tei:memberOf[@key='att.global']">Error: TEI element <value-of select="@ident"/> must be member of att.global class</assert>
</rule>
</constraint>
</constraintSpec>
</elementSpec>
<elementSpec ident="remarks" mode="change">
<constraintSpec ident="only-one-remark-per-lang" scheme="schematron" mode="add">
<constraint>
<rule context="tei:remarks[@xml:lang]" xmlns="http://purl.oclc.org/dsdl/schematron">
<let name="langVal" value="@xml:lang"/>
<assert test="not(following-sibling::tei:remarks[@xml:lang=$langVal])">
Error: There should only be one <value-of select="@ident"/> element per
language. Merge the contents of multiple <value-of select="@ident"/> elements
using separate p elements.
</assert>
</rule>
</constraint>
</constraintSpec>
</elementSpec>
<dataSpec ident="teidata.temporal.working" mode="change">
<constraintSpec ident="not_in_future" scheme="schematron">
<desc>When a <att>versionDate</att> is specified, its value
should not be in the future.</desc>
<!-- Note that this constraint is fired on the specific *attributes* that
are members of teidata.temporal.working. So if the membership of the datatype
changes, we should change the context, below, to match. -->
<constraint>
<sch:rule context="*[@versionDate]">
<sch:let name="tomorrow" value="current-date() + 'P1D' cast as xs:dayTimeDuration"/>
<sch:assert test="@versionDate cast as xs:date le $tomorrow">The date of a translation should not be in the future.</sch:assert>
</sch:rule>
</constraint>
</constraintSpec>
</dataSpec>
</schemaSpec>
</body>
</text>
</TEI>
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...