metanorma-ieee 1.4.5 → 1.4.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 23aed03427f39e05c59b8fb66fb555503ed1807c60809815427325c2150d6f94
4
- data.tar.gz: b39444a29add41e3c8d9991b06505a468756d81320fee90977c3b0921be50ff6
3
+ metadata.gz: c1de28fda3c7d892ac0633077ffb84c9388da5aa3b3be02fe47fa8b95b01318c
4
+ data.tar.gz: 3f48ba8b1bc8abf04e19e293df52095d2cc5ef007aa16ea5d233db93db8458c4
5
5
  SHA512:
6
- metadata.gz: 384870e47ca420c52a526ef2665fa9a34d7ebe95c1d22820d84b491523192de790fafc208083cc0470737279603528b7c927484bdf898f51a2cc1e63d603f113
7
- data.tar.gz: 869e5854cbcaeb23da8958638376c7f854e34ae08a17ee8f77fa9b7bc31055e29727bca1770b218d7806563b1f5d3f8d0d36727f70fc9b3cb4f98732a0e2b53c
6
+ metadata.gz: 3ae290371c0a7f2dca309c78ee22684ebb4c9394cdcffb2a3179d8a5ec8715e768361ff5e647c35aa240cfa80381a99729399366b67637e5411baaf6f7dc974c
7
+ data.tar.gz: 3fbde9ecd98c2760a4be175c7f46bf2a1c472b0daedbc8bb7295abae64be2f505525c8e5aea3bcd4eb34c1360ae96ab87648bde42ab707be258738feb661b824
@@ -320,8 +320,6 @@ h6:hover > a.anchor,
320
320
 
321
321
  svg {
322
322
  width: 100%;
323
- padding-bottom: 92%;
324
- height: 1px;
325
323
  overflow: visible;
326
324
  }
327
325
 
@@ -4083,6 +4083,7 @@
4083
4083
  <xsl:variable name="hair_space"> </xsl:variable>
4084
4084
  <xsl:variable name="en_dash">–</xsl:variable>
4085
4085
  <xsl:variable name="em_dash">—</xsl:variable>
4086
+ <xsl:variable name="nonbreak_space_em_dash_space"> — </xsl:variable>
4086
4087
  <xsl:variable name="cr">&#13;</xsl:variable>
4087
4088
  <xsl:variable name="lf">
4088
4089
  </xsl:variable>
@@ -12195,11 +12196,11 @@
12195
12196
  </xsl:template>
12196
12197
 
12197
12198
  <!-- figure/fn -->
12198
- <xsl:template match="*[local-name() = 'figure']/*[local-name() = 'fn']" priority="2"/>
12199
+ <xsl:template match="*[local-name() = 'figure'][not(@class = 'pseudocode')]/*[local-name() = 'fn']" priority="2"/>
12199
12200
  <!-- figure/note -->
12200
- <xsl:template match="*[local-name() = 'figure']/*[local-name() = 'note']" priority="2"/>
12201
+ <xsl:template match="*[local-name() = 'figure'][not(@class = 'pseudocode')]/*[local-name() = 'note']" priority="2"/>
12201
12202
  <!-- figure/example -->
12202
- <xsl:template match="*[local-name() = 'figure']/*[local-name() = 'example']" priority="2"/>
12203
+ <xsl:template match="*[local-name() = 'figure'][not(@class = 'pseudocode')]/*[local-name() = 'example']" priority="2"/>
12203
12204
 
12204
12205
  <!-- figure/note[@type = 'units'] -->
12205
12206
  <!-- image/note[@type = 'units'] -->
@@ -15746,6 +15747,9 @@
15746
15747
  <xsl:template match="*[local-name() = 'quote']/*[local-name() = 'author']" mode="update_xml_pres"/>
15747
15748
  <xsl:template match="*[local-name() = 'amend']" mode="update_xml_step1"/>
15748
15749
  <xsl:template match="*[local-name() = 'amend']" mode="update_xml_pres"/>
