metanorma-iec 1.0.5 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/macos.yml +8 -0
  3. data/.github/workflows/ubuntu.yml +10 -0
  4. data/.github/workflows/windows.yml +8 -0
  5. data/lib/asciidoctor/iec/biblio.rng +36 -6
  6. data/lib/asciidoctor/iec/converter.rb +8 -0
  7. data/lib/asciidoctor/iec/front.rb +3 -3
  8. data/lib/asciidoctor/iec/isodoc.rng +450 -4
  9. data/lib/asciidoctor/iec/isostandard.rng +12 -1
  10. data/lib/asciidoctor/iec/reqt.rng +23 -0
  11. data/lib/isodoc/iec/base_convert.rb +21 -37
  12. data/lib/isodoc/iec/html/htmlstyle.scss +6 -6
  13. data/lib/isodoc/iec/html/isodoc.scss +15 -9
  14. data/lib/isodoc/iec/html/scripts.html +18 -0
  15. data/lib/isodoc/iec/html/wordstyle.scss +0 -3
  16. data/lib/isodoc/iec/html_convert.rb +8 -0
  17. data/lib/isodoc/iec/iec.international-standard.xsl +1534 -728
  18. data/lib/isodoc/iec/pdf_convert.rb +2 -12
  19. data/lib/isodoc/iec/presentation_xml_convert.rb +10 -0
  20. data/lib/isodoc/iec/word_convert.rb +17 -6
  21. data/lib/isodoc/iec/xref.rb +45 -0
  22. data/lib/metanorma-iec.rb +2 -0
  23. data/lib/metanorma/iec/processor.rb +12 -6
  24. data/lib/metanorma/iec/version.rb +1 -1
  25. data/metanorma-iec.gemspec +2 -2
  26. data/spec/asciidoctor-iec/base_spec.rb +9 -23
  27. data/spec/asciidoctor-iec/blocks_spec.rb +4 -4
  28. data/spec/asciidoctor-iec/cleanup_spec.rb +7 -7
  29. data/spec/asciidoctor-iec/iev_spec.rb +4 -4
  30. data/spec/asciidoctor-iec/inline_spec.rb +1 -1
  31. data/spec/asciidoctor-iec/section_spec.rb +8 -8
  32. data/spec/examples/rice.html +5 -5
  33. data/spec/isodoc/blocks_spec.rb +154 -0
  34. data/spec/isodoc/i18n_spec.rb +12 -12
  35. data/spec/isodoc/iev_spec.rb +13 -12
  36. data/spec/isodoc/inline_spec.rb +11 -11
  37. data/spec/isodoc/iso_spec.rb +6 -23
  38. data/spec/isodoc/metadata_spec.rb +90 -7
  39. data/spec/isodoc/postproc_spec.rb +3 -3
  40. data/spec/isodoc/ref_spec.rb +249 -0
  41. data/spec/isodoc/section_spec.rb +50 -13
  42. data/spec/isodoc/terms_spec.rb +10 -12
  43. data/spec/metanorma/processor_spec.rb +2 -5
  44. data/spec/spec_helper.rb +7 -0
  45. metadata +14 -11
@@ -13,18 +13,8 @@ module IsoDoc
13
13
  super
14
14
  end
15
15
 
16
- def convert(filename, file = nil, debug = false)
17
- file = File.read(filename, encoding: "utf-8") if file.nil?
18
- docxml, outname_html, dir = convert_init(file, filename, debug)
19
- /\.xml$/.match(filename) or
20
- filename = Tempfile.open([outname_html, ".xml"], encoding: "utf-8") do |f|
21
- f.write file
22
- f.path
23
- end
24
- FileUtils.rm_rf dir
25
- ::Metanorma::Output::XslfoPdf.new.convert(
26
- filename, outname_html + ".pdf",
27
- File.join(@libdir, "iec.international-standard.xsl"))
16
+ def pdf_stylesheet(docxml)
17
+ "iec.international-standard.xsl"
28
18
  end
