metanorma-ieee 1.5.1 → 1.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,7 +6,7 @@ module IsoDoc
6
6
  class Metadata < IsoDoc::Metadata
7
7
  def initialize(lang, script, i18n, fonts_options = {})
8
8
  super
9
- @metadata[:issueddate] = "&lt;Date Approved&gt;"
9
+ @metadata[:ieee_sasb_approveddate] = "&lt;Date Approved&gt;"
10
10
  logos
11
11
  end
12
12
 
@@ -64,28 +64,30 @@ module IsoDoc
64
64
  end
65
65
 
66
66
  def society(xml)
67
- society = xml.at(ns("//bibdata/ext/editorialgroup/" \
68
- "society"))&.text || "&lt;Society&gt;"
67
+ society = xml.at(ns("//bibdata/contributor[role/@type = 'authorizer']/" \
68
+ "organization/subdivision[@type='Society']/name"))&.text ||
69
+ "&lt;Society&gt;"
69
70
  set(:society, society)
70
71
  end
71
72
 
72
73
  def tc(xml)
73
- tc = xml.at(ns("//bibdata/ext/editorialgroup/" \
74
- "committee"))&.text || "&lt;Committee Name&gt;"
74
+ tc = xml.at(ns("//bibdata/contributor[role/@type = 'authorizer']/" \
75
+ "organization/subdivision[@type='Committee']/name"))&.text ||
76
+ "&lt;Committee Name&gt;"
75
77
  set(:technical_committee, tc)
76
78
  end
77
79
 
78
80
  def wg(xml)
79
- wg = xml.at(ns("//bibdata/ext/editorialgroup/" \
80
- "working-group")) or return nil
81
+ wg = xml.at(ns("//bibdata/contributor[role/@type = 'authorizer']/" \
82
+ "organization/subdivision[@type='Working group']/name")) or return nil
81
83
  set(:working_group, wg.text)
82
84
  end
83
85
 
84
86
  def bg(xml)
85
- bg = xml.at(ns("//bibdata/ext/editorialgroup/" \
86
- "balloting-group")) or return nil
87
+ bg = xml.at(ns("//bibdata/contributor[role/@type = 'authorizer']/" \
88
+ "organization/subdivision[@type='Balloting group']/name")) or return nil
87
89
  set(:balloting_group, bg.text)
88
- set(:balloting_group_type, bg["type"])
90
+ set(:balloting_group_type, bg.parent["subtype"])
89
91
  end
90
92
 
91
93
  def otherid(isoxml, _out)
@@ -117,10 +117,12 @@ module IsoDoc
117
117
  end
118
118
 
119
119
  def availability_note(bib)
120
- note = bib.at(ns("./note[@type = 'Availability']")) or return ""
121
- id = UUIDTools::UUID.random_create.to_s
122
- @new_ids[id] = nil
123
- "<fn id='#{id}' reference='#{id}'><p>#{note.content}</p></fn>"
120
+ notes = bib.xpath(ns("./note[@type = 'Availability']"))
121
+ notes.map do |note|
122
+ id = UUIDTools::UUID.random_create.to_s
123
+ @new_ids[id] = nil
124
+ "<fn id='#{id}' reference='#{id}'><p>#{note.content}</p></fn>"
125
+ end.join
124
126
  end
125
127
 
126
128
  def omit_docid_prefix(prefix)
@@ -130,10 +132,11 @@ module IsoDoc
130
132
 
131
133
  def bracket_if_num(num)
132
134
  num.nil? and return nil
133
- num = num.text.sub(/^\[/, "").sub(/\]$/, "")
134
- return "[#{num}]" if /^B?\d+$/.match?(num)
135
-
136
- num
135
+ ret = num.dup
136
+ ret.xpath(ns(".//fn")).each(&:remove)
137
+ ret = ret.text.strip.sub(/^\[/, "").sub(/\]$/, "")
138
+ /^B?\d+$/.match?(ret) and return "[#{ret}]"
139
+ ret
137
140
  end
138
141
  end
139
142
  end
@@ -31,6 +31,13 @@ module IsoDoc
31
31
  end
32
32
  end
33
33
 
