metanorma-iso 2.1.2 → 2.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/lib/html2doc/lists.rb +7 -4
  3. data/lib/isodoc/iso/html/isodoc-dis.css +4 -15
  4. data/lib/isodoc/iso/html/isodoc-dis.scss +4 -17
  5. data/lib/isodoc/iso/html/isodoc.css +4 -11
  6. data/lib/isodoc/iso/html/isodoc.scss +5 -15
  7. data/lib/isodoc/iso/i18n-en.yaml +1 -1
  8. data/lib/isodoc/iso/iso.amendment.xsl +429 -121
  9. data/lib/isodoc/iso/iso.international-standard.xsl +429 -121
  10. data/lib/isodoc/iso/metadata.rb +1 -1
  11. data/lib/isodoc/iso/presentation_xml_convert.rb +5 -1
  12. data/lib/isodoc/iso/word_cleanup.rb +40 -6
  13. data/lib/isodoc/iso/word_dis_cleanup.rb +10 -14
  14. data/lib/metanorma/iso/base.rb +0 -6
  15. data/lib/metanorma/iso/biblio.rng +102 -5
  16. data/lib/metanorma/iso/cleanup.rb +33 -20
  17. data/lib/metanorma/iso/front.rb +13 -6
  18. data/lib/metanorma/iso/isodoc.rng +33 -0
  19. data/lib/metanorma/iso/isostandard.rng +3 -1
  20. data/lib/metanorma/iso/validate_section.rb +0 -12
  21. data/lib/metanorma/iso/version.rb +1 -1
  22. data/spec/isodoc/blocks_spec.rb +3 -3
  23. data/spec/isodoc/metadata_spec.rb +1 -2
  24. data/spec/isodoc/postproc_spec.rb +2 -62
  25. data/spec/isodoc/section_spec.rb +2 -8
  26. data/spec/isodoc/terms_spec.rb +62 -0
  27. data/spec/isodoc/word_dis_spec.rb +185 -3
  28. data/spec/metanorma/amd_spec.rb +4 -40
  29. data/spec/metanorma/base_spec.rb +61 -103
  30. data/spec/metanorma/blocks_spec.rb +0 -33
  31. data/spec/metanorma/cleanup_spec.rb +201 -201
  32. data/spec/metanorma/refs_spec.rb +5 -3
  33. data/spec/metanorma/section_spec.rb +6 -6
  34. data/spec/metanorma/validate_spec.rb +8 -19
  35. data/spec/spec_helper.rb +1 -7
  36. data/spec/vcr_cassettes/withdrawn_iso.yml +28 -28
  37. metadata +3 -4
  38. data/lib/metanorma/iso/macros.rb +0 -29
@@ -230,7 +230,7 @@ module IsoDoc
230
230
  ret = [ag]
231
231
  ret << sc_base(xml, "approvalgroup")
232
232
  ret << wg_base(xml, "approvalgroup")
233
- set(:approvalgroup, ret)
233
+ set(:approvalgroup, ret.compact)
234
234
  end
235
235
 
236
236
  def secretariat(xml)
@@ -38,7 +38,7 @@ module IsoDoc
38
38
  lbl = if n.nil? || blank?(n[:label]) then @i18n.example
39
39
  else l10n("#{@i18n.example} #{n[:label]}")
40
40
  end
41
- prefix_name(node, "&#xa0;&#x2014; ", lbl, "name")
41
+ prefix_name(node, block_delim, lbl, "name")
42
42
  end
43
43
 
44
44
  def example_span_label(_node, div, name)
@@ -196,6 +196,10 @@ module IsoDoc
196
196
  type
197
197
  end
198
198
 
199
+ def related1(node)
200
+ node.remove
201
+ end
202
+
199
203
  include Init
200
204
  end
201
205
  end
@@ -11,11 +11,10 @@ module IsoDoc
11
11
  end
12
12
  end
13
13
 
14
- # force Annex h2 down to be p.h2Annex, so it is not picked up by ToC
15
14
  def word_annex_cleanup1(docxml, lvl)
16
15
  docxml.xpath("//h#{lvl}[ancestor::*[@class = 'Section3']]").each do |h2|
17
16
  h2.name = "p"
