metanorma-iso 2.1.7 → 2.1.8

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 +4 -4
  2. data/.github/workflows/rake.yml +3 -1
  3. data/.github/workflows/release.yml +24 -0
  4. data/lib/isodoc/iso/html/html_iso_titlepage.html +2 -2
  5. data/lib/isodoc/iso/html/style-human.scss +35 -1
  6. data/lib/isodoc/iso/html/style-iso.scss +36 -1
  7. data/lib/isodoc/iso/i18n-en.yaml +4 -0
  8. data/lib/isodoc/iso/i18n-fr.yaml +5 -0
  9. data/lib/isodoc/iso/i18n-ru.yaml +4 -0
  10. data/lib/isodoc/iso/i18n-zh-Hans.yaml +5 -0
  11. data/lib/isodoc/iso/init.rb +4 -0
  12. data/lib/isodoc/iso/iso.amendment.xsl +126 -162
  13. data/lib/isodoc/iso/iso.international-standard.xsl +126 -162
  14. data/lib/isodoc/iso/presentation_xml_convert.rb +18 -0
  15. data/lib/isodoc/iso/xref.rb +35 -4
  16. data/lib/metanorma/iso/base.rb +4 -0
  17. data/lib/metanorma/iso/biblio.rng +8 -5
  18. data/lib/metanorma/iso/cleanup.rb +5 -0
  19. data/lib/metanorma/iso/front_id.rb +59 -25
  20. data/lib/metanorma/iso/section.rb +5 -0
  21. data/lib/metanorma/iso/validate.rb +3 -2
  22. data/lib/metanorma/iso/version.rb +1 -1
  23. data/lib/metanorma/requirements/modspec.rb +60 -0
  24. data/lib/metanorma/requirements/requirements.rb +16 -0
  25. data/lib/metanorma-iso.rb +2 -1
  26. data/metanorma-iso.gemspec +1 -1
  27. data/spec/assets/iso.adoc +10 -0
  28. data/spec/examples/rice_img/1000-1_ed2amd3fig1a.png +0 -0
  29. data/spec/examples/rice_img/1000-1_ed2amd3fig1b.png +0 -0
  30. data/spec/examples/rice_img/1000-1_ed2amd3fig2.png +0 -0
  31. data/spec/examples/rice_img/1000-1_ed2amd3fig3.png +0 -0
  32. data/spec/examples/rice_img/1000-1_ed2amd3fig4.png +0 -0
  33. data/spec/examples/rice_img/1000-1_ed2amd3fig5_f.png +0 -0
  34. data/spec/examples/rice_img/1000-1_ed2amd3figA.png +0 -0
  35. data/spec/examples/rice_img/1000-1_ed2amd3figA1.png +0 -0
  36. data/spec/examples/rice_img/1000-1_ed2amd3figA2.png +0 -0
  37. data/spec/examples/rice_img/1000-1_ed2amd3figTab1.png +0 -0
  38. data/spec/examples/rice_img/1000-1_ed2amd3figTab2.png +0 -0
  39. data/spec/examples/rice_img/1001_ed2amd3fig1.png +0 -0
  40. data/spec/examples/rice_img/ISO_1213_1.png +0 -0
  41. data/spec/examples/rice_img/SL1000-1_ed2amd3fig1.png +0 -0
  42. data/spec/isodoc/ref_spec.rb +9 -9
  43. data/spec/metanorma/amd_spec.rb +0 -10
  44. data/spec/metanorma/base_spec.rb +0 -10
  45. data/spec/metanorma/cleanup_spec.rb +136 -0
  46. data/spec/metanorma/macros_spec.rb +99 -0
  47. data/spec/metanorma/processor_spec.rb +86 -86
  48. data/spec/metanorma/validate_spec.rb +41 -40
  49. data/spec/requirements/requirements_spec.rb +1299 -0
  50. data/spec/requirements/xref_spec.rb +1205 -0
  51. data/spec/vcr_cassettes/docrels.yml +385 -0
  52. metadata +40 -25
  53. data/lib/isodoc/iso/html/htmlstyle.css +0 -47
  54. data/lib/isodoc/iso/html/isodoc-dis.css +0 -4493
  55. data/lib/isodoc/iso/html/isodoc.css +0 -1346
  56. data/lib/isodoc/iso/html/style-human.css +0 -1030
  57. data/lib/isodoc/iso/html/style-iso.css +0 -1056
  58. data/lib/isodoc/iso/html/wordstyle-dis.css +0 -2280
  59. data/lib/isodoc/iso/html/wordstyle.css +0 -1728
