metanorma-iso 1.4.3 → 1.5.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ubuntu.yml +1 -1
  3. data/lib/asciidoctor/iso/base.rb +9 -20
  4. data/lib/asciidoctor/iso/cleanup.rb +2 -3
  5. data/lib/asciidoctor/iso/front.rb +6 -7
  6. data/lib/asciidoctor/iso/front_id.rb +6 -6
  7. data/lib/asciidoctor/iso/isodoc.rng +16 -7
  8. data/lib/asciidoctor/iso/section.rb +5 -11
  9. data/lib/asciidoctor/iso/term_lookup_cleanup.rb +0 -1
  10. data/lib/asciidoctor/iso/validate_section.rb +40 -44
  11. data/lib/isodoc/iso/base_convert.rb +3 -64
  12. data/lib/isodoc/iso/html/wordstyle.css +10 -9
  13. data/lib/isodoc/iso/html/wordstyle.scss +15 -9
  14. data/lib/isodoc/iso/html_convert.rb +2 -1
  15. data/lib/{asciidoctor → isodoc}/iso/i18n-en.yaml +0 -1
  16. data/lib/{asciidoctor → isodoc}/iso/i18n-fr.yaml +0 -0
  17. data/lib/{asciidoctor → isodoc}/iso/i18n-zh-Hans.yaml +0 -0
  18. data/lib/isodoc/iso/i18n.rb +19 -0
  19. data/lib/isodoc/iso/init.rb +33 -0
  20. data/lib/isodoc/iso/iso.amendment.xsl +1403 -1719
  21. data/lib/isodoc/iso/iso.international-standard.xsl +1403 -1719
  22. data/lib/isodoc/iso/metadata.rb +1 -1
  23. data/lib/isodoc/iso/presentation_xml_convert.rb +99 -1
  24. data/lib/isodoc/iso/sections.rb +3 -8
  25. data/lib/isodoc/iso/word_convert.rb +19 -14
  26. data/lib/isodoc/iso/xref.rb +2 -0
  27. data/lib/metanorma/iso/version.rb +1 -1
  28. data/metanorma-iso.gemspec +2 -2
  29. data/spec/asciidoctor-iso/base_spec.rb +3 -11
  30. data/spec/asciidoctor-iso/cleanup_spec.rb +31 -7
  31. data/spec/asciidoctor-iso/inline_spec.rb +8 -2
  32. data/spec/asciidoctor-iso/refs_spec.rb +3 -3
  33. data/spec/asciidoctor-iso/section_spec.rb +9 -6
  34. data/spec/asciidoctor-iso/table_spec.rb +7 -1
  35. data/spec/asciidoctor-iso/validate_spec.rb +100 -21
  36. data/spec/isodoc/amd_spec.rb +309 -153
  37. data/spec/isodoc/blocks_spec.rb +362 -28
  38. data/spec/isodoc/i18n_spec.rb +468 -108
  39. data/spec/isodoc/inline_spec.rb +99 -31
  40. data/spec/isodoc/iso_spec.rb +95 -29
  41. data/spec/isodoc/postproc_spec.rb +190 -150
  42. data/spec/isodoc/ref_spec.rb +175 -3
  43. data/spec/isodoc/section_spec.rb +148 -82
  44. data/spec/isodoc/table_spec.rb +142 -5
  45. data/spec/isodoc/terms_spec.rb +78 -53
  46. data/spec/isodoc/xref_spec.rb +831 -658
  47. data/spec/metanorma/processor_spec.rb +2 -1
  48. metadata +11 -9
@@ -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",
@@ -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
@@ -8,15 +8,19 @@ module IsoDoc
8
8
  def initialize(options)
9
9
  @libdir = File.dirname(__FILE__)
10
10
  super
11
+ @wordToClevels = options[:doctoclevels].to_i
12
+ @wordToClevels = 3 if @wordToClevels.zero?
13
+ @htmlToClevels = options[:htmltoclevels].to_i
14
+ @htmlToClevels = 3 if @htmlToClevels.zero?
11
15
  end
12
16
 
13
17
  def default_fonts(options)
14
18
  {
15
19
  bodyfont: (options[:script] == "Hans" ? '"SimSun",serif' :
16
20
  '"Cambria",serif'),
17
- headerfont: (options[:script] == "Hans" ? '"SimHei",sans-serif' :
18
- '"Cambria",serif'),
19
- monospacefont: '"Courier New",monospace',
21
+ headerfont: (options[:script] == "Hans" ? '"SimHei",sans-serif' :
22
+ '"Cambria",serif'),
23
+ monospacefont: '"Courier New",monospace',
20
24
  }
21
25
  end
22
26
 