34
+ def wrap_nodeset_in_parens(xpath)
35
+ unless xpath.empty?
36
+ xpath[0].previous = " ("
37
+ xpath[-1].next = ")"
38
+ end
39
+ end
40
+
34
41
  def unwrap_definition1(d)
35
42
  %w(verbal-definition non-verbal-representation).each do |e|
36
43
  v = d.at(ns("./#{e}")) or next
@@ -41,11 +48,7 @@ module IsoDoc
41
48
  v.children =
42
49
  "#{p.map(&:children).map { |x| to_xml(x) }.join("\n")}#{s}"
43
50
  else
44
- s = v.xpath(ns("./source"))
45
- unless s.empty?
46
- s[0].previous = " ("
47
- s[-1].next = ")"
48
- end
51
+ wrap_nodeset_in_parens(v.xpath(ns("./source")))
49
52
  end
50
53
  v.replace(v.children)
51
54
  end
@@ -77,6 +80,7 @@ module IsoDoc
77
80
  def: term.at(ns("./fmt-definition")),
78
81
  rels: term.at(ns("./fmt-related"))&.remove,
79
82
  source: term.at(ns("./fmt-termsource"))&.remove,
83
+ fns: term.xpath(ns("./fn")).map(&:remove),
80
84
  )
81
85
  term.at(ns("./fmt-admitted"))&.remove
82
86
  ins = term.at(ns("./fmt-definition")) and
@@ -96,8 +100,7 @@ module IsoDoc
96
100
  def collapse_term_related1(rels)
97
101
  rels.xpath(ns("./p")).each do |p|
98
102
  orig = p.at(ns(".//semx[@element = 'related']"))
99
- reln = "<em>#{@i18n.relatedterms[orig['type']]}:</em> "
100
- p.add_first_child reln
103
+ p.add_first_child "<em>#{@i18n.relatedterms[orig['type']]}:</em> "
101
104
  p.xpath(ns(".//semx[@element = 'related']")).each do |r|
102
105
  r.at(ns("./fmt-preferred")) or
103
106
  r.add_first_child "**RELATED TERM NOT FOUND**"
@@ -107,9 +110,8 @@ module IsoDoc
107
110
 
108
111
  def collapse_term_template(opt)
109
112
  defn, multiblock = collapse_unwrap_definition(opt[:def])
110
- opt[:source] and src = "(#{to_xml(opt[:source].remove.children).strip})"
111
113
  t = collapse_term_pref(opt)
112
- tail = "#{collapse_term_related(opt[:rels])} #{src}"
114
+ tail = collapse_term_template_tail(opt)
113
115
  if multiblock
114
116
  tail = tail.strip.empty? ? "" : "<p>#{tail}</p>"
115
117
  "<p>#{t}:</p> #{defn}#{tail}"
@@ -117,14 +119,16 @@ module IsoDoc
117
119
  end
118
120
  end
119
121
 
122
+ def collapse_term_template_tail(opt)
123
+ opt[:source] and src = "(#{to_xml(opt[:source].children).strip})"
124
+ opt[:fns].empty? or fn = opt[:fns].map(&:to_xml).join
125
+ "#{collapse_term_related(opt[:rels])} #{src}#{fn}"
126
+ end
127
+
120
128
  def collapse_term_pref(opt)
121
129
  p = opt[:pref]
122
130
  p.text.strip.empty? and return "**TERM NOT FOUND**"
123
- s = p.xpath(ns(".//semx[@element = 'source']"))
124
- unless s.empty?
125
- s[0].previous = " ("
126
- s[-1].next = ")"
127
- end
131
+ wrap_nodeset_in_parens(p.xpath(ns(".//semx[@element = 'source']")))
128
132
  p.xpath(ns(".//fmt-termsource")).each { |x| x.replace(x.children) }
129
133
  to_xml(p.children).strip
130
134
  end
@@ -228,6 +228,16 @@ module IsoDoc
228
228
  n.children.wrap("<em></em>")
229
229
  end
230
230
 
231
+ # before processing, move license termnotes to fn at end of term,
232
+ # so they aren't numbered as termnotes
233
+ def conversions(docxml)
234
+ docxml.xpath(ns("//termnote[@type='license']")).each do |n|
235
+ n.name = "fn"
236
+ n.parent << n
237
+ end
238
+ super
239
+ end
240
+
231
241
  include Init
