metanorma-ieee 0.1.1 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -12,7 +12,7 @@ module IsoDoc
12
12
 
13
13
  def xref_init(lang, script, _klass, i18n, options)
14
14
  html = HtmlConvert.new(language: lang, script: script)
15
- options = options.merge(hierarchical_assets: @hierarchical_assets)
15
+ options = options.merge(hierarchicalassets: @hierarchical_assets)
16
16
  @xrefs = Xref.new(lang, script, html, i18n, options)
17
17
  end
18
18
 
@@ -1,3 +1,5 @@
1
+ require_relative "../../relaton/render/general"
2
+
1
3
  module IsoDoc
2
4
  module IEEE
3
5
  class PresentationXMLConvert < IsoDoc::PresentationXMLConvert
@@ -1,5 +1,3 @@
1
- require_relative "../../relaton/render/general"
2
-
3
1
  module IsoDoc
4
2
  module IEEE
5
3
  class PresentationXMLConvert < IsoDoc::PresentationXMLConvert
@@ -28,9 +26,7 @@ module IsoDoc
28
26
  if coll.all? do |c|
29
27
  c.elements.size == 1 && c.elements.first.name == "p"
30
28
  end
31
- ret = coll.map do |c|
32
- c.elements.first.children.to_xml
33
- end
29
+ ret = coll.map { |c| c.elements.first.children.to_xml }
34
30
  return "<p>#{ret.join}</p>"
35
31
  end
36
32
  coll.map { |c| c.children.to_xml }.join
@@ -42,7 +38,7 @@ module IsoDoc
42
38
 
43
39
  p = v.xpath(ns("./p"))
44
40
  v.children =
45
- "<p>#{p.map(&:children).map(&:to_xml).join("\n")}</p>"\
41
+ "<p>#{p.map(&:children).map(&:to_xml).join("\n")}</p>" \
46
42
  "#{v.xpath(ns('./termsource')).to_xml}"
47
43
  end
48
44
  super
@@ -61,9 +57,9 @@ module IsoDoc
61
57
  prev = 0
62
58
  coll[1..-1].each_with_index do |r, i|
63
59
  if coll[prev]["type"] != r["type"]
64
- prev = i
65
- next
60
+ prev = i and next
66
61
  end
62
+
67
63
  coll[prev].at(ns("./preferred")) << "; #{r.at(ns('./preferred'))
68
64
  .children.to_xml}"
69
65
  r.remove
@@ -71,17 +67,20 @@ module IsoDoc
71
67
  end
72
68
 
73
69
  def sort_terms_key(term)