@@ -4,11 +4,11 @@ module IsoDoc
4
4
  end
5
5
 
6
6
  class Xref < IsoDoc::Xref
7
+ attr_accessor :anchors_previous, :anchors
8
+
7
9
  def initial_anchor_names(doc)
8
- if @klass.amd(doc)
9
- initial_anchor_names_amd(doc)
10
- else
11
- initial_anchor_names1(doc)
10
+ if @klass.amd(doc) then initial_anchor_names_amd(doc)
11
+ else initial_anchor_names1(doc)
12
12
  end
13
13
  if @parse_settings.empty? || @parse_settings[:clauses]
14
14
  introduction_names(doc.at(ns("//introduction")))
@@ -217,6 +217,37 @@ module IsoDoc
217
217
  end
218
218
  true
219
219
  end
220
+
221
+ def sequential_table_names(clause)
222
+ super
223
+ modspec_table_xrefs(clause) if @anchors_previous
224
+ end
225
+
226
+ def modspec_table_xrefs(clause)
227
+ clause.xpath(ns(".//table[@class = 'modspec']")).noblank.each do |t|
228
+ (@anchors[t["id"]] && !@anchors[t["id"]][:modspec]) or next
229
+ n = @anchors[t["id"]][:xref]
230
+ @anchors[t["id"]][:modspec] = true
231
+ @anchors[t["id"]][:xref] =
232
+ l10n("#{n}, #{@anchors_previous[t['id']][:xref_bare]}")
233
+ modspec_table_components_xrefs(t, n)
234
+ end
235
+ end
236
+
237
+ def modspec_table_components_xrefs(table, table_label)
238
+ table.xpath(ns(".//tr[@id]")).each do |tr|
239
+ (@anchors[tr["id"]] && !@anchors[tr["id"]][:modspec]) or next
240
+ @anchors[tr["id"]][:modspec] = true
241
+ @anchors[tr["id"]][:xref] =
242
+ l10n("#{table_label}, #{@anchors_previous[tr['id']][:xref]}")
243
+ @anchors[tr["id"]].delete(:container)
244
+ end
245
+ end
246
+
247
+ def hierarchical_table_names(clause, _num)
248
+ super
249
+ modspec_table_xrefs(clause) if @anchors_previous
250
+ end
220
251
  end
221
252
  end
222
253
  end
@@ -12,6 +12,10 @@ module Metanorma
12
12
  XML_ROOT_TAG = "iso-standard".freeze
13
13
  XML_NAMESPACE = "https://www.metanorma.org/ns/iso".freeze
14
14
 
15
+ def requirements_processor
16
+ ::Metanorma::Requirements::Iso
17
+ end
18
+
15
19
  def html_converter(node)
16
20
  IsoDoc::Iso::HtmlConvert.new(html_extract_attributes(node))
17
21
  end
@@ -225,9 +225,9 @@
225
225
  <zeroOrMore>
226
226
  <ref name="forename"/>
227
227
  </zeroOrMore>
228
- <zeroOrMore>
229
- <ref name="initial"/>
230
- </zeroOrMore>
228
+ <optional>
229
+ <ref name="formatted-initials"/>
230
+ </optional>
231
231
  <ref name="surname"/>
232
232
  <zeroOrMore>
233
233
  <ref name="addition"/>
@@ -247,8 +247,8 @@
247
247
  <ref name="LocalizedString"/>
248
248
  </element>
249
249
  </define>
250
- <define name="initial">
251
- <element name="initial">
250
+ <define name="formatted-initials">
251
+ <element name="formatted-initials">
252
252
  <ref name="LocalizedString"/>
253
253
  </element>
254
254
  </define>
@@ -264,6 +264,9 @@
264
264
  </define>
265
265
  <define name="forename">
266
266
  <element name="forename">
267
+ <optional>
268
+ <attribute name="initial"/>
269
+ </optional>
267
270
  <ref name="LocalizedString"/>
268
271
  </element>
269
272
  </define>
@@ -204,6 +204,11 @@ module Metanorma
204
204
  super
205
205
  end
206
206
 
207
+ def term_children_cleanup(xmldoc)
208
+ @vocab and return
209
+ super
210
+ end
211
+
207
212
  def bibdata_cleanup(xmldoc)
208
213
  super
209
214
  approval_groups_rename(xmldoc)