15750
+ <!-- https://github.com/metanorma/isodoc/issues/687 -->
15751
+ <xsl:template match="*[local-name() = 'source']" mode="update_xml_step1"/>
15752
+ <xsl:template match="*[local-name() = 'source']" mode="update_xml_pres"/>
15749
15753
 
15750
15754
  <xsl:template match="*[local-name() = 'metanorma-extension']/*[local-name() = 'attachment']" mode="update_xml_step1">
15751
15755
  <xsl:copy>
@@ -16028,6 +16032,20 @@
16028
16032
  </xsl:element>
16029
16033
  </xsl:template>
16030
16034
 
16035
+ <xsl:template match="*[local-name() = 'fmt-source']"/>
16036
+ <xsl:template match="*[local-name() = 'fmt-source']" mode="update_xml_step1">
16037
+ <xsl:element name="source" namespace="{$namespace_full}">
16038
+ <xsl:copy-of select="@*"/>
16039
+ <xsl:apply-templates mode="update_xml_step1"/>
16040
+ </xsl:element>
16041
+ </xsl:template>
16042
+ <xsl:template match="*[local-name() = 'fmt-source']" mode="update_xml_pres">
16043
+ <xsl:element name="source" namespace="{$namespace_full}">
16044
+ <xsl:copy-of select="@*"/>
16045
+ <xsl:apply-templates mode="update_xml_pres"/>
16046
+ </xsl:element>
16047
+ </xsl:template>
16048
+
16031
16049
  <xsl:template match="*[local-name() = 'span'][ @class = 'fmt-caption-label' or @class = 'fmt-element-name' or @class = 'fmt-caption-delim' or @class = 'fmt-autonum-delim']" mode="update_xml_step1" priority="3">
16032
16050
  <xsl:apply-templates mode="update_xml_step1"/>
16033
16051
  </xsl:template>
@@ -17489,6 +17507,12 @@
17489
17507
  </xsl:if>
17490
17508
  </xsl:template>
17491
17509
 
17510
+ <xsl:template name="setIDforNamedDestinationInline">
17511
+ <xsl:if test="@named_dest">
17512
+ <fo:inline><xsl:call-template name="setIDforNamedDestination"/></fo:inline>
17513
+ </xsl:if>
17514
+ </xsl:template>
17515
+
17492
17516
  <xsl:template name="setNamedDestination">
17493
17517
  <!-- skip GUID, e.g. _33eac3cb-9663-4291-ae26-1d4b6f4635fc -->
17494
17518
  <xsl:if test="@id and normalize-space(java:matches(java:java.lang.String.new(@id), '_[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}')) = 'false'">
@@ -4083,6 +4083,7 @@
4083
4083
  <xsl:variable name="hair_space"> </xsl:variable>
4084
4084
  <xsl:variable name="en_dash">–</xsl:variable>
4085
4085
  <xsl:variable name="em_dash">—</xsl:variable>
4086
+ <xsl:variable name="nonbreak_space_em_dash_space"> — </xsl:variable>
4086
4087
  <xsl:variable name="cr">&#13;</xsl:variable>
4087
4088
  <xsl:variable name="lf">
4088
4089
  </xsl:variable>
@@ -12195,11 +12196,11 @@
12195
12196
  </xsl:template>
12196
12197
 
12197
12198
  <!-- figure/fn -->
12198
- <xsl:template match="*[local-name() = 'figure']/*[local-name() = 'fn']" priority="2"/>
12199
+ <xsl:template match="*[local-name() = 'figure'][not(@class = 'pseudocode')]/*[local-name() = 'fn']" priority="2"/>
12199
12200
  <!-- figure/note -->
12200
- <xsl:template match="*[local-name() = 'figure']/*[local-name() = 'note']" priority="2"/>
12201
+ <xsl:template match="*[local-name() = 'figure'][not(@class = 'pseudocode')]/*[local-name() = 'note']" priority="2"/>
12201
12202
  <!-- figure/example -->