29
19
  end
30
20
  end
@@ -0,0 +1,10 @@
1
+ require_relative "base_convert"
2
+ require "isodoc"
3
+
4
+ module IsoDoc
5
+ module Iec
6
+ class PresentationXMLConvert < IsoDoc::Iso::PresentationXMLConvert
7
+ end
8
+ end
9
+ end
10
+
@@ -137,6 +137,9 @@ module IsoDoc
137
137
  docxml.xpath("//h1[not(@class)]").each do |h1|
138
138
  h1["class"] = "main"
139
139
  end
140
+ docxml.xpath("//h1[@class = 'Section3']").each do |h1|
141
+ h1["class"] = "main"
142
+ end
140
143
  end
141
144
 
142
145
  # Incredibly, the numbered boilerplate list in IEC is NOT A LIST,
@@ -160,15 +163,23 @@ module IsoDoc
160
163
  def make_body1(body, _docxml)
161
164
  end
162
165
 
163
- #def make_body2(body, docxml)
164
- #FileUtils.rm_rf tmpimagedir
165
- #FileUtils.mkdir tmpimagedir
166
- #super
167
- #end
168
-
169
166
  def word_cover(docxml)
170
167
  end
171
168
 
169
+ def formula_parse1(node, out)
170
+ out.div **attr_code(class: "formula") do |div|
171
+ div.p **attr_code(class: "formula") do |p|
172
+ insert_tab(div, 1)
173
+ parse(node.at(ns("./stem")), div)
174
+ lbl = @xrefs.anchor(node['id'], :label, false)
175
+ unless lbl.nil?
176
+ insert_tab(div, 1)
177
+ div << "(#{lbl})"
178
+ end
179
+ end
180
+ end
181
+ end
182
+
172
183
  include BaseConvert
173
184
  end
174
185
  end
@@ -0,0 +1,45 @@
1
+ module IsoDoc
2
+ module Iec
3
+ class Xref < IsoDoc::Iso::Xref
4
+ def parse(docxml)
5
+ id = docxml&.at(ns("//bibdata/docnumber"))&.text
6
+ @is_iev = id == "60050"
7
+ id = docxml&.at(ns("//bibdata/docidentifier[@type = 'ISO']"))&.text
8
+ m = /60050-(\d+)/.match(id) and @iev_part = m[1]
9
+ super
10
+ end
11
+
12
+ def introduction_names(clause)
13
+ return super unless @is_iev
14
+ end
15
+
16
+ def initial_anchor_names(d)
17
+ super
18
+ return unless @is_iev
19
+ terms_iev_names(d)
20
+ middle_section_asset_names(d)
21
+ termnote_anchor_names(d)
22
+ termexample_anchor_names(d)
23
+ end
24
+
25
+ def terms_iev_names(d)
26
+ d.xpath(ns("//sections/clause/terms")).each_with_index do |t, i|
27
+ num = "#{@iev_part}-%02d" % [i+1]
28
+ @anchors[t["id"]] =
29
+ { label: num, xref: l10n("#{@labels["section_iev"]}-#{num}"), level: 2,
30
+ type: "clause" }
31
+ t.xpath(ns("./term")).each_with_index do |c, i|
32
+ num2 = "%02d" % [i+1]
33
+ section_names1(c, "#{num}-#{num2}", 3)
34
+ end
35
+ end
36
+ end
37
+
38
+ def annex_name_lbl(clause, num)
39
+ obl = l10n("(#{@labels["inform_annex"]})")
40
+ obl = l10n("(#{@labels["norm_annex"]})") if clause["obligation"] == "normative"
41
+ l10n("<b>#{@labels["annex"]} #{num}</b><br/><br/>#{obl}")
42
+ end
43
+ end
44
+ end
45
+ end
@@ -4,7 +4,9 @@ require_relative "metanorma/iec/version"
4
4
  require "isodoc/iec/html_convert"
