metanorma-iec 1.0.3 → 1.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/macos.yml +8 -7
  3. data/.github/workflows/ubuntu.yml +12 -9
  4. data/.github/workflows/windows.yml +8 -8
  5. data/lib/asciidoctor/iec/biblio.rng +142 -37
  6. data/lib/asciidoctor/iec/converter.rb +22 -130
  7. data/lib/asciidoctor/iec/front.rb +220 -0
  8. data/lib/asciidoctor/iec/isodoc.rng +48 -2
  9. data/lib/asciidoctor/iec/isostandard.rng +17 -1
  10. data/lib/isodoc/iec/base_convert.rb +157 -0
  11. data/lib/isodoc/iec/html/htmlstyle.scss +11 -8
  12. data/lib/isodoc/iec/html/isodoc.scss +15 -9
  13. data/lib/isodoc/iec/html/scripts.html +23 -21
  14. data/lib/isodoc/iec/html/wordstyle.scss +0 -3
  15. data/lib/isodoc/iec/html_convert.rb +8 -0
  16. data/lib/isodoc/iec/i18n-en.yaml +2 -0
  17. data/lib/isodoc/iec/i18n-fr.yaml +2 -0
  18. data/lib/isodoc/iec/iec.international-standard.xsl +4133 -0
  19. data/lib/isodoc/iec/metadata.rb +3 -52
  20. data/lib/isodoc/iec/pdf_convert.rb +31 -0
  21. data/lib/isodoc/iec/word_convert.rb +17 -6
  22. data/lib/metanorma-iec.rb +1 -0
  23. data/lib/metanorma/iec/processor.rb +12 -1
  24. data/lib/metanorma/iec/version.rb +1 -1
  25. data/spec/asciidoctor-iec/base_spec.rb +20 -29
  26. data/spec/asciidoctor-iec/blocks_spec.rb +15 -7
  27. data/spec/asciidoctor-iec/cleanup_spec.rb +13 -7
  28. data/spec/asciidoctor-iec/iev_spec.rb +161 -0
  29. data/spec/asciidoctor-iec/inline_spec.rb +2 -1
  30. data/spec/asciidoctor-iec/section_spec.rb +8 -8
  31. data/spec/assets/iso.xml +65 -2
  32. data/spec/examples/rice.html +5 -5
  33. data/spec/examples/rice_img/rice_image1.png +0 -0
  34. data/spec/examples/rice_img/rice_image2.png +0 -0
  35. data/spec/examples/rice_img/rice_image3_1.png +0 -0
  36. data/spec/examples/rice_img/rice_image3_2.png +0 -0
  37. data/spec/examples/rice_img/rice_image3_3.png +0 -0
  38. data/spec/isodoc/blocks_spec.rb +160 -0
  39. data/spec/isodoc/i18n_spec.rb +15 -22
  40. data/spec/isodoc/iev_spec.rb +360 -0
  41. data/spec/isodoc/inline_spec.rb +2 -2
  42. data/spec/isodoc/iso_spec.rb +2 -19
  43. data/spec/isodoc/metadata_spec.rb +92 -9
  44. data/spec/isodoc/postproc_spec.rb +8 -2
  45. data/spec/isodoc/ref_spec.rb +249 -0
  46. data/spec/isodoc/section_spec.rb +49 -14
  47. data/spec/isodoc/terms_spec.rb +2 -2
  48. data/spec/metanorma/processor_spec.rb +3 -3
  49. data/spec/spec_helper.rb +3 -2
  50. metadata +14 -2
@@ -4,66 +4,17 @@ require "metanorma-iso"
4
4
  module IsoDoc
5
5
  module Iec
6
6
  class Metadata < IsoDoc::Iso::Metadata