74
- d = term.at(ns("./preferred/expression/name | "\
75
- "./preferred/letter-symbol/name | "\
76
- "./preferred/graphical-symbol/figure/name | "\
77
- "./preferred/graphical-symbol/figure/@id | "\
70
+ d = term.at(ns("./preferred/expression/name | " \
71
+ "./preferred/letter-symbol/name | " \
72
+ "./preferred/graphical-symbol/figure/name | " \
73
+ "./preferred/graphical-symbol/figure/@id | " \
78
74
  "./preferred"))
79
75
  f = term.at(ns("./field-of-application")) || term.at(ns("./domain"))
80
76
  HTMLEntities.new.decode("#{sort_terms_key1(d)} :: #{sort_terms_key1(f)}")
81
77
  end
82
78
 
83
79
  def sort_terms_key1(elem)
84
- elem&.text&.strip&.downcase || "zzzz"
80
+ elem.nil? and return "zzzz"
81
+ dup = elem.dup
82
+ dup.xpath(ns(".//asciimath | .//latexmath")).each(&:remove)
83
+ dup.text&.strip&.downcase || "zzzz"
85
84
  end
86
85
 
87
86
  def term_related_reorder(coll)
@@ -173,7 +172,7 @@ module IsoDoc
173
172
  def collapse_term_related(rels)
174
173
  ret = rels.map do |r|
175
174
  p = r.at(ns("./preferred"))
176
- "<em>#{@i18n.relatedterms[r['type']]}:</em> "\
175
+ "<em>#{@i18n.relatedterms[r['type']]}:</em> " \
177
176
  "#{p&.children&.to_xml || '**RELATED TERM NOT FOUND**'}"
178
177
  end.join(". ")
179
178
  ret += "." unless ret.empty?
@@ -186,8 +185,7 @@ module IsoDoc
186
185
  opt[:source] and src = "(#{opt[:source].remove.children.to_xml.strip})"
187
186
  <<~TERM
188
187
  <p>#{opt[:pref]&.children&.to_xml || '**TERM NOT FOUND**'}: #{defn}
189
- #{collapse_term_related(opt[:rels])}
190
- #{src}</p>
188
+ #{collapse_term_related(opt[:rels])} #{src}</p>
191
189
  TERM
192
190
  end
193
191
 
@@ -229,7 +227,7 @@ module IsoDoc
229
227
  def merge_second_preferred(term)
230
228
  pref =
231
229
  term.at(ns("./preferred[not(abbreviation-type)]/expression/name"))
232
- x = term.xpath(ns("./preferred[expression/name][abbreviation-type] | "\
230
+ x = term.xpath(ns("./preferred[expression/name][abbreviation-type] | " \
233
231
  "./admitted[expression/name][abbreviation-type]"))
234
232
  (pref && !x.empty?) or return
235
233
  tail = x.map do |p|
@@ -7,7 +7,7 @@ module IsoDoc
7
7
  module IEEE
8
8
  class PresentationXMLConvert < IsoDoc::PresentationXMLConvert
9
9
  def initialize(options)
10
- @hierarchical_assets = options[:hierarchical_assets]
10
+ @hierarchical_assets = options[:hierarchicalassets]
11
11
  super
12
12
  end
13
13
 
@@ -107,6 +107,14 @@ module IsoDoc
107
107
  FigureTitle: "IEEEStdsRegularFigureCaption",
108
108
  }.freeze
109
109
 
110
+ def table_toc_class
111
+ %w(IEEEStdsRegularTableCaption TableTitle tabletitle)
112
+ end
113
+
114
+ def figure_toc_class
115
+ %w(IEEEStdsRegularFigureCaption FigureTitle figuretitle)
116
+ end
117
+
110
118
  def style_cleanup(docxml)
111
119
  note_style_cleanup(docxml)
112
120
  docxml.xpath("//div[@class = 'formula']/p").each do |p|
@@ -8,7 +8,7 @@ module IsoDoc
8
8
  class Xref < ::IsoDoc::Xref
9
9
  def initialize(lang, script, klass, labels, options)
10
10
  super
11
- @hierarchical_assets = options[:hierarchical_assets]
11
+ @hierarchical_assets = options[:hierarchicalassets]
12
12
  end
13
13
 
14
14
  def initial_anchor_names(doc)
@@ -29,7 +29,7 @@ module IsoDoc
29
29
  n = Counter.new
30
30
  n = section_names(doc.at(ns("//clause[@type = 'overview']")), n, 1)
31
31
  n = section_names(doc.at(ns(@klass.norm_ref_xpath)), n, 1)
32
- n = section_names(doc.at(ns("//sections/terms | "\
32
+ n = section_names(doc.at(ns("//sections/terms | " \
33
33
  "//sections/clause[descendant::terms]")), n, 1)
34
34
  n = section_names(doc.at(ns("//sections/definitions")), n, 1)
35
35
  clause_names(doc, n)
@@ -37,14 +37,14 @@ module IsoDoc
37
37
  end
38
38
 
39
39
  def middle_sections
40
- " #{@klass.norm_ref_xpath} | "\
41
- "//sections/terms | //preface/clause | "\
40
+ " #{@klass.norm_ref_xpath} | " \
41
+ "//sections/terms | //preface/clause | " \
42
42
  "//sections/definitions | //clause[parent::sections]"
43
43
  end
44
44
 
45
45
  def middle_section_asset_names(doc)
46
46
  middle_sections =
47
- "#{@klass.norm_ref_xpath} | //sections/terms | "\
47
+ "#{@klass.norm_ref_xpath} | //sections/terms | " \
48
48
  "//sections/definitions | //clause[parent::sections]"
49
49
  if @hierarchical_assets
50
50
  doc.xpath(ns(middle_sections)).each do |c|
@@ -57,9 +57,7 @@ module IsoDoc
57
57
 
58
58
  def sequential_formula_names(clause)
59
59
  c = Counter.new
60
- clause.xpath(ns(".//formula")).reject do |n|
61
- blank?(n["id"])
62
- end.each do |t|
60
+ clause.xpath(ns(".//formula")).noblank.each do |t|
63
61
  @anchors[t["id"]] = anchor_struct(
64
62
  c.increment(t).print, nil,
65
63
  t["inequality"] ? @labels["inequality"] : @labels["formula"],
@@ -71,14 +69,12 @@ module IsoDoc
71
69
  def termnote_anchor_names(docxml)
72
70
  docxml.xpath(ns("//*[termnote]")).each do |t|
73
71
  c = Counter.new
74
- sequence = UUIDTools::UUID.random_create.to_s
75
72
  notes = t.xpath(ns("./termnote"))
76
- notes.reject { |n| blank?(n["id"]) }.each do |n|
73
+ notes.noblank.each do |n|
77
74
  @anchors[n["id"]] =
78
75
  anchor_struct("#{@labels['termnote']} #{increment_label(notes, n, c)}",
79
- n,
80
- @labels["note_xref"], "termnote", false)
81
- .merge(sequence: sequence)
76
+ n, @labels["note_xref"], "termnote", false)
77
+ .merge(sequence: UUIDTools::UUID.random_create.to_s)
82
78
  end
83
79
  end
84
80
  end
@@ -188,6 +188,11 @@
188
188
  <value>adapter</value>
189
189
  <value>translator</value>
190
190
  <value>distributor</value>
191
+ <value>realizer</value>
192
+ <value>owner</value>
193
+ <value>authorizer</value>
194
+ <value>enabler</value>
195
+ <value>subject</value>
191
196
  </choice>
192
197
  </attribute>
193
198
  <zeroOrMore>
@@ -115,10 +115,10 @@
115
115
  an IEEE standard is welcome to join the relevant IEEE working group. You can
116
116
  indicate interest in a working group using the Interests tab in the Manage
117
117
  Profile &#x26; Interests area of the <link target="https://development.standards.ieee.org/myproject-web/public/view.html#landing">IEEE
118
- SA myProject system</link>.<fn><p>Available at: <link target="https://development.standards.ieee.org/myproject-web/public/view.html#landing"/>.</p></fn>
118
+ SA myProject system</link>.<fn reference="_boilerplate_1"><p>Available at: <link target="https://development.standards.ieee.org/myproject-web/public/view.html#landing"/>.</p></fn>
119
119
  An IEEE Account is needed to access the application.</p>
120
120
 
121
- <p>Comments on standards should be submitted using the <link target="https://standards.ieee.org/content/ieee-standards/en/about/contact/index.html">Contact Us</link> form.<fn><p>Available at: <link target="https://standards.ieee.org/content/ieee-standards/en/about/contact/index.html"/>.</p></fn></p>
121
+ <p>Comments on standards should be submitted using the <link target="https://standards.ieee.org/content/ieee-standards/en/about/contact/index.html">Contact Us</link> form.<fn reference="_boilerplate_2"><p>Available at: <link target="https://standards.ieee.org/content/ieee-standards/en/about/contact/index.html"/>.</p></fn></p>
122
122
  </clause>
123
123
 
124
124
  <clause><title>Laws and regulations</title>
@@ -187,7 +187,7 @@
187
187
  order to determine whether a given document is the current edition and whether
188
188
  it has been amended through the issuance of amendments, corrigenda, or errata,
189
189
  visit <link target="https://ieeexplore.ieee.org/browse/standards/collection/ieee/">IEEE
190
- Xplore</link> or <link target="https://standards.ieee.org/content/ieee-standards/en/about/contact/index.html">contact IEEE</link>.<fn><p>Available at <link target="https://ieeexplore.ieee.org/browse/standards/collection/ieee"/>.</p></fn>
190
+ Xplore</link> or <link target="https://standards.ieee.org/content/ieee-standards/en/about/contact/index.html">contact IEEE</link>.<fn reference="_boilerplate_3"><p>Available at <link target="https://ieeexplore.ieee.org/browse/standards/collection/ieee"/>.</p></fn>
191
191
  For more information about the IEEE SA or IEEE’s standards development process,
192
192
  visit the IEEE SA Website.</p>
193
193
  </clause>
@@ -195,12 +195,12 @@
195
195
  <clause>
196
196
  <title>Errata</title>
197
197
 
198
- <p>Errata, if any, for all IEEE standards can be accessed on the <link target="https://standards.ieee.org/standard/index.html">IEEE SA Website</link>.<fn><p>Available at: <link target="https://standards.ieee.org/standard/index.html"/>.</p></fn> Search for standard number and year of approval to access the web page of the published standard. Errata links are located under the Additional Resources Details section. Errata are also available in <link target="https://ieeexplore.ieee.org/browse/standards/collection/ieee/">IEEE Xplore</link>. Users are encouraged to periodically check for errata.</p>
198
+ <p>Errata, if any, for all IEEE standards can be accessed on the <link target="https://standards.ieee.org/standard/index.html">IEEE SA Website</link>.<fn reference="_boilerplate_4"><p>Available at: <link target="https://standards.ieee.org/standard/index.html"/>.</p></fn> Search for standard number and year of approval to access the web page of the published standard. Errata links are located under the Additional Resources Details section. Errata are also available in <link target="https://ieeexplore.ieee.org/browse/standards/collection/ieee/">IEEE Xplore</link>. Users are encouraged to periodically check for errata.</p>
199
199
  </clause>
200
200
 
201
201
  <clause><title>Patents</title>
202
202
 
203
- <p>IEEE Standards are developed in compliance with the <link target="https://standards.ieee.org/about/sasb/patcom/materials.html">IEEE SA Patent Policy</link>.<fn><p>Available at: <link target="https://standards.ieee.org/about/sasb/patcom/materials.html"/>.</p></fn></p>
203
+ <p>IEEE Standards are developed in compliance with the <link target="https://standards.ieee.org/about/sasb/patcom/materials.html">IEEE SA Patent Policy</link>.<fn reference="_boilerplate_5"><p>Available at: <link target="https://standards.ieee.org/about/sasb/patcom/materials.html"/>.</p></fn></p>
204
204
  <p>Attention is called to
205
205
  the possibility that implementation of this standard may require use of subject
206
206
  matter covered by patent rights. By publication of this standard, no position
@@ -247,17 +247,17 @@
247
247
  <p>At the time this draft {{ doctype }} was completed, the {{ working_group }} Working Group had the following membership:</p>
248
248
  <membership>
249
249
  <ul>
250
- <li><dl><dt>name</dt><dd>&#x3c;Chair Name&#x3e;</dd><dt>role</dt><dd>Chair</dd></dl></li>
251
- <li><dl><dt>name</dt><dd>&#x3c;Vice-chair Name&#x3e;</dd><dt>role</dt><dd>Vice Chair</dd></dl></li>
252
- <li><dl><dt>name</dt><dd>Participant1</dd><dt>role</dt><dd>Member</dd></dl></li>
253
- <li><dl><dt>name</dt><dd>Participant2</dd><dt>role</dt><dd>Member</dd></dl></li>
254
- <li><dl><dt>name</dt><dd>Participant3</dd><dt>role</dt><dd>Member</dd></dl></li>
255
- <li><dl><dt>name</dt><dd>Participant4</dd><dt>role</dt><dd>Member</dd></dl></li>
256
- <li><dl><dt>name</dt><dd>Participant5</dd><dt>role</dt><dd>Member</dd></dl></li>
257
- <li><dl><dt>name</dt><dd>Participant6</dd><dt>role</dt><dd>Member</dd></dl></li>
258
- <li><dl><dt>name</dt><dd>Participant7</dd><dt>role</dt><dd>Member</dd></dl></li>
259
- <li><dl><dt>name</dt><dd>Participant8</dd><dt>role</dt><dd>Member</dd></dl></li>
260
- <li><dl><dt>name</dt><dd>Participant9</dd><dt>role</dt><dd>Member</dd></dl></li>
250
+ <li><dl><dt>name</dt><dd><p>&#x3c;Chair Name&#x3e;</p></dd><dt>role</dt><dd><p>Chair</p></dd></dl></li>
251
+ <li><dl><dt>name</dt><dd><p>&#x3c;Vice-chair Name&#x3e;</p></dd><dt>role</dt><dd><p>Vice Chair</p></dd></dl></li>
252
+ <li><dl><dt>name</dt><dd><p>Participant1</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
253
+ <li><dl><dt>name</dt><dd><p>Participant2</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
254
+ <li><dl><dt>name</dt><dd><p>Participant3</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
255
+ <li><dl><dt>name</dt><dd><p>Participant4</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
256
+ <li><dl><dt>name</dt><dd><p>Participant5</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
257
+ <li><dl><dt>name</dt><dd><p>Participant6</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
258
+ <li><dl><dt>name</dt><dd><p>Participant7</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
259
+ <li><dl><dt>name</dt><dd><p>Participant8</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
260
+ <li><dl><dt>name</dt><dd><p>Participant9</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
261
261
  </ul>
262
262
  </membership>
263
263
  </clause>
@@ -265,15 +265,15 @@
265
265
  <p>The following members of the {{ balloting_group_type }} {{ balloting_group }} Standards Association balloting group voted on this {{ doctype }}. Balloters may have voted for approval, disapproval, or abstention.</p>
266
266
  <membership>
267
267
  <ul>
268
- <li><dl><dt>name</dt><dd>Balloter1</dd><dt>role</dt><dd>Member</dd></dl></li>
269
- <li><dl><dt>name</dt><dd>Balloter2</dd><dt>role</dt><dd>Member</dd></dl></li>
270
- <li><dl><dt>name</dt><dd>Balloter3</dd><dt>role</dt><dd>Member</dd></dl></li>
271
- <li><dl><dt>name</dt><dd>Balloter4</dd><dt>role</dt><dd>Member</dd></dl></li>
272
- <li><dl><dt>name</dt><dd>Balloter5</dd><dt>role</dt><dd>Member</dd></dl></li>
273
- <li><dl><dt>name</dt><dd>Balloter6</dd><dt>role</dt><dd>Member</dd></dl></li>
274
- <li><dl><dt>name</dt><dd>Balloter7</dd><dt>role</dt><dd>Member</dd></dl></li>
275
- <li><dl><dt>name</dt><dd>Balloter8</dd><dt>role</dt><dd>Member</dd></dl></li>
276
- <li><dl><dt>name</dt><dd>Balloter9</dd><dt>role</dt><dd>Member</dd></dl></li>
268
+ <li><dl><dt>name</dt><dd><p>Balloter1</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
269
+ <li><dl><dt>name</dt><dd><p>Balloter2</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
270
+ <li><dl><dt>name</dt><dd><p>Balloter3</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
271
+ <li><dl><dt>name</dt><dd><p>Balloter4</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
272
+ <li><dl><dt>name</dt><dd><p>Balloter5</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
273
+ <li><dl><dt>name</dt><dd><p>Balloter6</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
274
+ <li><dl><dt>name</dt><dd><p>Balloter7</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
275
+ <li><dl><dt>name</dt><dd><p>Balloter8</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
276
+ <li><dl><dt>name</dt><dd><p>Balloter9</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
277
277
  </ul>
278
278
  </membership>
279
279
  </clause>
@@ -281,19 +281,19 @@
281
281
  <p>When the IEEE SA Standards Board approved this {{ doctype }} on {{ issueddate }}, it had the following membership:</p>
282
282
  <membership>
283
283
  <ul>
284
- <li><dl><dt>name</dt><dd>&#x3c;Name&#x3e;</dd><dt>role</dt><dd>Chair</dd></dl></li>
285
- <li><dl><dt>name</dt><dd>&#x3c;Name&#x3e;</dd><dt>role</dt><dd>Vice Chair</dd></dl></li>
286
- <li><dl><dt>name</dt><dd>&#x3c;Name&#x3e;</dd><dt>role</dt><dd>Past Chair</dd></dl></li>
287
- <li><dl><dt>name</dt><dd>&#x3c;Name&#x3e;</dd><dt>role</dt><dd>Secretary</dd></dl></li>
288
- <li><dl><dt>name</dt><dd>SBMember1</dd><dt>role</dt><dd>Member</dd></dl></li>
289
- <li><dl><dt>name</dt><dd>SBMember2</dd><dt>role</dt><dd>Member</dd></dl></li>
290
- <li><dl><dt>name</dt><dd>SBMember3</dd><dt>role</dt><dd>Member</dd></dl></li>
291
- <li><dl><dt>name</dt><dd>SBMember4</dd><dt>role</dt><dd>Member</dd></dl></li>
292
- <li><dl><dt>name</dt><dd>SBMember5</dd><dt>role</dt><dd>Member</dd></dl></li>
293
- <li><dl><dt>name</dt><dd>SBMember6</dd><dt>role</dt><dd>Member</dd></dl></li>
294
- <li><dl><dt>name</dt><dd>SBMember7</dd><dt>role</dt><dd>Member</dd></dl></li>
295
- <li><dl><dt>name</dt><dd>SBMember8</dd><dt>role</dt><dd>Member</dd></dl></li>
296
- <li><dl><dt>name</dt><dd>SBMember9</dd><dt>role</dt><dd>Member</dd></dl></li>
284
+ <li><dl><dt>name</dt><dd><p>&#x3c;Name&#x3e;</p></dd><dt>role</dt><dd><p>Chair</p></dd></dl></li>
285
+ <li><dl><dt>name</dt><dd><p>&#x3c;Name&#x3e;</p></dd><dt>role</dt><dd><p>Vice Chair</p></dd></dl></li>
286
+ <li><dl><dt>name</dt><dd><p>&#x3c;Name&#x3e;</p></dd><dt>role</dt><dd><p>Past Chair</p></dd></dl></li>
287
+ <li><dl><dt>name</dt><dd><p>&#x3c;Name&#x3e;</p></dd><dt>role</dt><dd><p>Secretary</p></dd></dl></li>
288
+ <li><dl><dt>name</dt><dd><p>SBMember1</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
289
+ <li><dl><dt>name</dt><dd><p>SBMember2</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
290
+ <li><dl><dt>name</dt><dd><p>SBMember3</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
291
+ <li><dl><dt>name</dt><dd><p>SBMember4</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
292
+ <li><dl><dt>name</dt><dd><p>SBMember5</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
293
+ <li><dl><dt>name</dt><dd><p>SBMember6</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
294
+ <li><dl><dt>name</dt><dd><p>SBMember7</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
295
+ <li><dl><dt>name</dt><dd><p>SBMember8</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
296
+ <li><dl><dt>name</dt><dd><p>SBMember9</p></dd><dt>role</dt><dd><p>Member</p></dd></dl></li>
297
297
  </ul>
298
298
  </membership>
299
299
  <p type="emeritus_sign">*Member Emeritus</p>
@@ -337,7 +337,7 @@
337
337
  {% else %}
338
338
  <clause id="boilerplate_word_usage">
339
339
  <title>Word usage</title>
340
- <p>The word <em>shall</em> indicates mandatory requirements strictly to be followed in order to conform to the standard and from which no deviation is permitted (<em>shall</em> equals <em>is required to</em>).<fn><p>The use of the word <em>must</em> is deprecated and cannot be used when stating mandatory requirements; <em>must</em> is used only to describe unavoidable situations.</p></fn><fn><p>The use of <em>will</em> is deprecated and cannot be used when stating mandatory requirements; <em>will</em> is only used in statements of fact.</p></fn></p>
340
+ <p>The word <em>shall</em> indicates mandatory requirements strictly to be followed in order to conform to the standard and from which no deviation is permitted (<em>shall</em> equals <em>is required to</em>).<fn reference="_boilerplate_6"><p>The use of the word <em>must</em> is deprecated and cannot be used when stating mandatory requirements; <em>must</em> is used only to describe unavoidable situations.</p></fn><fn reference="_boilerplate_7"><p>The use of <em>will</em> is deprecated and cannot be used when stating mandatory requirements; <em>will</em> is only used in statements of fact.</p></fn></p>
341
341
  <p>The word <em>should</em> indicates that among several possibilities one is recommended as particularly suitable, without mentioning or excluding others; or that a certain course of action is preferred but not necessarily required (<em>should</em> equals <em>is recommended that</em>).</p>
342
342
  <p>The word <em>may</em> is used to indicate a course of action permissible within the limits of the standard (<em>may</em> equals <em>is permitted to</em>).</p>
343
343
  <p>The word <em>can</em> is used for statements of possibility and capability, whether material, physical, or causal (<em>can</em> equals <em>is able to</em>).</p>
@@ -89,7 +89,8 @@ module Metanorma
89
89
  "//annex//note[not(@type = 'boilerplate')]") or
90
90
  return
91
91
  ins = n.at("./p[last()]")
92
- ins << "<fn><p>#{@i18n.note_inform_fn}</p></fn>"
92
+ ins << "<fn reference='_boilerplate_cleanup1'>" \
93
+ "<p>#{@i18n.note_inform_fn}</p></fn>"
93
94
  end
94
95
 
95
96
  def table_footnote_renumber1(fnote, idx, seen)
@@ -169,6 +170,7 @@ module Metanorma
169
170
  ul.xpath("./li").each { |li| populate_participants2(li) }
170
171
  ul.xpath(".//p[normalize-space() = '']").each(&:remove)
171
172
  end
173
+ clause.at("./title")&.remove
172
174
  clause.children.to_xml
173
175
  end
174
176
 
@@ -183,14 +185,16 @@ module Metanorma
183
185
  end
184
186
 
185
187
  def populate_participants2(list)
186
- if dl = list.at("./dl")
188
+ curr = list
189
+ p = curr.at("./p") and curr = p
190
+ if dl = curr.at("./dl")
187
191
  ret = extract_participants(dl)
188
192
  dl.children = ret.keys.map do |k|
189
- "<dt>#{k}</dt><dd>#{ret[k]}</dd>"
193
+ "<dt>#{k}</dt><dd><p>#{ret[k]}</p></dd>"
190
194
  end.join
191
195
  else
192
- list.children = "<dl><dt>name</dt><dd>#{list.children.to_xml}</dd>" \
193
- "<dt>role</dt><dd>member</dd></dl>"
196
+ list.children = "<dl><dt>name</dt><dd><p>#{curr.children.to_xml}" \
197
+ "</p></dd><dt>role</dt><dd><p>member</p></dd></dl>"
194
198
  end
195
199
  end
196
200
 
@@ -62,13 +62,13 @@ module Metanorma
62
62
  end
63
63
 
64
64
  def html_extract_attributes(node)
65
- super.merge(hierarchical_assets:
65
+ super.merge(hierarchicalassets:
66
66
  node.attr("hierarchical-object-numbering"),
67
67
  ieeedtd: node.attr("ieee-dtd"))
68
68
  end
69
69
 
70
70
  def doc_extract_attributes(node)
71
- super.merge(hierarchical_assets:
71
+ super.merge(hierarchicalassets:
72
72
  node.attr("hierarchical-object-numbering"),
73
73
  ulstyle: "l11", olstyle: "l16")
74
74
  end
@@ -10,6 +10,22 @@
10
10
  <start>
11
11
  <ref name="ieee-standard"/>
12
12
  </start>
13
+ <define name="sections">
14
+ <element name="sections">
15
+ <optional>
16
+ <ref name="note"/>
17
+ </optional>
18
+ <oneOrMore>
19
+ <choice>
20
+ <ref name="clause"/>
21
+ <ref name="terms"/>
22
+ <ref name="term-clause"/>
23
+ <ref name="definitions"/>
24
+ <ref name="floating-title"/>
25
+ </choice>
26
+ </oneOrMore>
27
+ </element>
28
+ </define>
13
29
  </include>
14
30
  <define name="ieee-standard">
15
31
  <element name="ieee-standard">
@@ -177,11 +177,7 @@
177
177
  </optional>
178
178
  <optional>
179
179
  <attribute name="style">
180
- <choice>
181
- <value>basic</value>
182
- <value>full</value>
183
- <value>short</value>
184
- </choice>
180
+ <ref name="XrefStyleType"/>
185
181
  </attribute>
186
182
  </optional>
187
183
  <ref name="XrefBody"/>
@@ -1031,6 +1027,7 @@
1031
1027
  <ref name="stem"/>
1032
1028
  <ref name="index"/>
1033
1029
  <ref name="eref"/>
1030
+ <ref name="erefstack"/>
1034
1031
  <ref name="xref"/>
1035
1032
  <ref name="hyperlink"/>
1036
1033
  </choice>
@@ -1045,6 +1042,7 @@
1045
1042
  <ref name="stem"/>
1046
1043
  <ref name="index"/>
1047
1044
  <ref name="eref"/>
1045
+ <ref name="erefstack"/>
1048
1046
  <ref name="xref"/>
1049
1047
  <ref name="hyperlink"/>
1050
1048
  </choice>
@@ -1058,6 +1056,7 @@
1058
1056
  <ref name="PureTextElement"/>
1059
1057
  <ref name="index"/>
1060
1058
  <ref name="eref"/>
1059
+ <ref name="erefstack"/>
1061
1060
  <ref name="xref"/>
1062
1061
  <ref name="hyperlink"/>
1063
1062
  </choice>
@@ -1153,7 +1152,7 @@
1153
1152
  <data type="boolean"/>
1154
1153
  </attribute>
1155
1154
  </optional>
1156
- <ref name="BibliographicItem"/>
1155
+ <ref name="ReducedBibliographicItem"/>
1157
1156
  </element>
1158
1157
  </define>
1159
1158
  <define name="image" combine="choice">
@@ -1195,6 +1194,7 @@
1195
1194
  <ref name="add"/>
1196
1195
  <ref name="del"/>
1197
1196
  <ref name="span"/>
1197
+ <ref name="erefstack"/>
1198
1198
  </choice>
1199
1199
  </define>
1200
1200
  <define name="add">
@@ -1202,6 +1202,7 @@
1202
1202
  <choice>
1203
1203
  <ref name="PureTextElement"/>
1204
1204
  <ref name="eref"/>
1205
+ <ref name="erefstack"/>
1205
1206
  <ref name="stem"/>
1206
1207
  <ref name="keyword"/>
1207
1208
  <ref name="xref"/>
@@ -1214,6 +1215,7 @@
1214
1215
  <choice>
1215
1216
  <ref name="PureTextElement"/>
1216
1217
  <ref name="eref"/>
1218
+ <ref name="erefstack"/>
1217
1219
  <ref name="stem"/>
1218
1220
  <ref name="keyword"/>
1219
1221
  <ref name="xref"/>
@@ -1278,6 +1280,7 @@
1278
1280
  </optional>
1279
1281
  <choice>
1280
1282
  <ref name="eref"/>
1283
+ <ref name="erefstack"/>
1281
1284
  <ref name="xref"/>
1282
1285
  <ref name="termref"/>
1283
1286
  </choice>
@@ -1970,6 +1973,7 @@
1970
1973
  </element>
1971
1974
  <choice>
1972
1975
  <ref name="eref"/>
1976
+ <ref name="erefstack"/>
1973
1977
  <ref name="xref"/>
1974
1978
  <ref name="termref"/>
1975
1979
  </choice>
@@ -2525,6 +2529,7 @@
2525
2529
  <ref name="xref"/>
2526
2530
  <ref name="hyperlink"/>
2527
2531
  <ref name="eref"/>
2532
+ <ref name="erefstack"/>
2528
2533
  </choice>
2529
2534
  <oneOrMore>
2530
2535
  <element name="coords">
@@ -2572,6 +2577,7 @@
2572
2577
  <ref name="xref"/>
2573
2578
  <ref name="hyperlink"/>
2574
2579
  <ref name="eref"/>
2580
+ <ref name="erefstack"/>
2575
2581
  </choice>
2576
2582
  </element>
2577
2583
  </zeroOrMore>
@@ -2620,6 +2626,15 @@
2620
2626
  <ref name="PureTextElement"/>
2621
2627
  </oneOrMore>
2622
2628
  </define>
2629
+ <define name="XrefConnectiveType">
2630
+ <choice>
2631
+ <value>and</value>
2632
+ <value>or</value>
2633
+ <value>from</value>
2634
+ <value>to</value>
2635
+ <value/>
2636
+ </choice>
2637
+ </define>
2623
2638
  <define name="XrefTarget">
2624
2639
  <element name="location">
2625
2640
  <attribute name="target">
@@ -2628,16 +2643,35 @@
2628
2643
  </data>
2629
2644
  </attribute>
2630
2645
  <attribute name="connective">
2631
- <choice>
2632
- <value>and</value>
2633
- <value>or</value>
2634
- <value>from</value>
2635
- <value>to</value>
2636
- <value/>
2637
- </choice>
2646
+ <ref name="XrefConnectiveType"/>
2638
2647
  </attribute>
2639
2648
  </element>
2640
2649
  </define>
2650
+ <define name="XrefStyleType">
2651
+ <choice>
2652
+ <value>basic</value>
2653
+ <value>full</value>
2654
+ <value>short</value>
2655
+ <value>id</value>
2656
+ </choice>
2657
+ </define>
2658
+ <define name="erefTypeWithConnective">
2659
+ <optional>
2660
+ <attribute name="connective">
2661
+ <ref name="XrefConnectiveType"/>
2662
+ </attribute>
2663
+ </optional>
2664
+ <ref name="erefType"/>
2665
+ </define>
2666
+ <define name="erefstack">
2667
+ <element name="erefstack">
2668
+ <oneOrMore>
2669
+ <element name="eref">
2670
+ <ref name="erefTypeWithConnective"/>
2671
+ </element>
2672
+ </oneOrMore>
2673
+ </element>
2674
+ </define>
2641
2675
  <start>
2642
2676
  <ref name="standard-document"/>
2643
2677
  </start>
@@ -3,8 +3,9 @@ module Metanorma
3
3
  class TermLookupCleanup < Metanorma::Standoc::TermLookupCleanup
4
4
  def remove_missing_ref_term(node, _target)
5
5
  node.at("../xrefrender")&.remove
6
- node.replace("<preferred><expression><name>#{node.children.to_xml}"\
7
- "</name></expression></preferred>")
6
+ #node.replace("<preferred><expression><name>#{node.children.to_xml}"\
7
+ # "</name></expression></preferred>")
8
+ node.replace("<refterm>#{node.children.to_xml}</refterm>")
8
9
  end
9
10
  end
10
11
  end
@@ -131,7 +131,7 @@ module Metanorma
131
131
  klass = IsoDoc::IEEE::HtmlConvert.new(language: @lang, script: @script)
132
132
  xrefs = IsoDoc::IEEE::Xref
133
133
  .new(@lang, @script, klass, IsoDoc::IEEE::I18n.new(@lang, @script),
134
- { hierarchical_assets: @hierarchical_assets })
134
+ { hierarchicalassets: @hierarchical_assets })
135
135
  xrefs.parse(Nokogiri::XML(xmldoc.to_xml))
136
136
  xrefs
137
137
  end