metanorma-iso 1.1.5 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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)