metanorma-itu 2.6.6 → 2.6.8

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.
@@ -11,25 +11,25 @@ module IsoDoc
11
11
  @doctype == "contribution" or return
12
12
  bureau = bold_and_upcase(@meta.get[:bureau_full])
13
13
  <<~TABLE
14
- <clause unnumbered="true" type="contribution-metadata">
15
- <table class="contribution-metadata" unnumbered="true" width="100%">
14
+ <clause #{add_id_text} unnumbered="true" type="contribution-metadata">
15
+ <table #{add_id_text} class="contribution-metadata" unnumbered="true" width="100%">
16
16
  <colgroup><col width="11.8%"/><col width="41.2%"/><col width="47.0%"/></colgroup>
17
17
  <thead>
18
- <tr><th rowspan="3"><image height="56" width="56" src="#{@meta.get[:logo_small]}"/></th>
19
- <td rowspan="3"><p style="font-size:8pt;margin-top:6pt;margin-bottom:0pt;">#{@i18n.international_telecommunication_union.upcase}</p>
18
+ <tr #{add_id_text}><th rowspan="3" #{add_id_text}><image height="56" width="56" src="#{@meta.get[:logo_small]}"/></th>
19
+ <td #{add_id_text} rowspan="3"><p style="font-size:8pt;margin-top:6pt;margin-bottom:0pt;">#{@i18n.international_telecommunication_union.upcase}</p>
20
20
  <p class="bureau_big" style="font-size:13pt;margin-top:6pt;margin-bottom:0pt;">#{bureau}</p>
21
21
  <p style="font-size:10pt;margin-top:6pt;margin-bottom:0pt;">#{@i18n.studyperiod.sub('%', @meta.get[:study_group_period]).upcase}</p></th>
22
- <th align="right"><p style="font-size:16pt;">#{@meta.get[:docnumber]}</p></th></tr>
23
- <tr><th align="right"><p style="font-size:14pt;">#{@meta.get[:group].upcase}</p></th></tr>
24
- <tr>
25
- <th align="right"><p style="font-size:14pt;">#{@i18n.l10n("#{@i18n.original}: #{@i18n.current_language}")}</p></th>
22
+ <th #{add_id_text} align="right"><p style="font-size:16pt;">#{@meta.get[:docnumber]}</p></th></tr>
23
+ <tr #{add_id_text}><th #{add_id_text} align="right"><p style="font-size:14pt;">#{@meta.get[:group].upcase}</p></th></tr>
24
+ <tr #{add_id_text}>
25
+ <th #{add_id_text} align="right"><p style="font-size:14pt;">#{@i18n.l10n("#{@i18n.original}: #{@i18n.current_language}")}</p></th>
26
26
  </tr></thead>
27
27
  <tbody>
28
- <tr><th align="left" width="95">#{colon_i18n(@i18n.questions)}</th><td>#{@meta.get[:questions]}</td>
29
- <td align="right">#{@i18n.l10n("#{@meta.get[:meeting_place]}, #{@meta.get[:meeting_date]}")}</td></tr>
30
- <tr><th align="center" colspan="3">#{@i18n.get['doctype_dict']['contribution'].upcase}</th></tr>
31
- <tr><th align="left" width="95">#{colon_i18n(@i18n.document_source)}</th><td colspan="2">#{@meta.get[:source]}</td></tr>
32
- <tr><th align="left" width="95">#{colon_i18n(@i18n.title)}</th><td colspan="2">#{@meta.get[:doctitle_en]}</td></tr>
28
+ <tr #{add_id_text}><th #{add_id_text} align="left" width="95">#{colon_i18n(@i18n.questions)}</th><td #{add_id_text}>#{@meta.get[:questions]}</td>
29
+ <td #{add_id_text} align="right">#{@i18n.l10n("#{@meta.get[:meeting_place]}, #{@meta.get[:meeting_date]}")}</td></tr>
30
+ <tr #{add_id_text}><th #{add_id_text} align="center" colspan="3">#{@i18n.get['doctype_dict']['contribution'].upcase}</th></tr>
31
+ <tr #{add_id_text}><th #{add_id_text} align="left" width="95">#{colon_i18n(@i18n.document_source)}</th><td #{add_id_text} colspan="2">#{@meta.get[:source]}</td></tr>
32
+ <tr #{add_id_text}><th #{add_id_text} align="left" width="95">#{colon_i18n(@i18n.title)}</th><td #{add_id_text} colspan="2">#{@meta.get[:doctitle_en]}</td></tr>
33
33
  #{contribution_table_contacts}