18
- h2["class"] = "h#{lvl}Annex"
17
+ h2["class"] = "a#{lvl}"
19
18
  end
20
19
  end
21
20
 
@@ -37,16 +36,51 @@ module IsoDoc
37
36
 
38
37
  def style_cleanup(docxml)
39
38
  word_annex_cleanup_h1(docxml)
40
- style_cleanup1(docxml)
39
+ figure_style(docxml)
40
+ new_styles(docxml)
41
41
  end
42
42
 
43
- def style_cleanup1(docxml)
44
- docxml.xpath("//*[@class = 'example']").each do |p|
45
- p["class"] = "Example"
43
+ def figure_style(docxml)
44
+ docxml.xpath("//div[@class = 'figure']").each do |f|
45
+ f["style"] ||= ""
46
+ f["style"] += "text-align:center;"
46
47
  end
48
+ end
49
+
50
+ def quote_style(docxml)
51
+ docxml.xpath("//div[@class = 'Quote' or @class = 'Note' or "\
52
+ "@class = 'Example' or @class = 'Admonition']").each do |d|
53
+ quote_style1(d)
54
+ end
55
+ end
56
+
57
+ def quote_style1(div)
58
+ div.xpath(".//li").each do |p|
59
+ p["style"] ||= ""
60
+ p["style"] += "font-size:#{default_fonts({})[:smallerfontsize]};"
61
+ end
62
+ end
63
+
64
+ STYLESMAP = {
65
+ example: "Example",
66
+ note: "Note",
67
+ Sourcecode: "Code",
68
+ tabletitle: "Tabletitle",
69
+ Biblio: "MsoNormal",
70
+ figure: "MsoNormal",
71
+ SourceTitle: "FigureTitle",
72
+ }.freeze
73
+
74
+ def new_styles(docxml)
75
+ STYLESMAP.each do |k, v|
76
+ docxml.xpath("//*[@class = '#{k}']").each { |s| s["class"] = v }
77
+ end
78
+ docxml.xpath("//div[@class = 'Section3']//p[@class = 'Tabletitle']")
79
+ .each { |t| t["class"] = "AnnexTableTitle" }
47
80
  docxml.xpath("//*[@class = 'zzHelp']/p[not(@class)]").each do |p|
48
81
  p["class"] = "zzHelp"
49
82
  end
83
+ quote_style(docxml)
50
84
  end
51
85
 
52
86
  def authority_hdr_cleanup(docxml)
@@ -1,11 +1,6 @@
1
1
  module IsoDoc
2
2
  module Iso
3
3
  class WordDISConvert < WordConvert
4
- def style_cleanup(docxml)
5
- super
6
- dis_styles(docxml)
7
- end
8
-
9
4
  STYLESMAP = {
10
5
  AltTerms: "AdmittedTerm",
11
6
  TableFootnote: "Tablefootnote",
@@ -30,7 +25,7 @@ module IsoDoc
30
25
  zzCopyright1: "zzCopyright",
31
26
  }.freeze
32
27
 
33
- def dis_styles(docxml)
28
+ def new_styles(docxml)
34
29
  STYLESMAP.each do |k, v|
35
30
  docxml.xpath("//*[@class = '#{k}']").each { |s| s["class"] = v }
36
31
  end
@@ -46,8 +41,8 @@ module IsoDoc
46
41
  figure_style(docxml)
47
42
  note_style(docxml)
48
43
  example_style(docxml)
49
- quote_style(docxml)
50
44
  dis_style_interactions(docxml)
45
+ quote_style(docxml)
51
46
  end
52
47
 
53
48
  def dis_style_interactions(docxml)
@@ -68,13 +63,6 @@ module IsoDoc
68
63
  end
69
64
  end
70
65
 
71
- def quote_style(docxml)
72
- docxml.xpath("//div[@class = 'Quote' or @class = 'Note' or "\
73
- "@class = 'Example' or @class = 'Admonition']").each do |d|
74
- quote_style1(d)
75
- end
76
- end
77
-
78
66
  def para_style_change(div, class1, class2)
79
67
  s = class1 ? "@class = '#{class1}'" : "not(@class)"
80
68
  div.xpath(".//p[#{s}]").each do |p|