@@ -80,33 +80,77 @@ module Metanorma
80
80
  iso_id_out(node, xml, dns)
81
81
  end
82
82
 
83
+ def iso_id_out(node, xml, dns)
84
+ xml.docidentifier dns[0], **attr_code(type: "ISO")
85
+ xml.docidentifier dns[2], **attr_code(type: "iso-undated")
86
+ xml.docidentifier(id_langsuffix(dns[0], node),
87
+ **attr_code(type: "iso-with-lang"))
88
+ xml.docidentifier(id_langsuffix(dns[1], node),
89
+ **attr_code(type: "iso-reference"))
90
+ end
91
+
92
+ def get_typeabbr(node, amd: false)
93
+ case doctype(node)
94
+ when "directive" then "DIR "
95
+ when "technical-report" then "TR "
96
+ when "technical-specification" then "TS "
97
+ when "amendment" then (amd ? "Amd " : "")
98
+ when "technical-corrigendum" then (amd ? "Cor " : "")
99
+ end
100
+ end
101
+
83
102
  =begin
84
- def iso_id(node, _xml)
103
+ def get_typeabbr(node, amd: false)
104
+ case doctype(node)
105
+ when "directive" then "DIR"
106
+ when "technical-report" then "TR"
107
+ when "technical-specification" then "TS"
108
+ else nil
109
+ end
110
+ end
111
+
112
+ def iso_id(node, xml)
85
113
  (!@amd && node.attr("docnumber")) || (@amd && node.attr("updates")) or
86
114
  return
115
+ stage = id_stage_abbr(get_stage(node), get_substage(node), node, true)&.strip
116
+ stage = nil if %w{IS (Review) (Withdrwal)}.include?(stage.strip)
117
+ urn_stage = "#{get_stage(node)}.#{get_substage(node)}"
118
+ pub = (node.attr("publisher") || "ISO").split(/[;,]/)
87
119
  params = {
88
- number: (@amd ? node.attr("updates") : node.attr("docnumber")),
120
+ number: node.attr("docnumber"), # (@amd ? node.attr("updates") : node.attr("docnumber")),
89
121
  part: node.attr("partnumber"),
90
- amendment_number: node.attr("amendment-number"),
91
- corrigendum_number: node.attr("corrigendum-number"),
92
122
  language: node.attr("language") || "en",
93
- urn_stage: "#{get_stage(node)}.#{get_substage(node)}",
94
- stage: id_stage_abbr(get_stage(node), get_substage(node), node, true),
95
- type: doctype(node),
123
+ type: get_typeabbr(node),
96
124
  year: node.attr("copyright-year") || node.attr("updated-date")&.sub(/-.*$/, ""),
97
- copublisher: node.attr("agency"),
98
- }
125
+ publisher: pub[0],
126
+ copublisher: pub[1..-1],
127
+ }.compact
128
+ if a = node.attr("amendment-number")
129
+ params[:amendments] = { number: a, stage: stage }
130
+ elsif a = node.attr("corrigendum-number")
131
+ params[:corrigendums] = { number: a, stage: stage }
132
+ else
133
+ params.merge!( { stage: stage, urn_stage: urn_stage }.compact )
134
+ end
135
+ iso_id_out(xml, params)
99
136
  end
100
- =end
101
137
 