12202
- <xsl:template match="*[local-name() = 'figure']/*[local-name() = 'example']" priority="2"/>
12203
+ <xsl:template match="*[local-name() = 'figure'][not(@class = 'pseudocode')]/*[local-name() = 'example']" priority="2"/>
12203
12204
 
12204
12205
  <!-- figure/note[@type = 'units'] -->
12205
12206
  <!-- image/note[@type = 'units'] -->
@@ -15746,6 +15747,9 @@
15746
15747
  <xsl:template match="*[local-name() = 'quote']/*[local-name() = 'author']" mode="update_xml_pres"/>
15747
15748
  <xsl:template match="*[local-name() = 'amend']" mode="update_xml_step1"/>
15748
15749
  <xsl:template match="*[local-name() = 'amend']" mode="update_xml_pres"/>
15750
+ <!-- https://github.com/metanorma/isodoc/issues/687 -->
15751
+ <xsl:template match="*[local-name() = 'source']" mode="update_xml_step1"/>
15752
+ <xsl:template match="*[local-name() = 'source']" mode="update_xml_pres"/>
15749
15753
 
15750
15754
  <xsl:template match="*[local-name() = 'metanorma-extension']/*[local-name() = 'attachment']" mode="update_xml_step1">
15751
15755
  <xsl:copy>
@@ -16028,6 +16032,20 @@
16028
16032
  </xsl:element>
16029
16033
  </xsl:template>
16030
16034
 
16035
+ <xsl:template match="*[local-name() = 'fmt-source']"/>
16036
+ <xsl:template match="*[local-name() = 'fmt-source']" mode="update_xml_step1">
16037
+ <xsl:element name="source" namespace="{$namespace_full}">
16038
+ <xsl:copy-of select="@*"/>
16039
+ <xsl:apply-templates mode="update_xml_step1"/>
16040
+ </xsl:element>
16041
+ </xsl:template>
16042
+ <xsl:template match="*[local-name() = 'fmt-source']" mode="update_xml_pres">
16043
+ <xsl:element name="source" namespace="{$namespace_full}">
16044
+ <xsl:copy-of select="@*"/>
16045
+ <xsl:apply-templates mode="update_xml_pres"/>
16046
+ </xsl:element>
16047
+ </xsl:template>
16048
+
16031
16049
  <xsl:template match="*[local-name() = 'span'][ @class = 'fmt-caption-label' or @class = 'fmt-element-name' or @class = 'fmt-caption-delim' or @class = 'fmt-autonum-delim']" mode="update_xml_step1" priority="3">
16032
16050
  <xsl:apply-templates mode="update_xml_step1"/>
16033
16051
  </xsl:template>
@@ -17489,6 +17507,12 @@
17489
17507
  </xsl:if>
17490
17508
  </xsl:template>
17491
17509
 
17510
+ <xsl:template name="setIDforNamedDestinationInline">
17511
+ <xsl:if test="@named_dest">
17512
+ <fo:inline><xsl:call-template name="setIDforNamedDestination"/></fo:inline>
17513
+ </xsl:if>
17514
+ </xsl:template>
17515
+
17492
17516
  <xsl:template name="setNamedDestination">
17493
17517
  <!-- skip GUID, e.g. _33eac3cb-9663-4291-ae26-1d4b6f4635fc -->
17494
17518
  <xsl:if test="@id and normalize-space(java:matches(java:java.lang.String.new(@id), '_[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}')) = 'false'">
@@ -119,7 +119,7 @@ module IsoDoc
119
119
  def availability_note(bib)
120
120
  note = bib.at(ns("./note[@type = 'Availability']")) or return ""
121
121
  id = UUIDTools::UUID.random_create.to_s
122
- "<fn reference='#{id}'><p>#{note.content}</p></fn>"
122
+ "<fn id='_#{id}' reference='#{id}'><p>#{note.content}</p></fn>"
123
123
  end