232
242
  end
233
243
  end
@@ -114,7 +114,7 @@ module IsoDoc
114
114
  "<div class='WordSection'>#{para}#{d}</div>"
115
115
  end.join(SECTIONBREAK)
116
116
  div.document.at("//div[@class = 'WordSectionIntro']")
117
- .previous_element.previous = SECTIONBREAK + out
117
+ .previous_element.previous = SECTIONBREAK + out + SECTIONBREAK
118
118
  end
119
119
 
120
120
  def feedback_table(docxml)
@@ -203,16 +203,16 @@ module IsoDoc
203
203
  end
204
204
  end
205
205
 
206
- # "Figure 1" remove each of these: strip elements in caption associated
206
+ # "Figure 1" remove each of these: strip elements in caption associated
207
207
  # with autonumbering -- # but not in footnotes. The autonumber captions
208
- # are provided by Word styles instead
208
+ # are provided by Word styles instead.
209
+ # Retain the em-dash delimiting caption
209
210
  def strip_caption_semx(name)
210
211
  name.xpath(".//xmlns:semx[@element = 'autonum']/"\
211
212
  "preceding-sibling::*[normalize-space() = '']").each do |s|
212
213
  s.ancestors("fn").empty? and s.remove
213
214
  end
214
215
  name.xpath(ns(".//span[@class = 'fmt-element-name'] | "\
215
- ".//span[@class = 'fmt-caption-delim'] | "\
216
216
  ".//semx[@element = 'autonum']")).each do |s|
217
217
  s.ancestors("fn").empty? and s.remove
218
218
  end
@@ -1291,13 +1291,13 @@ Restricted recursively to contain only other such inline elements with no identi
1291
1291
  <ref name="pure_strike"/>
1292
1292
  <ref name="pure_smallcap"/>
1293
1293
  <ref name="br"/>
1294
+ <ref name="stem"/>
1294
1295
  </choice>
1295
1296
  </define>
1296
1297
  <define name="NestedTextElement">
1297
1298
  <a:documentation>Contents of TextElement tags: leaves out tags that should occur only at top level of block: bookmark image hr pagebreak</a:documentation>
1298
1299
  <choice>
1299
1300
  <ref name="PureTextElement"/>
1300
- <ref name="stem"/>
1301
1301
  <ref name="eref"/>
1302
1302
  <ref name="xref"/>
1303
1303
  <ref name="hyperlink"/>
@@ -76,12 +76,6 @@ from other documents in the same doctype</a:documentation>
76
76
  <ref name="flavor">
77
77
  <a:documentation>Flavour of Metanorma used to process this document</a:documentation>
78
78
  </ref>
79
- <optional>
80
- <ref name="editorialgroup">
81
- <a:documentation>Groups associated with the production of the standards document, typically within
82
- a standards definition organization</a:documentation>
83
- </ref>
84
- </optional>
85
79
  <zeroOrMore>
86
80
  <ref name="ics">
87
81
  <a:documentation>Classification of the document contents taken from the International Classification of Standards</a:documentation>
@@ -130,49 +124,6 @@ a standards definition organization</a:documentation>
130
124
  However we prefer not to hardcode it, given ongoing extension.</a:documentation>
131
125
  <text/>
132
126
  </define>
133
- <define name="editorialgroup">
134
- <a:documentation>A group associated with the production of the standards document, typically within
135
- a standards definition organization</a:documentation>
136
- <element name="editorialgroup">
137
- <oneOrMore>
138
- <ref name="technical-committee">
139
- <a:documentation>A technical committee associated with the production of the standards document</a:documentation>
140
- </ref>
141
- </oneOrMore>
142
- </element>
143
- </define>
144
- <define name="technical-committee">
145
- <a:documentation>Technical committee associated with the production of a standards document</a:documentation>
146
- <element name="technical-committee">
147
- <ref name="IsoWorkgroup"/>
148
- </element>
149
- </define>
150
- <define name="IsoWorkgroup">
151
- <optional>
152
- <attribute name="number">
153
- <a:documentation>Numeric identifier of the technical committee</a:documentation>
154
- </attribute>
155
- </optional>
156
- <optional>
157
- <attribute name="type">
158
- <a:documentation>Type of the technical committee, used in identifying the technical committee</a:documentation>
159
- </attribute>
160
- </optional>
161
- <optional>
162
- <attribute name="identifier">
163
- <a:documentation>Non-numeric, complete identifier of the technical committee</a:documentation>
164
- </attribute>
165
- </optional>
166
- <optional>
167
- <attribute name="prefix">
168
- <a:documentation>Disambiguating prefix added to number to form the identifier of the technical committee,
169
- typically indicating its type</a:documentation>
170
- </attribute>
171
- </optional>
172
- <text>
173
- <a:documentation>Name of the technical committee</a:documentation>
174
- </text>
175
- </define>
176
127
  <define name="ics">