34
34
  </tbody></table>
35
35
  </clause>
@@ -55,7 +55,8 @@ module IsoDoc
55
55
  end
56
56
  n.map do |x|
57
57
  lbl = colon_i18n(@i18n.contact)
58
- "<tr><th align='left' width='95'>#{lbl}</th>#{x}</tr>"
58
+ "<tr #{add_id_text}>" \
59
+ "<th #{add_id_text} align='left' width='95'>#{lbl}</th>#{x}</tr>"
59
60
  end.join("\n")
60
61
  end
61
62
 
@@ -63,10 +64,10 @@ module IsoDoc
63
64
  @meta.get[:emails][idx] and
64
65
  e = "<br/>#{@i18n.email}<tab/>#{@meta.get[:emails][idx]}"
65
66
  <<~CELL
66
- <td>#{@meta.get[:authors][idx]}<br/>
67
+ <td #{add_id_text}>#{@meta.get[:authors][idx]}<br/>
67
68
  #{@meta.get[:affiliations][idx]}<br/>
68
69
  #{@meta.get[:addresses][idx]}</td>
69
- <td>#{@i18n.tel_abbrev}<tab/>#{@meta.get[:phones][idx]}#{e}</td>
70
+ <td #{add_id_text}>#{@i18n.tel_abbrev}<tab/>#{@meta.get[:phones][idx]}#{e}</td>
70
71
  CELL
71
72
  end
72
73
 
@@ -108,7 +109,7 @@ module IsoDoc
108
109
  def contribution_justification_auths
109
110
  auths = contrib_justification_contacts
110
111
  auths_tail = auths[1..auths.size].map do |x|
111
- "<tr><td colspan='2'>#{x}</td></td>"
112
+ "<tr #{add_id_text}><td #{add_id_text} colspan='2'>#{x}</td></td>"
112
113
  end.join("\n")
113
114
  [auths, auths_tail]
114
115
  end
@@ -118,33 +119,33 @@ module IsoDoc
118
119
  annex = doc.at(ns("//annex[@type = 'justification']")) or return
119
120
  auths, auths_tail = contribution_justification_auths
120
121
  annex.children = <<~TABLE
121
- <title>#{contribution_justification_title(doc)}</title>
122
- <table class="contribution-metadata" unnumbered="true" width="100%">
122
+ <title #{add_id_text}>#{contribution_justification_title(doc)}</title>
123
+ <table #{add_id_text} class="contribution-metadata" unnumbered="true" width="100%">
123
124
  <colgroup><col width="15.9%"/><col width="6.1%"/><col width="45.5%"/><col width="17.4%"/><col width="15.1%"/></colgroup>
124
125
  <tbody>
125
- <tr>
126
- <th align="left">#{colon_i18n(@i18n.questions)}</th><td>#{@meta.get[:questions]}</td>
127
- <th align="left">Proposed new ITU-T #{@meta.get[:subdoctype]}</th>
128
- <td colspan="2">#{@i18n.l10n("#{@meta.get[:meeting_place]}, #{@meta.get[:meeting_date]}")}</td>
126
+ <tr #{add_id_text}>
127
+ <th #{add_id_text} align="left">#{colon_i18n(@i18n.questions)}</th><td #{add_id_text}>#{@meta.get[:questions]}</td>
128
+ <th #{add_id_text} align="left">Proposed new ITU-T #{@meta.get[:subdoctype]}</th>
129
+ <td #{add_id_text} colspan="2">#{@i18n.l10n("#{@meta.get[:meeting_place]}, #{@meta.get[:meeting_date]}")}</td>
129
130
  </tr>