124
124
 
125
125
  def omit_docid_prefix(prefix)
@@ -34,14 +34,14 @@ module IsoDoc
34
34
  def unwrap_definition1(d)
35
35
  %w(verbal-definition non-verbal-representation).each do |e|
36
36
  v = d.at(ns("./#{e}")) or next
37
- if v.elements.all? { |n| %w(termsource p).include?(n.name) }
37
+ if v.elements.all? { |n| %w(source p).include?(n.name) }
38
38
  p = v.xpath(ns("./p"))
39
- s = v.xpath(ns("./termsource"))
39
+ s = v.xpath(ns("./source"))
40
40
  s.empty? or s = " (#{s.map { |x| to_xml(x) }.join})"
41
41
  v.children =
42
42
  "#{p.map(&:children).map { |x| to_xml(x) }.join("\n")}#{s}"
43
43
  else
44
- s = v.xpath(ns("./termsource"))
44
+ s = v.xpath(ns("./source"))
45
45
  unless s.empty?
46
46
  s[0].previous = " ("
47
47
  s[-1].next = ")"
@@ -117,7 +117,7 @@ module IsoDoc
117
117
  def collapse_term_pref(opt)
118
118
  p = opt[:pref]
119
119
  p.text.strip.empty? and return "**TERM NOT FOUND**"
120
- s = p.xpath(ns(".//semx[@element = 'termsource']"))
120
+ s = p.xpath(ns(".//semx[@element = 'source']"))
121
121
  unless s.empty?
122
122
  s[0].previous = " ("
123
123
  s[-1].next = ")"
@@ -267,6 +267,10 @@ in a document (e.g. sourcecode annotations)</a:documentation>
267
267
  <value>justified</value>
268
268
  </choice>
269
269
  </define>
270
+ <define name="IdRefType">
271
+ <a:documentation>Type of cross-references to elements. In BasicDoc, these always point to id { xsd:ID } </a:documentation>
272
+ <data type="IDREF"/>
273
+ </define>
270
274
  <define name="RequiredId">
271
275
  <a:documentation>Mandatory anchor of element, to be used for cross-references within the document</a:documentation>
272
276
  <attribute name="id">
@@ -409,13 +413,13 @@ in a document (e.g. sourcecode annotations)</a:documentation>
409
413
  <attribute name="from">
410
414
  <a:documentation>Identifier for the start of the text or point in the text to which the comment applies.
411
415
  If not provided, the comment applies in the vicinity of the place it has been inserted into the text</a:documentation>
412
- <data type="IDREF"/>
416
+ <ref name="IdRefType"/>
413
417
  </attribute>
414
418
  </optional>
415
419
  <optional>
416
420
  <attribute name="to">
417
421
  <a:documentation>Identifier for the end of the text to which the comment applies</a:documentation>
418
- <data type="IDREF"/>
422
+ <ref name="IdRefType"/>
419
423
  </attribute>
420
424
  </optional>
421
425
  </define>
@@ -1504,7 +1508,7 @@ Restricted recursively to contain only other such inline elements with no identi
1504
1508
  <attribute name="to">
1505
1509
  <a:documentation>A reference to an anchor element (typically a bookmark),
1506
1510
  to indicate that the index range covers a range of locations between the current index element and the `to` anchor</a:documentation>
1507
- <data type="IDREF"/>
1511
+ <ref name="IdRefType"/>
1508
1512
  </attribute>
1509
1513
  </optional>
1510
1514
  <ref name="index-primary">
@@ -1662,7 +1666,7 @@ which can be bookmarks as well as block or section references</a:documentation>
1662
1666
  <define name="XrefAttributes">
1663
1667
  <attribute name="target">
1664
1668
  <a:documentation>The identifier of a section, block or inlined element being referenced</a:documentation>
1665
- <data type="IDREF"/>
1669
+ <ref name="IdRefType"/>
1666
1670
  </attribute>
1667
1671
  <optional>
