metanorma-iso 1.1.5 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,36 +4,6 @@
4
4
  <start>
5
5
  <ref name="iso-standard"/>
6
6
  </start>
7
- <define name="language">
8
- <element name="language">
9
- <choice>
10
- <value>en</value>
11
- <value>fr</value>
12
- </choice>
13
- </element>
14
- </define>
15
- <define name="script">
16
- <element name="script">
17
- <value>Latn</value>
18
- </element>
19
- </define>
20
- <!-- add type to docidentifier in isodoc? -->
21
- <define name="docidentifier">
22
- <element name="docidentifier">
23
- <optional>
24
- <attribute name="type"/>
25
- </optional>
26
- <choice>
27
- <text/>
28
- <group>
29
- <ref name="documentnumber"/>
30
- <optional>
31
- <ref name="tc-documentnumber"/>
32
- </optional>
33
- </group>
34
- </choice>
35
- </element>
36
- </define>
37
7
  <define name="organization">
38
8
  <element name="organization">
39
9
  <ref name="orgname"/>
@@ -63,190 +33,24 @@
63
33
  </optional>
64
34
  </element>
65
35
  </define>
66
- <define name="BibliographicItem">
67
- <optional>
68
- <attribute name="type">
69
- <ref name="BibItemType"/>
70
- </attribute>
71
- </optional>
72
- <optional>
73
- <ref name="fetched"/>
74
- </optional>
75
- <choice>
76
- <oneOrMore>
77
- <ref name="btitle"/>
78
- </oneOrMore>
79
- <ref name="formattedref"/>
80
- </choice>
81
- <zeroOrMore>
82
- <ref name="bsource"/>
83
- </zeroOrMore>
84
- <zeroOrMore>
85
- <ref name="docidentifier"/>
86
- </zeroOrMore>
87
- <optional>
88
- <ref name="docnumber"/>
89
- </optional>
90
- <zeroOrMore>
91
- <ref name="bdate"/>
92
- </zeroOrMore>
93
- <zeroOrMore>
94
- <ref name="contributor"/>
95
- </zeroOrMore>
96
- <optional>
97
- <ref name="edition"/>
98
- </optional>
99
- <optional>
100
- <ref name="version"/>
101
- </optional>
102
- <zeroOrMore>
103
- <ref name="biblionote"/>
104
- </zeroOrMore>
105
- <zeroOrMore>
106
- <ref name="language"/>
107
- </zeroOrMore>
108
- <zeroOrMore>
109
- <ref name="script"/>
110
- </zeroOrMore>
111
- <zeroOrMore>
112
- <ref name="abstract"/>
113
- </zeroOrMore>
114
- <optional>
115
- <ref name="status"/>
116
- </optional>
117
- <optional>
118
- <ref name="copyright"/>
119
- </optional>
120
- <zeroOrMore>
121
- <ref name="docrelation"/>
122
- </zeroOrMore>
123
- <zeroOrMore>
124
- <ref name="series"/>
125
- </zeroOrMore>
126
- <optional>
127
- <ref name="medium"/>
128
- </optional>
129
- <zeroOrMore>
130
- <ref name="bplace"/>
131
- </zeroOrMore>
132
- <zeroOrMore>
133
- <ref name="extent"/>
134
- </zeroOrMore>
135
- <zeroOrMore>
136
- <ref name="accesslocation"/>
137
- </zeroOrMore>
138
- <optional>
139
- <ref name="bclassification"/>
140
- </optional>
141
- <optional>
142
- <ref name="validity"/>
143
- </optional>
144
- <optional>
145
- <ref name="editorialgroup"/>
146
- </optional>
147
- <zeroOrMore>
148
- <ref name="ics"/>
149
- </zeroOrMore>
150
- <optional>
151
- <ref name="allParts"/>
152
- </optional>
153
- </define>
154
- <define name="BibData">
155
- <optional>
156
- <attribute name="type">
157
- <ref name="BibItemType"/>
158
- </attribute>
159
- </optional>
160
- <oneOrMore>
161
- <ref name="btitle"/>
162
- </oneOrMore>
163
- <optional>
164
- <ref name="formattedref"/>
165
- </optional>
166
- <zeroOrMore>
167
- <ref name="bsource"/>
168
- </zeroOrMore>
169
- <zeroOrMore>
170
- <ref name="docidentifier"/>
171
- </zeroOrMore>
172
- <optional>
173
- <ref name="docnumber"/>
174
- </optional>
175
- <zeroOrMore>
176
- <ref name="bdate"/>
177
- </zeroOrMore>
178
- <zeroOrMore>
179
- <ref name="contributor"/>
180
- </zeroOrMore>
181
- <optional>
182
- <ref name="edition"/>
183
- </optional>
184
- <optional>
185
- <ref name="version"/>
186
- </optional>
187
- <zeroOrMore>
188
- <ref name="biblionote"/>
189
- </zeroOrMore>
190
- <zeroOrMore>
191
- <ref name="language"/>
192
- </zeroOrMore>
193
- <zeroOrMore>
194
- <ref name="script"/>
195
- </zeroOrMore>
196
- <zeroOrMore>
197
- <ref name="abstract"/>
198
- </zeroOrMore>
199
- <optional>
200
- <ref name="status"/>
201
- </optional>
202
- <ref name="copyright"/>
203
- <zeroOrMore>
204
- <ref name="docrelation"/>
205
- </zeroOrMore>
206
- <zeroOrMore>
207
- <ref name="series"/>
208
- </zeroOrMore>
36
+ <define name="BibDataExtensionType">
209
37
  <optional>