5
5
  require "isodoc/iec/word_convert"
6
6
  require "isodoc/iec/pdf_convert"
7
+ require "isodoc/iec/presentation_xml_convert"
7
8
  require "isodoc/iec/metadata"
9
+ require "isodoc/iec/xref"
8
10
 
9
11
  if defined? Metanorma
10
12
  require_relative "metanorma/iec"
@@ -2,8 +2,12 @@ require "metanorma/processor"
2
2
 
3
3
  module Metanorma
4
4
  module Iec
5
- def self.pdf_fonts
6
- ["Arial", "Times New Roman", "HanSans", "Courier"]
5
+ def self.fonts_used
6
+ {
7
+ html: ["Arial", "Times New Roman", "HanSans", "Courier New"],
8
+ doc: ["Arial", "Times New Roman", "HanSans", "Courier New"],
9
+ pdf: ["Arial", "Times New Roman", "HanSans", "Courier New"],
10
+ }
7
11
  end
8
12
 
9
13
  class Processor < Metanorma::Processor
@@ -30,14 +34,16 @@ module Metanorma
30
34
  Metanorma::Input::Asciidoc.new.process(file, filename, @asciidoctor_backend)
31
35
  end
32
36
 
33
- def output(isodoc_node, outname, format, options={})
37
+ def output(isodoc_node, inname, outname, format, options={})
34
38
  case format
35
39
  when :html
36
- IsoDoc::Iec::HtmlConvert.new(options).convert(outname, isodoc_node)
40
+ IsoDoc::Iec::HtmlConvert.new(options).convert(inname, isodoc_node, nil, outname)
37
41
  when :doc
38
- IsoDoc::Iec::WordConvert.new(options).convert(outname, isodoc_node)
42
+ IsoDoc::Iec::WordConvert.new(options).convert(inname, isodoc_node, nil, outname)
39
43
  when :pdf
40
- IsoDoc::Iec::PdfConvert.new(options).convert(outname, isodoc_node)
44
+ IsoDoc::Iec::PdfConvert.new(options).convert(inname, isodoc_node, nil, outname)
45
+ when :presentation
46
+ IsoDoc::Iec::PresentationXMLConvert.new(options).convert(inname, isodoc_node, nil, outname)
41
47
  else
42
48
  super
43
49
  end
@@ -1,6 +1,6 @@
1
1
  module Metanorma
2
2
  module Iec
3
- VERSION = "1.0.5"
3
+ VERSION = "1.1.0"
4
4
  end
5
5
  end
6
6
 
@@ -28,8 +28,8 @@ Gem::Specification.new do |spec|
28
28
  spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
29
29
 
30
30
  spec.add_dependency "ruby-jing"
31
- spec.add_dependency "isodoc", "~> 1.0.0"
32
- spec.add_dependency "metanorma-iso", "~> 1.3.0"
31
+ spec.add_dependency "isodoc", "~> 1.1.0"
32
+ spec.add_dependency "metanorma-iso", "~> 1.4.0"
33
33
 
34
34
  spec.add_development_dependency "byebug"
35
35
  spec.add_development_dependency "equivalent-xml", "~> 0.6"
@@ -99,7 +99,7 @@ RSpec.describe Asciidoctor::Iec do
99
99
  <title language="fr" format="text/plain" type="title-intro">Introduction Française</title>
100
100
  <title language="fr" format="text/plain" type="title-main">Titre Principal</title>
101
101
  <title language="fr" format="text/plain" type="title-part">Part du Titre</title>
102
- <docidentifier type="iso">IEC/3NWIP 1000-1 ED 2</docidentifier>
102
+ <docidentifier type="ISO">IEC/3NWIP 1000-1 ED 2</docidentifier>
103
103
  <docnumber>1000</docnumber>
104
104
  <contributor>
105
105
  <role type="author"/>
@@ -185,11 +185,12 @@ RSpec.describe Asciidoctor::Iec do
185
185
  :publisher: IEC,IETF,ISO