1668
1672
  <attribute name="type">
@@ -1723,7 +1727,7 @@ The target of a footnote is the location it is embedded in within the text</a:do
1723
1727
  <attribute name="target">
1724
1728
  <a:documentation>The target of the callout is understood to be the location of the callout within the source code;
1725
1729
  the extent of the target is not expressed overtly</a:documentation>
1726
- <data type="IDREF"/>
1730
+ <ref name="IdRefType"/>
1727
1731
  </attribute>
1728
1732
  <text>
1729
1733
  <a:documentation>The label of the callout, used to identify its target within the source code</a:documentation>
@@ -30,7 +30,7 @@ module Metanorma
30
30
  end
31
31
 
32
32
  def initial_note(xml)
33
- n = xml.at("//boilerplate//note[@id = 'boilerplate_front']")
33
+ n = xml.at("//boilerplate//note[@anchor = 'boilerplate_front']")
34
34
  s = xml.at("//sections")
35
35
  (n && s) or return
36
36
  s.children.empty? and s << " "
@@ -39,7 +39,7 @@ module Metanorma
39
39
 
40
40
  def word_usage(xml)
41
41
  @document_scheme == "ieee-sa-2021" or return
42
- n = xml.at("//boilerplate//clause[@id = 'boilerplate_word_usage']")
42
+ n = xml.at("//boilerplate//clause[@anchor = 'boilerplate_word_usage']")
43
43
  &.remove
44
44
  s = xml.at("//clause[@type = 'overview']")
45
45
  (n && s) or return
@@ -155,13 +155,13 @@ module Metanorma
155
155
  populate_participants(xml, k.to_s, v)
156
156
  end
157
157
  p = xml.at(".//p[@type = 'emeritus_sign']")
158
- ul = xml.at("//clause[@id = 'boilerplate-participants-sb']//ul")
158
+ ul = xml.at("//clause[@anchor = 'boilerplate-participants-sb']//ul")
159
159
  p && ul and ul.next = p
160
160
  xml.at("//sections//clause[@type = 'participants']")&.remove
161
161
  end
162
162
 
163
163
  def populate_participants(xml, target, subtitle)
164
- t = xml.at("//clause[@id = '#{target}']/membership") or return
164
+ t = xml.at("//clause[@anchor = '#{target}']/membership") or return
165
165
  s = xml.xpath("//clause[@type = 'participants']/clause").detect do |x|
166
166
  n = x.at("./title") and n.text.strip.downcase == subtitle
167
167
  end
@@ -91,7 +91,7 @@ module Metanorma
91
91
  ieee = xmldoc.xpath("//references/bibitem")
92
92
  .each_with_object({}) do |b, m|
93
93
  bib_pubs(b).include?(IEEE) and
94
- m[b["id"]] = b.at("./docidentifier[@scope = 'trademark']")&.text
94
+ m[b["anchor"]] = b.at("./docidentifier[@scope = 'trademark']")&.text
95
95
  end
96
96
  trademark_ieee_erefs1(xmldoc, "//preface//eref", ieee)
97
97
  trademark_ieee_erefs1(xmldoc, "//sections//eref | //annex//eref", ieee)
@@ -34,12 +34,12 @@ module Metanorma
34
34
  end
35
35
 
36
36
  def clause_attrs_preprocess(attrs, node)
37
- case node.title
38
- when "Purpose" then attrs[:type] = "purpose"
39
- when "Overview" then attrs[:type] = "overview"
40
- when "Scope" then attrs[:type] = "scope"
41
- when "Word Usage" then attrs[:type] = "word-usage"
42
- when "Participants" then attrs[:type] = "participants"
37
+ case node.title.downcase
38
+ when "purpose" then attrs[:type] = "purpose"
39
+ when "overview" then attrs[:type] = "overview"
40
+ when "scope" then attrs[:type] = "scope"
41
+ when "word usage" then attrs[:type] = "word-usage"
42
+ when "participants" then attrs[:type] = "participants"
43
43
  end