102
- def iso_id_out(node, xml, dns)
103
- xml.docidentifier dns[0], **attr_code(type: "ISO")
104
- xml.docidentifier dns[2], **attr_code(type: "iso-undated")
105
- xml.docidentifier(id_langsuffix(dns[0], node),
138
+ def iso_id_out(xml, params)
139
+ params_nolang = params.dup.tap { |hs| hs.delete(:language) }
140
+ unpub = /^[0-5]/.match?(params[:urn_stage])
141
+ params1 = unpub ? params_nolang.dup.tap { |hs| hs.delete(:year) } : params_nolang
142
+ xml.docidentifier Pubid::Iso::Identifier.new(**params1), **attr_code(type: "ISO")
143
+ params2 = params_nolang.dup.tap { |hs| hs.delete(:year) }
144
+ xml.docidentifier Pubid::Iso::Identifier.new(**params2), **attr_code(type: "iso-undated")
145
+ params1 = unpub ? params.dup.tap { |hs| hs.delete(:year) } : params
146
+ xml.docidentifier(Pubid::Iso::Identifier.new(**params1),
106
147
  **attr_code(type: "iso-with-lang"))
107
- xml.docidentifier(id_langsuffix(dns[1], node),
148
+ warn params
149
+ warn "Generated: #{Pubid::Iso::Identifier.new(**params).to_s}"
150
+ xml.docidentifier(Pubid::Iso::Identifier.new(**params),
108
151
  **attr_code(type: "iso-reference"))
109
152
  end
153
+ =end
110
154
 
111
155
  def iso_id1(node)
112
156
  if @amd
@@ -250,16 +294,6 @@ module Metanorma
250
294
  ret = (stage == "60" ? "60" : "00") if ret.nil? || ret.empty?
251
295
  ret
252
296
  end
253
-
254
- def get_typeabbr(node, amd: false)
255
- case doctype(node)
256
- when "directive" then "DIR "
257
- when "technical-report" then "TR "
258
- when "technical-specification" then "TS "
259
- when "amendment" then (amd ? "Amd " : "")
260
- when "technical-corrigendum" then (amd ? "Cor " : "")
261
- end
262
- end
263
297
  end
264
298
  end
265
299
  end
@@ -44,6 +44,11 @@ module Metanorma
44
44
  return term_def_subclause_parse1(attrs, xml, node)
45
45
  super
46
46
  end
47
+
48
+ def term_contains_subclauses(node)
49
+ @vocab and return false # treat this as a term
50
+ super
51
+ end
47
52
  end
48
53
  end
49
54
  end
@@ -90,11 +90,12 @@ module Metanorma
90
90
  end
91
91
 
92
92
  def term_xrefs_validate1(xref, termids)
93
- (termids[xref["target"]] && !termids[xref.parent["id"]]) and
93
+ closest_id = xref.xpath("./ancestor::*[@id]")&.last or return
94
+ (termids[xref["target"]] && !termids[closest_id["id"]]) and
94
95
  @log.add("Style", xref,
95
96
  "only terms clauses can cross-reference terms clause "\
96
97
  "(#{xref['target']})")
97
- (!termids[xref["target"]] && termids[xref.parent["id"]]) and
98
+ (!termids[xref["target"]] && termids[closest_id["id"]]) and
98
99
  @log.add("Style", xref,
99
100
  "non-terms clauses cannot cross-reference terms clause "\
100
101
  "(#{xref['target']})")
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module ISO
3
- VERSION = "2.1.7".freeze
3
+ VERSION = "2.1.8".freeze
4
4
  end
5
5
  end
@@ -0,0 +1,60 @@
1
+ module Metanorma
2
+ class Requirements
3
+ class Modspec
4
+ # Don't want to inherit from Metanorma::Requirements::Modspec
5
+ class Iso < ::Metanorma::Requirements::Modspec
6
+ def recommendation_label(elem, type, xrefs)
7
+ lbl = super
8
+ title = elem.at(ns("./title"))
9
+ return lbl unless title # &&
10
+
11
+ # elem.ancestors("requirement, recommendation, permission").empty?
12
+
13
+ lbl += l10n(": ") if lbl
14
+ lbl += title.children.to_xml
15
+ lbl
16
+ end
17
+
18
+ # ISO labels modspec reqt as table, with reqt label as title
19
+ def recommendation_header(reqt, out)
20
+ n = reqt.at(ns("./name")) and out << n
21
+ out
22
+ end
23
+
24
+ def recommend_title(node, out)
25
+ label = node.at(ns("./identifier")) or return
26
+ out.add_child("<tr><td>#{@labels['modspec']['identifier']}</td>"\
27
+ "<td><tt>#{label.children.to_xml}</tt></td>")
28
+ end
29
+
30
+ def requirement_component_parse(node, out)
31
+ if node["exclude"] != "true" && node.name == "description"
32
+ lbl = "statement"
33
+ lbl = "declaration" if recommend_class(node) == "recommendclass"
34
+ out << "<tr><td>#{@labels['modspec'][lbl]}</td>"\
35
+ "<td>#{node.children.to_xml}</td></tr>"
36
+ else
37
+ super
38
+ end
39
+ end
40
+
41
+ def requirement_table_cleanup(table)
42
+ return table unless table["type"] == "recommendclass"
43
+
44
+ ins = table.at(ns("./tbody/tr[td/table]")) or return table
45
+ ins.replace("<tr><td>#{@labels['modspec']['provisions']}</td>" +
46
+ "<td>#{nested_tables_names(table)}</td></tr>")
47
+ table.xpath(ns("./tbody/tr[td/table]")).each(&:remove)
48
+ table
49
+ end
50
+
51
+ def nested_tables_names(table)
52
+ table.xpath(ns("./tbody/tr/td/table"))
53
+ .each_with_object([]) do |t, m|
54
+ m << t.at(ns("./name")).children.to_xml
55
+ end.join("<br/>")
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,16 @@
1
+ require "mn-requirements"
2
+ require_relative "modspec"
3
+
4
+ module Metanorma
5
+ class Requirements
6
+ class Iso < ::Metanorma::Requirements
7
+ def create(type)
8
+ case type
9
+ when :modspec, :ogc
10
+ ::Metanorma::Requirements::Modspec::Iso.new(parent: self)
11
+ else ::Metanorma::Requirements::Default.new(parent: self)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
data/lib/metanorma-iso.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require "asciidoctor" unless defined? Asciidoctor::Converter
2
2
  require_relative "metanorma/iso/converter"
3
3
  require_relative "metanorma/iso/version"
4
+ require_relative "metanorma/requirements/requirements"
4
5
  require_relative "isodoc/iso/html_convert"
5
6
  require_relative "isodoc/iso/word_convert"
6
7
  require_relative "isodoc/iso/pdf_convert"
@@ -10,7 +11,7 @@ require_relative "isodoc/iso/presentation_xml_convert"
10
11
  require_relative "html2doc/lists"
11
12
  require "asciidoctor/extensions"
12
13
 
13
- if defined? Metanorma
14
+ if defined? Metanorma::Registry
14
15
  require_relative "metanorma/iso"
15
16
  Metanorma::Registry.instance.register(Metanorma::Iso::Processor)
16
17
  end
@@ -31,10 +31,10 @@ Gem::Specification.new do |spec|
31
31
 
32
32
  spec.add_dependency "metanorma-standoc", "~> 2.2.0"
33
33
  spec.add_dependency "mnconvert", "~> 1.14"
34
+ spec.add_dependency "pubid-iso"
34
35
  spec.add_dependency "ruby-jing"
35
36
  spec.add_dependency "tokenizer", "~> 0.3.0"
36
37
  spec.add_dependency "twitter_cldr"
37
- spec.add_dependency "pubid-iso"
38
38
 
39
39
  spec.add_development_dependency "debug"
40
40
  spec.add_development_dependency "equivalent-xml", "~> 0.6"
@@ -0,0 +1,10 @@
1
+ = X
2
+ A
3
+ :mn-document-class: iso
4
+ :title-main-en: Medical devices — Quality management systems — Requirements for regulatory purposes
5
+ :title-main-fr: Dispositifs médicaux — Systèmes de management de la qualité — Exigences à des fins réglementaires
6
+
7
+ == Clause 1
8
+
9
+ X
10
+
@@ -162,7 +162,7 @@ RSpec.describe IsoDoc do
162
162
  <eref bibitemid="ISSN">[2]</eref>
163
163
  <eref bibitemid="ISO16634">ISO 16634:--</eref>
164
164
  <eref bibitemid="ref1">ICC 167</eref>
165
- <eref bibitemid="ref10">[10]</eref>
165
+ <eref bibitemid="ref10">[4]</eref>
166
166
  <eref bibitemid="ref12">Citn</eref>
167
167
  </p>
168
168
  </foreword>
@@ -210,13 +210,13 @@ RSpec.describe IsoDoc do
210
210
  <title depth="1">Bibliography</title>
211
211
  <bibitem id="ISBN" type="book">
212
212
  <formattedref><em>Chemicals for analytical laboratory use</em>. n.p.: n.d. ISBN.</formattedref>
213
+ <docidentifier type="metanorma-ordinal">[1]</docidentifier>
213
214
  <docidentifier type="ISBN">ISBN</docidentifier>
214
- <docidentifier type="metanorma">[1]</docidentifier>
215
215
  </bibitem>
216
216
  <bibitem id="ISSN" type="journal">
217
217
  <formattedref><em>Instruments for analytical laboratory use</em>. n.d. ISSN.</formattedref>
218
+ <docidentifier type="metanorma-ordinal">[2]</docidentifier>
218
219
  <docidentifier type="ISSN">ISSN</docidentifier>
219
- <docidentifier type="metanorma">[2]</docidentifier>
220
220
  </bibitem>
221
221
  <note>
222
222
  <name>NOTE</name>
@@ -241,11 +241,11 @@ RSpec.describe IsoDoc do
241
241
 
242
242
  <link target="http://www.icc.or.at"/>
243
243
  )</formattedref>
244
- <docidentifier type="metanorma">[10]</docidentifier>
244
+ <docidentifier type="metanorma-ordinal">[4]</docidentifier>
245
245
  </bibitem>
246
246
  <bibitem id="ref11">
247
247
  <formattedref><em><span class="stddocTitle">Internet Calendaring and Scheduling Core Object Specification (iCalendar)</span></em></formattedref>
248
- <docidentifier type='metanorma-ordinal'>[4]</docidentifier>
248
+ <docidentifier type='metanorma-ordinal'>[5]</docidentifier>
249
249
  <docidentifier type="IETF">IETF RFC 10</docidentifier>
250
250
  </bibitem>
251
251
  <bibitem id="ref12">
@@ -270,7 +270,7 @@ RSpec.describe IsoDoc do
270
270
  <a href='#ISSN'>[2]</a>
271
271
  <a href='#ISO16634'>ISO 16634:--</a>
272
272
  <a href='#ref1'>ICC 167</a>
273
- <a href='#ref10'>[10]</a>
273
+ <a href='#ref10'>[4]</a>
274
274
  <a href='#ref12'>Citn</a>
275
275
  </p>
276
276
  </div>
@@ -350,7 +350,7 @@ RSpec.describe IsoDoc do
350
350
  <i>Water for analytical laboratory use</i>
351
351
  </p>
352
352
  <p id='ref10' class='Biblio'>
353
- [10
353
+ [4
354
354
  <span style='font-variant:small-caps;'>Standard No I.C.C 167</span>
355
355
  .
356
356
  <i>
@@ -363,7 +363,7 @@ RSpec.describe IsoDoc do
363
363
  )
364
364
  </p>
365
365
  <p id='ref11' class='Biblio'>
366
- [4]  IETF RFC 10,
366
+ [5]  IETF RFC 10,
367
367
  <i>Internet Calendaring and Scheduling Core Object Specification (iCalendar)</i>
368
368
  </p>
369
369
  <p id='ref12' class='Biblio'>
@@ -426,7 +426,7 @@ RSpec.describe IsoDoc do
426
426
  .
427
427
  </formattedref>
428
428
  <uri>https://registre.ign.fr/ign/IGNF/</uri>
429
- <docidentifier type='metanorma'>2</docidentifier>
429
+ <docidentifier type='metanorma-ordinal'>[1]</docidentifier>
430
430
  </bibitem>
431
431
  </references>
432
432
  </iso-standard>
@@ -174,7 +174,6 @@ RSpec.describe Metanorma::ISO do
174
174
  :title-intro-fr: Introduction Française
175
175
  :title-main-fr: Titre Principal
176
176
  :title-part-fr: Part du Titre
177
- :library-ics: 1,2,3
178
177
  :copyright-year: 2017
179
178
  :updates: ISO 17301-1:2016
180
179
  :created-date: 2016-05-01
@@ -273,15 +272,6 @@ RSpec.describe Metanorma::ISO do
273
272
  <workgroup number="3" type="C">WG</workgroup>
274
273
  <workgroup number="31" type="C1">WG1</workgroup>
275
274
  </approvalgroup>
276
- <ics>
277
- <code>1</code>
278
- </ics>
279
- <ics>
280
- <code>2</code>
281
- </ics>
282
- <ics>
283
- <code>3</code>
284
- </ics>
285
275
  <structuredidentifier>
286
276
  <project-number amendment="1" origyr="2016-05-01" part="1">17301</project-number>
287
277
  </structuredidentifier>
@@ -66,7 +66,6 @@ RSpec.describe Metanorma::ISO do
66
66
  :title-intro-fr: Introduction Française
67
67
  :title-main-fr: Titre Principal
68
68
  :title-part-fr: Part du Titre
69
- :library-ics: 1,2,3
70
69
  :copyright-year: 2000
71
70
  :horizontal: true
72
71
  INPUT
@@ -146,15 +145,6 @@ RSpec.describe Metanorma::ISO do
146
145
  <workgroup number="3a" type="Ca">WGa</workgroup>
147
146
  <workgroup number="31a" type="C1a">WG1a</workgroup>
148
147
  </approvalgroup>
149
- <ics>
150
- <code>1</code>
151
- </ics>
152
- <ics>
153
- <code>2</code>
154
- </ics>
155
- <ics>
156
- <code>3</code>
157
- </ics>
158
148
  <structuredidentifier>
159
149
  <project-number part="1">ISO 1000</project-number>
160
150
  </structuredidentifier>