186
186
  :copyright-year: 2001
187
187
  :docstage: A2CD
188
+ :doctype: technical-specification
188
189
  INPUT
189
190
  <?xml version="1.0" encoding="UTF-8"?>
190
191
  <iec-standard xmlns="https://www.metanorma.org/ns/iec">
191
192
  <bibdata type="standard">
192
- <docidentifier type="iso">ISO/IEC/IETF/2CD 1000-1-1 ED 1</docidentifier>
193
+ <docidentifier type="ISO">ISO/IEC/IETF/2CDTS 1000-1-1 ED 1</docidentifier>
193
194
  <docidentifier type="iso-tc">2000</docidentifier>
194
195
  <docnumber>1000</docnumber>
195
196
  <contributor>
@@ -266,7 +267,7 @@ RSpec.describe Asciidoctor::Iec do
266
267
  </owner>
267
268
  </copyright>
268
269
  <ext>
269
- <doctype>article</doctype>
270
+ <doctype>technical-specification</doctype>
270
271
  <editorialgroup>
271
272
  <technical-committee/>
272
273
  <subcommittee/>
@@ -337,7 +338,7 @@ RSpec.describe Asciidoctor::Iec do
337
338
  INPUT
338
339
  <iec-standard xmlns="https://www.metanorma.org/ns/iec">
339
340
  <bibdata type="standard">
340
- <docidentifier type="iso">IEC/FDIS 1000 ED 1</docidentifier>
341
+ <docidentifier type="ISO">IEC/FDIS 1000 ED 1</docidentifier>
341
342
  <docnumber>1000</docnumber>
342
343
  <contributor>
343
344
  <role type="author"/>
@@ -401,7 +402,7 @@ OUTPUT
401
402
  INPUT
402
403
  <iec-standard xmlns="https://www.metanorma.org/ns/iec">
403
404
  <bibdata type="standard">
404
- <docidentifier type="iso">IEC 1000 ED 1</docidentifier>
405
+ <docidentifier type="ISO">IEC 1000 ED 1</docidentifier>
405
406
  <docnumber>1000</docnumber>
406
407
  <contributor>
407
408
  <role type="author"/>
@@ -466,7 +467,7 @@ OUTPUT
466
467
  INPUT
467
468
  <iec-standard xmlns="https://www.metanorma.org/ns/iec">
468
469
  <bibdata type="standard">
469
- <docidentifier type="iso">IEC 1000 ED 1</docidentifier>
470
+ <docidentifier type="ISO">IEC 1000 ED 1</docidentifier>
470
471
  <docnumber>1000</docnumber>
471
472
  <contributor>
472
473
  <role type="author"/>
@@ -542,23 +543,8 @@ OUTPUT
542
543
  INPUT
543
544
  html = File.read("test.html", encoding: "utf-8")