44
44
  super
45
45
  end
@@ -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.0.4 -->
3
+ <!-- VERSION v2.0.6 -->
4
4
 
5
5
  <!--
6
6
  ALERT: cannot have root comments, because of https://github.com/metanorma/metanorma/issues/437
@@ -36,6 +36,12 @@
36
36
  </zeroOrMore>
37
37
  </element>
38
38
  </define>
39
+ <define name="IdRefType">
40
+ <a:documentation>Cross-references are not normalised to xsd:IDREF in Semantic XML: that is deferred to Presentation XML.
41
+ All IdRefType instances point not to `@id` in Semantic XML, which is the Content GUID for an element,
42
+ but to `@anchor`, the user-supplied cross-reference</a:documentation>
43
+ <text/>
44
+ </define>
39
45
  <define name="index-primary">
40
46
  <element name="primary">
41
47
  <oneOrMore>
@@ -238,7 +244,7 @@
238
244
  <a:documentation>Notes specific to this block</a:documentation>
239
245
  </ref>
240
246
  </zeroOrMore>
241
- <ref name="TermSource">
247
+ <ref name="BlockSource">
242
248
  <a:documentation>A source for the table</a:documentation>
243
249
  </ref>
244
250
  </define>
@@ -262,10 +268,112 @@ and is intended to be referenced by a callout within the source code</a:document
262
268
  <a:documentation>Notes whose scope is the current block</a:documentation>
263
269
  </ref>
264
270
  </zeroOrMore>
265
- <ref name="TermSource">
271
+ <ref name="BlockSource">
272
+ <a:documentation>A source for the block</a:documentation>
273
+ </ref>
274
+ </define>
275
+ <define name="FigureBody">
276
+ <optional>
277
+ <ref name="tname">
278
+ <a:documentation>The caption of the block</a:documentation>
279
+ </ref>
280
+ </optional>
281
+ <choice>
282
+ <a:documentation>Content of the figure</a:documentation>
283
+ <ref name="image"/>
284
+ <ref name="video"/>
285
+ <ref name="audio"/>
286
+ <ref name="pre"/>
287
+ <oneOrMore>
288
+ <ref name="paragraph-with-footnote"/>
289
+ </oneOrMore>
290
+ <zeroOrMore>
291
+ <ref name="figure"/>
292
+ </zeroOrMore>
293
+ </choice>
294
+ <zeroOrMore>
295
+ <ref name="fn">
296
+ <a:documentation>Footnotes specific to the figure</a:documentation>
297
+ </ref>
298
+ </zeroOrMore>
299
+ <optional>
300
+ <ref name="dl">
301
+ <a:documentation>An optional definitions list defining any symbols used in the figure</a:documentation>
302
+ </ref>
303
+ </optional>
304
+ <zeroOrMore>
305
+ <ref name="note">
306
+ <a:documentation>Notes whose scope is the current block</a:documentation>
307
+ </ref>
308
+ </zeroOrMore>
309
+ <ref name="BlockSource">
310
+ <a:documentation>A source for the block</a:documentation>
311
+ </ref>
312
+ </define>
313
+ <define name="FigureNoIdBody">
314
+ <optional>
315
+ <ref name="source">
316
+ <a:documentation>A URI or other reference intended to link to an externally hosted image (or equivalent)</a:documentation>
317
+ </ref>
318
+ </optional>
319
+ <optional>
320
+ <ref name="tname">
321
+ <a:documentation>The caption of the block</a:documentation>
322
+ </ref>
323
+ </optional>
324
+ <choice>
325
+ <a:documentation>Content of the figure</a:documentation>
326
+ <ref name="image-no-id"/>
327
+ <ref name="video-no-id"/>
328
+ <ref name="audio-no-id"/>
329
+ <ref name="pre-no-id"/>
330
+ <oneOrMore>
331
+ <ref name="paragraph-with-footnote-no-id"/>
332
+ </oneOrMore>
333
+ <zeroOrMore>
334
+ <ref name="figure-no-id"/>
335
+ </zeroOrMore>
336
+ </choice>
337
+ <zeroOrMore>
338
+ <ref name="fn">
339
+ <a:documentation>Footnotes specific to the figure</a:documentation>
340
+ </ref>
341
+ </zeroOrMore>
342
+ <optional>
343
+ <ref name="dl-no-id">
344
+ <a:documentation>An optional definitions list defining any symbols used in the figure</a:documentation>
345
+ </ref>
346
+ </optional>
347
+ <zeroOrMore>
348
+ <ref name="note-no-id">
349
+ <a:documentation>Notes whose scope is the current block</a:documentation>
350
+ </ref>
351
+ </zeroOrMore>
352
+ <ref name="BlockSource">
266
353
  <a:documentation>A source for the block</a:documentation>