210
- <ref name="medium"/>
211
- </optional>
212
- <zeroOrMore>
213
- <ref name="bplace"/>
214
- </zeroOrMore>
215
- <zeroOrMore>
216
- <ref name="extent"/>
217
- </zeroOrMore>
218
- <zeroOrMore>
219
- <ref name="accesslocation"/>
220
- </zeroOrMore>
221
- <optional>
222
- <ref name="bclassification"/>
223
- </optional>
224
- <optional>
225
- <ref name="validity"/>
38
+ <ref name="doctype"/>
226
39
  </optional>
227
40
  <ref name="editorialgroup"/>
228
41
  <zeroOrMore>
229
42
  <ref name="ics"/>
230
43
  </zeroOrMore>
231
- <optional>
232
- <ref name="allParts"/>
233
- </optional>
44
+ <ref name="structuredidentifier"/>
234
45
  </define>
235
46
  <define name="bdate">
236
47
  <element name="date">
237
48
  <attribute name="type">
238
49
  <choice>
239
- <value>published</value>
240
- <value>accessed</value>
241
- <value>created</value>
242
- <value>implemented</value>
243
- <value>obsoleted</value>
244
- <value>confirmed</value>
245
- <value>updated</value>
246
- <value>issued</value>
50
+ <ref name="BibliographicDateType"/>
51
+ <text/>
247
52
  </choice>
248
53
  </attribute>
249
- <!-- ( ( bfrom, bto? ) | date_on ) -->
250
54
  <choice>
251
55
  <group>
252
56
  <element name="from">
@@ -267,47 +71,6 @@
267
71
  </choice>
268
72
  </element>
269
73
  </define>
270
- <define name="biblionote">
271
- <element name="note">
272
- <optional>
273
- <!-- Biblio date notes can be footnoted -->
274
- <attribute name="reference"/>
275
- </optional>
276
- <ref name="FormattedString"/>
277
- </element>
278
- </define>
279
- <define name="status">
280
- <element name="status">
281
- <choice>
282
- <ref name="FormattedString"/>
283
- <group>
284
- <ref name="stage"/>
285
- <optional>
286
- <ref name="substage"/>
287
- </optional>
288
- <optional>
289
- <ref name="iteration"/>
290
- </optional>
291
- </group>
292
- </choice>
293
- </element>
294
- </define>
295
- <define name="btitle">
296
- <element name="title">
297
- <choice>
298
- <ref name="FormattedString"/>
299
- <group>
300
- <optional>
301
- <ref name="title-intro"/>
302
- </optional>
303
- <ref name="title-main"/>
304
- <optional>
305
- <ref name="title-part"/>
306
- </optional>
307
- </group>
308
- </choice>
309
- </element>
310
- </define>
311
74
  <define name="sections">
312
75
  <element name="sections">
313
76
  <ref name="clause"/>
@@ -752,6 +515,16 @@
752
515
  </optional>
753
516
  </element>
754
517
  </define>
518
+ <define name="DocumentType">
519
+ <choice>
520
+ <value>international-standard</value>
521
+ <value>technical-specification</value>
522
+ <value>technical-report</value>
523
+ <value>publicly-available-specification</value>
524
+ <value>international-workshop-agreement</value>
525
+ <value>guide</value>
526
+ </choice>
527
+ </define>
755
528
  </include>
