metanorma-ieee 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/rake.yml +13 -0
  3. data/.rubocop.yml +10 -0
  4. data/CODE_OF_CONDUCT.md +74 -0
  5. data/Gemfile +11 -0
  6. data/LICENSE +25 -0
  7. data/README.adoc +30 -0
  8. data/Rakefile +8 -0
  9. data/bin/console +14 -0
  10. data/bin/rspec +17 -0
  11. data/bin/setup +8 -0
  12. data/lib/html2doc/ieee.rb +89 -0
  13. data/lib/isodoc/ieee/base_convert.rb +33 -0
  14. data/lib/isodoc/ieee/html/header.html +146 -0
  15. data/lib/isodoc/ieee/html/html_ieee_intro.html +12 -0
  16. data/lib/isodoc/ieee/html/html_ieee_titlepage.html +44 -0
  17. data/lib/isodoc/ieee/html/htmlstyle.css +1027 -0
  18. data/lib/isodoc/ieee/html/htmlstyle.scss +736 -0
  19. data/lib/isodoc/ieee/html/ieee.css +3603 -0
  20. data/lib/isodoc/ieee/html/ieee.scss +3418 -0
  21. data/lib/isodoc/ieee/html/scripts.html +70 -0
  22. data/lib/isodoc/ieee/html/word_ieee_intro.html +70 -0
  23. data/lib/isodoc/ieee/html/word_ieee_titlepage.html +28 -0
  24. data/lib/isodoc/ieee/html/wordstyle.css +5310 -0
  25. data/lib/isodoc/ieee/html/wordstyle.scss +5026 -0
  26. data/lib/isodoc/ieee/html_convert.rb +52 -0
  27. data/lib/isodoc/ieee/i18n-en.yaml +28 -0
  28. data/lib/isodoc/ieee/i18n.rb +19 -0
  29. data/lib/isodoc/ieee/ieee.amendment.xsl +11177 -0
  30. data/lib/isodoc/ieee/ieee.rb +11 -0
  31. data/lib/isodoc/ieee/ieee.standard.xsl +11177 -0
  32. data/lib/isodoc/ieee/init.rb +28 -0
  33. data/lib/isodoc/ieee/metadata.rb +136 -0
  34. data/lib/isodoc/ieee/pdf_convert.rb +24 -0
  35. data/lib/isodoc/ieee/presentation_terms.rb +181 -0
  36. data/lib/isodoc/ieee/presentation_xml_convert.rb +89 -0
  37. data/lib/isodoc/ieee/word_authority.rb +160 -0
  38. data/lib/isodoc/ieee/word_cleanup.rb +134 -0
  39. data/lib/isodoc/ieee/word_convert.rb +75 -0
  40. data/lib/isodoc/ieee/xref.rb +77 -0
  41. data/lib/isodoc/ieee.rb +11 -0
  42. data/lib/metanorma/ieee/basicdoc.rng +1150 -0
  43. data/lib/metanorma/ieee/biblio.rng +1385 -0
  44. data/lib/metanorma/ieee/boilerplate.xml +298 -0
  45. data/lib/metanorma/ieee/cleanup.rb +160 -0
  46. data/lib/metanorma/ieee/converter.rb +81 -0
  47. data/lib/metanorma/ieee/front.rb +120 -0
  48. data/lib/metanorma/ieee/ieee.rng +97 -0
  49. data/lib/metanorma/ieee/isodoc.rng +2776 -0
  50. data/lib/metanorma/ieee/processor.rb +56 -0
  51. data/lib/metanorma/ieee/reqt.rng +226 -0
  52. data/lib/metanorma/ieee/validate.rb +198 -0
  53. data/lib/metanorma/ieee/validate_section.rb +119 -0
  54. data/lib/metanorma/ieee/validate_style.rb +108 -0
  55. data/lib/metanorma/ieee/version.rb +5 -0
  56. data/lib/metanorma/ieee.rb +11 -0
  57. data/lib/metanorma-ieee.rb +8 -0
  58. data/metanorma-itu.gemspec +41 -0
  59. metadata +284 -0
