~ubuntu-branches/ubuntu/utopic/jing-trang/utopic

« back to all changes in this revision

Viewing changes to mod/nvdl/src/main/com/thaiopensource/validate/nvdl/resources/nvdl.rng

  • Committer: Bazaar Package Importer
  • Author(s): Samuel Thibault
  • Date: 2009-09-01 15:53:03 UTC
  • Revision ID: james.westby@ubuntu.com-20090901155303-2kweef05h5v9j3ni
Tags: upstream-20090818
ImportĀ upstreamĀ versionĀ 20090818

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?xml version="1.0" encoding="UTF-8"?>
 
2
<grammar ns="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0"
 
3
  datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
 
4
  xmlns="http://relaxng.org/ns/structure/1.0"
 
5
  xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0"
 
6
  xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">
 
7
  <start>
 
8
    <element name="rules">
 
9
      <interleave>
 
10
        <group>
 
11
          <optional>
 
12
            <ref name="schemaType"/>
 
13
          </optional>
 
14
          <zeroOrMore>
 
15
            <ref name="trigger"/>
 
16
          </zeroOrMore>
 
17
          <choice>
 
18
            <zeroOrMore>
 
19
              <ref name="rule"/>
 
20
            </zeroOrMore>
 
21
            <group>
 
22
              <attribute name="startMode">
 
23
                <data type="NCName"/>
 
24
              </attribute>
 
25
              <oneOrMore>
 
26
                <ref name="mode"/>
 
27
              </oneOrMore>
 
28
            </group>
 
29
          </choice>
 
30
        </group>
 
31
        <ref name="foreign"/>
 
32
      </interleave>
 
33
    </element>
 
34
  </start>
 
35
  <define name="trigger">
 
36
    <element name="trigger">
 
37
      <interleave>
 
38
        <group>
 
39
          <attribute name="ns">
 
40
            <data type="string"/>
 
41
          </attribute>
 
42
          <attribute name="nameList">
 
43
            <list>
 
44
              <oneOrMore><data type="NCName"/></oneOrMore>
 
45
            </list>
 
46
          </attribute>
 
47
        </group>
 
48
        <ref name="foreign"/>
 
49
      </interleave>
 
50
    </element>
 
51
  </define>
 
52
  <define name="mode">
 
53
    <element name="mode">
 
54
      <interleave>
 
55
        <group>
 
56
          <attribute name="name">
 
57
            <data type="NCName"/>
 
58
          </attribute>
 
59
          <zeroOrMore>
 
60
            <ref name="includedMode"/>
 
61
          </zeroOrMore>
 
62
          <zeroOrMore>
 
63
            <ref name="rule"/>
 
64
          </zeroOrMore>
 
65
        </group>
 
66
        <ref name="foreign"/>
 
67
      </interleave>
 
68
    </element>
 
69
  </define>
 
70
  <define name="includedMode">
 
71
    <element name="mode">
 
72
      <interleave>
 
73
        <group>
 
74
          <optional>
 
75
            <attribute name="name">
 
76
              <data type="NCName"/>
 
77
            </attribute>
 
78
          </optional>
 
79
          <zeroOrMore>
 
80
            <ref name="includedMode"/>
 
81
          </zeroOrMore>
 
82
          <zeroOrMore>
 
83
            <ref name="rule"/>
 
84
          </zeroOrMore>
 
85
        </group>
 
86
        <ref name="foreign"/>
 
87
      </interleave>
 
88
    </element>
 
89
  </define>
 
90
  <define name="rule">
 
91
    <choice>
 
92
      <element name="namespace">
 
93
        <interleave>
 
94
          <group>
 
95
            <attribute name="ns">
 
96
              <data type="string"/>
 
97
            </attribute>
 
98
            <optional>
 
99
              <attribute name="wildCard">
 
100
                <data type="string">
 
101
                  <param name="maxLength">1</param>
 
102
                </data>
 
103
              </attribute>
 
104
            </optional>
 
105
            <ref name="ruleModel"/>
 
106
          </group>
 
107
          <ref name="foreign"/>
 
108
        </interleave>
 
109
      </element>
 
110
      <element name="anyNamespace">
 
111
        <interleave>
 
112
          <ref name="ruleModel"/>
 
113
          <ref name="foreign"/>
 
114
        </interleave>
 
115
      </element>
 
116
    </choice>
 
117
  </define>
 
118
  <define name="ruleModel">
 
119
    <optional>
 
120
      <attribute name="match">
 
121
        <ref name="elementsOrAttributes"/>
 
122
      </attribute>
 
123
    </optional>
 
124
    <ref name="actions"/>
 
125
  </define>
 
126
  <define name="elementsOrAttributes">
 
127
    <list>
 