756
529
  <!-- end overrides -->
757
530
  <!--
@@ -764,6 +537,9 @@
764
537
  <zeroOrMore>
765
538
  <ref name="termdocsource"/>
766
539
  </zeroOrMore>
540
+ <optional>
541
+ <ref name="boilerplate"/>
542
+ </optional>
767
543
  <ref name="preface"/>
768
544
  <oneOrMore>
769
545
  <ref name="sections"/>
@@ -784,16 +560,6 @@
784
560
  </oneOrMore>
785
561
  </element>
786
562
  </define>
787
- <define name="BibItemType" combine="choice">
788
- <choice>
789
- <value>international-standard</value>
790
- <value>technical-specification</value>
791
- <value>technical-report</value>
792
- <value>publicly-available-specification</value>
793
- <value>international-workshop-agreement</value>
794
- <value>guide</value>
795
- </choice>
796
- </define>
797
563
  <define name="editorialgroup">
798
564
  <element name="editorialgroup">
799
565
  <oneOrMore>
@@ -825,38 +591,17 @@
825
591
  <ref name="Content-Section"/>
826
592
  </element>
827
593
  </define>
828
- <define name="stage">
829
- <element name="stage">
830
- <choice>
831
- <value>00</value>
832
- <value>10</value>
833
- <value>20</value>
834
- <value>30</value>
835
- <value>40</value>
836
- <value>50</value>
837
- <value>60</value>
838
- <value>90</value>
839
- <value>95</value>
840
- </choice>
841
- </element>
842
- </define>
843
- <define name="substage">
844
- <element name="substage">
845
- <choice>
846
- <value>00</value>
847
- <value>20</value>
848
- <value>60</value>
849
- <value>90</value>
850
- <value>92</value>
851
- <value>93</value>
852
- <value>98</value>
853
- <value>99</value>
854
- </choice>
855
- </element>
856
- </define>
857
- <define name="iteration">
858
- <element name="iteration">
859
- <data type="int"/>
594
+ <define name="structuredidentifier">
595
+ <element name="structuredidentifier">
596
+ <optional>
597
+ <attribute name="type"/>
598
+ </optional>
599
+ <group>
600
+ <ref name="documentnumber"/>
601
+ <optional>
602
+ <ref name="tc-documentnumber"/>
603
+ </optional>
604
+ </group>
860
605
  </element>
861
606
  </define>
862
607
  <define name="documentnumber">
@@ -910,26 +655,6 @@
910
655
  <text/>
911
656
  </element>
912
657
  </define>
913
- <define name="title-intro">
914
- <element name="title-intro">
915
- <ref name="FormattedString"/>
916
- </element>
917
- </define>
918
- <define name="title-main">
919
- <element name="title-main">
920
- <ref name="FormattedString"/>
921
- </element>
922
- </define>
923
- <define name="title-part">
924
- <element name="title-part">
925
- <ref name="FormattedString"/>
926
- </element>
927
- </define>
928
- <define name="allParts">
929
- <element name="allparts">
930
- <data type="boolean"/>
931
- </element>
932
- </define>
933
658
  <define name="clause-hanging-paragraph-with-footnote">
934
659
  <element name="clause">
935
660
  <optional>
@@ -25,6 +25,11 @@
25
25
  <ref name="ObligationType"/>
26
26
  </attribute>
27
27
  </optional>
28
+ <optional>
29
+ <attribute name="unnumbered">
30
+ <data type="boolean"/>
31
+ </attribute>
32
+ </optional>
28
33
  <attribute name="id">
29
34
  <data type="ID"/>
30
35
  </attribute>
@@ -11,8 +11,8 @@ module Asciidoctor
11
11
  module ISO
12
12
  class Converter < Standoc::Converter
13
13
  def title_intro_validate(root)
14
- title_intro_en = root.at("//title-intro[@language='en']")
15
- title_intro_fr = root.at("//title-intro[@language='fr']")
14
+ title_intro_en = root.at("//title[@type='title-intro' and @language='en']")
15
+ title_intro_fr = root.at("//title[@type='title-intro' and @language='fr']")
16
16
  if title_intro_en.nil? && !title_intro_fr.nil?
17
17
  warn "No English Title Intro!"
18
18
  end