@@ -230,6 +218,14 @@ module IsoDoc
230
218
  end
231
219
  end
232
220
  end
221
+
222
+ def make_FigureWordToC(docxml)
223
+ super.sub(/FigureTitle,figuretitle/, "Figure title,Annex Figure Title")
224
+ end
225
+
226
+ def make_TableWordToC(docxml)
227
+ super.sub(/TableTitle,tabletitle/, "Table title,Annex Table Title")
228
+ end
233
229
  end
234
230
  end
235
231
  end
@@ -5,16 +5,10 @@ require "pathname"
5
5
  require "open-uri"
6
6
  require "isodoc"
7
7
  require "fileutils"
8
- require_relative "macros"
9
8
 
10
9
  module Metanorma
11
10
  module ISO
12
11
  class Converter < Standoc::Converter
13
- Asciidoctor::Extensions.register do
14
- block Metanorma::ISO::EditorAdmonitionBlock
15
- treeprocessor Metanorma::ISO::EditorInlineAdmonitionBlock
16
- end
17
-
18
12
  XML_ROOT_TAG = "iso-standard".freeze
19
13
  XML_NAMESPACE = "https://www.metanorma.org/ns/iso".freeze
20
14
 
@@ -623,6 +623,97 @@
623
623
  <zeroOrMore>
624
624
  <ref name="bsource"/>
625
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>
626
717
  <zeroOrMore>
627
718
  <ref name="docidentifier"/>
628
719
  </zeroOrMore>
@@ -638,9 +729,9 @@
638
729
  <optional>
639
730
  <ref name="edition"/>
640
731
  </optional>
641
- <optional>
732
+ <zeroOrMore>
642
733
  <ref name="version"/>
643
- </optional>
734
+ </zeroOrMore>
644
735
  <zeroOrMore>
645
736
  <ref name="biblionote"/>
646
737
  </zeroOrMore>
@@ -833,6 +924,12 @@
833
924
  <data type="boolean"/>
834
925
  </attribute>
835
926
  </optional>
927
+ <optional>
928
+ <attribute name="language"/>
929
+ </optional>
930
+ <optional>
931
+ <attribute name="script"/>
932
+ </optional>
836
933
  <text/>
837
934
  </element>
838
935
  </define>
@@ -1172,7 +1269,7 @@
1172
1269
  </element>
1173
1270
  </optional>
1174
1271
  <element name="bibitem">
1175
- <ref name="BibliographicItem"/>
1272
+ <ref name="ReducedBibliographicItem"/>
1176
1273
  </element>
1177
1274
  <choice>
1178
1275
  <zeroOrMore>
@@ -1197,9 +1294,9 @@
1197
1294
  <optional>
1198
1295
  <ref name="revision-date"/>
1199
1296
  </optional>
1200
- <zeroOrMore>
1297
+ <optional>
1201
1298
  <ref name="draft"/>
1202
- </zeroOrMore>
1299
+ </optional>
1203
1300
  </element>
1204
1301
  </define>
1205
1302
  <define name="vedition">
@@ -1,8 +1,5 @@
1
1
  require "date"
2
- require "nokogiri"
3
2
  require "htmlentities"
4
- require "json"
5
- require "pathname"
6
3
 
7
4
  module Metanorma
8
5
  module ISO
@@ -15,8 +12,7 @@ module Metanorma
15
12
 
16
13
  POST_NORMREF_FOOTNOTES =
17
14
  "//sections//clause[not(@type = 'scope')]//fn | "\
18
- "//annex//fn | "\
19
- "//references[@normative = 'false']//fn".freeze
15
+ "//annex//fn | //references[@normative = 'false']//fn".freeze
20
16
 
21
17
  def other_footnote_renumber(xmldoc)
22
18
  seen = {}
@@ -80,7 +76,8 @@ module Metanorma
80
76
  return 2 if bib.at("#{PUBLISHER}[abbreviation = 'IEC']")
81
77
  return 2 if bib.at("#{PUBLISHER}[name = 'International "\
82
78
  "Electrotechnical Commission']")
83
- return 3 if bib.at("./docidentifier[@type][not(#{OTHERIDS})]")
79
+ return 3 if bib.at("./docidentifier[@type][not(#{OTHERIDS})]") ||
80
+ bib.at("./docidentifier[not(@type)]")
84
81
 