@@ -0,0 +1,1385 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ instantiations of this grammar may replace leaf strings
4
+ with more elaborated types; e.g. title (text) replaced with
5
+ title-main, title-intro, title-part; type replaced with
6
+ enum.
7
+
8
+ some renaming at leaf nodes is permissible
9
+
10
+ obligations can change both from optional to mandatory,
11
+ and from mandatory to optional; optional elements may
12
+ be omitted; freely positioned alternatives may be replaced
13
+ with strict ordering
14
+
15
+ DO NOT introduce a namespace here. We do not want a distinct namespace
16
+ for these elements, and a distinct namespace for any grammar inheriting
17
+ these elements; we just want one namespace for any child grammars
18
+ of this.
19
+ -->
20
+ <grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
21
+ <!--
22
+ https://www.myintervals.com/blog/2009/05/20/iso-8601-date-validation-that-doesnt-suck/
23
+ iso8601date = xsd:string { pattern = "([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24\:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?" }
24
+ Somewhat dumbed down for XSD regex:
25
+ -->
26
+ <define name="ISO8601DateTime">
27
+ <data type="string">
28
+ <param name="pattern">([\+\-]?\d{4})((-?)((0[1-9]|1[0-2])((-?)([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+)?)?((:?)[0-5]\d([.,]\d+)?)?([zZ]|([\+\-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?</param>
29
+ </data>
30
+ </define>
31
+ <define name="ISO8601Date">
32
+ <data type="string">
33
+ <param name="pattern">([\+\-]?\d{4})((-?)((0[1-9]|1[0-2])((-?)([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6]))))?</param>
34
+ </data>
35
+ </define>
36
+ <start>
37
+ <ref name="bibitem"/>
38
+ </start>
39
+ <define name="status">
40
+ <element name="status">
41
+ <ref name="stage"/>
42
+ <optional>
43
+ <ref name="substage"/>
44
+ </optional>
45
+ <optional>
46
+ <ref name="iteration"/>
47
+ </optional>
48
+ </element>
49
+ </define>
50
+ <define name="stage">
51
+ <element name="stage">
52
+ <optional>
53
+ <attribute name="abbreviation"/>
54
+ </optional>
55
+ <text/>
56
+ </element>
57
+ </define>
58
+ <define name="substage">
59
+ <element name="substage">
60
+ <optional>
61
+ <attribute name="abbreviation"/>
62
+ </optional>
63
+ <text/>
64
+ </element>
65
+ </define>
66
+ <define name="iteration">
67
+ <element name="iteration">
68
+ <text/>
69
+ </element>
70
+ </define>
71
+ <define name="language">
72
+ <element name="language">
73
+ <text/>
74
+ </element>
75
+ </define>
76
+ <define name="script">
77
+ <a:documentation>ISO-639</a:documentation>
78
+ <element name="script">
79
+ <text/>
80
+ </element>
81
+ </define>
82
+ <define name="edition">
83
+ <a:documentation>ISO-15924: Latn</a:documentation>
84
+ <element name="edition">
85
+ <optional>
86
+ <attribute name="number"/>
87
+ </optional>
88
+ <text/>
89
+ </element>
90
+ </define>
91
+ <define name="LocalizedString1">
92
+ <optional>
93
+ <!-- multiple languages and scripts possible: comma delimit them if so -->
94
+ <attribute name="language"/>
95
+ </optional>
96
+ <optional>
97
+ <attribute name="script"/>
98
+ </optional>
99
+ <text/>
100
+ </define>
101
+ <define name="LocalizedString">
102
+ <choice>
103
+ <ref name="LocalizedString1"/>
104
+ <oneOrMore>
105
+ <element name="variant">
106
+ <ref name="LocalizedString1"/>
107
+ </element>
108
+ </oneOrMore>
109
+ </choice>
110
+ </define>
111
+ <!--
112
+ Unlike UML, change type to format: type is overloaded
113
+ Would be need if plain were default value and could omit the attribute
114
+ Added LocalizedStringOrXsAny
115
+ -->
116
+ <define name="FormattedString">
117
+ <optional>
118
+ <!-- attribute format { ( "plain" | "html" | "docbook" | "tei" | "asciidoc" | "markdown" ) }?, -->
119
+ <attribute name="format">
120
+ <choice>
121
+ <value>text/plain</value>
122
+ <value>text/html</value>
123
+ <value>application/docbook+xml</value>
124
+ <value>application/tei+xml</value>
125
+ <value>text/x-asciidoc</value>
126
+ <value>text/markdown</value>
127
+ <value>application/x-metanorma+xml</value>
128
+ <text/>
129
+ </choice>
130
+ </attribute>
131
+ </optional>
132
+ <ref name="LocalizedStringOrXsAny"/>
133
+ </define>
134
+ <define name="LocalizedStringOrXsAny1">
135
+ <optional>
136
+ <!-- multiple languages and scripts possible: comma delimit them if so -->
137
+ <attribute name="language"/>
138
+ </optional>
139
+ <optional>
140
+ <attribute name="script"/>
141
+ </optional>
142
+ <oneOrMore>
143
+ <choice>
144
+ <text/>
145
+ <ref name="AnyElement"/>
146
+ </choice>
147
+ </oneOrMore>
148
+ </define>
149
+ <define name="LocalizedStringOrXsAny">
150
+ <choice>
151
+ <ref name="LocalizedStringOrXsAny1"/>
152
+ <oneOrMore>
153
+ <element name="variant">
154
+ <ref name="LocalizedStringOrXsAny1"/>
155
+ </element>
156
+ </oneOrMore>
157
+ </choice>
158
+ </define>
159
+ <define name="contributor">
160
+ <element name="contributor">
161
+ <zeroOrMore>
162
+ <ref name="role"/>
163
+ </zeroOrMore>
164
+ <ref name="ContributorInfo"/>
165
+ </element>
166
+ </define>
167
+ <define name="role">
168
+ <element name="role">
169
+ <optional>
170
+ <attribute name="type">
171
+ <choice>
172
+ <value>author</value>
173
+ <value>performer</value>
174
+ <value>publisher</value>
175
+ <value>editor</value>
176
+ <value>adapter</value>
177
+ <value>translator</value>
178
+ <value>distributor</value>
179
+ </choice>
180
+ </attribute>
181
+ </optional>
182
+ <zeroOrMore>
183
+ <ref name="roledescription"/>
184
+ </zeroOrMore>
185
+ </element>
186
+ </define>
187
+ <define name="ContributorInfo">
188
+ <choice>
189
+ <ref name="person"/>
190
+ <ref name="organization"/>
191
+ </choice>
192
+ </define>
193
+ <define name="roledescription">
194
+ <element name="description">
195
+ <ref name="FormattedString"/>
196
+ </element>
197
+ </define>
198
+ <define name="person">
199
+ <element name="person">
200
+ <optional>
201
+ <ref name="fullname"/>
202
+ </optional>
203
+ <zeroOrMore>
204
+ <ref name="affiliation"/>
205
+ </zeroOrMore>
206
+ <zeroOrMore>
207
+ <ref name="person-identifier"/>
208
+ </zeroOrMore>
209
+ <zeroOrMore>
210
+ <ref name="contact"/>
211
+ </zeroOrMore>
212
+ </element>
213
+ </define>
214
+ <define name="fullname">
215
+ <element name="name">
216
+ <ref name="FullNameType"/>
217
+ </element>
218
+ </define>
219
+ <define name="FullNameType">
220
+ <choice>
221
+ <group>
222
+ <zeroOrMore>
223
+ <ref name="prefix"/>
224
+ </zeroOrMore>
225
+ <zeroOrMore>
226
+ <ref name="forename"/>
227
+ </zeroOrMore>
228
+ <zeroOrMore>
229
+ <ref name="initial"/>
230
+ </zeroOrMore>
231
+ <ref name="surname"/>
232
+ <zeroOrMore>
233
+ <ref name="addition"/>
234
+ </zeroOrMore>
235
+ </group>
236
+ <ref name="completeName"/>
237
+ </choice>
238
+ <zeroOrMore>
239
+ <ref name="biblionote"/>
240
+ </zeroOrMore>
241
+ <zeroOrMore>
242
+ <ref name="variantname"/>
243
+ </zeroOrMore>
244
+ </define>
245
+ <define name="prefix">
246
+ <element name="prefix">
247
+ <ref name="LocalizedString"/>
248
+ </element>
249
+ </define>
250
+ <define name="initial">
251
+ <element name="initial">
252
+ <ref name="LocalizedString"/>
253
+ </element>
254
+ </define>
255
+ <define name="addition">
256
+ <element name="addition">
257
+ <ref name="LocalizedString"/>
258
+ </element>
259
+ </define>
260
+ <define name="surname">
261
+ <element name="surname">
262
+ <ref name="LocalizedString"/>
263
+ </element>
264
+ </define>
265
+ <define name="forename">
266
+ <element name="forename">
267
+ <ref name="LocalizedString"/>
268
+ </element>
269
+ </define>
270
+ <define name="completeName">
271
+ <element name="completename">
272
+ <ref name="LocalizedString"/>
273
+ </element>
274
+ </define>
275
+ <define name="variantname">
276
+ <element name="variant">
277
+ <attribute name="type"/>
278
+ <ref name="FullNameType"/>
279
+ </element>
280
+ </define>
281
+ <define name="affiliation">
282
+ <element name="affiliation">
283
+ <optional>
284
+ <ref name="affiliationname"/>
285
+ </optional>
286
+ <zeroOrMore>
287
+ <ref name="affiliationdescription"/>
288
+ </zeroOrMore>
289
+ <ref name="organization"/>
290
+ </element>
291
+ </define>
292
+ <define name="affiliationname">
293
+ <element name="name">
294
+ <ref name="LocalizedString"/>
295
+ </element>
296
+ </define>
297
+ <define name="affiliationdescription">
298
+ <element name="description">
299
+ <ref name="FormattedString"/>
300
+ </element>
301
+ </define>
302
+ <define name="organization">
303
+ <element name="organization">
304
+ <oneOrMore>
305
+ <ref name="orgname"/>
306
+ </oneOrMore>
307
+ <zeroOrMore>
308
+ <ref name="subdivision"/>
309
+ </zeroOrMore>
310
+ <optional>
311
+ <ref name="abbreviation"/>
312
+ </optional>
313
+ <zeroOrMore>
314
+ <ref name="uri"/>
315
+ </zeroOrMore>
316
+ <zeroOrMore>
317
+ <ref name="org-identifier"/>
318
+ </zeroOrMore>
319
+ <zeroOrMore>
320
+ <ref name="contact"/>
321
+ </zeroOrMore>
322
+ </element>
323
+ </define>
324
+ <define name="orgname">
325
+ <element name="name">
326
+ <choice>
327
+ <ref name="LocalizedString"/>
328
+ <ref name="NameWithVariants"/>
329
+ </choice>
330
+ </element>
331
+ </define>
332
+ <define name="subdivision">
333
+ <element name="subdivision">
334
+ <choice>
335
+ <ref name="LocalizedString"/>
336
+ <ref name="NameWithVariants"/>
337
+ </choice>
338
+ </element>
339
+ </define>
340
+ <define name="NameWithVariants">
341
+ <element name="primary">
342
+ <ref name="LocalizedString"/>
343
+ </element>
344
+ <zeroOrMore>
345
+ <element name="variant">
346
+ <ref name="NameWithVariants1"/>
347
+ </element>
348
+ </zeroOrMore>
349
+ </define>
350
+ <define name="NameWithVariants1">
351
+ <attribute name="type"/>
352
+ <element name="primary">
353
+ <ref name="LocalizedString"/>
354
+ </element>
355
+ <zeroOrMore>
356
+ <element name="variant">
357
+ <ref name="NameWithVariants1"/>
358
+ </element>
359
+ </zeroOrMore>
360
+ </define>
361
+ <define name="abbreviation">
362
+ <element name="abbreviation">
363
+ <ref name="LocalizedString"/>
364
+ </element>
365
+ </define>
366
+ <define name="uri">
367
+ <element name="uri">
368
+ <optional>
369
+ <attribute name="type"/>
370
+ </optional>
371
+ <data type="anyURI"/>
372
+ </element>
373
+ </define>
374
+ <!-- TODO may change -->
375
+ <define name="contact">
376
+ <choice>
377
+ <ref name="address"/>
378
+ <ref name="phone"/>
379
+ <ref name="email"/>
380
+ <ref name="uri"/>
381
+ </choice>
382
+ </define>
383
+ <define name="phone">
384
+ <element name="phone">
385
+ <optional>
386
+ <attribute name="type"/>
387
+ </optional>
388
+ <text/>
389
+ </element>
390
+ </define>
391
+ <define name="email">
392
+ <element name="email">
393
+ <text/>
394
+ </element>
395
+ </define>
396
+ <define name="address">
397
+ <element name="address">
398
+ <choice>
399
+ <!-- iso191606 TODO -->
400
+ <group>
401
+ <zeroOrMore>
402
+ <ref name="street"/>
403
+ </zeroOrMore>
404
+ <ref name="city"/>
405
+ <optional>
406
+ <ref name="state"/>
407
+ </optional>
408
+ <ref name="country"/>
409
+ <optional>
410
+ <ref name="postcode"/>
411
+ </optional>
412
+ </group>
413
+ <ref name="formattedAddress"/>
414
+ </choice>
415
+ </element>
416
+ </define>
417
+ <define name="street">
418
+ <element name="street">
419
+ <text/>
420
+ </element>
421
+ </define>
422
+ <define name="city">
423
+ <element name="city">
424
+ <text/>
425
+ </element>
426
+ </define>
427
+ <define name="state">
428
+ <element name="state">
429
+ <text/>
430
+ </element>
431
+ </define>
432
+ <define name="country">
433
+ <element name="country">
434
+ <text/>
435
+ </element>
436
+ </define>
437
+ <define name="postcode">
438
+ <element name="postcode">
439
+ <text/>
440
+ </element>
441
+ </define>
442
+ <define name="formattedAddress">
443
+ <element name="formattedAddress">
444
+ <text/>
445
+ </element>
446
+ </define>
447
+ <define name="person-identifier">
448
+ <element name="identifier">
449
+ <attribute name="type">
450
+ <choice>
451
+ <value>isni</value>
452
+ <value>orcid</value>
453
+ <value>uri</value>
454
+ </choice>
455
+ </attribute>
456
+ <text/>
457
+ </element>
458
+ </define>
459
+ <define name="org-identifier">
460
+ <element name="identifier">
461
+ <attribute name="type">
462
+ <data type="string" datatypeLibrary=""/>
463
+ </attribute>
464
+ <text/>
465
+ </element>
466
+ </define>
467
+ <define name="citation">
468
+ <element name="citation">
469
+ <ref name="CitationType"/>
470
+ </element>
471
+ </define>
472
+ <define name="CitationType">
473
+ <attribute name="bibitemid">
474
+ <data type="IDREF"/>
475
+ </attribute>
476
+ <choice>
477
+ <zeroOrMore>
478
+ <ref name="locality"/>
479
+ </zeroOrMore>
480
+ <zeroOrMore>
481
+ <ref name="localityStack"/>
482
+ </zeroOrMore>
483
+ </choice>
484
+ <optional>
485
+ <ref name="date"/>
486
+ </optional>
487
+ </define>
488
+ <define name="date">
489
+ <element name="date">
490
+ <ref name="ISO8601Date"/>
491
+ </element>
492
+ </define>
493
+ <define name="locality">
494
+ <element name="locality">
495
+ <ref name="BibItemLocality"/>
496
+ </element>
497
+ </define>
498
+ <define name="localityStack">
499
+ <element name="localityStack">
500
+ <zeroOrMore>
501
+ <ref name="locality"/>
502
+ </zeroOrMore>
503
+ </element>
504
+ </define>
505
+ <define name="sourceLocality">
506
+ <element name="sourceLocality">
507
+ <ref name="BibItemLocality"/>
508
+ </element>
509
+ </define>
510
+ <define name="sourceLocalityStack">
511
+ <element name="sourceLocalityStack">
512
+ <zeroOrMore>
513
+ <ref name="sourceLocality"/>
514
+ </zeroOrMore>
515
+ </element>
516
+ </define>
517
+ <define name="BibItemLocality">
518
+ <attribute name="type">
519
+ <ref name="LocalityType"/>
520
+ </attribute>
521
+ <optional>
522
+ <ref name="referenceFrom"/>
523
+ </optional>
524
+ <optional>
525
+ <ref name="referenceTo"/>
526
+ </optional>
527
+ </define>
528
+ <define name="LocalityType">
529
+ <data type="string">
530
+ <param name="pattern">section|clause|part|paragraph|chapter|page|title|line|whole|table|annex|figure|note|list|example|volume|issue|time|anchor|locality:[a-zA-Z0-9_]+</param>
531
+ </data>
532
+ </define>
533
+ <define name="referenceFrom">
534
+ <element name="referenceFrom">
535
+ <text/>
536
+ </element>
537
+ </define>
538
+ <define name="referenceTo">
539
+ <element name="referenceTo">
540
+ <text/>
541
+ </element>
542
+ </define>
543
+ <!-- unlike UML, has id attribute; that results from including bibitem in a docmodel -->
544
+ <define name="bibitem">
545
+ <element name="bibitem">
546
+ <attribute name="id">
547
+ <data type="ID"/>
548
+ </attribute>
549
+ <ref name="BibliographicItem"/>
550
+ </element>
551
+ </define>
552
+ <define name="bibitem_no_id">
553
+ <element name="bibitem">
554
+ <ref name="BibliographicItem"/>
555
+ </element>
556
+ </define>
557
+ <define name="relaton_collection">
558
+ <element name="relaton-collection">
559
+ <optional>
560
+ <attribute name="type"/>
561
+ </optional>
562
+ <ref name="btitle"/>
563
+ <zeroOrMore>
564
+ <ref name="contributor"/>
565
+ </zeroOrMore>
566
+ <zeroOrMore>
567
+ <ref name="docrelation"/>
568
+ </zeroOrMore>
569
+ </element>
570
+ </define>
571
+ <define name="BibItemType" combine="choice">
572
+ <choice>
573
+ <value>article</value>
574
+ <value>book</value>
575
+ <value>booklet</value>
576
+ <value>manual</value>
577
+ <value>proceedings</value>
578
+ <value>presentation</value>
579
+ <value>thesis</value>
580
+ <value>techreport</value>
581
+ <value>standard</value>
582
+ <value>unpublished</value>
583
+ <value>map</value>
584
+ <value>electronic resource</value>
585
+ <value>audiovisual</value>
586
+ <value>film</value>
587
+ <value>video</value>
588
+ <value>broadcast</value>
589
+ <value>software</value>
590
+ <value>graphic_work</value>
591
+ <value>music</value>
592
+ <value>patent</value>
593
+ <value>inbook</value>
594
+ <value>incollection</value>
595
+ <value>inproceedings</value>
596
+ <value>journal</value>
597
+ <value>website</value>
598
+ <value>webresource</value>
599
+ <value>dataset</value>
600
+ <value>archival</value>
601
+ <value>social_media</value>
602
+ <value>alert</value>
603
+ <value>message</value>
604
+ <value>conversation</value>
605
+ <value>misc</value>
606
+ </choice>
607
+ </define>
608
+ <define name="BibliographicItem">
609
+ <optional>
610
+ <attribute name="type">
611
+ <ref name="BibItemType"/>
612
+ </attribute>
613
+ </optional>
614
+ <optional>
615
+ <ref name="fetched"/>
616
+ </optional>
617
+ <optional>
618
+ <ref name="formattedref"/>
619
+ </optional>
620
+ <oneOrMore>
621
+ <ref name="btitle"/>
622
+ </oneOrMore>
623
+ <zeroOrMore>
624
+ <ref name="bsource"/>
625
+ </zeroOrMore>
626
+ <oneOrMore>
627
+ <ref name="docidentifier"/>
628
+ </oneOrMore>
629
+ <optional>
630
+ <ref name="docnumber"/>
631
+ </optional>
632
+ <zeroOrMore>
633
+ <ref name="bdate"/>
634
+ </zeroOrMore>
635
+ <zeroOrMore>
636
+ <ref name="contributor"/>
637
+ </zeroOrMore>
638
+ <optional>
639
+ <ref name="edition"/>
640
+ </optional>
641
+ <zeroOrMore>
642
+ <ref name="version"/>
643
+ </zeroOrMore>
644
+ <zeroOrMore>
645
+ <ref name="biblionote"/>
646
+ </zeroOrMore>
647
+ <zeroOrMore>
648
+ <ref name="language"/>
649
+ </zeroOrMore>
650
+ <zeroOrMore>
651
+ <ref name="script"/>
652
+ </zeroOrMore>
653
+ <zeroOrMore>
654
+ <ref name="bibabstract"/>
655
+ </zeroOrMore>
656
+ <optional>
657
+ <ref name="status"/>
658
+ </optional>
659
+ <zeroOrMore>
660
+ <ref name="copyright"/>
661
+ </zeroOrMore>
662
+ <zeroOrMore>
663
+ <ref name="docrelation"/>
664
+ </zeroOrMore>
665
+ <zeroOrMore>
666
+ <ref name="series"/>
667
+ </zeroOrMore>
668
+ <optional>
669
+ <ref name="medium"/>
670
+ </optional>
671
+ <zeroOrMore>
672
+ <ref name="bplace"/>
673
+ </zeroOrMore>
674
+ <zeroOrMore>
675
+ <ref name="bprice"/>
676
+ </zeroOrMore>
677
+ <zeroOrMore>
678
+ <ref name="extent"/>
679
+ </zeroOrMore>
680
+ <optional>
681
+ <ref name="bibliographic_size"/>
682
+ </optional>
683
+ <zeroOrMore>
684
+ <ref name="accesslocation"/>
685
+ </zeroOrMore>
686
+ <zeroOrMore>
687
+ <ref name="license"/>
688
+ </zeroOrMore>
689
+ <zeroOrMore>
690
+ <ref name="bclassification"/>
691
+ </zeroOrMore>
692
+ <zeroOrMore>
693
+ <ref name="bkeyword"/>
694
+ </zeroOrMore>
695
+ <optional>
696
+ <ref name="validity"/>
697
+ </optional>
698
+ </define>
699
+ <define name="ReducedBibliographicItem">
700
+ <optional>
701
+ <attribute name="type">
702
+ <ref name="BibItemType"/>
703
+ </attribute>
704
+ </optional>
705
+ <optional>
706
+ <ref name="fetched"/>
707
+ </optional>
708
+ <optional>
709
+ <ref name="formattedref"/>
710
+ </optional>
711
+ <zeroOrMore>
712
+ <ref name="btitle"/>
713
+ </zeroOrMore>
714
+ <zeroOrMore>
715
+ <ref name="bsource"/>
716
+ </zeroOrMore>
717
+ <zeroOrMore>
718
+ <ref name="docidentifier"/>
719
+ </zeroOrMore>
720
+ <optional>
721
+ <ref name="docnumber"/>
722
+ </optional>
723
+ <zeroOrMore>
724
+ <ref name="bdate"/>
725
+ </zeroOrMore>
726
+ <zeroOrMore>
727
+ <ref name="contributor"/>
728
+ </zeroOrMore>
729
+ <optional>
730
+ <ref name="edition"/>
731
+ </optional>
732
+ <zeroOrMore>
733
+ <ref name="version"/>
734
+ </zeroOrMore>
735
+ <zeroOrMore>
736
+ <ref name="biblionote"/>
737
+ </zeroOrMore>
738
+ <zeroOrMore>
739
+ <ref name="language"/>
740
+ </zeroOrMore>
741
+ <zeroOrMore>
742
+ <ref name="script"/>
743
+ </zeroOrMore>
744
+ <zeroOrMore>
745
+ <ref name="bibabstract"/>
746
+ </zeroOrMore>
747
+ <optional>
748
+ <ref name="status"/>
749
+ </optional>
750
+ <zeroOrMore>
751
+ <ref name="copyright"/>
752
+ </zeroOrMore>
753
+ <zeroOrMore>
754
+ <ref name="docrelation"/>
755
+ </zeroOrMore>
756
+ <zeroOrMore>
757
+ <ref name="series"/>
758
+ </zeroOrMore>
759
+ <optional>
760
+ <ref name="medium"/>
761
+ </optional>
762
+ <zeroOrMore>
763
+ <ref name="bplace"/>
764
+ </zeroOrMore>
765
+ <zeroOrMore>
766
+ <ref name="bprice"/>
767
+ </zeroOrMore>
768
+ <zeroOrMore>
769
+ <ref name="extent"/>
770
+ </zeroOrMore>
771
+ <optional>
772
+ <ref name="bibliographic_size"/>
773
+ </optional>
774
+ <zeroOrMore>
775
+ <ref name="accesslocation"/>
776
+ </zeroOrMore>
777
+ <zeroOrMore>
778
+ <ref name="license"/>
779
+ </zeroOrMore>
780
+ <zeroOrMore>
781
+ <ref name="bclassification"/>
782
+ </zeroOrMore>
783
+ <zeroOrMore>
784
+ <ref name="bkeyword"/>
785
+ </zeroOrMore>
786
+ <optional>
787
+ <ref name="validity"/>
788
+ </optional>
789
+ </define>
790
+ <define name="btitle">
791
+ <element name="title">
792
+ <ref name="TypedTitleString"/>
793
+ </element>
794
+ </define>
795
+ <define name="bsource">
796
+ <element name="uri">
797
+ <ref name="TypedUri"/>
798
+ </element>
799
+ </define>
800
+ <define name="formattedref">
801
+ <element name="formattedref">
802
+ <ref name="FormattedString"/>
803
+ </element>
804
+ </define>
805
+ <define name="license">
806
+ <element name="license">
807
+ <text/>
808
+ </element>
809
+ </define>
810
+ <define name="fetched">
811
+ <element name="fetched">
812
+ <ref name="ISO8601DateTime"/>
813
+ </element>
814
+ </define>
815
+ <define name="validity">
816
+ <element name="validity">
817
+ <optional>
818
+ <ref name="validityBegins"/>
819
+ </optional>
820
+ <optional>
821
+ <ref name="validityEnds"/>
822
+ </optional>
823
+ <optional>
824
+ <ref name="validityRevision"/>
825
+ </optional>
826
+ </element>
827
+ </define>
828
+ <define name="validityBegins">
829
+ <element name="validityBegins">
830
+ <ref name="ISO8601DateTime"/>
831
+ </element>
832
+ </define>
833
+ <define name="validityEnds">
834
+ <element name="validityEnds">
835
+ <ref name="ISO8601DateTime"/>
836
+ </element>
837
+ </define>
838
+ <define name="validityRevision">
839
+ <element name="revision">
840
+ <ref name="ISO8601DateTime"/>
841
+ </element>
842
+ </define>
843
+ <define name="TypedTitleString">
844
+ <optional>
845
+ <attribute name="type"/>
846
+ </optional>
847
+ <ref name="FormattedString"/>
848
+ </define>
849
+ <!-- TitleType = ( "alternative" | "original" | "unofficial" | "subtitle" | "main" ) -->
850
+ <define name="TypedUri">
851
+ <optional>
852
+ <attribute name="type"/>
853
+ </optional>
854
+ <data type="anyURI"/>
855
+ </define>
856
+ <define name="DateType">
857
+ <optional>
858
+ <attribute name="text"/>
859
+ </optional>
860
+ <optional>
861
+ <ref name="ISO8601Date"/>
862
+ </optional>
863
+ </define>
864
+ <define name="BibliographicDateType">
865
+ <choice>
866
+ <value>published</value>
867
+ <value>accessed</value>
868
+ <value>created</value>
869
+ <value>implemented</value>
870
+ <value>obsoleted</value>
871
+ <value>confirmed</value>
872
+ <value>updated</value>
873
+ <value>issued</value>
874
+ <value>transmitted</value>
875
+ <value>copied</value>
876
+ <value>unchanged</value>
877
+ <value>circulated</value>
878
+ <value>adapted</value>
879
+ <value>vote-started</value>
880
+ <value>vote-ended</value>
881
+ <value>announced</value>
882
+ </choice>
883
+ </define>
884
+ <define name="bdate">
885
+ <element name="date">
886
+ <attribute name="type">
887
+ <choice>
888
+ <ref name="BibliographicDateType"/>
889
+ <text/>
890
+ </choice>
891
+ </attribute>
892
+ <optional>
893
+ <attribute name="text"/>
894
+ </optional>
895
+ <optional>
896
+ <choice>
897
+ <group>
898
+ <element name="from">
899
+ <ref name="ISO8601Date"/>
900
+ </element>
901
+ <optional>
902
+ <element name="to">
903
+ <ref name="ISO8601Date"/>
904
+ </element>
905
+ </optional>
906
+ </group>
907
+ <element name="on">
908
+ <ref name="ISO8601Date"/>
909
+ </element>
910
+ </choice>
911
+ </optional>
912
+ </element>
913
+ </define>
914
+ <define name="docidentifier">
915
+ <element name="docidentifier">
916
+ <optional>
917
+ <attribute name="type"/>
918
+ </optional>
919
+ <optional>
920
+ <attribute name="scope"/>
921
+ </optional>
922
+ <optional>
923
+ <attribute name="primary">
924
+ <data type="boolean"/>
925
+ </attribute>
926
+ </optional>
927
+ <optional>
928
+ <attribute name="language"/>
929
+ </optional>
930
+ <optional>
931
+ <attribute name="script"/>
932
+ </optional>
933
+ <text/>
934
+ </element>
935
+ </define>
936
+ <define name="docnumber">
937
+ <element name="docnumber">
938
+ <text/>
939
+ </element>
940
+ </define>
941
+ <define name="bclassification">
942
+ <element name="classification">
943
+ <optional>
944
+ <attribute name="type"/>
945
+ </optional>
946
+ <text/>
947
+ </element>
948
+ </define>
949
+ <define name="bplace">
950
+ <element name="place">
951
+ <choice>
952
+ <text/>
953
+ <group>
954
+ <ref name="bibliocity"/>
955
+ <zeroOrMore>
956
+ <ref name="biblioregion"/>
957
+ </zeroOrMore>
958
+ <zeroOrMore>
959
+ <ref name="bibliocountry"/>
960
+ </zeroOrMore>
961
+ </group>
962
+ </choice>
963
+ </element>
964
+ </define>
965
+ <define name="bibliocity">
966
+ <element name="city">
967
+ <text/>
968
+ </element>
969
+ </define>
970
+ <define name="biblioregion">
971
+ <element name="region">
972
+ <ref name="RegionType"/>
973
+ </element>
974
+ </define>
975
+ <define name="bibliocountry">
976
+ <element name="country">
977
+ <ref name="RegionType"/>
978
+ </element>
979
+ </define>
980
+ <define name="RegionType">
981
+ <optional>
982
+ <attribute name="iso"/>
983
+ </optional>
984
+ <optional>
985
+ <attribute name="recommended">
986
+ <data type="boolean"/>
987
+ </attribute>
988
+ </optional>
989
+ <text/>
990
+ </define>
991
+ <define name="bprice">
992
+ <element name="price">
993
+ <attribute name="currency"/>
994
+ <text/>
995
+ </element>
996
+ </define>
997
+ <define name="medium">
998
+ <element name="medium">
999
+ <optional>
1000
+ <ref name="bcontent"/>
1001
+ </optional>
1002
+ <optional>
1003
+ <ref name="genre"/>
1004
+ </optional>
1005
+ <optional>
1006
+ <ref name="form"/>
1007
+ </optional>
1008
+ <optional>
1009
+ <ref name="carrier"/>
1010
+ </optional>
1011
+ <optional>
1012
+ <ref name="size"/>
1013
+ </optional>
1014
+ <optional>
1015
+ <ref name="scale"/>
1016
+ </optional>
1017
+ </element>
1018
+ </define>
1019
+ <define name="bcontent">
1020
+ <element name="content">
1021
+ <text/>
1022
+ </element>
1023
+ </define>
1024
+ <define name="genre">
1025
+ <element name="genre">
1026
+ <text/>
1027
+ </element>
1028
+ </define>
1029
+ <define name="form">
1030
+ <element name="form">
1031
+ <text/>
1032
+ </element>
1033
+ </define>
1034
+ <define name="carrier">
1035
+ <element name="carrier">
1036
+ <text/>
1037
+ </element>
1038
+ </define>
1039
+ <define name="size">
1040
+ <element name="size">
1041
+ <text/>
1042
+ </element>
1043
+ </define>
1044
+ <define name="scale">
1045
+ <element name="scale">
1046
+ <text/>
1047
+ </element>
1048
+ </define>
1049
+ <define name="accesslocation">
1050
+ <element name="accesslocation">
1051
+ <text/>
1052
+ </element>
1053
+ </define>
1054
+ <define name="sizevalue">
1055
+ <element name="value">
1056
+ <attribute name="type"/>
1057
+ <text/>
1058
+ </element>
1059
+ </define>
1060
+ <define name="bibliographic_size">
1061
+ <element name="size">
1062
+ <oneOrMore>
1063
+ <ref name="sizevalue"/>
1064
+ </oneOrMore>
1065
+ </element>
1066
+ </define>
1067
+ <define name="extent">
1068
+ <element name="extent">
1069
+ <choice>
1070
+ <zeroOrMore>
1071
+ <ref name="locality"/>
1072
+ </zeroOrMore>
1073
+ <zeroOrMore>
1074
+ <ref name="localityStack"/>
1075
+ </zeroOrMore>
1076
+ </choice>
1077
+ </element>
1078
+ </define>
1079
+ <define name="series">
1080
+ <element name="series">
1081
+ <optional>
1082
+ <attribute name="type">
1083
+ <ref name="SeriesType"/>
1084
+ </attribute>
1085
+ </optional>
1086
+ <optional>
1087
+ <ref name="formattedref"/>
1088
+ </optional>
1089
+ <ref name="btitle"/>
1090
+ <optional>
1091
+ <ref name="bplace"/>
1092
+ </optional>
1093
+ <optional>
1094
+ <ref name="seriesorganization"/>
1095
+ </optional>
1096
+ <optional>
1097
+ <ref name="abbreviation"/>
1098
+ </optional>
1099
+ <optional>
1100
+ <ref name="seriesfrom"/>
1101
+ </optional>
1102
+ <optional>
1103
+ <ref name="seriesto"/>
1104
+ </optional>
1105
+ <optional>
1106
+ <ref name="seriesnumber"/>
1107
+ </optional>
1108
+ <optional>
1109
+ <ref name="seriespartnumber"/>
1110
+ </optional>
1111
+ <optional>
1112
+ <ref name="seriesrun"/>
1113
+ </optional>
1114
+ </element>
1115
+ </define>
1116
+ <define name="SeriesType">
1117
+ <choice>
1118
+ <value>main</value>
1119
+ <value>alt</value>
1120
+ <text/>
1121
+ </choice>
1122
+ </define>
1123
+ <define name="seriesorganization">
1124
+ <element name="organization">
1125
+ <text/>
1126
+ </element>
1127
+ </define>
1128
+ <define name="seriesfrom">
1129
+ <element name="from">
1130
+ <ref name="ISO8601Date"/>
1131
+ </element>
1132
+ </define>
1133
+ <define name="seriesto">
1134
+ <element name="to">
1135
+ <ref name="ISO8601Date"/>
1136
+ </element>
1137
+ </define>
1138
+ <define name="seriesnumber">
1139
+ <element name="number">
1140
+ <text/>
1141
+ </element>
1142
+ </define>
1143
+ <define name="seriespartnumber">
1144
+ <element name="partnumber">
1145
+ <text/>
1146
+ </element>
1147
+ </define>
1148
+ <define name="seriesrun">
1149
+ <element name="run">
1150
+ <text/>
1151
+ </element>
1152
+ </define>
1153
+ <define name="biblionote">
1154
+ <element name="note">
1155
+ <optional>
1156
+ <attribute name="type"/>
1157
+ </optional>
1158
+ <ref name="FormattedString"/>
1159
+ </element>
1160
+ </define>
1161
+ <define name="bibabstract">
1162
+ <element name="abstract">
1163
+ <ref name="FormattedString"/>
1164
+ </element>
1165
+ </define>
1166
+ <define name="copyright">
1167
+ <element name="copyright">
1168
+ <ref name="from"/>
1169
+ <optional>
1170
+ <ref name="to"/>
1171
+ </optional>
1172
+ <oneOrMore>
1173
+ <ref name="owner"/>
1174
+ </oneOrMore>
1175
+ <optional>
1176
+ <ref name="copyright_scope"/>
1177
+ </optional>
1178
+ </element>
1179
+ </define>
1180
+ <define name="copyright_scope">
1181
+ <element name="scope">
1182
+ <text/>
1183
+ </element>
1184
+ </define>
1185
+ <define name="from">
1186
+ <element name="from">
1187
+ <data type="gYear"/>
1188
+ </element>
1189
+ </define>
1190
+ <define name="to">
1191
+ <element name="to">
1192
+ <data type="gYear"/>
1193
+ </element>
1194
+ </define>
1195
+ <define name="owner">
1196
+ <element name="owner">
1197
+ <ref name="ContributorInfo"/>
1198
+ </element>
1199
+ </define>
1200
+ <define name="DocRelationType">
1201
+ <choice>
1202
+ <value>includes</value>
1203
+ <value>includedIn</value>
1204
+ <value>hasPart</value>
1205
+ <value>partOf</value>
1206
+ <value>merges</value>
1207
+ <value>mergedInto</value>
1208
+ <value>splits</value>
1209
+ <value>splitInto</value>
1210
+ <value>instance</value>
1211
+ <value>hasInstance</value>
1212
+ <value>exemplarOf</value>
1213
+ <value>hasExemplar</value>
1214
+ <value>manifestationOf</value>
1215
+ <value>hasManifestation</value>
1216
+ <value>reproductionOf</value>
1217
+ <value>hasReproduction</value>
1218
+ <value>reprintOf</value>
1219
+ <value>hasReprint</value>
1220
+ <value>expressionOf</value>
1221
+ <value>hasExpression</value>
1222
+ <value>translatedFrom</value>
1223
+ <value>hasTranslation</value>
1224
+ <value>arrangementOf</value>
1225
+ <value>hasArrangement</value>
1226
+ <value>abridgementOf</value>
1227
+ <value>hasAbridgement</value>
1228
+ <value>annotationOf</value>
1229
+ <value>hasAnnotation</value>
1230
+ <value>draftOf</value>
1231
+ <value>hasDraft</value>
1232
+ <value>editionOf</value>
1233
+ <value>hasEdition</value>
1234
+ <value>updates</value>
1235
+ <value>updatedBy</value>
1236
+ <value>derivedFrom</value>
1237
+ <value>derives</value>
1238
+ <value>describes</value>
1239
+ <value>describedBy</value>
1240
+ <value>catalogues</value>
1241
+ <value>cataloguedBy</value>
1242
+ <value>hasSuccessor</value>
1243
+ <value>successorOf</value>
1244
+ <value>adaptedFrom</value>
1245
+ <value>hasAdaptation</value>
1246
+ <value>adoptedFrom</value>
1247
+ <value>adoptedAs</value>
1248
+ <value>reviewOf</value>
1249
+ <value>hasReview</value>
1250
+ <value>commentaryOf</value>
1251
+ <value>hasCommentary</value>
1252
+ <value>related</value>
1253
+ <value>complements</value>
1254
+ <value>complementOf</value>
1255
+ <value>obsoletes</value>
1256
+ <value>obsoletedBy</value>
1257
+ <value>cites</value>
1258
+ <value>isCitedIn</value>
1259
+ </choice>
1260
+ </define>
1261
+ <define name="docrelation">
1262
+ <element name="relation">
1263
+ <attribute name="type">
1264
+ <ref name="DocRelationType"/>
1265
+ </attribute>
1266
+ <optional>
1267
+ <element name="description">
1268
+ <ref name="FormattedString"/>
1269
+ </element>
1270
+ </optional>
1271
+ <element name="bibitem">
1272
+ <ref name="ReducedBibliographicItem"/>
1273
+ </element>
1274
+ <choice>
1275
+ <zeroOrMore>
1276
+ <ref name="locality"/>
1277
+ </zeroOrMore>
1278
+ <zeroOrMore>
1279
+ <ref name="localityStack"/>
1280
+ </zeroOrMore>
1281
+ </choice>
1282
+ <choice>
1283
+ <zeroOrMore>
1284
+ <ref name="sourceLocality"/>
1285
+ </zeroOrMore>
1286
+ <zeroOrMore>
1287
+ <ref name="sourceLocalityStack"/>
1288
+ </zeroOrMore>
1289
+ </choice>
1290
+ </element>
1291
+ </define>
1292
+ <define name="version">
1293
+ <element name="version">
1294
+ <optional>
1295
+ <ref name="revision-date"/>
1296
+ </optional>
1297
+ <optional>
1298
+ <ref name="draft"/>
1299
+ </optional>
1300
+ </element>
1301
+ </define>
1302
+ <define name="vedition">
1303
+ <element name="edition">
1304
+ <data type="int"/>
1305
+ </element>
1306
+ </define>
1307
+ <define name="revision-date">
1308
+ <element name="revision-date">
1309
+ <ref name="ISO8601Date"/>
1310
+ </element>
1311
+ </define>
1312
+ <define name="draft">
1313
+ <element name="draft">
1314
+ <text/>
1315
+ </element>
1316
+ </define>
1317
+ <define name="bkeyword">
1318
+ <element name="keyword">
1319
+ <choice>
1320
+ <ref name="LocalizedString"/>
1321
+ <group>
1322
+ <element name="vocab">
1323
+ <ref name="LocalizedString"/>
1324
+ </element>
1325
+ <oneOrMore>
1326
+ <ref name="vocabid"/>
1327
+ </oneOrMore>
1328
+ </group>
1329
+ <group>
1330
+ <oneOrMore>
1331
+ <element name="taxon">
1332
+ <ref name="LocalizedString"/>
1333
+ </element>
1334
+ </oneOrMore>
1335
+ <oneOrMore>
1336
+ <ref name="vocabid"/>
1337
+ </oneOrMore>
1338
+ </group>
1339
+ </choice>
1340
+ </element>
1341
+ </define>
1342
+ <define name="vocabid">
1343
+ <element name="vocabid">
1344
+ <attribute name="type"/>
1345
+ <optional>
1346
+ <attribute name="uri">
1347
+ <data type="anyURI"/>
1348
+ </attribute>
1349
+ </optional>
1350
+ <optional>
1351
+ <element name="code">
1352
+ <text/>
1353
+ </element>
1354
+ </optional>
1355
+ <optional>
1356
+ <element name="term">
1357
+ <text/>
1358
+ </element>
1359
+ </optional>
1360
+ </element>
1361
+ </define>
1362
+ <!--
1363
+ Anycontents = mixed {
1364
+ https://github.com/relaxng/jing-trang/issues/211
1365
+ https://lists.oasis-open.org/archives/office/200808/msg00024.html
1366
+ https://lists.oasis-open.org/archives/office/200808/msg00099.html
1367
+ For this to work, we will actually strip any attributes in the Anycontents before
1368
+ passing it for validation. Horrible I know, but there are no good alternatives
1369
+ that also allow us to do grammar inheritance
1370
+ (attribute * { text } | Any)*
1371
+ Any*
1372
+ }
1373
+ -->
1374
+ <define name="AnyElement">
1375
+ <element>
1376
+ <anyName/>
1377
+ <oneOrMore>
1378
+ <choice>
1379
+ <text/>
1380
+ <ref name="AnyElement"/>
1381
+ </choice>
1382
+ </oneOrMore>
1383
+ </element>
1384
+ </define>
1385
+ </grammar>