@@ -24,16 +28,16 @@ module IsoDoc
24
28
  {
25
29
  htmlstylesheet: (options[:alt] ? html_doc_path("style-human.scss") :
26
30
  html_doc_path("style-iso.scss")),
27
- htmlcoverpage: html_doc_path("html_iso_titlepage.html"),
28
- htmlintropage: html_doc_path("html_iso_intro.html"),
29
- scripts: html_doc_path("scripts.html"),
30
- wordstylesheet: html_doc_path("wordstyle.scss"),
31
- standardstylesheet: html_doc_path("isodoc.scss"),
32
- header: html_doc_path("header.html"),
33
- wordcoverpage: html_doc_path("word_iso_titlepage.html"),
34
- wordintropage: html_doc_path("word_iso_intro.html"),
35
- ulstyle: "l3",
36
- olstyle: "l2",
31
+ htmlcoverpage: html_doc_path("html_iso_titlepage.html"),
32
+ htmlintropage: html_doc_path("html_iso_intro.html"),
33
+ scripts: html_doc_path("scripts.html"),
34
+ wordstylesheet: html_doc_path("wordstyle.scss"),
35
+ standardstylesheet: html_doc_path("isodoc.scss"),
36
+ header: html_doc_path("header.html"),
37
+ wordcoverpage: html_doc_path("word_iso_titlepage.html"),
38
+ wordintropage: html_doc_path("word_iso_intro.html"),
39
+ ulstyle: "l3",
40
+ olstyle: "l2",
37
41
  }
38
42
  end
39
43
 
@@ -121,6 +125,7 @@ module IsoDoc
121
125
  end
122
126
 
123
127
  include BaseConvert
128
+ include Init
124
129
  end
125
130
  end
126
131
  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
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module ISO
3
- VERSION = "1.4.3".freeze
3
+ VERSION = "1.5.4".freeze
4
4
  end
5
5
  end
@@ -30,8 +30,8 @@ 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"
@@ -186,6 +186,7 @@ RSpec.describe Asciidoctor::ISO do
186
186
  :language: el
187
187
  :script: Grek
188
188
  :publisher: IEC,IETF,ISO
189
+ :copyright-holder: ISO,IETF
189
190
  :copyright-year: 2001
190
191
  :doctype: technical-report
191
192
  INPUT
@@ -248,8 +249,8 @@ RSpec.describe Asciidoctor::ISO do
248
249
  <from>2001</from>
249
250
  <owner>
250
251
  <organization>
251
- <name>International Electrotechnical Commission</name>
252
- <abbreviation>IEC</abbreviation>
252
+ <name>International Organization for Standardization</name>
253
+ <abbreviation>ISO</abbreviation>
253
254
  </organization>
254
255
  </owner>
255
256
  </copyright>
@@ -261,15 +262,6 @@ RSpec.describe Asciidoctor::ISO do
261
262
  </organization>
262
263
  </owner>
263
264
  </copyright>
264
- <copyright>
265
- <from>2001</from>
266
- <owner>
267
- <organization>
268
- <name>International Organization for Standardization</name>
269
- <abbreviation>ISO</abbreviation>
270
- </organization>
271
- </owner>
272
- </copyright>
273
265
  <ext>
274
266
  <doctype>technical-report</doctype>
275
267
  <editorialgroup>
@@ -32,7 +32,19 @@ RSpec.describe Asciidoctor::ISO do
32
32
  <terms id="_" obligation="normative">
33
33
  <title>Terms and definitions</title>
34
34
  #{TERM_BOILERPLATE}
35
- <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>
35
+ <term id="term-t90"><preferred><stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mrow>
36
+ <mi>t</mi>
37
+ </mrow>
38
+ <mrow>
39
+ <mn>90</mn>
40
+ </mrow>
41
+ </msub></math></stem></preferred><admitted><stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mrow>
42
+ <mi>t</mi>
43
+ </mrow>
44
+ <mrow>
45
+ <mn>91</mn>
46
+ </mrow>
47
+ </msub></math></stem></admitted>
36
48
  <definition><p id="_">Time</p></definition></term>
37
49
  </terms>
38
50
  </sections>
@@ -90,8 +102,20 @@ RSpec.describe Asciidoctor::ISO do
90
102
  <terms id="_" obligation="normative">
91
103
  <title>Terms and definitions</title>
92
104
  #{TERM_BOILERPLATE}
93
- <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="_">
94
- <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mi>t</mi><mi>A</mi></msub></math></stem>
105
+ <term id="term-t90"><preferred><stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mrow>
106
+ <mi>t</mi>
107
+ </mrow>
108
+ <mrow>
109
+ <mn>90</mn>
110
+ </mrow>
111
+ </msub></math></stem></preferred><definition><formula id="_">
112
+ <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mrow>
113
+ <mi>t</mi>
114
+ </mrow>
115
+ <mrow>
116
+ <mi>A</mi>
117
+ </mrow>
118
+ </msub></math></stem>
95
119
  </formula><p id="_">This paragraph is extraneous</p></definition>
96
120
  </term>
97
121
  </terms>
@@ -190,7 +214,7 @@ RSpec.describe Asciidoctor::ISO do
190
214
  </p>
191
215
  </foreword></preface><sections>
192
216
  </sections><bibliography><references id="_" obligation="informative" normative="true">
193
- <title>Normative References</title>
217
+ <title>Normative references</title>
194
218
  <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
219
  <bibitem id="iso216" type="standard">