130
- <tr><th align="left">Reference and title:</th>
131
- <td colspan="4">Draft new #{@meta.get[:subdoctype]} on “#{@meta.get[:doctitle_en]}”</td>
131
+ <tr #{add_id_text}><th #{add_id_text} align="left">Reference and title:</th>
132
+ <td #{add_id_text} colspan="4">Draft new #{@meta.get[:subdoctype]} on “#{@meta.get[:doctitle_en]}”</td>
132
133
  </tr>
133
- <tr>
134
- <th align="left">Base text:</th><td colspan="2">#{extract_clause_data(annex, 'basetext')}</td>
135
- <th align="left">Timing:</th><td>#{@meta.get[:timing]}</td>
134
+ <tr #{add_id_text}>
135
+ <th #{add_id_text} align="left">Base text:</th><td #{add_id_text} colspan="2">#{extract_clause_data(annex, 'basetext')}</td>
136
+ <th #{add_id_text} align="left">Timing:</th><td #{add_id_text}>#{@meta.get[:timing]}</td>
136
137
  </tr>
137
- <tr><th align="left" rowspan="#{auths.size - 1}">Editor(s):</th>
138
- <td colspan="2">#{auths[0]}</td>
139
- <th align="left" rowspan="#{auths.size - 1}">Approval process:</th>
140
- <td rowspan="#{auths.size - 1}">#{@meta.get[:approval_process]}</td>
138
+ <tr #{add_id_text}><th #{add_id_text} align="left" rowspan="#{auths.size - 1}">Editor(s):</th>
139
+ <td #{add_id_text} colspan="2">#{auths[0]}</td>
140
+ <th #{add_id_text} align="left" rowspan="#{auths.size - 1}">Approval process:</th>
141
+ <td #{add_id_text} rowspan="#{auths.size - 1}">#{@meta.get[:approval_process]}</td>
141
142
  </tr>
142
143
  #{auths_tail}
143
- <tr><td colspan="5"><p><strong>Scope</strong> (defines the intent or object of the Recommendation and the aspects covered, thereby indicating the limits of its applicability):</p>#{extract_clause_data(annex, 'scope')}</td></tr>
144
- <tr><td colspan="5"><p><strong>Summary</strong> (provides a brief overview of the purpose and contents of the Recommendation, thus permitting readers to judge its usefulness for their work):</p>#{extract_clause_data(annex, 'summary')}</td></tr>
145
- <tr><td colspan="5"><p><strong>Relations to ITU-T Recommendations or to other standards</strong> (approved or under development):</p>#{extract_clause_data(annex, 'relatedstandards')}</td></tr>
146
- <tr><td colspan="5"><p><strong>Liaisons with other study groups or with other standards bodies:</strong></p>#{extract_clause_data(annex, 'liaisons')}</td></tr>
147
- <tr><td colspan="5"><p><strong>Supporting members that are committing to contributing actively to the work item:</strong></p>#{extract_clause_data(annex, 'supportingmembers')}</td></tr>
144
+ <tr #{add_id_text}><td #{add_id_text} colspan="5"><p><strong>Scope</strong> (defines the intent or object of the Recommendation and the aspects covered, thereby indicating the limits of its applicability):</p>#{extract_clause_data(annex, 'scope')}</td></tr>
145
+ <tr #{add_id_text}><td #{add_id_text} colspan="5"><p><strong>Summary</strong> (provides a brief overview of the purpose and contents of the Recommendation, thus permitting readers to judge its usefulness for their work):</p>#{extract_clause_data(annex, 'summary')}</td></tr>
146
+ <tr #{add_id_text}><td #{add_id_text} colspan="5"><p><strong>Relations to ITU-T Recommendations or to other standards</strong> (approved or under development):</p>#{extract_clause_data(annex, 'relatedstandards')}</td></tr>
147
+ <tr #{add_id_text}><td #{add_id_text} colspan="5"><p><strong>Liaisons with other study groups or with other standards bodies:</strong></p>#{extract_clause_data(annex, 'liaisons')}</td></tr>
148
+ <tr #{add_id_text}><td #{add_id_text} colspan="5"><p><strong>Supporting members that are committing to contributing actively to the work item:</strong></p>#{extract_clause_data(annex, 'supportingmembers')}</td></tr>
148
149
  </tbody>