177
128
  <a:documentation>Classification taken from the International Classification of Standards.
178
129
  ICS is defined by ISO here -- https://www.iso.org/publication/PUB100033.html</a:documentation>
@@ -242,6 +242,8 @@ Detailed in https://www.relaton.org/model/creator/</a:documentation>
242
242
  </choice>
243
243
  </define>
244
244
  <define name="roledescription">
245
+ <a:documentation>A more detailed description of the role of the contributor
246
+ Some descriptions are reserved words; in particular, the editorial committee of a standard has the role description "committee"</a:documentation>
245
247
  <element name="description">
246
248
  <ref name="LocalizedMarkedUpString"/>
247
249
  </element>
@@ -443,7 +445,10 @@ real names (if the person is named with a pseudonym or user name); previous lega
443
445
  </oneOrMore>
444
446
  <zeroOrMore>
445
447
  <ref name="subdivision">
446
- <a:documentation>The subdivision of the organization directly involved with the production of the bibliographic item</a:documentation>
448
+ <a:documentation>The subdivision of the organization directly involved with the production of the bibliographic item.
449
+ Multiple subdivisions can be specified for an organization, with no implication of hierarchical
450
+ relation between them
451
+ Editorial and advisory groups are represented as consecutive subdivisions of the SDO</a:documentation>
447
452
  </ref>
448
453
  </zeroOrMore>
449
454
  <optional>
@@ -485,6 +490,11 @@ real names (if the person is named with a pseudonym or user name); previous lega
485
490
  <a:documentation>The type of subdivision</a:documentation>
486
491
  </attribute>
487
492
  </optional>
493
+ <optional>
494
+ <attribute name="subtype">
495
+ <a:documentation>The subtype of subdivision; e.g. different types of technical committee</a:documentation>
496
+ </attribute>
497
+ </optional>
488
498
  <ref name="OrganizationType">
489
499
  <a:documentation>The subdivision, modelled recursively as an organization</a:documentation>
490
500
  </ref>
@@ -275,7 +275,7 @@ role::: Member
275
275
  [[boilerplate-participants-sb]]
276
276
  ==== {blank}
277
277
 
278
- When the IEEE SA Standards Board approved this {{ doctype }} on {{ issueddate }}, it had the following membership:
278
+ When the IEEE SA Standards Board approved this {{ doctype }} on {{ ieee_sasb_approveddate }}, it had the following membership:
279
279
 
280
280
  ++++
281
281
  <membership>
@@ -55,12 +55,22 @@ module Metanorma
55
55
  PARTICIPANT_BOILERPLATE_LOCATIONS.each do |k, v|
56
56
  populate_participants(xml, k.to_s, v)
57
57
  end
58
- p = xml.at(".//p[@type = 'emeritus_sign']")
59
- ul = xml.at("//clause[@anchor = 'boilerplate-participants-sb']//ul")
60
- p && ul and ul.next = p
58
+ emeritus_sign(xml)
61
59
  xml.at("//sections//clause[@type = 'participants']")&.remove
62
60
  end
63
61
 
62
+ def emeritus_sign(xml)
63
+ p = xml.at(".//p[@type = 'emeritus_sign']") or return
64
+ ul = xml.at("//clause[@anchor = 'boilerplate-participants-sb']//ul") or
65
+ return
66
+ has_asterisk = ul.xpath(".//p")&.any? do |li|
67
+ li.text.strip.end_with?("*")
68
+ end
69
+ if has_asterisk then ul.next = p
70
+ else p.remove
71
+ end
72
+ end
73
+
64
74
  def populate_participants(xml, target, subtitle)
