This repository has been archived by the owner on Aug 30, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 11
/
teisimple.isosch
234 lines (230 loc) · 13 KB
/
teisimple.isosch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
<?xml version="1.0" encoding="utf-8"?>
<schema xmlns="http://purl.oclc.org/dsdl/schematron" queryBinding="xslt2">
<title>ISO Schematron rules</title>
<!-- This file generated 1970-01-01 by 'extract-isosch.xsl'. -->
<!-- ********************* -->
<!-- namespaces, declared: -->
<!-- ********************* -->
<ns prefix="tei" uri="http://www.tei-c.org/ns/1.0"/>
<ns prefix="xs" uri="http://www.w3.org/2001/XMLSchema"/>
<ns prefix="rng" uri="http://relaxng.org/ns/structure/1.0"/>
<!-- ********************* -->
<!-- namespaces, implicit: -->
<!-- ********************* -->
<ns prefix="tei" uri="http://www.tei-c.org/ns/1.0"/>
<!-- ************ -->
<!-- constraints: -->
<!-- ************ -->
<pattern id="teisimple-att.datable-calendar-constraint-calendar-1">
<rule context="tei:*[@calendar]">
<assert test="string-length(.) gt 0">
@calendar indicates the system or calendar to which the date represented by the content of this element
belongs, but this <name/> element has no textual content.</assert>
</rule>
</pattern>
<pattern id="teisimple-att.global.rendition-constraint-renditionpointer-2">
<rule context="tei:*[@rendition]">
<let name="results"
value="for $val in tokenize(normalize-space(@rendition),'\s+') return starts-with($val,'simple:') or (starts-with($val,'#') and //tei:rendition[@xml:id=substring($val,2)])"/>
<assert test="every $x in $results satisfies $x"> Error: Each of the rendition values in "<value-of select="@rendition"/>" must point to a local ID or to a token in the Simple scheme (<value-of select="$results"/>)</assert>
</rule>
</pattern>
<pattern id="teisimple-att.global.rendition-constraint-corresppointer-3">
<rule context="tei:*[@corresp]">
<let name="results"
value="for $t in tokenize(normalize-space(@corresp),'\s+') return starts-with($t,'#') and not(id(substring($t,2)))"/>
<report test="some $x in $results satisfies $x"> Error: Every local pointer in "<value-of select="@corresp"/>" must point to an ID in this document (<value-of select="$results"/>)</report>
</rule>
</pattern>
<pattern id="teisimple-att.typed-constraint-subtypeTyped-4">
<rule context="*[@subtype]">
<assert test="@type">The <name/> element should not be categorized in detail with @subtype
unless also categorized in general with @type</assert>
</rule>
</pattern>
<pattern id="teisimple-att.pointing-targetLang-constraint-targetLang-5">
<rule context="tei:*[not(self::tei:schemaSpec)][@targetLang]">
<assert test="@target">@targetLang should only be used on <name/> if @target is specified.</assert>
</rule>
</pattern>
<pattern id="teisimple-att.pointing-target-constraint-validtarget-6">
<rule context="tei:*[@target]">
<let name="results"
value="for $t in tokenize(normalize-space(@target),'\s+') return starts-with($t,'#') and not(id(substring($t,2)))"/>
<report test="some $x in $results satisfies $x"> Error: Every local pointer in "<value-of select="@target"/>" must point to an ID in this document (<value-of select="$results"/>)</report>
</rule>
</pattern>
<pattern id="teisimple-att.spanning-spanTo-constraint-spanTo-2-7">
<rule context="tei:*[@spanTo]">
<assert test="id(substring(@spanTo,2)) and following::*[@xml:id=substring(current()/@spanTo,2)]">
The element indicated by @spanTo (<value-of select="@spanTo"/>) must follow the current element <name/>
</assert>
</rule>
</pattern>
<pattern id="teisimple-att.styleDef-schemeVersion-constraint-schemeVersionRequiresScheme-8">
<rule context="tei:*[@schemeVersion]">
<assert test="@scheme and not(@scheme = 'free')">
@schemeVersion can only be used if @scheme is specified.
</assert>
</rule>
</pattern>
<pattern id="teisimple-quotation-constraint-quotationContents-9">
<rule context="tei:quotation">
<report test="not(@marks) and not (tei:p)">
On <name/>, either the @marks attribute should be used, or a paragraph of description provided</report>
</rule>
</pattern>
<pattern id="teisimple-biblStruct-constraint-deprecate-altIdentifier-child-10">
<rule context="tei:biblStruct">
<report test="child::tei:idno" role="nonfatal">WARNING: use of deprecated method — the use of the idno element as a direct child of the biblStruct element will be removed from the TEI on 2016-09-18</report>
</rule>
</pattern>
<pattern id="teisimple-msIdentifier-constraint-msId_minimal-11">
<rule context="tei:msIdentifier">
<report test="not(parent::tei:msPart) and (local-name(*[1])='idno' or local-name(*[1])='altIdentifier' or normalize-space(.)='')">An msIdentifier must contain either a repository or location of some type, or a manuscript name</report>
</rule>
</pattern>
<pattern id="teisimple-relatedItem-constraint-targetorcontent1-12">
<rule context="tei:relatedItem">
<report test="@target and count( child::* ) > 0">
If the @target attribute on <name/> is used, the
relatedItem element must be empty</report>
<assert test="@target or child::*">A relatedItem element should have either a 'target' attribute
or a child element to indicate the related bibliographic item</assert>
</rule>
</pattern>
<pattern id="teisimple-damageSpan-constraint-spanTo-13">
<rule context="tei:damageSpan">
<assert test="@spanTo">
The @spanTo attribute of <name/> is required.</assert>
</rule>
</pattern>
<pattern id="teisimple-ab-constraint-abstractModel-structure-p-15">
<rule context="tei:ab">
<report test="(ancestor::tei:p or ancestor::tei:ab) and not(parent::tei:exemplum |parent::tei:item |parent::tei:note |parent::tei:q |parent::tei:quote |parent::tei:remarks |parent::tei:said |parent::tei:sp |parent::tei:stage |parent::tei:cell |parent::tei:figure)">
Abstract model violation: ab may not contain paragraphs or other ab elements.
</report>
</rule>
</pattern>
<pattern id="teisimple-ab-constraint-abstractModel-structure-l-16">
<rule context="tei:ab">
<report test="ancestor::tei:l or ancestor::tei:lg">
Abstract model violation: Lines may not contain higher-level divisions such as p or ab.
</report>
</rule>
</pattern>
<pattern id="teisimple-addSpan-constraint-spanTo-17">
<rule context="tei:addSpan">
<assert test="@spanTo">The @spanTo attribute of <name/> is required.</assert>
</rule>
</pattern>
<pattern id="teisimple-bibl-constraint-noEmptyBibl-19">
<rule context="tei:bibl">
<assert test="child::* or child::text()[normalize-space()]" role="ERROR"> Element "<name/>" may not be
empty. </assert>
</rule>
</pattern>
<pattern id="teisimple-choice-constraint-choiceSize-20">
<rule context="tei:choice">
<assert test="count(*) > 1" role="ERROR"> Element
"<name/>" must have at least two child elements.</assert>
</rule>
</pattern>
<pattern id="teisimple-choice-constraint-choiceContent-21">
<rule context="tei:choice">
<assert test="(tei:corr or tei:sic or tei:expan or tei:abbr or tei:reg or tei:orig) and ((tei:corr and tei:sic) or (tei:expan and tei:abbr) or (tei:reg and tei:orig))"
role="ERROR"> Element "<name/>" must have corresponding corr/sic, expand/abbr, reg/orig </assert>
</rule>
</pattern>
<pattern id="teisimple-div-constraint-abstractModel-structure-l-22">
<rule context="tei:div">
<report test="ancestor::tei:l">
Abstract model violation: Lines may not contain higher-level structural elements such as div.
</report>
</rule>
</pattern>
<pattern id="teisimple-div-constraint-abstractModel-structure-p-23">
<rule context="tei:div">
<report test="ancestor::tei:p or ancestor::tei:ab and not(ancestor::tei:floatingText)">
Abstract model violation: p and ab may not contain higher-level structural elements such as div.
</report>
</rule>
</pattern>
<pattern id="teisimple-l-constraint-abstractModel-structure-l-24">
<rule context="tei:l">
<report test="ancestor::tei:l[not(.//tei:note//tei:l[. = current()])]">
Abstract model violation: Lines may not contain lines or lg elements.
</report>
</rule>
</pattern>
<pattern id="teisimple-lg-constraint-atleast1oflggapl-25">
<rule context="tei:lg">
<assert test="count(descendant::tei:lg|descendant::tei:l|descendant::tei:gap) > 0">An lg element
must contain at least one child l, lg or gap element.</assert>
</rule>
</pattern>
<pattern id="teisimple-lg-constraint-abstractModel-structure-l-26">
<rule context="tei:lg">
<report test="ancestor::tei:l[not(.//tei:note//tei:lg[. = current()])]">
Abstract model violation: Lines may not contain line groups.
</report>
</rule>
</pattern>
<pattern id="teisimple-list-constraint-gloss-list-must-have-labels-27">
<rule context="tei:list[@type='gloss']">
<assert test="tei:label">The content of a "gloss" list should include a sequence of one or more pairs of a label element followed by an item element</assert>
</rule>
</pattern>
<pattern id="teisimple-p-constraint-abstractModel-p-28">
<rule context="tei:p">
<report test="(ancestor::tei:p or ancestor::tei:ab) and not(parent::tei:exemplum |parent::tei:item |parent::tei:note |parent::tei:q |parent::tei:quote |parent::tei:remarks |parent::tei:said |parent::tei:sp |parent::tei:stage |parent::tei:cell |parent::tei:figure)">
Abstract model violation: Paragraphs may not contain other paragraphs or ab elements.
</report>
</rule>
</pattern>
<pattern id="teisimple-p-constraint-abstractModel-structure-l-29">
<rule context="tei:p">
<report test="ancestor::tei:l[not(.//tei:note//tei:p[. = current()])]">
Abstract model violation: Lines may not contain higher-level structural elements such as div, p, or ab.
</report>
</rule>
</pattern>
<pattern id="teisimple-pb-constraint-pbposition-30">
<rule context="tei:pb">
<report test="parent::*/text() and not (preceding-sibling::text() and following-sibling::text())">please make sure pb elements are not at the start or end of mixed content </report>
</rule>
</pattern>
<pattern id="teisimple-ref-constraint-refAtts-31">
<rule context="tei:ref">
<report test="@target and @cRef">Only one of the
attributes @target' and @cRef' may be supplied on <name/>
</report>
</rule>
</pattern>
<pattern id="teisimple-s-constraint-noNestedS-32">
<rule context="tei:s">
<report test="tei:s">You may not nest one s element within
another: use seg instead</report>
</rule>
</pattern>
<pattern id="teisimple-subst-constraint-substContents1-33">
<rule context="tei:subst">
<assert test="child::tei:add and child::tei:del">
<name/> must have at least one child add and at least one child del</assert>
</rule>
</pattern>
<pattern id="teisimple-text-constraint-headeronlyelement-36">
<rule context="tei:att | tei:biblFull | tei:biblScope | tei:biblStruct | tei:change | tei:charDecl | tei:charProp | tei:editor | tei:editorialDecl | tei:email | tei:encodingDesc | tei:extent | tei:fileDesc | tei:gi | tei:glyph | tei:glyphName | tei:idno | tei:imprint | tei:keywords | tei:licence | tei:listChange | tei:listPerson | tei:localName | tei:monogr | tei:msDesc | tei:msIdentifier | tei:person | tei:physDesc | tei:profileDesc | tei:publicationStmt | tei:relatedItem | tei:repository | tei:resp | tei:respStmt | tei:sourceDesc | tei:tag | tei:teiHeader | tei:term | tei:textClass | tei:textDesc | tei:titleStmt | tei:typeDesc | tei:val | tei:value">
<report test="ancestor::tei:text">Error: The element <name/> is not permitted outside the header</report>
</rule>
</pattern>
<!-- *********** -->
<!-- deprecated: -->
<!-- *********** -->
<pattern>
<rule context="tei:teiHeader">
<report test="@type" role="nonfatal">WARNING: use of deprecated attribute — @type of the teiHeader element will be removed from the TEI on 2016-11-18.
</report>
</rule>
</pattern>
</schema>