544
545
  expect(html).to match(%r[\bpre[^{]+\{[^{]+font-family: "Courier New", monospace;]m)
545
- expect(html).to match(%r[blockquote[^{]+\{[^{]+font-family: "Cambria", serif;]m)
546
- expect(html).to match(%r[\.h2Annex[^{]+\{[^{]+font-family: "Cambria", serif;]m)
547
- end
548
-
549
- it "uses default fonts for alt doc" do
550
- FileUtils.rm_f "test_alt.html"
551
- Asciidoctor.convert(<<~"INPUT", backend: :iec, header_footer: true)
552
- = Document title
553
- Author
554
- :docfile: test.adoc
555
- :novalid:
556
- :no-isobib:
557
- INPUT
558
- html = File.read("test_alt.html", encoding: "utf-8")
559
- expect(html).to match(%r[\bpre[^{]+\{[^{]+font-family: "Space Mono", monospace;]m)
560
- expect(html).to match(%r[blockquote[^{]+\{[^{]+font-family: "Lato", sans-serif;]m)
561
- expect(html).to match(%r[\.h2Annex[^{]+\{[^{]+font-family: "Lato", sans-serif;]m)
546
+ expect(html).to match(%r[blockquote[^{]+\{[^{]+font-family: "Arial", sans-serif;]m)
547
+ expect(html).to match(%r[\.h2Annex[^{]+\{[^{]+font-family: "Arial", sans-serif;]m)
562
548
  end
563
549
 
564
550
  it "uses Chinese fonts" do
@@ -113,7 +113,7 @@ RSpec.describe Asciidoctor::Iec do
113
113
  <title>Terms and definitions</title>
114
114
  <p id="_">For the purposes of this document, the following terms and definitions apply.</p>
115
115
  #{TERMS_BOILERPLATE}
116
- <term id="_">
116
+ <term id="term-term1">
117
117
  <preferred>Term1</preferred>
118
118
  <termnote id="_">
119
119
  <p id="_">This is a note</p>
@@ -224,7 +224,7 @@ RSpec.describe Asciidoctor::Iec do
224
224
  <title>Terms and definitions</title>
225
225
  <p id="_">For the purposes of this document, the following terms and definitions apply.</p>
226
226
  #{TERMS_BOILERPLATE}
227
- <term id="_">
227
+ <term id="term-term1">
228
228
  <preferred>Term1</preferred>
229
229
  <termexample id="_">
230
230
  <p id="_">This is an example</p>
@@ -426,7 +426,7 @@ RSpec.describe Asciidoctor::Iec do
426
426
  <title>Terms and definitions</title>
427
427
  <p id="_">For the purposes of this document, the following terms and definitions apply.</p>
428
428
  #{TERMS_BOILERPLATE}
429
- <term id="_">
429
+ <term id="term-term1">
430
430
  <preferred>Term1</preferred>
431
431
  <termsource status="identical">
432
432
  <origin bibitemid="ISO2191" type="inline" citeas="">
@@ -458,7 +458,7 @@ RSpec.describe Asciidoctor::Iec do
458
458
  <title>Terms and definitions</title>
459
459
  <p id="_">For the purposes of this document, the following terms and definitions apply.</p>
460
460
  #{TERMS_BOILERPLATE}
461
- <term id="_">
461
+ <term id="term-term1">
462
462
  <preferred>Term1</preferred>
463
463
  <termsource status="modified">
464
464
  <origin bibitemid="ISO2191" type="inline" citeas="">
@@ -34,7 +34,7 @@ RSpec.describe Asciidoctor::Iec do
34
34
  <p id="_">For the purposes of this document,
35
35
  the following terms and definitions apply.</p>
36
36
  #{TERMS_BOILERPLATE}
37
- <term id="_"><preferred><stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mi>t</mi><mn>90</mn></msub></math></stem></preferred><admitted><stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mi>t</mi><mn>91</mn></msub></math></stem></admitted>
37
+ <term id="term-t90"><preferred><stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mi>t</mi><mn>90</mn></msub></math></stem></preferred><admitted><stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mi>t</mi><mn>91</mn></msub></math></stem></admitted>
38
38
  <definition><p id="_">Time</p></definition></term>
39
39
  </terms>
40
40
  </sections>
@@ -70,7 +70,7 @@ RSpec.describe Asciidoctor::Iec do
70
70
  <p id="_">For the purposes of this document,
71
71
  the following terms and definitions apply.</p>
72
72
  #{TERMS_BOILERPLATE}
73
- <term id="_"><preferred><stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mi>t</mi><mn>90</mn></msub></math></stem></preferred><definition><formula id="_">
73
+ <term id="term-t90"><preferred><stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mi>t</mi><mn>90</mn></msub></math></stem></preferred><definition><formula id="_">
74
74
  <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mi>t</mi><mi>A</mi></msub></math></stem>
75
75
  </formula><p id="_">This paragraph is extraneous</p></definition>
76
76
  </term>
@@ -100,7 +100,7 @@ RSpec.describe Asciidoctor::Iec do
100
100
  the following terms and definitions apply.</p>
101
101
  #{TERMS_BOILERPLATE}
102
102
 
103
- <term id="_">
103
+ <term id="term-time">
104
104
  <preferred>Time</preferred>
105
105
  <definition><p id="_">This paragraph is extraneous</p></definition>
106
106
  </term></terms>
@@ -126,7 +126,7 @@ RSpec.describe Asciidoctor::Iec do
126
126
  <eref type="inline" bibitemid="iso216" citeas="ISO 216"/>
127
127
  </p>
128
128
  </foreword></preface><sections>
129
- </sections><bibliography><references id="_" obligation="informative">
129
+ </sections><bibliography><references id="_" obligation="informative" normative="false">
130
130
  <title>Bibliography</title>
131
131
  <bibitem id="iso216" type="standard">
132
132
  <title format="text/plain">Reference</title>
@@ -161,7 +161,7 @@ RSpec.describe Asciidoctor::Iec do
161
161
  <title>Terms and definitions</title>
162
162
  <p id="_">For the purposes of this document, the following terms and definitions apply.</p>
163
163
  #{TERMS_BOILERPLATE}
164
- <term id="_">
164
+ <term id="term-term1">
165
165
  <preferred>Term1</preferred>
166
166
  <termsource status="identical">
167
167
  <origin bibitemid="ISO2191" type="inline" citeas="">
@@ -189,7 +189,7 @@ RSpec.describe Asciidoctor::Iec do
189
189
  INPUT
190
190
  #{BLANK_HDR}
191
191
  <sections></sections>
192
- <bibliography><references id="_" obligation="informative"><title>Normative References</title>
192
+ <bibliography><references id="_" obligation="informative" normative="true"><title>Normative References</title>
193
193
  <p id="_">The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.</p>
194
194
  <bibitem id="iso216" type="standard">
195
195
  <title format="text/plain">Reference</title>
@@ -288,7 +288,7 @@ RSpec.describe Asciidoctor::Iec do
288
288
  INPUT
289
289
  #{BLANK_HDR}
290
290
  <sections><formula id="_">
291
- <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>F</mi><mtext>or</mtext><mi>μ</mi><mi>l</mi><mi>a</mi></math></stem>
291
+ <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>F</mi><mi>or</mi><mi>μ</mi><mi>l</mi><mi>a</mi></math></stem>
292
292
  <dl id="_">
293
293
  <dt>a</dt>
294
294
  <dd>
@@ -20,7 +20,7 @@ RSpec.describe Asciidoctor::Iec do
20
20
  <?xml version='1.0' encoding='UTF-8'?>
21
21
  <iec-standard xmlns='https://www.metanorma.org/ns/iec'>
22
22
  <bibdata type='standard'>
23
- <docidentifier type='iso'>IEC 60050 ED 1</docidentifier>
23
+ <docidentifier type='ISO'>IEC 60050 ED 1</docidentifier>
24
24
  <docnumber>60050</docnumber>
25
25
  <contributor>
26
26
  <role type='author'/>
@@ -67,7 +67,7 @@ RSpec.describe Asciidoctor::Iec do
67
67
  #{BOILERPLATE}
68
68
  <sections> </sections>
69
69
  <bibliography>
70
- <references id='_' obligation='informative'>
70
+ <references id='_' obligation='informative' normative="true">
71
71
  <title>Normative References</title>
72
72
  <p id='_'>There are no normative references in this document.</p>
73
73
  <bibitem id='A'>
@@ -98,7 +98,7 @@ RSpec.describe Asciidoctor::Iec do
98
98
  INPUT
99
99
  <iec-standard xmlns='https://www.metanorma.org/ns/iec'>
100
100
  <bibdata type='standard'>
101
- <docidentifier type='iso'>IEC 60050 ED 1</docidentifier>
101
+ <docidentifier type='ISO'>IEC 60050 ED 1</docidentifier>
102
102
  <docnumber>60050</docnumber>
103
103
  <contributor>
104
104
  <role type='author'/>
@@ -148,7 +148,7 @@ INPUT
148
148
  <title>Terms and definitions</title>
149
149
  <terms id='_' obligation='normative'>
150
150
  <title>General</title>
151
- <term id='_'>
151
+ <term id='term-term-1'>
152
152
  <preferred>Term 1</preferred>
153
153
  </term>
154
154
  </terms>
@@ -127,7 +127,7 @@ RSpec.describe Asciidoctor::Iec do
127
127
  #{BLANK_HDR}
128
128
  <sections>
129
129
 
130
- </sections><bibliography><references id="_" obligation="informative">
130
+ </sections><bibliography><references id="_" obligation="informative" normative="true">
131
131
  <title>Normative References</title>
132
132
  <p id="_">The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.</p>
133
133
  <bibitem id="ISO712">
@@ -69,7 +69,7 @@ RSpec.describe Asciidoctor::Iec do
69
69
  <title>Terms and definitions</title>
70
70
  <p id="_">For the purposes of this document, the following terms and definitions apply.</p>
71
71
  #{TERMS_BOILERPLATE}
72
- <term id="_">
72
+ <term id="term-term1">
73
73
  <preferred>Term1</preferred>
74
74
  </term>
75
75
  </terms>
@@ -94,7 +94,7 @@ RSpec.describe Asciidoctor::Iec do
94
94
  </p>
95
95
  </li>
96
96
  </ul>
97
- <term id="_">
97
+ <term id="term-term2">
98
98
  <preferred>Term2</preferred>
99
99
  </term>
100
100
  </terms>
@@ -118,11 +118,11 @@ RSpec.describe Asciidoctor::Iec do
118
118
  </clause>
119
119
  <appendix id="_" inline-header="false" obligation="normative">
120
120
  <title>Appendix 1</title>
121
- </appendix></annex><bibliography><references id="_" obligation="informative">
121
+ </appendix></annex><bibliography><references id="_" obligation="informative" normative="true">
122
122
  <title>Normative References</title><p id="_">There are no normative references in this document.</p>
123
123
  </references><clause id="_" obligation="informative">
124
124
  <title>Bibliography</title>
125
- <references id="_" obligation="informative">
125
+ <references id="_" obligation="informative" normative="false">
126
126
  <title>Bibliography Subsection</title>
127
127
  </references>
128
128
  </clause>
@@ -209,7 +209,7 @@ RSpec.describe Asciidoctor::Iec do
209
209
  <title>Terms and definitions</title>
210
210
  <p id="_">For the purposes of this document, the following terms and definitions apply.</p>
211
211
  #{TERMS_BOILERPLATE}
212
- <term id="_">
212
+ <term id="term-term1">
213
213
  <preferred>Term1</preferred>
214
214
  </term>
215
215
  </terms>
@@ -236,7 +236,7 @@ RSpec.describe Asciidoctor::Iec do
236
236
  </p>
237
237
  </li>
238
238
  </ul>
239
- <term id='_'>
239
+ <term id='term-term2'>
240
240
  <preferred>Term2</preferred>
241
241
  </term>
242
242
  </terms>
@@ -267,13 +267,13 @@ RSpec.describe Asciidoctor::Iec do
267
267
  </appendix>
268
268
  </annex>
269
269
  <bibliography>
270
- <references id='_' obligation='informative'>
270
+ <references id='_' obligation='informative' normative="true">
271
271
  <title>Normative References</title>
272
272
  <p id="_">There are no normative references in this document.</p>
273
273
  </references>
274
274
  <clause id='_' obligation='informative'>
275
275
  <title>Bibliography</title>
276
- <references id='_' obligation='informative'>
276
+ <references id='_' obligation='informative' normative="false">
277
277
  <title>Bibliography Subsection</title>
278
278
  </references>
279
279
  </clause>