196
220
  <title format="text/plain">Reference</title>
@@ -233,7 +257,7 @@ RSpec.describe Asciidoctor::ISO do
233
257
  </p>
234
258
  </foreword></preface><sections>
235
259
  </sections><bibliography><references id="_" obligation="informative" normative="true">
236
- <title>Normative References</title>
260
+ <title>Normative references</title>
237
261
  <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
262
  <bibitem id="iso216" type="standard">
239
263
  <title format="text/plain">Reference</title>
@@ -333,7 +357,7 @@ RSpec.describe Asciidoctor::ISO do
333
357
  INPUT
334
358
  #{BLANK_HDR}
335
359
  <sections></sections>
336
- <bibliography><references id="_" obligation="informative" normative="true"><title>Normative References</title>
360
+ <bibliography><references id="_" obligation="informative" normative="true"><title>Normative references</title>
337
361
  <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
362
  <bibitem id="iso216" type="standard">
339
363
  <title format="text/plain">Reference</title>
@@ -638,7 +662,7 @@ RSpec.describe Asciidoctor::ISO do
638
662
  </fn>
639
663
  </p>
640
664
  </clause></sections><bibliography><references id="_" obligation="informative" normative="true">
641
- <title>Normative References</title>
665
+ <title>Normative references</title>
642
666
  <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
667
  <bibitem id="iso123" type="standard">
644
668
  <title format="text/plain">Standard</title>
@@ -28,7 +28,13 @@ RSpec.describe Asciidoctor::ISO do
28
28
  ‘single quote’
29
29
  super<sup>script</sup>
30
30
  sub<sub>script</sub>
31
- <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mi>a</mi><mn>90</mn></msub></math></stem>
31
+ <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mrow>
32
+ <mi>a</mi>
33
+ </mrow>
34
+ <mrow>
35
+ <mn>90</mn>
36
+ </mrow>
37
+ </msub></math></stem>
32
38
  <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub> <mrow> <mrow> <mi mathvariant="bold-italic">F</mi> </mrow> </mrow> <mrow> <mrow> <mi mathvariant="bold-italic">Α</mi> </mrow> </mrow> </msub> </math></stem>
33
39
  <admitted>alt</admitted>
34
40
  <deprecates>deprecated</deprecates>
@@ -128,7 +134,7 @@ RSpec.describe Asciidoctor::ISO do
128
134
  <sections>
129
135
 
130
136
  </sections><bibliography><references id="_" obligation="informative" normative="true">
131
- <title>Normative References</title>
137
+ <title>Normative references</title>
132
138
  <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
139
  <bibitem id="ISO712">
134
140
  <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">
@@ -66,7 +66,7 @@ RSpec.describe Asciidoctor::ISO do
66
66
  <title>Acknowledgements</title>
67
67
  </acknowledgements>
68
68
  </preface><sections>
69
- <clause id="_" obligation="normative">
69
+ <clause id="_" obligation="normative" inline-header='false' type="scope">
70
70
  <title>Scope</title>
71
71
  <p id="_">Text</p>
72
72
  </clause>
@@ -88,7 +88,9 @@ standardization at the following addresses:</p>
88
88
  <preferred>Term1</preferred>
89
89
  </term>
90
90
  </terms>
91
- <clause id="_" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title><terms id="_" obligation="normative">
91
+ <clause id="_" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title>
92
+ <terms id="_" obligation="normative">
93
+ <title>Normal Terms</title>
92
94
  <p id='_'>For the purposes of this document, the following terms and definitions apply.</p>
93
95
  <p id='_'>
94
96
  ISO and IEC maintain terminological databases for use in
@@ -108,13 +110,14 @@ standardization at the following addresses:</p>
108
110
  </p>
109
111
  </li>
110
112
  </ul>
111
- <title>Normal Terms</title>
112
113
  <term id="term-term2">
113
114
  <preferred>Term2</preferred>
114
115
  </term>
115
116
  </terms>
116
- <definitions id="_"><title>Symbols and Abbreviated Terms</title></definitions></clause>
117
- <definitions id="_"><title>Symbols and Abbreviated Terms</title></definitions>
117
+ <definitions id="_" obligation="normative">
118
+ <title>Symbols and abbreviated terms</title></definitions></clause>
119
+ <definitions id="_" obligation="normative">
120
+ <title>Symbols and abbreviated terms</title></definitions>
118
121
  <clause id="_" inline-header="false" obligation="normative"><title>Clause 4</title><clause id="_" inline-header="false" obligation="normative">
119
122
  <title>Introduction</title>
120
123
  </clause>
@@ -134,7 +137,7 @@ standardization at the following addresses:</p>
134
137
  <appendix id="_" inline-header="false" obligation="normative">
135
138
  <title>Appendix 1</title>
136
139
  </appendix></annex><bibliography><references id="_" obligation="informative" normative="true">
137
- <title>Normative References</title>
140
+ <title>Normative references</title>
138
141
  <p id="_">There are no normative references in this document.</p>
139
142
  </references><clause id="_" obligation="informative">
140
143
  <title>Bibliography</title>