128
      <choice>
 
129
        <group>
 
130
          <value>elements</value>
 
131
          <value>attributes</value>
 
132
        </group>
 
133
        <group>
 
134
          <value>attributes</value>
 
135
          <value>elements</value>
 
136
        </group>
 
137
        <value>elements</value>
 
138
        <value>attributes</value>
 
139
      </choice>
 
140
    </list>
 
141
  </define>
 
142
  <define name="actions">
 
143
    <choice>
 
144
      <ref name="cancelAction"/>
 
145
      <group>
 
146
        <zeroOrMore>
 
147
          <ref name="noResultAction"/>
 
148
        </zeroOrMore>
 
149
        <choice>
 
150
          <ref name="noResultAction"/>
 
151
          <ref name="resultAction"/>
 
152
        </choice>
 
153
        <zeroOrMore>
 
154
          <ref name="noResultAction"/>
 
155
        </zeroOrMore>
 
156
      </group>
 
157
    </choice>
 
158
  </define>
 
159
  <define name="cancelAction">
 
160
    <element name="cancelNestedActions">
 
161
      <ref name="foreign"/>
 
162
    </element>
 
163
  </define>
 
164
  <define name="noResultAction">
 
165
    <choice>
 
166
      <element name="validate">
 
167
        <interleave>
 
168
          <group>
 
169
            <optional>
 
170
              <ref name="schemaType"/>
 
171
            </optional>
 
172
            <zeroOrMore>
 
173
              <choice>
 
174
                <ref name="message"/>
 
175
                <ref name="option"/>
 
176
              </choice>
 
177
            </zeroOrMore>
 
178
            <ref name="schema"/>
 
179
            <ref name="modeUsage"/>
 
180
          </group>
 
181
          <ref name="foreign"/>
 
182
        </interleave>
 
183
      </element>
 
184
      <element>
 
185
        <choice>
 
186
          <name>allow</name>
 
187
          <name>reject</name>
 
188
        </choice>
 
189
        <interleave>
 
190
          <group>
 
191
            <zeroOrMore>
 
192
              <ref name="message"/>
 
193
            </zeroOrMore>
 
194
            <ref name="modeUsage"/>
 
195
          </group>
 
196
          <ref name="foreign"/>
 
197
        </interleave>
 
198
      </element>
 
199
    </choice>
 
200
  </define>
 
201
  <define name="schema">
 
202
    <choice>
 
203
      <attribute name="schema">
 
204
        <data type="anyURI"/>
 
205
      </attribute>
 
206
      <element name="schema">
 
207
        <choice>
 
208
          <text/>
 
209
          <ref name="foreignElement"/>
 
210
        </choice>
 
211
        <zeroOrMore>
 
212
          <ref name="foreignAttribute"/>
 
213
        </zeroOrMore>
 
214
      </element>
 
215
    </choice>
 
216
  </define>
 
217
  <define name="message">
 
218
    <choice>
 
219
      <attribute name="message"/>
 
220
      <element name="message">
 
221
        <group>
 
222
          <text/>
 
223
          <zeroOrMore>
 
224
            <ref name="xmlAttribute"/>
 
225
          </zeroOrMore>
 
226
        </group>
 
227
        <zeroOrMore>
 
228
          <ref name="nonXMLForeignAttribute"/>
 
229
        </zeroOrMore>
 
230
      </element>
 
231
    </choice>
 
232
  </define>
 
233
  <define name="resultAction">
 
234
    <element>
 
235
      <choice>
 
236
        <name>attach</name>
 
237
        <name>attachPlaceholder</name>
 
238
        <name>unwrap</name>
 
239
      </choice>
 
240
      <interleave>
 
241
        <group>
 
242
          <zeroOrMore>
 
243
            <ref name="message"/>
 
244
          </zeroOrMore>
 
245
          <ref name="modeUsage"/>
 
246
        </group>
 
247
        <ref name="foreign"/>
 
248
      </interleave>
 
249
    </element>
 
250
  </define>
 
251
  <define name="option">
 
252
    <element name="option">
 
253
      <interleave>
 
254
        <group>
 
255
          <attribute name="name">
 
256
            <data type="anyURI"/>
 
257
          </attribute>
 
258
          <optional>
 
259
            <attribute name="arg"/>
 
260
          </optional>
 
261
          <optional>
 
262
            <attribute name="mustSupport">
 
263
              <data type="boolean"/>
 
264
            </attribute>
 
265
          </optional>
 
266
        </group>
 
267
        <ref name="foreign"/>
 
268
      </interleave>
 
269
    </element>
 
270
  </define>
 
271
  <define name="modeUsage">
 
272
    <optional>
 
273
      <choice>
 
274
        <attribute name="useMode">
 