@@ -22,8 +22,8 @@ module Asciidoctor
22
22
  end
23
23
 
24
24
  def title_main_validate(root)
25
- title_main_en = root.at("//title-main[@language='en']")
26
- title_main_fr = root.at("//title-main[@language='fr']")
25
+ title_main_en = root.at("//title[@type='title-main' and @language='en']")
26
+ title_main_fr = root.at("//title[@type='title-main' and @language='fr']")
27
27
  if title_main_en.nil? && !title_main_fr.nil?
28
28
  warn "No English Title!"
29
29
  end
@@ -33,8 +33,8 @@ module Asciidoctor
33
33
  end
34
34
 
35
35
  def title_part_validate(root)
36
- title_part_en = root.at("//title-part[@language='en']")
37
- title_part_fr = root.at("//title-part[@language='fr']")
36
+ title_part_en = root.at("//title[@type='title-part' and @language='en']")
37
+ title_part_fr = root.at("//title[@type='title-part' and @language='fr']")
38
38
  (title_part_en.nil? && !title_part_fr.nil?) &&
39
39
  warn("No English Title Part!")
40
40
  (!title_part_en.nil? && title_part_fr.nil?) &&
@@ -53,11 +53,11 @@ module Asciidoctor
53
53
  def title_names_type_validate(root)
54
54
  doctypes = /International\sStandard | Technical\sSpecification |
55
55
  Publicly\sAvailable\sSpecification | Technical\sReport | Guide /xi
56
- title_main_en = root.at("//title-main[@language='en']")
56
+ title_main_en = root.at("//title[@type='title-main' and @language='en']")
57
57
  if !title_main_en.nil? && doctypes.match(title_main_en.text)
58
58
  warn "Main Title may name document type"
59
59
  end
60
- title_intro_en = root.at("//title-intro[@language='en']")
60
+ title_intro_en = root.at("//title[@type='title-intro' and @language='en']")
61
61
  if !title_intro_en.nil? && doctypes.match(title_intro_en.text)
62
62
  warn "Title Intro may name document type"
63
63
  end
@@ -181,6 +181,46 @@ module Asciidoctor
181
181
  end
182
182
  end
183
183
 
184
+ def doctype_validate(xmldoc)
185
+ doctype = xmldoc&.at("//bibdata/ext/doctype")&.text
186
+ %w(international-standard technical-specification technical-report
187
+ publicly-available-specification international-workshop-agreement
188
+ guide).include? doctype or
189
+ warn "ISO Document Attributes: #{doctype} is not a recognised document type"
190
+ end
191
+
192
+ def script_validate(xmldoc)
193
+ script = xmldoc&.at("//bibdata/script")&.text
194
+ script == "Latn" or
195
+ warn "ISO Document Attributes: #{script} is not a recognised script"
196
+ end
197
+
198
+ def stage_validate(xmldoc)
199
+ stage = xmldoc&.at("//bibdata/status/stage")&.text
200
+ %w(00 10 20 30 40 50 60 90 95).include? stage or
201
+ warn "ISO Document Attributes: #{stage} is not a recognised stage"
202
+ end
203
+
204
+ def substage_validate(xmldoc)
205
+ substage = xmldoc&.at("//bibdata/status/substage")&.text or return
206
+ %w(00 20 60 90 92 93 98 99).include? substage or
207
+ warn "ISO Document Attributes: #{substage} is not a recognised substage"
208
+ end
209
+
210
+ def iteration_validate(xmldoc)
211
+ iteration = xmldoc&.at("//bibdata/status/iteration")&.text or return
212
+ /^\d+/.match(iteration) or
213
+ warn "ISO Document Attributes: #{iteration} is not a recognised iteration"
214
+ end
215
+
216
+ def bibdata_validate(doc)
217
+ doctype_validate(doc)
218
+ script_validate(doc)
219
+ stage_validate(doc)
220
+ substage_validate(doc)
221
+ iteration_validate(doc)
222
+ end
223
+
184
224
  def content_validate(doc)
185
225
  super
186
226
  title_validate(doc.root)
@@ -191,6 +231,7 @@ module Asciidoctor
191
231
  see_xrefs_validate(doc.root)
192
232
  see_erefs_validate(doc.root)
193
233
  locality_erefs_validate(doc.root)
234
+ bibdata_validate(doc.root)
194
235
  end
195
236
 
196
237
  def validate(doc)