metanorma-iso 2.1.2 → 2.1.5

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.
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)",