275
          <data type="NCName"/>
 
276
        </attribute>
 
277
        <ref name="nestedMode"/>
 
278
      </choice>
 
279
    </optional>
 
280
    <zeroOrMore>
 
281
      <element name="context">
 
282
        <interleave>
 
283
          <group>
 
284
            <attribute name="path">
 
285
              <ref name="path"/>
 
286
            </attribute>
 
287
            <optional>
 
288
              <choice>
 
289
                <attribute name="useMode">
 
290
                  <data type="NCName"/>
 
291
                </attribute>
 
292
                <ref name="nestedMode"/>
 
293
              </choice>
 
294
            </optional>
 
295
          </group>
 
296
          <ref name="foreign"/>
 
297
        </interleave>
 
298
      </element>
 
299
    </zeroOrMore>
 
300
  </define>
 
301
  <define name="nestedMode">
 
302
    <element name="mode">
 
303
      <interleave>
 
304
        <group>
 
305
          <zeroOrMore>
 
306
            <ref name="includedMode"/>
 
307
          </zeroOrMore>
 
308
          <zeroOrMore>
 
309
            <ref name="rule"/>
 
310
          </zeroOrMore>
 
311
        </group>
 
312
        <ref name="foreign"/>
 
313
      </interleave>
 
314
    </element>
 
315
  </define>
 
316
  <define name="schemaType">
 
317
    <attribute name="schemaType">
 
318
      <ref name="mediaType"/>
 
319
    </attribute>
 
320
  </define>
 
321
  <define name="mediaType">
 
322
    <data type="string">
 
323
      <param name="pattern">\s*[0-9A-Za-z!#$%&amp;'\*\+\-\.\^_`\{\|\}~]*/[0-9A-Za-z!#$%&amp;'\*\+\-\.\^_`\{\|\}~]*\s*</param>
 
324
    </data>
 
325
  </define>
 
326
  <define name="path">
 
327
    <data type="string">
 
328
      <param name="pattern">\s*(/\s*)?\i\c*(\s*/\s*\i\c*)*\s*(\|\s*(/\s*)?\i\c*(\s*/\s*\i\c*)*\s*)*</param>
 
329
    </data>
 
330
  </define>
 
331
  <define name="foreignElement">
 
332
    <element>
 
333
      <anyName>
 
334
        <except>
 
335
          <nsName/>
 
336
        </except>
 
337
      </anyName>
 
338
      <zeroOrMore>
 
339
        <attribute>
 
340
          <anyName/>
 
341
        </attribute>
 
342
      </zeroOrMore>
 
343
      <mixed>
 
344
        <zeroOrMore>
 
345
          <ref name="anyElement"/>
 
346
        </zeroOrMore>
 
347
      </mixed>
 
348
    </element>
 
349
  </define>
 
350
  <define name="anyElement">
 
351
    <element>
 
352
      <anyName/>
 
353
      <zeroOrMore>
 
354
        <attribute>
 
355
          <anyName/>
 
356
        </attribute>
 
357
      </zeroOrMore>
 
358
      <mixed>
 
359
        <zeroOrMore>
 
360
          <ref name="anyElement"/>
 
361
        </zeroOrMore>
 
362
      </mixed>
 
363
    </element>
 
364
  </define>
 
365
  <define name="foreignAttribute">
 
366
    <attribute>
 
367
      <anyName>
 
368
        <except>
 
369
          <nsName/>
 
370
          <nsName ns=""/>
 
371
        </except>
 
372
      </anyName>
 
373
    </attribute>
 
374
  </define>
 
375
  <define name="nonXMLForeignAttribute">
 
376
    <attribute>
 
377
      <anyName>
 
378
        <except>
 
379
          <nsName ns="http://www.w3.org/XML/1998/namespace"/>
 
380
          <nsName/>
 
381
          <nsName ns=""/>
 
382
        </except>
 
383
      </anyName>
 
384
    </attribute>
 
385
  </define>
 
386
  <define name="xmlAttribute">
 
387
    <choice>
 
388
      <attribute name="xml:lang"/>
 
389
      <attribute name="xml:space">
 
390
        <choice>
 
391
          <value>default</value>
 
392
          <value>preserve</value>
 
393
        </choice>
 
394
      </attribute>
 
395
      <attribute name="xml:base">
 
396
        <data type="anyURI"/>
 
397
      </attribute>
 
398
    </choice>
 
399
  </define>
 
400
  <define name="foreign">
 
401
    <zeroOrMore>
 
402
      <ref name="foreignAttribute"/>
 
403
    </zeroOrMore>
 
404
    <zeroOrMore>
 
405
      <ref name="foreignElement"/>
 
406
    </zeroOrMore>
 
407
  </define>
 
408
</grammar>