267
354
  </ref>
268
355
  </define>
356
+ <define name="source">
357
+ <element name="source">
358
+ <attribute name="status">
359
+ <a:documentation>The status of the term as it is used in this document, relative to its definition in the original document</a:documentation>
360
+ <ref name="SourceStatusType"/>
361
+ </attribute>
362
+ <attribute name="type">
363
+ <a:documentation>The type of the managed term in the present context</a:documentation>
364
+ <ref name="SourceTypeType"/>
365
+ </attribute>
366
+ <ref name="origin">
367
+ <a:documentation>The original document and location where the term definition has been obtained from</a:documentation>
368
+ </ref>
369
+ <optional>
370
+ <ref name="modification">
371
+ <a:documentation>Any changes that the definition of the term has undergone relative to the original document,
372
+ in order to be applicable in this standardisation document</a:documentation>
373
+ </ref>
374
+ </optional>
375
+ </element>
376
+ </define>
269
377
  <define name="sourcecodebody">
270
378
  <a:documentation>The computer code or other such text presented in the block, as a single unformatted string.
271
379
  (The string should be treated as pre-formatted text, with whitespace treated as significant)</a:documentation>
@@ -687,6 +795,32 @@ titlecase, or lowercase</a:documentation>
687
795
  </attribute>
688
796
  </optional>
689
797
  </define>
798
+ <define name="RequiredId" combine="interleave">
799
+ <optional>
800
+ <attribute name="anchor">
801
+ <a:documentation>User-supplied anchor of element; replaced by content-based id, with all references to the anchor updated accordingly</a:documentation>
802
+ </attribute>
803
+ </optional>
804
+ <optional>
805
+ <attribute name="source">
806
+ <a:documentation>Sourcing of the current element in an external data model</a:documentation>
807
+ <ref name="IdRefType"/>
808
+ </attribute>
809
+ </optional>
810
+ </define>
811
+ <define name="OptionalId" combine="interleave">
812
+ <optional>
813
+ <attribute name="anchor">
814
+ <a:documentation> User-supplied anchor of element; replaced by content-based id, with all references to the anchor updated accordingly</a:documentation>
815
+ </attribute>
816
+ </optional>
817
+ <optional>
818
+ <attribute name="source">
819
+ <a:documentation>Sourcing of the current element in an external data model</a:documentation>
820
+ <ref name="IdRefType"/>
821
+ </attribute>
822
+ </optional>
823
+ </define>
690
824
  <define name="ObligationType">
691
825
  <a:documentation>The force of a clause in a standard document: whether it has normative or informative effect</a:documentation>
692
826
  <choice>
@@ -832,6 +966,7 @@ titlecase, or lowercase</a:documentation>
832
966
  is used in particular to capture mutually agreed definitions of codepoints in Unicode Private Use Area</a:documentation>
833
967
  </attribute>
834
968
  </optional>
969
+ <ref name="OptionalId"/>
835
970
  <oneOrMore>
836
971
  <ref name="TextElement">
837
972
  <a:documentation>Textual content of span</a:documentation>