149
150
  </table>
150
151
  TABLE
@@ -42,8 +42,8 @@ module IsoDoc
42
42
  ed_lbl &&= l10n("#{ed_lbl.capitalize}:")
43
43
  mail_lbl = l10n("#{@i18n.get['email']}: ")
44
44
  ret = <<~SUBMITTING
45
- <clause id="_#{UUIDTools::UUID.random_create}" type="editors">
46
- <table id="_#{UUIDTools::UUID.random_create}" unnumbered="true"><tbody>
45
+ <clause #{add_id_text} type="editors">
46
+ <table #{add_id_text} unnumbered="true"><tbody>
47
47
  SUBMITTING
48
48
  ret += editor_table_entries(eds, ed_lbl, mail_lbl)
49
49
  "#{ret}</tbody></table></clause>"
@@ -56,8 +56,10 @@ module IsoDoc
56
56
  mail = "#{mail_lbl}<link target='mailto:#{n[:email]}'>" \
57
57
  "#{n[:email]}</link>"
58
58
  aff = n[:affiliation].empty? ? "" : "<br/>#{n[:affiliation]}"
59
- th = "<th>#{i.zero? ? ed_lbl : ''}</th>"
60
- m << "<tr>#{th}<td>#{n[:name]}#{aff}</td><td>#{mail}</td></tr>"
59
+ th = "<th #{add_id_text}>#{i.zero? ? ed_lbl : ''}</th>"
60
+ m << <<~XML
61
+ <tr #{add_id_text}>#{th}<td #{add_id_text}>#{n[:name]}#{aff}</td><td #{add_id_text}>#{mail}</td></tr>
62
+ XML
61
63
  end.join("\n")
62
64
  end
63
65
 
@@ -87,11 +89,11 @@ module IsoDoc
87
89
  abstract.at(ns("./title"))&.remove
88
90
  abstract.at(ns("./fmt-title"))&.remove
89
91
  abstract.children = <<~TABLE
90
- <table class="abstract" unnumbered="true" width="100%">
92
+ <table #{add_id_text} class="abstract" unnumbered="true" width="100%">
91
93
  <colgroup><col width="11.8%"/><col width="78.2%"/></colgroup>
92
94
  <tbody>
93
- <tr><th align="left" width="95"><p>#{colon_i18n(@i18n.abstract)}</p></th>
94
- <td>#{abstract.children.to_xml}</td></tr>
95
+ <tr #{add_id_text}><th #{add_id_text} align="left" width="95"><p>#{colon_i18n(@i18n.abstract)}</p></th>
96
+ <td #{add_id_text}>#{abstract.children.to_xml}</td></tr>
95
97
  </tbody></table>
96
98
  TABLE
97
99
  end
@@ -99,8 +101,10 @@ module IsoDoc
99
101
  def keywords(_docxml)
100
102
  kw = @meta.get[:keywords]
101
103
  kw.nil? || kw.empty? || @doctype == "contribution" and return
102
- "<clause type='keyword'><fmt-title>#{@i18n.keywords}</fmt-title>" \
103
- "<p>#{@i18n.l10n(kw.join(', '))}.</p>"
104
+ <<~XML
105
+ <clause #{add_id_text} type='keyword'><fmt-title #{add_id_text}>#{@i18n.keywords}</fmt-title>
106
+ <p>#{@i18n.l10n(kw.join(', '))}.</p>
107
+ XML
104
108
  end
105
109
 
106
110
  def toc_title(docxml)
@@ -103,7 +103,7 @@ module IsoDoc
103
103
  isoxml.xpath(ns("//note[@type = 'title-footnote']"))
104
104
  .each_with_index do |f, i|
105
105
  ret += <<~FN.strip