7
- STAGE_ABBRS = {
8
- "00" => {"00" => "PWI"},
9
- "10" => {"00" => "PNW"},
10
- "20" => {"00" => "ANW", "98" => "CAN", "99" => "ACD"},
11
- "30" => {"00" => "CD", "20" => "CD", "92" => "BWG", "97" => "MERGED", "98" => "DREJ", "99" => "A2CD"},
12
- "35" => {"00" => "CD", "20" => "CD", "91" => "CDM", "92" => "ACD", "99" => "ACDV"},
13
- "40" => {"00" => "CCDV", "20" => "CCDV", "91" => "CDVM", "92" => "NCDV", "93" => "NADIS", "95" => "ADISSB", "99" => "ADIS"},
14
- "50" => {"00" => "RFDIS", "20" => "CFDIS", "92" => "NFDIS", "95" => "APUBSB", "99" => "APUB"},
15
- "60" => {"00" => "BPUB", "60" => "PPUB"},
16
- "90" => {"00" => "RR", "92" => "RR"},
17
- "92" => {"00" => "AMW", "20" => "AMW"},
18
- "95" => {"00" => "WPUB", "99" => "WPUB"},
19
- "99" => {"00" => "DELPUB", "60" => "DELPUB"},
20
- }.freeze
21
-
22
- def stage_abbr(stage)
23
- ret = STAGE_ABBRS.dig(stage, "00") || "??"
24
- ret = "PPUB" if stage == "60"
25
- ret
26
- end
27
-
28
- def status_abbrev1(stage, substage, iter, doctype, draft)
29
- return "" unless stage
30
- abbr = STAGE_ABBRS.dig(stage, substage) || "??"
31
- if stage == "35" && substage == "92"
32
- iter = (iter.to_i + 1) % "02"
33
- end
34
- case doctype
35
- when "technical-report"
36
- stage = "ADTR" if stage == "40" && substage == "99"
37
- stage = "CDTR" if stage == "50" && substage == "20"
38
- stage = "DTRM" if stage == "50" && substage == "92"
39
- when "technical-specification"
40
- stage = "ADTS" if stage == "40" && substage == "99"
41
- stage = "CDTS" if stage == "50" && substage == "20"
42
- stage = "DTSM" if stage == "50" && substage == "92"
43
- when "interpretation-sheet"
44
- stage = "RDISH" if stage == "50" && substage == "00"
45
- stage = "CDISH" if stage == "50" && substage == "20"
46
- when "publicly-available-specification"
47
- stage = "CDPAS" if stage == "50" && substage == "20"
48
- end
49
- abbr = abbr.sub(/CD$/, "#{iter}CD") if iter
50
- abbr
51
- end
52
-
53
7
  def docstatus(isoxml, _out)
54
8
  docstatus = isoxml.at(ns("//bibdata/status/stage"))
9
+ substage = isoxml.at(ns("//bibdata/status/substage"))
55
10
  set(:unpublished, false)
56
11
  if docstatus
57
12
  set(:stage, docstatus.text)
58
13
  set(:stage_int, docstatus.text.to_i)
59
14
  set(:unpublished, unpublished(docstatus.text))
60
- set(:statusabbr, status_abbrev1(docstatus.text,
61
- isoxml&.at(ns("//bibdata/status/substage"))&.text,
62
- isoxml&.at(ns("//bibdata/status/iteration"))&.text,
63
- isoxml&.at(ns("//bibdata/ext/doctype"))&.text,
64
- isoxml&.at(ns("//version/draft"))&.text))
15
+ set(:statusabbr, substage["abbreviation"])
65
16
  unpublished(docstatus.text) and
66
- set(:stageabbr, stage_abbr(docstatus.text))
17
+ set(:stageabbr, docstatus["abbreviation"])
67
18
  end
68
19
  revdate = isoxml.at(ns("//version/revision-date"))
69
20
  set(:revdate, revdate&.text)
