metanorma-iso 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/macos.yml +0 -1
  3. data/.github/workflows/ubuntu.yml +6 -3
  4. data/.github/workflows/windows.yml +0 -1
  5. data/Gemfile +1 -0
  6. data/Rakefile +2 -0
  7. data/lib/asciidoctor/iso/base.rb +8 -19
  8. data/lib/asciidoctor/iso/cleanup.rb +2 -3
  9. data/lib/asciidoctor/iso/front.rb +0 -1
  10. data/lib/asciidoctor/iso/front_id.rb +1 -1
  11. data/lib/asciidoctor/iso/isodoc.rng +12 -6
  12. data/lib/asciidoctor/iso/section.rb +5 -11
  13. data/lib/asciidoctor/iso/term_lookup_cleanup.rb +0 -1
  14. data/lib/asciidoctor/iso/validate_section.rb +30 -44
  15. data/lib/isodoc/iso/base_convert.rb +3 -64
  16. data/lib/isodoc/iso/html/htmlstyle.css +47 -0
  17. data/lib/isodoc/iso/html/htmlstyle.scss +0 -1
  18. data/lib/isodoc/iso/html/isodoc.css +862 -0
  19. data/lib/isodoc/iso/html/isodoc.scss +0 -1
  20. data/lib/isodoc/iso/html/style-human.css +968 -0
  21. data/lib/isodoc/iso/html/style-iso.css +996 -0
  22. data/lib/isodoc/iso/html/wordstyle.css +1515 -0
  23. data/lib/isodoc/iso/html/wordstyle.scss +0 -1
  24. data/lib/isodoc/iso/html_convert.rb +2 -1
  25. data/lib/{asciidoctor → isodoc}/iso/i18n-en.yaml +0 -0
  26. data/lib/{asciidoctor → isodoc}/iso/i18n-fr.yaml +0 -0
  27. data/lib/{asciidoctor → isodoc}/iso/i18n-zh-Hans.yaml +0 -0
  28. data/lib/isodoc/iso/i18n.rb +19 -0
  29. data/lib/isodoc/iso/init.rb +33 -0
  30. data/lib/isodoc/iso/iso.amendment.xsl +32 -0
  31. data/lib/isodoc/iso/iso.international-standard.xsl +32 -0
  32. data/lib/isodoc/iso/metadata.rb +1 -1
  33. data/lib/isodoc/iso/pdf_convert.rb +1 -1
  34. data/lib/isodoc/iso/presentation_xml_convert.rb +99 -1
  35. data/lib/isodoc/iso/sections.rb +3 -8
  36. data/lib/isodoc/iso/word_convert.rb +2 -1
  37. data/lib/isodoc/iso/xref.rb +2 -0
  38. data/lib/metanorma/iso/processor.rb +0 -4
  39. data/lib/metanorma/iso/version.rb +1 -1
  40. data/metanorma-iso.gemspec +4 -3
  41. data/spec/asciidoctor-iso/cleanup_spec.rb +4 -4
  42. data/spec/asciidoctor-iso/inline_spec.rb +1 -1
  43. data/spec/asciidoctor-iso/refs_spec.rb +3 -3
  44. data/spec/asciidoctor-iso/section_spec.rb +9 -6
  45. data/spec/asciidoctor-iso/validate_spec.rb +13 -21
  46. data/spec/isodoc/amd_spec.rb +309 -153
  47. data/spec/isodoc/blocks_spec.rb +362 -28
  48. data/spec/isodoc/i18n_spec.rb +468 -108
  49. data/spec/isodoc/inline_spec.rb +99 -31
  50. data/spec/isodoc/iso_spec.rb +95 -29
  51. data/spec/isodoc/postproc_spec.rb +114 -149
  52. data/spec/isodoc/ref_spec.rb +176 -4
  53. data/spec/isodoc/section_spec.rb +148 -82
  54. data/spec/isodoc/table_spec.rb +142 -5
  55. data/spec/isodoc/terms_spec.rb +78 -53
  56. data/spec/isodoc/xref_spec.rb +831 -658
  57. data/spec/metanorma/processor_spec.rb +2 -1
  58. metadata +34 -13