85
82
  4
86
83
  end
@@ -102,7 +99,8 @@ module Metanorma
102
99
  def sort_biblio_key(bib)
103
100
  pubclass = pub_class(bib)
104
101
  num = bib&.at("./docnumber")&.text
105
- id = bib&.at("./docidentifier[not(#{OTHERIDS})]")
102
+ id = bib&.at("./docidentifier[@primary]") ||
103
+ bib&.at("./docidentifier[not(#{OTHERIDS})]")
106
104
  metaid = bib&.at("./docidentifier[@type = 'metanorma']")&.text
107
105
  abbrid = metaid unless /^\[\d+\]$/.match?(metaid)
108
106
  /\d-(?<partid>\d+)/ =~ id&.text
@@ -118,9 +116,7 @@ module Metanorma
118
116
  super
119
117
  return unless @amd
120
118
 
121
- xml.xpath("//*[@inline-header]").each do |h|
122
- h.delete("inline-header")
123
- end
119
+ xml.xpath("//*[@inline-header]").each { |h| h.delete("inline-header") }
124
120
  end
125
121
 
126
122
  def boilerplate_file(_xmldoc)
@@ -170,8 +166,7 @@ module Metanorma
170
166
 
171
167
  if id = replacement_standard(b)
172
168
  insert_unpub_note(b, @i18n.cancelled_and_replaced.sub(/%/, id))
173
- else
174
- insert_unpub_note(b, @i18n.withdrawn)
169
+ else insert_unpub_note(b, @i18n.withdrawn)
175
170
  end
176
171
  end
177
172
  end
@@ -214,25 +209,43 @@ module Metanorma
214
209
  super
215
210
  approval_groups_rename(xmldoc)
216
211
  editorial_groups_agency(xmldoc)
212
+ editorial_group_types(xmldoc)
217
213
  end
218
214
 
219
215
  def approval_groups_rename(xmldoc)
220
216
  %w(technical-committee subcommittee workgroup).each do |v|
221
- xmldoc.xpath("//bibdata//approval-#{v}").each do |a|
222
- a.name = v
223
- end
217
+ xmldoc.xpath("//bibdata//approval-#{v}").each { |a| a.name = v }
224
218
  end
225
219
  end
226
220
 
227
221
  def editorial_groups_agency(xmldoc)
228
- pubs = xmldoc.xpath("//bibdata/contributor[role/@type = 'publisher']/"\
229
- "organization").each_with_object([]) do |p, m|
222
+ pubs = extract_publishers(xmldoc)
223
+ xmldoc.xpath("//bibdata/ext/editorialgroup").each do |e|
224
+ pubs.reverse.each do |p|
225
+ if e.children.empty? then e << "<agency>#{p}</agency>"
226
+ else e.children.first.previous = "<agency>#{p}</agency>"
227
+ end
228
+ end
229
+ end
230
+ end
231
+
232
+ def extract_publishers(xmldoc)
233
+ xmldoc.xpath("//bibdata/contributor[role/@type = 'publisher']/"\
234
+ "organization").each_with_object([]) do |p, m|
230
235
  x = p.at("./abbreviation") || p.at("./name") or next
231
236
  m << x.text
232
237
  end
233
- xmldoc.xpath("//bibdata/ext/editorialgroup").each do |e|
234
- pubs.reverse.each do |p|
235
- e.children.first.previous = "<agency>#{p}</agency>"
238
+ end
239
+
240
+ DEFAULT_EDGROUP_TYPE = { "technical-committee": "TC",
241
+ subcommittee: "SC", workgroup: "WG" }.freeze
242
+
243
+ def editorial_group_types(xmldoc)
244
+ %w(technical-committee subcommittee workgroup).each do |v|
245
+ xmldoc.xpath("//bibdata//#{v} | //bibdata//approval-#{v}").each do |g|
246
+ next if g["type"]
247
+
248
+ g["type"] = DEFAULT_EDGROUP_TYPE[v.to_sym]
236
249
  end
237
250
  end
238
251
  end
@@ -88,24 +88,31 @@ module Metanorma
88
88
  def metadata_editorial_committee(node, xml)