@@ -0,0 +1,31 @@
1
+ require_relative "base_convert"
2
+ require "isodoc"
3
+
4
+ module IsoDoc
5
+ module Iec
6
+
7
+ # A {Converter} implementation that generates HTML output, and a document
8
+ # schema encapsulation of the document for validation
9
+ #
10
+ class PdfConvert < IsoDoc::XslfoPdfConvert
11
+ def initialize(options)
12
+ @libdir = File.dirname(__FILE__)
13
+ super
14
+ end
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"))
28
+ end
29
+ end
30
+ end
31
+ end
@@ -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(id: node["id"], 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 = 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
@@ -3,6 +3,7 @@ require_relative "asciidoctor/iec/converter"
3
3
  require_relative "metanorma/iec/version"
4
4
  require "isodoc/iec/html_convert"
5
5
  require "isodoc/iec/word_convert"
6
+ require "isodoc/iec/pdf_convert"
6
7
  require "isodoc/iec/metadata"
7
8
 
8
9
  if defined? Metanorma
@@ -2,6 +2,14 @@ require "metanorma/processor"
2
2
 
3
3
  module Metanorma
4
4
  module Iec
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
+ }
11
+ end
12
+
5
13
  class Processor < Metanorma::Processor
6
14
 
7
15
  def initialize
@@ -13,7 +21,8 @@ module Metanorma
13
21
  def output_formats
14
22
  super.merge(
15
23
  html: "html",
16
- doc: "doc"
24
+ doc: "doc",
25
+ pdf: "pdf"
17
26
  )
18
27
  end
19
28
 
@@ -31,6 +40,8 @@ module Metanorma
31
40
  IsoDoc::Iec::HtmlConvert.new(options).convert(outname, isodoc_node)
32
41
  when :doc
33
42
  IsoDoc::Iec::WordConvert.new(options).convert(outname, isodoc_node)
43
+ when :pdf
44
+ IsoDoc::Iec::PdfConvert.new(options).convert(outname, isodoc_node)
34
45
  else
35
46
  super
36
47
  end
@@ -1,6 +1,6 @@
1
1
  module Metanorma
2
2
  module Iec
3
- VERSION = "1.0.3"
3
+ VERSION = "1.0.8"
4
4
  end
5
5
  end
6
6
 
@@ -123,8 +123,8 @@ RSpec.describe Asciidoctor::Iec do
123
123
  <language>en</language>
124
124
  <script>Latn</script>
125
125
  <status>
126
- <stage>10</stage>
127
- <substage>20</substage>
126
+ <stage abbreviation="NWIP">10</stage>
127
+ <substage abbreviation="??">20</substage>
128
128
  <iteration>3</iteration>
129
129
  </status>
130
130
  <copyright>
@@ -159,6 +159,7 @@ RSpec.describe Asciidoctor::Iec do
159
159
  <structuredidentifier>
160
160
  <project-number part="1">IEC 1000</project-number>
161
161
  </structuredidentifier>
162
+ <stagename>New work item proposal</stagename>
162
163
  </ext>
163
164
  </bibdata>
164
165
  #{UNPUBLISHED_BOILERPLATE}
@@ -184,11 +185,12 @@ RSpec.describe Asciidoctor::Iec do
184
185
  :publisher: IEC,IETF,ISO
185
186
  :copyright-year: 2001
186
187
  :docstage: A2CD
188
+ :doctype: technical-specification
187
189
  INPUT
188
190
  <?xml version="1.0" encoding="UTF-8"?>
189
191
  <iec-standard xmlns="https://www.metanorma.org/ns/iec">
190
192
  <bibdata type="standard">
191
- <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>
192
194
  <docidentifier type="iso-tc">2000</docidentifier>
193
195
  <docnumber>1000</docnumber>
194
196
  <contributor>
@@ -234,8 +236,8 @@ RSpec.describe Asciidoctor::Iec do
234
236
  <language>el</language>
235
237
  <script>Grek</script>
236
238
  <status>
237
- <stage>30</stage>
238
- <substage>99</substage>
239
+ <stage abbreviation="CD">30</stage>
240
+ <substage abbreviation="A22CD">99</substage>
239
241
  <iteration>2</iteration>
240
242
  </status>
241
243
  <copyright>
@@ -265,7 +267,7 @@ RSpec.describe Asciidoctor::Iec do
265
267
  </owner>
266
268
  </copyright>
267
269
  <ext>
268
- <doctype>article</doctype>
270
+ <doctype>technical-specification</doctype>
269
271
  <editorialgroup>
270
272
  <technical-committee/>