@@ -1391,4 +1391,3 @@ ol
1391
1391
  ul
1392
1392
  {margin-bottom:0cm;
1393
1393
  margin-left:18pt;}
1394
-
@@ -1,6 +1,6 @@
1
1
  require_relative "base_convert"
2
+ require_relative "init"
2
3
  require "isodoc"
3
- require_relative "metadata"
4
4
 
5
5
  module IsoDoc
6
6
  module Iso
@@ -49,6 +49,7 @@ module IsoDoc
49
49
  end
50
50
 
51
51
  include BaseConvert
52
+ include Init
52
53
  end
53
54
  end
54
55
  end
@@ -0,0 +1,19 @@
1
+ module IsoDoc
2
+ module Iso
3
+ class I18n < IsoDoc::I18n
4
+ def load_yaml(lang, script, i18nyaml = nil)
5
+ y = if i18nyaml then YAML.load_file(i18nyaml)
6
+ elsif lang == "en"
7
+ YAML.load_file(File.join(File.dirname(__FILE__), "i18n-en.yaml"))
8
+ elsif lang == "fr"
9
+ YAML.load_file(File.join(File.dirname(__FILE__), "i18n-fr.yaml"))
10
+ elsif lang == "zh" && script == "Hans"
11
+ YAML.load_file(File.join(File.dirname(__FILE__), "i18n-zh-Hans.yaml"))
12
+ else
13
+ YAML.load_file(File.join(File.dirname(__FILE__), "i18n-en.yaml"))
14
+ end
15
+ super.merge(y)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,33 @@
1
+ require "isodoc"
2
+ require_relative "metadata"
3
+ require_relative "xref"
4
+ require_relative "i18n"
5
+
6
+ module IsoDoc
7
+ module Iso
8
+ module Init
9
+ def metadata_init(lang, script, i18n)
10
+ @meta = Metadata.new(lang, script, i18n)
11
+ end
12
+
13
+ def xref_init(lang, script, klass, i18n, options)
14
+ html = HtmlConvert.new(language: lang, script: script)
15
+ @xrefs = Xref.new(lang, script, html, i18n, options)
16
+ end
17
+
18
+ def i18n_init(lang, script, i18nyaml = nil)
19
+ @i18n = I18n.new(lang, script, i18nyaml || @i18nyaml)
20
+ end
21
+
22
+ def amd(docxml)
23
+ doctype = docxml&.at(ns("//bibdata/ext/doctype"))&.text
24
+ %w(amendment technical-corrigendum).include? doctype
25
+ end
26
+
27
+ def clausedelim
28
+ ""
29
+ end
30
+ end
31
+ end
32
+ end
33
+
@@ -3996,6 +3996,7 @@
3996
3996
  <fo:inline padding-right="2mm">
3997
3997
 
3998
3998
 
3999
+
3999
4000
  <xsl:variable name="title-note">
4000
4001
  <xsl:call-template name="getTitle">
4001
4002
  <xsl:with-param name="name" select="'title-note'"/>
@@ -5079,4 +5080,35 @@
5079
5080
  </xsl:if>
5080
5081
  </xsl:template><xsl:template name="getDocumentId">
5081
5082
  <xsl:call-template name="getLang"/><xsl:value-of select="//*[local-name() = 'p'][1]/@id"/>
5083
+ </xsl:template><xsl:template name="namespaceCheck">
5084
+ <xsl:variable name="documentNS" select="namespace-uri(/*)"/>
5085
+ <xsl:variable name="XSLNS">
5086
+
5087
+ <xsl:value-of select="document('')//*/namespace::iso"/>
5088
+
5089
+
5090
+
5091
+
5092
+
5093
+
5094
+
5095
+
5096
+
5097
+
5098
+
5099
+
5100
+ </xsl:variable>
5101
+ <xsl:if test="$documentNS != $XSLNS">
5102
+ <xsl:message>[WARNING]: Document namespace: '<xsl:value-of select="$documentNS"/>' doesn't equal to xslt namespace '<xsl:value-of select="$XSLNS"/>'</xsl:message>
5103
+ </xsl:if>
5104
+ </xsl:template><xsl:template name="getLanguage">
5105
+ <xsl:param name="lang"/>
5106
+ <xsl:variable name="language" select="java:toLowerCase(java:java.lang.String.new($lang))"/>
5107
+ <xsl:choose>
5108
+ <xsl:when test="$language = 'en'">English</xsl:when>
5109
+ <xsl:when test="$language = 'fr'">French</xsl:when>
5110
+ <xsl:when test="$language = 'de'">Deutsch</xsl:when>
5111
+ <xsl:when test="$language = 'cn'">Chinese</xsl:when>
5112
+ <xsl:otherwise><xsl:value-of select="$language"/></xsl:otherwise>
5113
+ </xsl:choose>
5082
5114
  </xsl:template></xsl:stylesheet>