106
- <fn id='_#{UUIDTools::UUID.random_create}' reference='H#{i}'>#{f.remove.children.to_xml}</fn>
106
+ <fn #{add_id_text} reference='H#{i}'>#{f.remove.children.to_xml}</fn>
107
107
  FN
108
108
  end
109
109
  ret
@@ -26,10 +26,6 @@ module Metanorma
26
26
  insert_conventions(xml)
27
27
  end
28
28
 
29
- def add_id_txt
30
- %(id="_#{UUIDTools::UUID.random_create}")
31
- end
32
-
33
29
  def insert_scope(xml)
34
30
  xml.at("./*/sections") or
35
31
  xml.at("./*/preface | ./*/boilerplate | ./*/bibdata").next =
@@ -37,9 +33,10 @@ module Metanorma
37
33
  xml.at("./*/sections/*") or xml.at("./*/sections") << "<sentinel/>"
38
34
  ins = xml.at("//sections").elements.first
39
35
  xml.at("//sections/clause[@type = 'scope']") or
40
- ins.previous =
41
- "<clause type='scope' #{add_id_txt}><title>#{@i18n.scope}</title><p>" \
42
- "#{@i18n.clause_empty}</p></clause>"
36
+ ins.previous = <<~XML
37
+ <clause type='scope' #{add_id_text}><title #{add_id_text}>#{@i18n.scope}</title>
38
+ <p>#{@i18n.clause_empty}</p></clause>
39
+ XML
43
40
  xml.at("//sentinel")&.remove
44
41
  end
45
42
 
@@ -49,23 +46,29 @@ module Metanorma
49
46
  "<bibliography><sentinel/></bibliography>"
50
47
  ins = xml.at("//bibliography").elements.first
51
48
  xml.at("//bibliography/references[@normative = 'true']") or
52
- ins.previous = "<references #{add_id_txt} normative='true'>" \
53
- "<title>#{@i18n.normref}</title></references>"
49
+ ins.previous = <<~XML
50
+ <references #{add_id_text} normative='true'>
51
+ <title #{add_id_text}>#{@i18n.normref}</title></references>
52
+ XML
54
53
  xml.at("//sentinel")&.remove
55
54
  end
56
55
 
57
56
  def insert_terms(xml)
58
57
  ins = xml.at("//sections/clause[@type = 'scope']")
59
58
  xml.at("//sections//terms") or
60
- ins.next = "<terms #{add_id_txt}><title>#{@i18n.termsdef}</title></terms>"
59
+ ins.next = <<~XML
60
+ <terms #{add_id_text}><title #{add_id_text}>#{@i18n.termsdef}</title></terms>
61
+ XML
61
62
  end
62
63
 
63
64
  def insert_symbols(xml)
64
65
  ins = xml.at("//sections/terms") ||
65
66
  xml.at("//sections/clause[descendant::terms]")
66
67
  unless xml.at("//sections//definitions")
67
- ins.next = "<definitions #{add_id_txt}>" \
68
- "<title>#{@i18n.symbolsabbrev}</title></definitions>"
68
+ ins.next = <<~XML
69
+ <definitions #{add_id_text}>
70
+ <title #{add_id_text}>#{@i18n.symbolsabbrev}</title></definitions>
71
+ XML
69
72
  end
70
73
  end
71
74
 
@@ -73,9 +76,11 @@ module Metanorma
73
76
  ins = xml.at("//sections//definitions") ||
74
77
  xml.at("//sections/clause[descendant::definitions]")
75
78
  unless xml.at("//sections/clause[@type = 'conventions']")
76
- ins.next = "<clause #{add_id_txt} type='conventions'>" \
77
- "<title>#{@i18n.conventions}</title><p>" \
78
- "#{@i18n.clause_empty}</p></clause>"
79
+ ins.next = <<~XML
80
+ <clause #{add_id_text} type='conventions'>
81
+ <title #{add_id_text}>#{@i18n.conventions}</title>
82
+ <p>#{@i18n.clause_empty}</p></clause>
83
+ XML
79
84
  end
80
85
  end
81
86
 
@@ -140,10 +145,10 @@ module Metanorma
140
145
  end
141
146
 