65
75
  t = xml.at("//clause[@anchor = '#{target}']/membership") or return
66
76
  s = xml.xpath("//clause[@type = 'participants']/clause").detect do |x|
@@ -98,9 +108,10 @@ module Metanorma
98
108
  dl.children = ret.keys.map do |k|
99
109
  "<dt>#{k}</dt><dd #{add_id_text}><p>#{ret[k]}</p></dd>"
100
110
  end.join
101
- else list.children =
102
- "<dl><dt>name</dt><dd #{add_id_text}><p>#{curr.children.to_xml}" \
103
- "</p></dd><dt>role</dt><dd #{add_id_text}><p>member</p></dd></dl>"
111
+ else list.children = <<~XML
112
+ <dl><dt>name</dt><dd #{add_id_text}><p>#{curr.children.to_xml}
113
+ </p></dd><dt>role</dt><dd #{add_id_text}><p>member</p></dd></dl>
114
+ XML
104
115
  end
105
116
  end
106
117
 
@@ -239,12 +239,20 @@ module Metanorma
239
239
 
240
240
  def insert_availability_note(bib, msg)
241
241
  bib or return
242
- note = %(<note type="Availability"><p>#{msg}</p></note>)
242
+ Array(msg).each do |msg1|
243
+ note = %(<note type="Availability"><p>#{msg1}</p></note>)
244
+ if b = insert_availability_note_ins(bib)
245
+ b.next = note
246
+ end
247
+ end
248
+ end
249
+
250
+ def insert_availability_note_ins(bib)
243
251
  if b = bib.at("./language | ./script | ./abstract | ./status")
244
- b.previous = note
245
- else b = bib.at("./contributor") || bib.at("./date") ||
252
+ b.previous
253
+ else bib.at("./contributor") || bib.at("./date") ||
246
254
  bib.at("./docnumber") || bib.at("./docidentifier") ||
247
- bib.at("./title") and b.next = note
255
+ bib.at("./title")
248
256
  end
249
257
  end
250
258
  end
@@ -4,16 +4,6 @@ require "pubid-ieee"
4
4
  module Metanorma
5
5
  module Ieee
6
6
  class Converter < Standoc::Converter
7
- def metadata_committee(node, xml)
8
- metadata_committee_prep(node) or return
9
- xml.editorialgroup do |a|
10
- committee_component("society", node, a)
11
- committee_component("balloting-group", node, a)
12
- committee_component("working-group", node, a)
13
- committee_component("committee", node, a)
14
- end
15
- end
16
-
17
7
  def metadata_committee_prep(node)
18
8
  node.attr("doctype") == "whitepaper" &&
19
9
  node.attr("docsubtype") == "industry-connection-report" and
@@ -26,6 +16,41 @@ module Metanorma
26
16
  true
27
17
  end
28
18
 
19
+ def metadata_committee_types(_node)
20
+ %w(society balloting-group working-group committee)
21
+ end
22
+
23
+ def committee_contributors(node, xml, agency, opt)
24
+ metadata_committee_prep(node) or return
25
+ super
26
+ end
27
+
28
+ def org_attrs_add_committees(node, ret, opts, opts_orig)
29
+ opts_orig[:groups]&.each_with_index do |g, i|
30
+ i.zero? and next
31
+ opts = committee_contrib_org_prep(node, g, nil, opts_orig)
32
+ ret << org_attrs_parse_core(node, opts).map do |x|
33
+ x.merge(subdivtype: opts[:subdivtype])
34
+ end
35
+ end
36
+ contributors_committees_nest1(ret)
37
+ end
38
+
39
+ def contributors_committees_nest1(committees)
40
+ committees.empty? and return committees
41
+ committees = committees.map(&:reverse).reverse.flatten
42
+ committees.each_with_index do |m, i|
43
+ i.zero? and next
44
+ m[:subdiv] = committees[i - 1]
45
+ end
46
+ committees[-1].nil? and return []
47
+ [committees[-1]]
48
+ end
49
+
50
+ def committee_contrib_org_prep(node, type, agency, _opts)
51
+ super.merge(role: "authorizer")
52
+ end
53
+
29
54
  def metadata_other_id(node, xml)
30
55
  a = node.attr("isbn-pdf") and
31
56
  xml.docidentifier a, type: "ISBN", scope: "PDF"
@@ -121,7 +146,7 @@ module Metanorma
121
146
  end
122
147
 
123
148
  def datetypes
124
- super + %w{feedback-ended}
149
+ super + %w{feedback-ended ieee-sasb-approved}
125
150
  end
126
151
 
127
152
  def metadata_subdoctype(node, xml)
@@ -1,28 +1,27 @@
1
1
  ---
2
- ieee: |
3
- IEEE publications are available from The Institute of Electrical and
4
- Electronics Engineers (http://standards.ieee.org/).
2
+ ieee:
3
+ - The IEEE standards or products referred to in this clause are trademarks owned by The Institute of Electrical and Electronics Engineers, Incorporated.
4
+ - IEEE publications are available from The Institute of Electrical and
5
+ Electronics Engineers (http://standards.ieee.org/).
5
6
 
6
7
  iec: |
7
8
  IEC publications are available from the International Electrotechnical
8
- Commission (http://www.iec.ch/). IEC publications are also available in
9
- the United States from the American National Standards Institute
10
- (http://www.ansi.org/).
9
+ Commission (https://www.iec.ch) and the American National Standards Institute
10
+ (https://www.ansi.org/).
11
11
 
12
12
  cispr: |
13
13
  CISPR documents are available from the International Electrotechnical
14
- Commission (http://www.iec.ch/). CISPR documents are also available in
15
- the United States from the American National Standards Institute
16
- (http://www.ansi.org)
14
+ Commission (https://www.iec.ch/) and the American National Standards Institute
15
+ (https://www.ansi.org/).
17
16
 
18
17
  ietf: |
19
- IETF documents (e.g., RFCs) are available from the Internet Engineering Task Force (http://www.ietf.org/).
18
+ IETF documents (e.g., RFCs) are available from the Internet Engineering Task
19
+ Force (http://www.ietf.org/).
20
20
 
21
21
  iso: |
22
- ISO publications are available from the ISO Central Secretariat
23
- (http://www.iso.org/). ISO publications are also available in the United
24
- States from the American National Standards Institute
25
- (http://www.ansi.org/).
22
+ ISO publications are available from the International Organization for
23
+ Standardization (https://www.iso.org/) and the American National Standards
24
+ Institute (https://www.ansi.org/).
26
25
 
27
26
  iso-iec: |
28
27
  ISO/IEC documents are available from the International Organization for
@@ -65,13 +64,14 @@ w3c: |
65
64
  (https://www.w3.org).
66
65
 
67
66
  oasis: |
68
- OASIS publications are available from the Organization for the
69
- Organization for the Advancement of Structured Information Standards
70
- (http://www.oasis-open.org)
67
+ OASIS publications are available from the Organization for the Advancement
68
+ of Structured Information Standards (http://www.oasis-open.org)
71
69
 
72
70
  3gpp: |
73
71
  3GPP(TM) documents are available from the 3rd Generation Partnership
74
72
  Project Web site (http://www.3gpp.org).
75
73
 
76
74
  ieee-withdrawn: |
77
- % has been withdrawn; however, copies can be obtained from Global Engineering, 15 Inverness Way East, Englewood, CO 80112-5704, USA, tel. (303) 792-2181 (http://global.ihs.com/).
75
+ % has been withdrawn; however, copies can be obtained from Global Engineering,
76
+ 15 Inverness Way East, Englewood, CO 80112-5704, USA, tel. (303) 792-2181
77
+ (http://global.ihs.com/).
@@ -1,6 +1,6 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3
- <!-- VERSION v2.1.0 -->
3
+ <!-- VERSION v2.1.1 -->
4
4
 
5
5
  <!--
6
6
  ALERT: cannot have root comments, because of https://github.com/metanorma/metanorma/issues/437
@@ -42,36 +42,6 @@ All IdRefType instances point not to `@id` in Semantic XML, which is the Content
42
42
  but to `@anchor`, the user-supplied cross-reference</a:documentation>
43
43
  <text/>
44
44
  </define>
45
- <define name="index-primary">
46
- <element name="primary">
47
- <oneOrMore>
48
- <choice>
49
- <ref name="PureTextElement"/>
50
- <ref name="stem"/>
51
- </choice>
52
- </oneOrMore>
53
- </element>
54
- </define>
55
- <define name="index-secondary">
56
- <element name="secondary">
57
- <oneOrMore>
58
- <choice>
59
- <ref name="PureTextElement"/>
60
- <ref name="stem"/>
61
- </choice>
62
- </oneOrMore>
63
- </element>
64
- </define>
65
- <define name="index-tertiary">
66
- <element name="tertiary">
67
- <oneOrMore>
68
- <choice>
69
- <ref name="PureTextElement"/>
70
- <ref name="stem"/>
71
- </choice>
72
- </oneOrMore>
73
- </element>
74
- </define>
75
45
  <define name="review">
76
46
  <a:documentation>Generalise BasicDoc element from just review comments, to general annotations;
77
47
  the type attribute defaults to `review` for reviews</a:documentation>
@@ -592,28 +562,6 @@ normative or informative references, some split references into sections organiz
592
562
  </oneOrMore>
593
563
  </element>
594
564
  </define>
595
- <define name="sub">
596
- <a:documentation>Subscript text. Corresponds to HTML `sub</a:documentation>
597
- <element name="sub">
598
- <zeroOrMore>
599
- <choice>
600
- <ref name="PureTextElement"/>
601
- <ref name="stem"/>
602
- </choice>
603
- </zeroOrMore>
604
- </element>
605
- </define>
606
- <define name="sup">
607
- <a:documentation>Superscript text. Corresponds to HTML `sup`</a:documentation>
608
- <element name="sup">
609
- <zeroOrMore>
610
- <choice>
611
- <ref name="PureTextElement"/>
612
- <ref name="stem"/>
613
- </choice>
614
- </zeroOrMore>
615
- </element>
616
- </define>
617
565
  <define name="pagebreak">
618
566
  <a:documentation>Page break. Only applicable in paged layouts (e.g. PDF, Word), and not flow layouts (e.g. HTML)</a:documentation>
619
567
  <element name="pagebreak">
@@ -1094,7 +1042,6 @@ That concept may be defined as a term within the current document, or it may be
1094
1042
  <zeroOrMore>
1095
1043
  <choice>
1096
1044
  <ref name="PureTextElement"/>
1097
- <ref name="stem"/>
1098
1045
  <ref name="index"/>
1099
1046
  <ref name="index-xref"/>
1100
1047
  </choice>
@@ -1107,7 +1054,6 @@ That concept may be defined as a term within the current document, or it may be
1107
1054
  <zeroOrMore>
1108
1055
  <choice>
1109
1056
  <ref name="PureTextElement"/>
1110
- <ref name="stem"/>
1111
1057
  <ref name="index"/>
1112
1058
  <ref name="index-xref"/>
1113
1059
  </choice>
@@ -2025,10 +1971,7 @@ used in document amendments</a:documentation>
2025
1971
  <element name="name">
2026
1972
  <a:documentation>The symbolic form of the designation</a:documentation>
2027
1973
  <oneOrMore>
2028
- <choice>
2029
- <ref name="PureTextElement"/>
2030
- <ref name="stem"/>
2031
- </choice>
1974
+ <ref name="PureTextElement"/>
2032
1975
  </oneOrMore>
2033
1976
  </element>
2034
1977
  </element>
@@ -2081,7 +2024,6 @@ used in document amendments</a:documentation>
2081
2024
  <zeroOrMore>
2082
2025
  <choice>
2083
2026
  <ref name="PureTextElement"/>
2084
- <ref name="stem"/>
2085
2027
  <ref name="index"/>
2086
2028
  <ref name="index-xref"/>
2087
2029
  </choice>
@@ -2291,6 +2233,11 @@ used in document amendments</a:documentation>
2291
2233
  <ref name="RequiredId"/>
2292
2234
  <ref name="NumberingAttributes"/>
2293
2235
  <ref name="BlockAttributes"/>
2236
+ <optional>
2237
+ <attribute name="type">
2238
+ <a:documentation>Semantic classification of note</a:documentation>
2239
+ </attribute>
2240
+ </optional>
2294
2241
  <oneOrMore>
2295
2242
  <choice>
2296
2243
  <a:documentation>Content of the term note</a:documentation>