@@ -3996,6 +3996,7 @@
3996
3996
  <fo:inline padding-right="2mm">
3997
3997
 
3998
3998
 
3999
+
3999
4000
  <xsl:variable name="title-note">
4000
4001
  <xsl:call-template name="getTitle">
4001
4002
  <xsl:with-param name="name" select="'title-note'"/>
@@ -5079,4 +5080,35 @@
5079
5080
  </xsl:if>
5080
5081
  </xsl:template><xsl:template name="getDocumentId">
5081
5082
  <xsl:call-template name="getLang"/><xsl:value-of select="//*[local-name() = 'p'][1]/@id"/>
5083
+ </xsl:template><xsl:template name="namespaceCheck">
5084
+ <xsl:variable name="documentNS" select="namespace-uri(/*)"/>
5085
+ <xsl:variable name="XSLNS">
5086
+
5087
+ <xsl:value-of select="document('')//*/namespace::iso"/>
5088
+
5089
+
5090
+
5091
+
5092
+
5093
+
5094
+
5095
+
5096
+
5097
+
5098
+
5099
+
5100
+ </xsl:variable>
5101
+ <xsl:if test="$documentNS != $XSLNS">
5102
+ <xsl:message>[WARNING]: Document namespace: '<xsl:value-of select="$documentNS"/>' doesn't equal to xslt namespace '<xsl:value-of select="$XSLNS"/>'</xsl:message>
5103
+ </xsl:if>
5104
+ </xsl:template><xsl:template name="getLanguage">
5105
+ <xsl:param name="lang"/>
5106
+ <xsl:variable name="language" select="java:toLowerCase(java:java.lang.String.new($lang))"/>
5107
+ <xsl:choose>
5108
+ <xsl:when test="$language = 'en'">English</xsl:when>
5109
+ <xsl:when test="$language = 'fr'">French</xsl:when>
5110
+ <xsl:when test="$language = 'de'">Deutsch</xsl:when>
5111
+ <xsl:when test="$language = 'cn'">Chinese</xsl:when>
5112
+ <xsl:otherwise><xsl:value-of select="$language"/></xsl:otherwise>
5113
+ </xsl:choose>
5082
5114
  </xsl:template></xsl:stylesheet>
@@ -3,7 +3,7 @@ require "isodoc"
3
3
  module IsoDoc
4
4
  module Iso
5
5
  class Metadata < IsoDoc::Metadata
6
- def initialize(lang, script, labels)
6
+ def initialize(lang, script, i18n)
7
7
  super