271
273
  <subcommittee/>
@@ -274,6 +276,7 @@ RSpec.describe Asciidoctor::Iec do
274
276
  <structuredidentifier>
275
277
  <project-number part="1" subpart="1">ISO/IEC/IETF 1000</project-number>
276
278
  </structuredidentifier>
279
+ <stagename>Committee draft</stagename>
277
280
  </ext>
278
281
  </bibdata>
279
282
  #{UNPUBLISHED_BOILERPLATE.sub(/IEC #{Date.today.year}/, "ISO/IEC/IETF 2001")}
@@ -355,8 +358,8 @@ RSpec.describe Asciidoctor::Iec do
355
358
  <language>en</language>
356
359
  <script>Latn</script>
357
360
  <status>
358
- <stage>50</stage>
359
- <substage>00</substage>
361
+ <stage abbreviation="FDIS">50</stage>
362
+ <substage abbreviation="RFDIS">00</substage>
360
363
  </status>
361
364
  <copyright>
362
365
  <from>#{Date.today.year}</from>
@@ -377,6 +380,7 @@ RSpec.describe Asciidoctor::Iec do
377
380
  <structuredidentifier>
378
381
  <project-number>IEC 1000</project-number>
379
382
  </structuredidentifier>
383
+ <stagename>Final draft international standard</stagename>
380
384
  </ext>
381
385
  </bibdata>
382
386
  #{UNPUBLISHED_BOILERPLATE}
@@ -418,8 +422,8 @@ OUTPUT
418
422
  <language>en</language>
419
423
  <script>Latn</script>
420
424
  <status>
421
- <stage>60</stage>
422
- <substage>60</substage>
425
+ <stage abbreviation="PPUB">60</stage>
426
+ <substage abbreviation="PPUB">60</substage>
423
427
  </status>
424
428
  <copyright>
425
429
  <from>#{Date.today.year}</from>
@@ -440,6 +444,7 @@ OUTPUT
440
444
  <structuredidentifier>
441
445
  <project-number>IEC 1000</project-number>
442
446
  </structuredidentifier>
447
+ <stagename>International standard</stagename>
443
448
  </ext>
444
449
  </bibdata>
445
450
  #{BOILERPLATE}
@@ -482,8 +487,8 @@ OUTPUT
482
487
  <language>en</language>
483
488
  <script>Latn</script>
484
489
  <status>
485
- <stage>60</stage>
486
- <substage>00</substage>
490
+ <stage abbreviation="PPUB">60</stage>
491
+ <substage abbreviation="BPUB">00</substage>
487
492
  </status>
488
493
  <copyright>
489
494
  <from>#{Date.today.year}</from>
@@ -504,6 +509,7 @@ OUTPUT
504
509
  <structuredidentifier>
505
510
  <project-number>IEC 1000</project-number>
506
511
  </structuredidentifier>
512
+ <stagename>International standard</stagename>
507
513
  </ext>
508
514
  </bibdata>
509
515
  #{BOILERPLATE}
@@ -537,23 +543,8 @@ OUTPUT
537
543
  INPUT
538
544
  html = File.read("test.html", encoding: "utf-8")
