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.
- checksums.yaml +4 -4
- data/README.adoc +1 -1
- data/lib/isodoc/ieee/html/htmlstyle.css +10 -0
- data/lib/isodoc/ieee/html/htmlstyle.scss +11 -0
- data/lib/isodoc/ieee/html_convert.rb +4 -1
- data/lib/isodoc/ieee/ieee.amendment.xsl +263 -111
- data/lib/isodoc/ieee/ieee.standard.xsl +263 -111
- data/lib/isodoc/ieee/metadata.rb +12 -10
- data/lib/isodoc/ieee/presentation_ref.rb +11 -8
- data/lib/isodoc/ieee/presentation_terms.rb +18 -14
- data/lib/isodoc/ieee/presentation_xml_convert.rb +10 -0
- data/lib/isodoc/ieee/word_authority.rb +1 -1
- data/lib/isodoc/ieee/word_convert.rb +3 -3
- data/lib/metanorma/ieee/basicdoc.rng +1 -1
- data/lib/metanorma/ieee/biblio-standoc.rng +0 -49
- data/lib/metanorma/ieee/biblio.rng +11 -1
- data/lib/metanorma/ieee/boilerplate.adoc +1 -1
- data/lib/metanorma/ieee/cleanup_boilerplate.rb +17 -6
- data/lib/metanorma/ieee/cleanup_ref.rb +12 -4
- data/lib/metanorma/ieee/front.rb +36 -11
- data/lib/metanorma/ieee/ieee-footnotes.yaml +18 -18
- data/lib/metanorma/ieee/isodoc.rng +7 -60
- data/lib/metanorma/ieee/relaton-ieee.rng +6 -43
- data/lib/metanorma/ieee/version.rb +1 -1
- data/metanorma-ieee.gemspec +1 -1
- metadata +3 -3
data/lib/isodoc/ieee/metadata.rb
CHANGED
@@ -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[:
|
9
|
+
@metadata[:ieee_sasb_approveddate] = "<Date Approved>"
|
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/
|
68
|
-
|
67
|
+
society = xml.at(ns("//bibdata/contributor[role/@type = 'authorizer']/" \
|
68
|
+
"organization/subdivision[@type='Society']/name"))&.text ||
|
69
|
+
"<Society>"
|
69
70
|
set(:society, society)
|
70
71
|
end
|
71
72
|
|
72
73
|
def tc(xml)
|
73
|
-
tc = xml.at(ns("//bibdata/
|
74
|
-
|
74
|
+
tc = xml.at(ns("//bibdata/contributor[role/@type = 'authorizer']/" \
|
75
|
+
"organization/subdivision[@type='Committee']/name"))&.text ||
|
76
|
+
"<Committee Name>"
|
75
77
|
set(:technical_committee, tc)
|
76
78
|
end
|
77
79
|
|
78
80
|
def wg(xml)
|
79
|
-
wg = xml.at(ns("//bibdata/
|
80
|
-
|
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/
|
86
|
-
|
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["
|
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
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
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
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
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
|
-
|
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
|
-
|
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 =
|
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
|
-
|
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
|
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
|
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 {{
|
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
|
-
|
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
|
-
|
103
|
-
|
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
|
-
|
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
|
245
|
-
else
|
252
|
+
b.previous
|
253
|
+
else bib.at("./contributor") || bib.at("./date") ||
|
246
254
|
bib.at("./docnumber") || bib.at("./docidentifier") ||
|
247
|
-
bib.at("./title")
|
255
|
+
bib.at("./title")
|
248
256
|
end
|
249
257
|
end
|
250
258
|
end
|
data/lib/metanorma/ieee/front.rb
CHANGED
@@ -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
|
4
|
-
|
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 (
|
9
|
-
|
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 (
|
15
|
-
|
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
|
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
|
23
|
-
(
|
24
|
-
|
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
|
-
|
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,
|
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.
|
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
|
-
<
|
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>
|