<constraintSpec>
<constraintSpec> (constraint on schema) contains a formal constraint, typically expressed in a rule-based schema language, to which a construct must conform in order to be considered valid [23.5 Element Specifications] | |||||||||||||||||||
組件 | tagdocs — Documentation Elements | ||||||||||||||||||
屬性 |
|
||||||||||||||||||
俱乐部会员 | |||||||||||||||||||
可包含在於 |
cmc: post
core: add corr del desc emph head hi item l meeting note orig p q quote ref reg said sic stage textLang title unclear
dictionaries: case colloc def dictScrap entryFree etym form gen gram gramGrp hyph iType lang lbl mood number orth per pos pron stress subc syll tns usg xr
msdescription: accMat acquisition additions collation condition custEvent decoNote filiation foliation layout musicNotation origin provenance signatures source summary support surrogates typeNote
namesdates: occupation
tagdocs: attDef classSpec dataSpec elementSpec macroSpec schemaSpec specGrp
textstructure: argument body div div1 div2 div3 div4 div5 div6 div7 docEdition epigraph imprimatur postscript salute signed titlePart trailer
verse: rhyme
|
||||||||||||||||||
可包含 |
tagdocs: altIdent constraint equiv
|
||||||||||||||||||
註 |
A child constraint is required when the mode attribute has the value replace or add (or is not specified, as add is the default). No child elements are permitted when the mode attribute has the value delete. At least one child element is required when the mode attribute has the value change. |
||||||||||||||||||
例子 |
This constraint uses Schematron to enforce the presence of the spanTo attribute (which comes from an attribute class) on the addSpan element: <constraintSpec ident="demo-c1"
scheme="schematron"> <desc>Enforce the presence of the <att>spanTo</att> attribute</desc> <constraint> <sch:rule context="tei:addSpan"> <sch:assert test="@spanTo">The spanTo= attribute of <sch:name/> is required.</sch:assert> </sch:rule> </constraint> </constraintSpec> |
||||||||||||||||||
例子 |
<constraintSpec ident="demo-c2"
scheme="schematron"> <desc>Implement an accessibility rule which says that pictures should have textual explanations</desc> <constraint> <sch:rule context="tei:figure"> <sch:report test="not( tei:figDesc | tei:head )">You should provide information in a figure from which we can construct an alt attribute in HTML</sch:report> </sch:rule> </constraint> </constraintSpec> |
||||||||||||||||||
例子 |
This constraint uses SPITBOL (a language which is not expressed in XML) to check whether the title and author are identical: |
||||||||||||||||||
Schematron |
<sch:rule context="tei:constraintSpec[ @mode eq 'delete']"> <sch:report test="child::*">This constraintSpec element has a mode= of "delete" even though it has child elements. Change the mode= to "add", "change", or "replace", or remove the child elements.</sch:report> </sch:rule> <sch:rule context="tei:constraintSpec[ @mode eq 'change']"> <sch:assert test="child::*">This constraintSpec element has a mode= of "change", but does not have any child elements. Specify child elements, or change the mode= to "delete".</sch:assert> </sch:rule> <sch:rule context="tei:constraintSpec[ @mode = ('add','replace') ]"> <sch:assert test="child::tei:constraint">This constraintSpec element has a mode= of "<sch:value-of select="@mode"/>", but does not have a child 'constraint' element. Use a child 'constraint' element or change the mode= to "delete" or "change".</sch:assert> </sch:rule> |
||||||||||||||||||
Schematron | Relationship between scheme attribute and contents: Schematron 1.x
<sch:rule context="tei:constraintSpec"> <sch:report test="tei:constraint/sch1x:* and @scheme = ('isoschematron','schematron')">Rules in the Schematron 1.* language must be inside a constraintSpec with a value other than 'schematron' or 'isoschematron' on the scheme attribute</sch:report> </sch:rule> |
||||||||||||||||||
Schematron | Relationship between scheme attribute and contents: ISO Schematron
<sch:rule context="tei:constraintSpec[ @mode = ('add','replace') or not( @mode ) ]"> <sch:report test="tei:constraint/sch:* and not( @scheme eq 'schematron')">Rules in the ISO Schematron language must be inside a constraintSpec with the value 'schematron' on the scheme attribute</sch:report> </sch:rule> |
||||||||||||||||||
Schematron |
<sch:rule context="tei:constraintSpec[ @scheme eq 'schematron']/tei:constraint[ .//sch:assert | .//sch:report ]"> <sch:let name="assertsHaveContext" value="for $a in .//sch:assert return exists( $a/ancestor::sch:rule/@context )"/> <sch:let name="reportsHaveContext" value="for $r in .//sch:report return exists( $r/ancestor::sch:rule/@context )"/> <sch:report test="( $assertsHaveContext, $reportsHaveContext ) = false()" role="warning">The use of an <sch:assert> or <sch:report> that does not have a context (i.e., does not have an ancestor <sch:rule> with a @context attribute) in an ISO Schematron constraint specification is deprecated, and will become invalid after 2025-03-15.</sch:report> </sch:rule> |
||||||||||||||||||
Schematron |
<sch:rule context="tei:constraintSpec[ @mode eq 'add' or not( @mode ) ]"> <sch:let name="myIdent" value="normalize-space(@ident)"/> <sch:report test="preceding::tei:constraintSpec[ normalize-space(@ident) eq $myIdent ]"> The @ident of 'constraintSpec' should be unique; this one (<sch:value-of select="$myIdent"/>) is the same as that of a previous 'constraintSpec'. </sch:report> </sch:rule> |
||||||||||||||||||
Content model |
<content> |
||||||||||||||||||
宣告 |
<rng:element name="constraintSpec"> element constraintSpec { 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.typed.attribute.subtype, attribute type { "deprecationWarning" | teidata.enumerated }?, attribute scheme { "schematron" | teidata.enumerated }?, ( ( model.identSynonyms | model.descLike )*, constraint? ) } |