89
89
  xml.editorialgroup do |a|
90
90
  %w(technical-committee subcommittee workgroup).each do |v|
91
- committee_component(v, node, a)
91
+ node.attr("#{v}-number") and committee_component(v, node, a)
92
92
  end
93
93
  node.attr("secretariat") and a.secretariat(node.attr("secretariat"))
94
94
  end
95
95
  end
96
96
 
97
97
  def metadata_approval_committee(node, xml)
98
- types = %w(technical-committee subcommittee workgroup)
99
- node.attr("approval-technical-committee-number") and
100
- types = %w(approval-technical-committee approval-subcommittee
101
- approval-workgroup)
98
+ types = metadata_approval_committee_types(node)
102
99
  xml.approvalgroup do |a|
103
100
  metadata_approval_agency(a, node.attr("approval-agency")
104
101
  &.split(%r{[/,;]}))
105
- types.each { |v| committee_component(v, node, a) }
102
+ types.each do |v|
103
+ node.attr("#{v}-number") and committee_component(v, node, a)
104
+ end
106
105
  end
107
106
  end
108
107
 
108
+ def metadata_approval_committee_types(node)
109
+ types = %w(technical-committee subcommittee workgroup)
110
+ node.attr("approval-technical-committee-number") and
111
+ types = %w(approval-technical-committee approval-subcommittee
112
+ approval-workgroup)
113
+ types
114
+ end
115
+
109
116
  def metadata_approval_agency(xml, list)
110
117
  list = ["ISO"] if list.nil? || list.empty?
111
118
  list.each do |v|
@@ -69,6 +69,17 @@
69
69
  </zeroOrMore>
70
70
  </element>
71
71
  </define>
72
+ <define name="AdmonitionType">
73
+ <choice>
74
+ <value>warning</value>
75
+ <value>note</value>
76
+ <value>tip</value>
77
+ <value>important</value>
78
+ <value>caution</value>
79
+ <value>statement</value>
80
+ <value>editorial</value>
81
+ </choice>
82
+ </define>
72
83
  <define name="index">
73
84
  <element name="index">
74
85
  <optional>
@@ -116,6 +127,11 @@
116
127
  <data type="boolean"/>
117
128
  </attribute>
118
129
  </optional>
130
+ <optional>
131
+ <attribute name="suppress_identifier">
132
+ <data type="boolean"/>
133
+ </attribute>
134
+ </optional>
119
135
  <ref name="BibliographicItem"/>
120
136
  </element>
121
137
  </define>
@@ -703,6 +719,9 @@
703
719
  <optional>
704
720
  <attribute name="tag"/>
705
721
  </optional>
722
+ <optional>
723
+ <attribute name="type"/>
724
+ </optional>
706
725
  <optional>
707
726
  <attribute name="multilingual-rendering">
708
727
  <ref name="MultilingualRenderingType"/>
@@ -738,6 +757,9 @@
738
757
  <optional>
739
758
  <attribute name="tag"/>
740
759
  </optional>
760
+ <optional>
761
+ <attribute name="type"/>
762
+ </optional>
741
763
  <optional>
742
764
  <attribute name="multilingual-rendering">
743
765
  <ref name="MultilingualRenderingType"/>
@@ -2059,6 +2081,7 @@
2059
2081
  <value>compare</value>
2060
2082
  <value>contrast</value>
2061
2083
  <value>see</value>
2084
+ <value>seealso</value>
2062
2085
  </choice>
2063
2086
  </define>
2064
2087
  <define name="deprecates">
@@ -2481,6 +2504,16 @@
2481
2504
  <text/>
2482
2505
  </element>
2483
2506
  </optional>
2507
+ <optional>
2508
+ <element name="amendment">
2509
+ <text/>
2510
+ </element>
2511
+ </optional>
2512
+ <optional>
2513
+ <element name="corrigendum">
2514
+ <text/>
2515
+ </element>
2516
+ </optional>
2484
2517
  <optional>
2485
2518
  <element name="language">
2486
2519
  <text/>
@@ -45,7 +45,9 @@
45
45
  <ref name="horizontal"/>
46
46
  </optional>
47
47
  <ref name="editorialgroup"/>