142
147
  def sections_names_pref_cleanup(xml)
148
+ t = xml.at("//preface//abstract/title")
149
+ t&.text&.downcase == "summary" and summary = true
143
150
  super
144
- t = xml.at("//preface//abstract") or return
145
- t["anchor"] == "_summary" and
146
- replace_title(xml, "//preface//abstract", @i18n&.summary)
151
+ summary and replace_title(xml, "//preface//abstract", @i18n&.summary)
147
152
  end
148
153
  end
149
154
  end
@@ -9,9 +9,6 @@ require_relative "./cleanup"
9
9
  module Metanorma
10
10
  module Itu
11
11
  class Converter < Standoc::Converter
12
- XML_ROOT_TAG = "itu-standard".freeze
13
- XML_NAMESPACE = "https://www.metanorma.org/ns/itu".freeze
14
-
15
12
  register_for "itu"
16
13
 
17
14
  def title_validate(_root)
@@ -116,6 +113,13 @@ module Metanorma
116
113
  super
117
114
  end
118
115
 
116
+ def abstract_parse(attrs, xml, node)
117
+ xml.abstract **attr_code(attrs) do |xml_section|
118
+ xml_section.title { |name| name << node.title }
119
+ xml_section << node.content
120
+ end
121
+ end
122
+
119
123
  def document_scheme(node)
120
124
  super || "current"
121
125
  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.5 -->
3
+ <!-- VERSION v2.0.7 -->
4
4
 
5
5
  <!--
6
6
  ALERT: cannot have root comments, because of https://github.com/metanorma/metanorma/issues/437
@@ -76,6 +76,7 @@ but to `@anchor`, the user-supplied cross-reference</a:documentation>
76
76
  <a:documentation>Title(s) of a clause</a:documentation>
77
77
  <element name="title">
78
78
  <a:documentation>Title proper for a clause</a:documentation>
79
+ <ref name="RequiredId"/>
79
80
  <zeroOrMore>
80
81
  <ref name="TextElement"/>
81
82
  </zeroOrMore>
@@ -83,10 +84,19 @@ but to `@anchor`, the user-supplied cross-reference</a:documentation>
83
84
  <zeroOrMore>
84
85
  <element name="variant-title">
85
86
  <a:documentation>Alternate title for a clause</a:documentation>
87
+ <ref name="RequiredId"/>
86
88
  <ref name="TypedTitleString"/>
87
89
  </element>
88
90
  </zeroOrMore>
89
91
  </define>
92
+ <define name="tname">
93
+ <element name="name">
94
+ <ref name="RequiredId"/>
95
+ <oneOrMore>
96
+ <ref name="NestedTextElement"/>
97
+ </oneOrMore>
98
+ </element>
99
+ </define>
90
100
  <define name="UlBody">
91
101
  <optional>
92
102
  <ref name="tname">
@@ -475,6 +485,7 @@ normative or informative references, some split references into sections organiz
475
485
  <!-- exclude figures? -->
476
486
  <define name="dd">
477
487
  <element name="dd">
488
+ <ref name="OptionalId"/>
478
489
  <zeroOrMore>
479
490
  <!-- exclude figures? -->
480
491
  <ref name="BasicBlock"/>
@@ -526,6 +537,7 @@ normative or informative references, some split references into sections organiz
526
537
  </choice>
527
538
  </define>
528
539
  <define name="TrAttributes">
540
+ <ref name="OptionalId"/>
529
541
  <optional>
530
542
  <attribute name="style">
531
543
  <a:documentation>CSS style: only background-color supported</a:documentation>
@@ -595,6 +607,7 @@ gives an explicit page orientation</a:documentation>
595
607
  </include>
596
608
  <!-- end overrides -->
597
609
  <define name="FnAttributes" combine="interleave">
610
+ <ref name="RequiredId"/>
598
611
  <optional>
599
612
  <attribute name="hiddenref">
600
613
  <a:documentation>If true, number the footnote as normal, but suppress display of the footnote reference in the document body.
@@ -604,6 +617,7 @@ This is done if the footnote reference is already presented in some other form,
604
617
  </optional>