@@ -1081,7 +1216,7 @@ That concept may be defined as a term within the current document, or it may be
1081
1216
  <element name="label">
1082
1217
  <!-- Identifier of form input element that this element is a label of -->
1083
1218
  <attribute name="for">
1084
- <data type="IDREF"/>
1219
+ <ref name="IdRefType"/>
1085
1220
  </attribute>
1086
1221
  <zeroOrMore>
1087
1222
  <ref name="PureTextElement"/>
@@ -2121,7 +2256,7 @@ used in document amendments</a:documentation>
2121
2256
  </define>
2122
2257
  <define name="termsource">
2123
2258
  <a:documentation>The bibliographic source where a term is defined in the sense applicable in this standardisation document</a:documentation>
2124
- <element name="termsource">
2259
+ <element name="source">
2125
2260
  <attribute name="status">
2126
2261
  <a:documentation>The status of the term as it is used in this document, relative to its definition in the original document</a:documentation>
2127
2262
  <ref name="SourceStatusType"/>
@@ -2503,6 +2638,11 @@ Normative References contents contain normative references, but as a clause in t
2503
2638
  <ref name="termsource"/>
2504
2639
  </zeroOrMore>
2505
2640
  </define>
2641
+ <define name="BlockSource">
2642
+ <zeroOrMore>
2643
+ <ref name="source"/>
2644
+ </zeroOrMore>
2645
+ </define>
2506
2646
  <start>
2507
2647
  <ref name="standard-document"/>
2508
2648
  </start>
@@ -4,8 +4,6 @@ module Metanorma
4
4
  def remove_missing_ref_term(node, _target, type)
5
5
  type == "symbol" and return super
6
6
  node.at("../xrefrender")&.remove
7
- #node.replace("<preferred><expression><name>#{node.children.to_xml}"\
8
- # "</name></expression></preferred>")
9
7
  node.replace("<refterm>#{node.children.to_xml}</refterm>")
10
8
  end
11
9
  end
@@ -77,7 +77,7 @@ module Metanorma
77
77
  root.xpath("//references[@normative = 'true']/bibitem").each do |b|
78
78
  b.at(".//date") or
79
79
  @log.add("Style", b,
80
- "Normative reference #{b&.at('./@id')&.text} is not dated.")
80
+ "Normative reference #{b.at('./@anchor')&.text} is not dated.")
81
81
  end
82
82
  end
83
83
 
@@ -99,12 +99,8 @@ module Metanorma
99
99
  # Style manual 13.1
100
100
  def onlychild_clause_validate(root)
101
101
  root.xpath(Standoc::Utils::SUBCLAUSE_XPATH).each do |c|
102
- next unless c.xpath("../clause").size == 1
103
-
104
- title = c.at("./title")
105
- location = c["id"] || "#{c.text[0..60]}..."
106
- location += ":#{title.text}" if c["id"] && !title.nil?
107
- @log.add("Style", nil, "#{location}: subclause is only child")
102
+ c.xpath("../clause").size == 1 or next
103
+ @log.add("Style", c, "subclause is only child")
108
104
  end
109
105
  end
110
106
 
@@ -2,7 +2,7 @@ module Metanorma
2
2
  module Ieee
3
3
  class Converter < Standoc::Converter
4
4
  ASSETS_TO_STYLE =
5
- "//termsource | //formula | //termnote | " \
5
+ "//term//source | //formula | //termnote | " \
6
6
  "//p[not(ancestor::boilerplate)] | //li[not(p)] | //dt | " \
7
7
  "//dd[not(p)] | //td[not(p)][not(ancestor::boilerplate)] | " \
8
8
  "//th[not(p)][not(ancestor::boilerplate)] | //example".freeze
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module Ieee
3
- VERSION = "1.4.5".freeze
3
+ VERSION = "1.4.7".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-ieee
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.5
4
+ version: 1.4.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-04-29 00:00:00.000000000 Z
11
+ date: 2025-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: metanorma-standoc