48
- <ref name="approvalgroup"/>
48
+ <optional>
49
+ <ref name="approvalgroup"/>
50
+ </optional>
49
51
  <zeroOrMore>
50
52
  <ref name="ics"/>
51
53
  </zeroOrMore>
@@ -202,18 +202,6 @@ module Metanorma
202
202
  end
203
203
  end
204
204
 
205
- def asset_style(root)
206
- root.xpath("//example | //termexample").each { |e| example_style(e) }
207
- root.xpath("//definition/verbal-definition").each do |e|
208
- definition_style(e)
209
- end
210
- root.xpath("//note").each { |e| note_style(e) }
211
- root.xpath("//fn").each { |e| footnote_style(e) }
212
- root.xpath(ASSETS_TO_STYLE).each { |e| style(e, extract_text(e)) }
213
- norm_bibitem_style(root)
214
- super
215
- end
216
-
217
205
  def subclause_validate(root)
218
206
  root.xpath("//clause/clause/clause/clause/clause/clause/clause/clause")
219
207
  .each do |c|
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module ISO
3
- VERSION = "2.1.2".freeze
3
+ VERSION = "2.1.5".freeze
4
4
  end
5
5
  end
@@ -297,7 +297,7 @@ RSpec.describe IsoDoc do
297
297
  <iso-standard xmlns="http://riboseinc.com/isoxml" type='presentation'>
298
298
  <preface><foreword displayorder="1">
299
299
  <admonition id="_70234f78-64e5-4dfc-8b6f-f3f037348b6a" type="editorial">
300
- <p id='_e94663cc-2473-4ccc-9a72-983a74d989f2'>
300
+ <p id='_e94663cc-2473-4ccc-9a72-983a74d989f2'>EDITORIAL NOTE —
301
301
  Only use paddy or parboiled rice for the
302
302
  determination of husked rice yield.
303
303
  </p>
@@ -312,7 +312,7 @@ RSpec.describe IsoDoc do
312
312
  <div>
313
313
  <h1 class='ForewordTitle'>Foreword</h1>
314
314
  <div id='_70234f78-64e5-4dfc-8b6f-f3f037348b6a' class='zzHelp'>
315
- <p>
315
+ <p>EDITORIAL NOTE —
316
316
  Only use paddy or parboiled rice for the
317
317
  determination of husked rice yield.
318
318
  </p>
@@ -332,7 +332,7 @@ RSpec.describe IsoDoc do
332
332
  <div>
333
333
  <h1 class='ForewordTitle'>Foreword</h1>
334
334
  <div id='_70234f78-64e5-4dfc-8b6f-f3f037348b6a' class='zzHelp'>
335
- <p> Only use paddy or parboiled rice for the determination of husked rice yield. </p>
335
+ <p>EDITORIAL NOTE — Only use paddy or parboiled rice for the determination of husked rice yield. </p>
336
336
  <p class='ForewordText' id='_e94663cc-2473-4ccc-9a72-983a74d989f3'>Para 2.</p>
337
337
  </div>
338
338
  </div>
@@ -209,7 +209,6 @@ RSpec.describe IsoDoc::Iso::Metadata do
209
209
  </editorialgroup>
210
210
  <approvalgroup>
211
211
  <technical-committee number="34" type="ABC">Food products</technical-committee>
212
- <subcommittee number="4" type="DEF">Cereals and pulses</subcommittee>
213
212
  <workgroup number="3" type="GHI">Rice Group</workgroup>
214
213
  </approvalgroup>
215
214
  <ics><code>1.2.3</code></ics>
@@ -224,7 +223,7 @@ RSpec.describe IsoDoc::Iso::Metadata do
224
223
  INPUT
225
224
  output = <<~OUTPUT
226
225
  {:agency=>"ISO/IEC",
227
- :approvalgroup=>["ABC 34", "DEF 4", "GHI 3"],
226
+ :approvalgroup=>["ABC 34", "GHI 3"],
228
227
  :docnumber=>"ISO/IEC/CD 17301-1-3",
229
228
  :docnumber_lang=>"ISO/IEC/CD 17301-1-3 (E)",
230
229
  :docnumber_reference=>"ISO/IEC/CD 17301-1-3 (E)",