605
618
  </define>
606
619
  <define name="TdAttributes" combine="interleave">
620
+ <ref name="RequiredId"/>
607
621
  <optional>
608
622
  <attribute name="style">
609
623
  <a:documentation>CSS style: only background-color supported</a:documentation>
@@ -801,6 +815,12 @@ titlecase, or lowercase</a:documentation>
801
815
  <a:documentation>User-supplied anchor of element; replaced by content-based id, with all references to the anchor updated accordingly</a:documentation>
802
816
  </attribute>
803
817
  </optional>
818
+ <optional>
819
+ <attribute name="source">
820
+ <a:documentation>Sourcing of the current element in an external data model</a:documentation>
821
+ <ref name="IdRefType"/>
822
+ </attribute>
823
+ </optional>
804
824
  </define>
805
825
  <define name="OptionalId" combine="interleave">
806
826
  <optional>
@@ -808,6 +828,12 @@ titlecase, or lowercase</a:documentation>
808
828
  <a:documentation> User-supplied anchor of element; replaced by content-based id, with all references to the anchor updated accordingly</a:documentation>
809
829
  </attribute>
810
830
  </optional>
831
+ <optional>
832
+ <attribute name="source">
833
+ <a:documentation>Sourcing of the current element in an external data model</a:documentation>
834
+ <ref name="IdRefType"/>
835
+ </attribute>
836
+ </optional>
811
837
  </define>
812
838
  <define name="ObligationType">
813
839
  <a:documentation>The force of a clause in a standard document: whether it has normative or informative effect</a:documentation>
@@ -954,6 +980,7 @@ titlecase, or lowercase</a:documentation>
954
980
  is used in particular to capture mutually agreed definitions of codepoints in Unicode Private Use Area</a:documentation>
955
981
  </attribute>
956
982
  </optional>
983
+ <ref name="OptionalId"/>
957
984
  <oneOrMore>
958
985
  <ref name="TextElement">
959
986
  <a:documentation>Textual content of span</a:documentation>
@@ -1808,7 +1835,7 @@ used in document amendments</a:documentation>
1808
1835
  </element>
1809
1836
  </define>
1810
1837
  <define name="TermAttributes">
1811
- <ref name="OptionalId"/>
1838
+ <ref name="RequiredId"/>
1812
1839
  <ref name="LocalizedStringAttributes"/>
1813
1840
  <ref name="BlockAttributes"/>
1814
1841
  </define>
@@ -2151,6 +2178,7 @@ used in document amendments</a:documentation>
2151
2178
  <define name="termdefinition">
2152
2179
  <a:documentation>The definition of a term applied in the current document</a:documentation>
2153
2180
  <element name="definition">
2181
+ <ref name="RequiredId"/>
2154
2182
  <optional>
2155
2183
  <attribute name="type">
2156
2184
  <a:documentation>Type of definition, used to differentiate it from other definitions of the same term if present</a:documentation>
@@ -2172,6 +2200,7 @@ used in document amendments</a:documentation>
2172
2200
  </define>
2173
2201
  <define name="verbaldefinition">
2174
2202
  <element name="verbal-definition">
2203
+ <ref name="RequiredId"/>
2175
2204
  <oneOrMore>
2176
2205
  <choice>
2177
2206
  <a:documentation>Content of the verbal representation of the term</a:documentation>
@@ -2192,6 +2221,7 @@ used in document amendments</a:documentation>
2192
2221
  <define name="nonverbalrep">
2193
2222
  <a:documentation>Non-verbal representation of the term</a:documentation>
2194
2223
  <element name="non-verbal-representation">
2224
+ <ref name="RequiredId"/>
2195
2225
  <oneOrMore>
2196
2226
  <choice>
2197
2227
  <a:documentation>Content of the non-verbal representation of the term</a:documentation>
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module Itu
3
- VERSION = "2.6.6".freeze
3
+ VERSION = "2.6.8".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-itu
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.6
4
+ version: 2.6.8
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-05-12 00:00:00.000000000 Z
11
+ date: 2025-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: metanorma-standoc