539
545
  expect(html).to match(%r[\bpre[^{]+\{[^{]+font-family: "Courier New", monospace;]m)
540
- expect(html).to match(%r[blockquote[^{]+\{[^{]+font-family: "Cambria", serif;]m)
541
- expect(html).to match(%r[\.h2Annex[^{]+\{[^{]+font-family: "Cambria", serif;]m)
542
- end
543
-
544
- it "uses default fonts for alt doc" do
545
- FileUtils.rm_f "test_alt.html"
546
- Asciidoctor.convert(<<~"INPUT", backend: :iec, header_footer: true)
547
- = Document title
548
- Author
549
- :docfile: test.adoc
550
- :novalid:
551
- :no-isobib:
552
- INPUT
553
- html = File.read("test_alt.html", encoding: "utf-8")
554
- expect(html).to match(%r[\bpre[^{]+\{[^{]+font-family: "Space Mono", monospace;]m)
555
- expect(html).to match(%r[blockquote[^{]+\{[^{]+font-family: "Lato", sans-serif;]m)
556
- 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)
557
548
  end
558
549
 
559
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>
@@ -352,7 +352,7 @@ RSpec.describe Asciidoctor::Iec do
352
352
  #{BLANK_HDR}
353
353
  <sections>
354
354
  <quote id="_">
355
- <source type="inline" bibitemid="ISO7301" citeas=""><locality type="section"><referenceFrom>1</referenceFrom></locality></source>
355
+ <source type="inline" bibitemid="ISO7301" citeas=""><localityStack><locality type="section"><referenceFrom>1</referenceFrom></locality></localityStack></source>
356
356
  <author>ISO</author>
357
357
  <p id="_">Block quotation</p>
358
358
  </quote>
@@ -426,10 +426,14 @@ 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
- <origin bibitemid="ISO2191" type="inline" citeas=""><locality type="section"><referenceFrom>1</referenceFrom></locality></origin>
432
+ <origin bibitemid="ISO2191" type="inline" citeas="">
433
+ <localityStack>
434
+ <locality type="section"><referenceFrom>1</referenceFrom></locality>
435
+ </localityStack>
436
+ </origin>
433
437
  </termsource>
434
438
  </term>
435
439
  </terms>
@@ -454,10 +458,14 @@ RSpec.describe Asciidoctor::Iec do
454
458
  <title>Terms and definitions</title>
455
459
  <p id="_">For the purposes of this document, the following terms and definitions apply.</p>
456
460
  #{TERMS_BOILERPLATE}
457
- <term id="_">
461
+ <term id="term-term1">
458
462
  <preferred>Term1</preferred>
459
463
  <termsource status="modified">
460
- <origin bibitemid="ISO2191" type="inline" citeas=""><locality type="section"><referenceFrom>1</referenceFrom></locality></origin>
464
+ <origin bibitemid="ISO2191" type="inline" citeas="">
465
+ <localityStack>
466
+ <locality type="section"><referenceFrom>1</referenceFrom></locality>
467
+ </localityStack>
468
+ </origin>
461
469
  <modification>
462
470
  <p id="_">with adjustments</p>
463
471
  </modification>
@@ -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,11 +126,12 @@ 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>
133
133
  <docidentifier>ISO 216</docidentifier>
134
+ <docnumber>216</docnumber>
134
135
  <contributor>
135
136
  <role type="publisher"/>
136
137
  <organization>
@@ -160,10 +161,14 @@ RSpec.describe Asciidoctor::Iec do
160
161
  <title>Terms and definitions</title>
161
162
  <p id="_">For the purposes of this document, the following terms and definitions apply.</p>
162
163
  #{TERMS_BOILERPLATE}
163
- <term id="_">
164
+ <term id="term-term1">
164
165
  <preferred>Term1</preferred>
165
166
  <termsource status="identical">
166
- <origin bibitemid="ISO2191" type="inline" citeas=""><locality type="section"><referenceFrom>1</referenceFrom></locality></origin>
167
+ <origin bibitemid="ISO2191" type="inline" citeas="">
168
+ <localityStack>
169
+ <locality type="section"><referenceFrom>1</referenceFrom></locality>
170
+ </localityStack>
171
+ </origin>
167
172
  </termsource>
168
173
  </term>
169
174
  </terms>
@@ -184,11 +189,12 @@ RSpec.describe Asciidoctor::Iec do
184
189
  INPUT
185
190
  #{BLANK_HDR}
186
191
  <sections></sections>
187
- <bibliography><references id="_" obligation="informative"><title>Normative References</title>
192
+ <bibliography><references id="_" obligation="informative" normative="true"><title>Normative References</title>
188
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>
189
194
  <bibitem id="iso216" type="standard">
190
195
  <title format="text/plain">Reference</title>
191
196
  <docidentifier>ISO 216</docidentifier>
197
+ <docnumber>216</docnumber>
192
198
  <contributor>
193
199
  <role type="publisher"/>
194
200
  <organization>