8
8
  @metadata = {
9
9
  tc: "XXXX",
@@ -15,7 +15,7 @@ module IsoDoc
15
15
 
16
16
  def pdf_stylesheet(docxml)
17
17
  case doctype = docxml&.at(ns("//bibdata/ext/doctype"))&.text
18
- when "amendment", "technical-corrigendum" then "itu.recommendation-annex.xsl"
18
+ when "amendment", "technical-corrigendum" then "iso.amendment.xsl"
19
19
  else
20
20
  "iso.international-standard.xsl"
21
21
  end
@@ -1,4 +1,4 @@
1
- require_relative "base_convert"
1
+ require_relative "init"
2
2
  require "isodoc"
3
3
 
4
4
  module IsoDoc
@@ -8,6 +8,104 @@ module IsoDoc
8
8
  # schema encapsulation of the document for validation
9
9
  #
10
10
  class PresentationXMLConvert < IsoDoc::PresentationXMLConvert
11
+ def initialize(options)
12
+ super
13
+ end
14
+
15
+ def convert1(docxml, filename, dir)
16
+ if amd(docxml)
17
+ @oldsuppressheadingnumbers = @suppressheadingnumbers
18
+ @suppressheadingnumbers = true
19
+ end
20
+ super
21
+ end
22
+
23
+ def annex(isoxml)
24
+ amd(isoxml) and @suppressheadingnumbers = @oldsuppressheadingnumbers
25
+ super
26
+ isoxml.xpath(ns("//annex//clause | //annex//appendix")).each do |f|
27
+ clause1(f)
28
+ end
29
+ amd(isoxml) and @suppressheadingnumbers = true
30
+ end
31
+
32
+ def xref_init(lang, script, klass, labels, options)
33
+ @xrefs = Xref.new(lang, script, klass, labels, options)
34
+ end
35
+
36
+ def figure1(f)
37
+ return if labelled_ancestor(f) && f.ancestors("figure").empty?
38
+ lbl = @xrefs.anchor(f['id'], :label, false) or return
39
+ figname = f.parent.name == "figure" ? "" : "#{@i18n.figure} "
40
+ connective = f.parent.name == "figure" ? "&nbsp; " : "&nbsp;&mdash; "
41
+ prefix_name(f, connective, l10n("#{figname}#{lbl}"), "name")
42
+ end
43
+
44
+ def example1(f)
45
+ n = @xrefs.get[f["id"]]
46
+ lbl = (n.nil? || n[:label].nil? || n[:label].empty?) ? @i18n.example :
47
+ l10n("#{@i18n.example} #{n[:label]}")
48
+ prefix_name(f, "&nbsp;&mdash; ", lbl, "name")
49
+ end
50
+
51
+ def eref_localities1_zh(target, type, from, to, delim)
52
+ subsection = from&.text&.match(/\./)
53
+ ret = (delim == ";") ? ";" : (type == "list") ? "" : delim
54
+ ret += " 第#{from.text}" if from
55
+ ret += "&ndash;#{to.text}" if to
56
+ loc = (@i18n.locality[type] || type.sub(/^locality:/, "").capitalize )
57
+ ret += " #{loc}" unless subsection && type == "clause" ||
58
+ type == "list" || target.match(/^IEV$|^IEC 60050-/)
59
+ ret += ")" if type == "list"
60
+ ret
61
+ end
62
+
63
+ def eref_localities1(target, type, from, to, delim, lang = "en")
64
+ return "" if type == "anchor"
65
+ subsection = from&.text&.match(/\./)
66
+ type = type.downcase
67
+ lang == "zh" and
68
+ return l10n(eref_localities1_zh(target, type, from, to, delim))
69
+ ret = (delim == ";") ? ";" : (type == "list") ? "" : delim
70
+ loc = @i18n.locality[type] || type.sub(/^locality:/, "").capitalize
71
+ ret += " #{loc}" unless subsection && type == "clause" ||
72
+ type == "list" || target.match(/^IEV$|^IEC 60050-/)
73
+ ret += " #{from.text}" if from
74
+ ret += "&ndash;#{to.text}" if to
75
+ ret += ")" if type == "list"
76
+ l10n(ret)
77
+ end
78
+
79
+ def prefix_container(container, linkend, target)
80
+ delim = @xrefs.anchor(target, :type) == "listitem" ? " " : ", "
81
+ l10n(@xrefs.anchor(container, :xref) + delim + linkend)
82
+ end
83
+
84
+ def example_span_label(node, div, name)
85
+ return if name.nil?
86
+ div.span **{ class: "example_label" } do |p|
87
+ name.children.each { |n| parse(n, div) }
88
+ end
89
+ end
90
+
91
+ def clause1(f)
92
+ if !f.at(ns("./title")) &&
93
+ !%w(sections preface bibliography).include?(f.parent.name)
94
+ f["inline-header"] = "true"
95
+ end
96
+ super
97
+ end
98
+
99
+ def clause(docxml)
100
+ docxml.xpath(ns("//clause[not(ancestor::annex)] | "\
101
+ "//terms | //definitions | //references | "\
102
+ "//preface/introduction[clause]")).
103
+ each do |f|
104
+ clause1(f)
105
+ end
106
+ end
107
+
108
+ include Init
11
109
  end
12
110
  end
13
111
  end
@@ -37,11 +37,10 @@ module IsoDoc
37
37
 
38
38
  def introduction(isoxml, out)
39
39
  f = isoxml.at(ns("//introduction")) || return
40
- num = f.at(ns(".//clause")) ? "0" : nil
41
40
  title_attr = { class: "IntroTitle" }
42
41
  page_break(out)
43
42
  out.div **{ class: "Section3", id: f["id"] } do |div|
44
- clause_name(num, @introduction_lbl, div, title_attr)
43
+ clause_name(nil, f.at(ns("./title")), div, title_attr)
45
44
  f.elements.each do |e|
46
45
  parse(e, div) unless e.name == "title"
47
46
  end
@@ -52,15 +51,11 @@ module IsoDoc
52
51
  f = isoxml.at(ns("//foreword")) || return
53
52
  page_break(out)
54
53
  out.div **attr_code(id: f["id"]) do |s|
55
- s.h1(**{ class: "ForewordTitle" }) { |h1| h1 << @foreword_lbl }
54
+ clause_name(nil, f.at(ns("./title")) || @i18n.foreword, s,
55
+ { class: "ForewordTitle" })
56
56
  f.elements.each { |e| parse(e, s) unless e.name == "title" }
57
57
  end
58
58
  end
59
-
60
- def clause_parse_title(node, div, c1, out)
61
- return inline_header_title(out, node, c1) if c1.nil?
62
- super
63
- end
64
59
  end
65
60
  end
66
61
  end
@@ -1,6 +1,6 @@
1
1
  require_relative "base_convert"
2
2
  require "isodoc"
3
- require_relative "metadata"
3
+ require_relative "init"
4
4
 
5
5
  module IsoDoc
6
6
  module Iso
@@ -121,6 +121,7 @@ module IsoDoc
121
121
  end
122
122
 
123
123
  include BaseConvert
124
+ include Init
124
125
  end
125
126
  end
126
127
  end
@@ -21,6 +21,8 @@ module IsoDoc
21
21
  # we can reference 0-number clauses in introduction
22
22
  def introduction_names(clause)
23
23
  return if clause.nil?
24
+ clause.at(ns("./clause")) and @anchors[clause["id"]] =
25
+ { label: "0", level: 1, xref: clause.at(ns("./title"))&.text, type: "clause" }
24
26
  clause.xpath(ns("./clause")).each_with_index do |c, i|
25
27
  section_names1(c, "0.#{i + 1}", 2)
26
28
  end
@@ -33,10 +33,6 @@ module Metanorma
33
33
  "Metanorma::ISO #{Metanorma::ISO::VERSION}"
34
34
  end
35
35
 
36
- def input_to_isodoc(file, filename)
37
- Metanorma::Input::Asciidoc.new.process(file, filename, @asciidoctor_backend)
38
- end
39
-
40
36
  def use_presentation_xml(ext)
41
37
  return true if ext == :html_alt
42
38
  super
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module ISO
3
- VERSION = "1.4.0".freeze
3
+ VERSION = "1.5.0".freeze
4
4
  end
5
5
  end
@@ -30,17 +30,18 @@ Gem::Specification.new do |spec|
30
30
  spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
31
31
 
32
32
  spec.add_dependency "ruby-jing"
33
- spec.add_dependency "isodoc", "~> 1.1.0"
34
- spec.add_dependency "metanorma-standoc", "~> 1.4.0"
33
+ spec.add_dependency "isodoc", "~> 1.2.0"
34
+ spec.add_dependency "metanorma-standoc", "~> 1.5.0"
35
35
  spec.add_dependency "tokenizer", "~> 0.3.0"
36
36
  spec.add_dependency "twitter_cldr"
37
37
  spec.add_dependency "mn2sts", "~> 1.2.0"
38
38
 
39
39
  spec.add_development_dependency "byebug"
40
+ spec.add_development_dependency "sassc", "2.4.0"
40
41
  spec.add_development_dependency "equivalent-xml", "~> 0.6"
41
42
  spec.add_development_dependency "guard", "~> 2.14"
42
43
  spec.add_development_dependency "guard-rspec", "~> 4.7"
43
- spec.add_development_dependency "rake", "~> 12.0"
44
+ spec.add_development_dependency "rake" #, "~> 12.0"
44
45
  spec.add_development_dependency "rspec", "~> 3.6"
45
46
  spec.add_development_dependency "rubocop", "= 0.54.0"
46
47
  spec.add_development_dependency "simplecov", "~> 0.15"
@@ -190,7 +190,7 @@ RSpec.describe Asciidoctor::ISO do
190
190
  </p>
191
191
  </foreword></preface><sections>
192
192
  </sections><bibliography><references id="_" obligation="informative" normative="true">
193
- <title>Normative References</title>
193
+ <title>Normative references</title>
194
194
  <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>
195
195
  <bibitem id="iso216" type="standard">
196
196
  <title format="text/plain">Reference</title>
@@ -233,7 +233,7 @@ RSpec.describe Asciidoctor::ISO do
233
233
  </p>
234
234
  </foreword></preface><sections>
235
235
  </sections><bibliography><references id="_" obligation="informative" normative="true">
236
- <title>Normative References</title>
236
+ <title>Normative references</title>
237
237
  <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>
238
238
  <bibitem id="iso216" type="standard">
239
239
  <title format="text/plain">Reference</title>
@@ -333,7 +333,7 @@ RSpec.describe Asciidoctor::ISO do
333
333
  INPUT
334
334
  #{BLANK_HDR}
335
335
  <sections></sections>
336
- <bibliography><references id="_" obligation="informative" normative="true"><title>Normative References</title>
336
+ <bibliography><references id="_" obligation="informative" normative="true"><title>Normative references</title>
337
337
  <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>
338
338
  <bibitem id="iso216" type="standard">
339
339
  <title format="text/plain">Reference</title>
@@ -638,7 +638,7 @@ RSpec.describe Asciidoctor::ISO do
638
638
  </fn>
639
639
  </p>
640
640
  </clause></sections><bibliography><references id="_" obligation="informative" normative="true">
641
- <title>Normative References</title>
641
+ <title>Normative references</title>
642
642
  <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>
643
643
  <bibitem id="iso123" type="standard">
644
644
  <title format="text/plain">Standard</title>
@@ -128,7 +128,7 @@ RSpec.describe Asciidoctor::ISO do
128
128
  <sections>
129
129
 
130
130
  </sections><bibliography><references id="_" obligation="informative" normative="true">
131
- <title>Normative References</title>
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">
134
134
  <formattedref format="application/x-isodoc+xml">Reference</formattedref>
@@ -16,7 +16,7 @@ RSpec.describe Asciidoctor::ISO do
16
16
  #{BLANK_HDR}
17
17
  <sections>
18
18
  </sections><bibliography><references id="_" obligation="informative" normative="true">
19
- <title>Normative References</title>
19
+ <title>Normative references</title>
20
20
  <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>
21
21
  <bibitem id="iso123" type="standard">
22
22
  <title format="text/plain">Standard</title>
@@ -65,7 +65,7 @@ RSpec.describe Asciidoctor::ISO do
65
65
  </clause>
66
66
  </sections>
67
67
  <bibliography><references id="_" obligation="informative" normative="true">
68
- <title>Normative References</title>
68
+ <title>Normative references</title>
69
69
  <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>
70
70
  <bibitem id="iso123" type="standard">
71
71
  <title format="text/plain">Standard</title>
@@ -101,7 +101,7 @@ RSpec.describe Asciidoctor::ISO do
101
101
  <sections>
102
102
 
103
103
  </sections><bibliography><references id="_" obligation="informative" normative="true">
104
- <title>Normative References</title>
104
+ <title>Normative references</title>
105
105
  <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>
106
106
  <bibitem id="iso123">
107
107
  <formattedref format="application/x-isodoc+xml">