metanorma-standoc 1.9.4 → 1.10.0

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.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +1 -1
  3. data/.rubocop.yml +1 -1
  4. data/lib/asciidoctor/standoc/cleanup_inline.rb +117 -77
  5. data/lib/asciidoctor/standoc/cleanup_ref.rb +7 -0
  6. data/lib/asciidoctor/standoc/cleanup_terms.rb +19 -18
  7. data/lib/asciidoctor/standoc/inline.rb +20 -17
  8. data/lib/asciidoctor/standoc/isodoc.rng +18 -1
  9. data/lib/asciidoctor/standoc/macros_plantuml.rb +19 -21
  10. data/lib/asciidoctor/standoc/macros_terms.rb +33 -23
  11. data/lib/asciidoctor/standoc/term_lookup_cleanup.rb +10 -12
  12. data/lib/asciidoctor/standoc/terms.rb +1 -1
  13. data/lib/asciidoctor/standoc/validate.rb +21 -8
  14. data/lib/metanorma/standoc/version.rb +1 -1
  15. data/metanorma-standoc.gemspec +2 -2
  16. data/spec/asciidoctor/blocks_spec.rb +6 -6
  17. data/spec/asciidoctor/cleanup_spec.rb +37 -6
  18. data/spec/asciidoctor/isobib_cache_spec.rb +4 -6
  19. data/spec/asciidoctor/lists_spec.rb +147 -135
  20. data/spec/asciidoctor/macros_spec.rb +505 -181
  21. data/spec/asciidoctor/refs_spec.rb +12 -12
  22. data/spec/asciidoctor/validate_spec.rb +66 -20
  23. data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec.yml +42 -42
  24. data/spec/vcr_cassettes/isobib_get_123.yml +12 -12
  25. data/spec/vcr_cassettes/isobib_get_123_1.yml +26 -26
  26. data/spec/vcr_cassettes/isobib_get_123_1_fr.yml +35 -35
  27. data/spec/vcr_cassettes/isobib_get_123_2001.yml +13 -13
  28. data/spec/vcr_cassettes/isobib_get_124.yml +12 -12
  29. data/spec/vcr_cassettes/rfcbib_get_rfc8341.yml +13 -13
  30. data/spec/vcr_cassettes/separates_iev_citations_by_top_level_clause.yml +51 -61
  31. metadata +5 -5
@@ -2,8 +2,6 @@ require "spec_helper"
2
2
  require "relaton_iso"
3
3
  require "fileutils"
4
4
 
5
- OPTIONS = [backend: :standoc, header_footer: true].freeze
6
-
7
5
  IETF_123_SHORT = <<~XML.freeze
8
6
  <bibitem type="standard" id="IETF123">
9
7
  <title format="text/plain" language="en" script="Latn">Rubber latex -- Sampling</title>
@@ -127,7 +125,7 @@ ISO_123_UNDATED = <<~XML.freeze
127
125
  <script>Latn</script>
128
126
  <status>
129
127
  <stage>90</stage>
130
- <substage>60</substage>
128
+ <substage>93</substage>
131
129
  </status>
132
130
  <copyright>
133
131
  <from>2001</from>
@@ -168,7 +166,7 @@ ISO_123_UNDATED = <<~XML.freeze
168
166
  <script>Latn</script>
169
167
  <status>
170
168
  <stage>90</stage>
171
- <substage>60</substage>
169
+ <substage>93</substage>
172
170
  </status>
173
171
  <copyright>
174
172
  <from>2001</from>
@@ -211,7 +209,7 @@ ISO_123_DATED = <<~XML.freeze
211
209
  <uri type="obp">https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
212
210
  <uri type="rss">https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
213
211
  <docidentifier type="ISO">ISO 123:2001</docidentifier>
214
- <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.60:ed-3:en</docidentifier>
212
+ <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:en</docidentifier>
215
213
  <docnumber>123</docnumber>
216
214
  <date type="published">
217
215
  <on>2001-05</on>
@@ -236,7 +234,7 @@ ISO_123_DATED = <<~XML.freeze
236
234
  </abstract>
237
235
  <status>
238
236
  <stage>90</stage>
239
- <substage>60</substage>
237
+ <substage>93</substage>
240
238
  </status>
241
239
  <copyright>
242
240
  <from>2001</from>
@@ -21,55 +21,55 @@ RSpec.describe Asciidoctor::Standoc do
21
21
 
22
22
  INPUT
23
23
  expect(xmlpp(strip_guid(output))).to be_equivalent_to xmlpp(<<~"OUTPUT")
24
- #{BLANK_HDR}
25
- <sections>
26
- <ul id='_'>
27
- <li>
28
- <p id='_'>List 1</p>
29
- </li>
30
- <li>
31
- <p id='_'>List 2</p>
32
- </li>
33
- <li>
34
- <p id='_'>List 3</p>
35
- </li>
36
- <li uncheckedcheckbox='false' checkedcheckbox='true'>
37
- <p id='_'>checked</p>
38
- </li>
39
- <li uncheckedcheckbox='false' checkedcheckbox='true'>
40
- <p id='_'>also checked</p>
41
- </li>
42
- <li uncheckedcheckbox='true' checkedcheckbox='false'>
43
- <p id='_'>not checked</p>
44
- <ol id='_' type='arabic'>
45
- <li>
46
- <p id='_'>List A</p>
47
- </li>
48
- <li>
49
- <p id='_'>List B</p>
50
- </li>
51
- <li>
52
- <p id='_'>List C</p>
53
- <dl id='_'>
54
- <dt>List D</dt>
55
- <dd>
56
- <p id='_'>List E</p>
57
- </dd>
58
- <dt>List F</dt>
59
- <dd>
60
- <p id='_'>List G</p>
61
- </dd>
62
- </dl>
63
- </li>
64
- </ol>
65
- </li>
66
- </ul>
67
- </sections>
68
- </standard-document>
24
+ #{BLANK_HDR}
25
+ <sections>
26
+ <ul id='_'>
27
+ <li>
28
+ <p id='_'>List 1</p>
29
+ </li>
30
+ <li>
31
+ <p id='_'>List 2</p>
32
+ </li>
33
+ <li>
34
+ <p id='_'>List 3</p>
35
+ </li>
36
+ <li uncheckedcheckbox='false' checkedcheckbox='true'>
37
+ <p id='_'>checked</p>
38
+ </li>
39
+ <li uncheckedcheckbox='false' checkedcheckbox='true'>
40
+ <p id='_'>also checked</p>
41
+ </li>
42
+ <li uncheckedcheckbox='true' checkedcheckbox='false'>
43
+ <p id='_'>not checked</p>
44
+ <ol id='_' type='arabic'>
45
+ <li>
46
+ <p id='_'>List A</p>
47
+ </li>
48
+ <li>
49
+ <p id='_'>List B</p>
50
+ </li>
51
+ <li>
52
+ <p id='_'>List C</p>
53
+ <dl id='_'>
54
+ <dt>List D</dt>
55
+ <dd>
56
+ <p id='_'>List E</p>
57
+ </dd>
58
+ <dt>List F</dt>
59
+ <dd>
60
+ <p id='_'>List G</p>
61
+ </dd>
62
+ </dl>
63
+ </li>
64
+ </ol>
65
+ </li>
66
+ </ul>
67
+ </sections>
68
+ </standard-document>
69
69
  OUTPUT
70
70
  end
71
71
 
72
- it "processes complex lists" do
72
+ it "processes complex lists" do
73
73
  output = Asciidoctor.convert(<<~"INPUT", *OPTIONS)
74
74
  #{ASCIIDOC_BLANK_HDR}
75
75
  [[id]]
@@ -116,99 +116,111 @@ RSpec.describe Asciidoctor::Standoc do
116
116
 
117
117
  INPUT
118
118
  expect(xmlpp(strip_guid(output))).to be_equivalent_to xmlpp(<<~"OUTPUT")
119
- #{BLANK_HDR}
120
- <sections><ul id="id" keep-with-next="true" keep-lines-together="true">
121
- <li>
122
- <p id="_">First</p>
123
- </li>
124
- <li><p id="_">Second</p><p id="_">entry1</p>
125
- <p id="_">entry2</p></li>
126
- </ul>
127
- <ol id="id1" type="alphabet" keep-with-next="true" keep-lines-together="true">
128
- <li>
129
- <p id="_">First</p>
130
- </li>
131
- <li>
132
- <p id="_">Second</p>
133
- <ol id="_" type="alphabet_upper">
134
- <li>
135
- <p id="_">Third</p>
136
- </li>
137
- <li>
138
- <p id="_">Fourth</p>
139
- </li>
140
- </ol>
141
- </li>
142
- <li>
143
- <p id="_">Fifth</p>
144
- </li>
145
- <li>
146
- <p id="_">Sixth</p>
147
- </li>
148
- </ol>
149
- <ol id="_" type="roman">
150
- <li>
151
- <p id="_">A</p>
152
- </li>
153
- <li>
154
- <p id="_">B</p>
155
- <ol id="_" type="roman_upper">
156
- <li>
157
- <p id="_">C</p>
158
- </li>
159
- <li>
160
- <p id="_">D</p>
161
- <ol id="_" type="arabic">
162
- <li>
163
- <p id="_">E</p>
164
- </li>
165
- <li>
166
- <p id="_">F</p>
167
-
168
- <dl id="_" keep-with-next="true" keep-lines-together="true">
169
- <dt>Notes1</dt>
170
- <dd/>
171
- <dt>Notes</dt>
172
- <dd><p id="_">Note 1.</p><p id="_">Note 2.</p>
173
- <p id="_">Note 3.</p></dd>
174
- </dl>
175
- </li>
176
- </ol>
177
- </li>
178
- </ol>
179
- </li>
180
- </ol><dl id='_' key='true'>
181
- <dt>a</dt>
182
- <dd>
183
- <p id='_'>b</p>
184
- </dd>
185
- </dl>
186
- </sections>
187
- </standard-document>
188
- OUTPUT
189
- end
119
+ #{BLANK_HDR}
120
+ <sections><ul id="id" keep-with-next="true" keep-lines-together="true">
121
+ <li>
122
+ <p id="_">First</p>
123
+ </li>
124
+ <li><p id="_">Second</p><p id="_">entry1</p>
125
+ <p id="_">entry2</p></li>
126
+ </ul>
127
+ <ol id="id1" type="alphabet" keep-with-next="true" keep-lines-together="true">
128
+ <li>
129
+ <p id="_">First</p>
130
+ </li>
131
+ <li>
132
+ <p id="_">Second</p>
133
+ <ol id="_" type="alphabet_upper">
134
+ <li>
135
+ <p id="_">Third</p>
136
+ </li>
137
+ <li>
138
+ <p id="_">Fourth</p>
139
+ </li>
140
+ </ol>
141
+ </li>
142
+ <li>
143
+ <p id="_">Fifth</p>
144
+ </li>
145
+ <li>
146
+ <p id="_">Sixth</p>
147
+ </li>
148
+ </ol>
149
+ <ol id="_" type="roman">
150
+ <li>
151
+ <p id="_">A</p>
152
+ </li>
153
+ <li>
154
+ <p id="_">B</p>
155
+ <ol id="_" type="roman_upper">
156
+ <li>
157
+ <p id="_">C</p>
158
+ </li>
159
+ <li>
160
+ <p id="_">D</p>
161
+ <ol id="_" type="arabic">
162
+ <li>
163
+ <p id="_">E</p>
164
+ </li>
165
+ <li>
166
+ <p id="_">F</p>
167
+ <dl id="_" keep-with-next="true" keep-lines-together="true">
168
+ <dt>Notes1</dt>
169
+ <dd/>
170
+ <dt>Notes</dt>
171
+ <dd><p id="_">Note 1.</p><p id="_">Note 2.</p>
172
+ <p id="_">Note 3.</p></dd>
173
+ </dl>
174
+ </li>
175
+ </ol>
176
+ </li>
177
+ </ol>
178
+ </li>
179
+ </ol><dl id='_' key='true'>
180
+ <dt>a</dt>
181
+ <dd>
182
+ <p id='_'>b</p>
183
+ </dd>
184
+ </dl>
185
+ </sections>
186
+ </standard-document>
187
+ OUTPUT
188
+ end
190
189
 
191
- it "anchors lists and list items" do
192
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
190
+ it "anchors lists and list items" do
191
+ input = <<~INPUT
193
192
  #{ASCIIDOC_BLANK_HDR}
194
193
  [[id1]]
195
194
  * [[id2]] List item
196
195
  * Hello [[id3]] List item
197
196
 
198
- INPUT
199
- #{BLANK_HDR}
200
- <sections>
201
- <ul id="id1">
202
- <li id="id2">
203
- <p id="_">List item</p>
204
- </li>
205
- <li>
206
- <p id="_">Hello <bookmark id="id3"/> List item</p>
207
- </li>
208
- </ul>
209
- </sections>
210
- </standard-document>
211
- OUTPUT
212
- end
213
-
197
+ [[id4]]
198
+ [[id5]]a:: [[id6]]b
199
+ INPUT
200
+ output = <<~OUTPUT
201
+ #{BLANK_HDR}
202
+ <sections>
203
+ <ul id="id1">
204
+ <li id="id2">
205
+ <p id="_">List item</p>
206
+ </li>
207
+ <li>
208
+ <p id="_">Hello <bookmark id="id3"/> List item</p>
209
+ </li>
210
+ </ul>
211
+ <dl id='id4'>
212
+ <dt id='id5'>a</dt>
213
+ <dd>
214
+ <p id='_'>
215
+ <bookmark id='id6'/>
216
+ b
217
+ </p>
218
+ </dd>
219
+ </dl>
220
+ </sections>
221
+ </standard-document>
222
+ OUTPUT
223
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
224
+ .to be_equivalent_to xmlpp(output)
225
+ end
214
226
  end
@@ -2,7 +2,7 @@ require "spec_helper"
2
2
 
3
3
  RSpec.describe Asciidoctor::Standoc do
4
4
  it "processes the Asciidoctor::Standoc inline macros" do
5
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
5
+ input = <<~INPUT
6
6
  #{ASCIIDOC_BLANK_HDR}
7
7
  alt:[term1]
8
8
  deprecated:[term1]
@@ -15,6 +15,7 @@ RSpec.describe Asciidoctor::Standoc do
15
15
  == Bibliography
16
16
  * [[[ref1,XYZ 123]]] _Title_
17
17
  INPUT
18
+ output = <<~OUTPUT
18
19
  #{BLANK_HDR}
19
20
  <preface>
20
21
  <foreword id='_' obligation='informative'>
@@ -48,10 +49,12 @@ RSpec.describe Asciidoctor::Standoc do
48
49
  </bibliography>
49
50
  </standard-document>
50
51
  OUTPUT
52
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
53
+ .to be_equivalent_to xmlpp(output)
51
54
  end
52
55
 
53
56
  it "processes the Asciidoctor::Standoc index macros" do
54
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
57
+ input = <<~INPUT
55
58
  #{ASCIIDOC_BLANK_HDR}
56
59
  index:also[]
57
60
  index:see[A]
@@ -67,6 +70,7 @@ RSpec.describe Asciidoctor::Standoc do
67
70
 
68
71
  Text [[id3]]
69
72
  INPUT
73
+ output = <<~OUTPUT
70
74
  #{BLANK_HDR}
71
75
  <sections>
72
76
  <p id='_'>
@@ -117,16 +121,19 @@ RSpec.describe Asciidoctor::Standoc do
117
121
  </sections>
118
122
  </standard-document>
119
123
  OUTPUT
124
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
125
+ .to be_equivalent_to xmlpp(output)
120
126
  end
121
127
 
122
128
  it "processes the Asciidoctor::Standoc variant macros" do
123
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
129
+ input = <<~INPUT
124
130
  #{ASCIIDOC_BLANK_HDR}
125
131
  == lang:en[English] lang:fr-Latn[Français]
126
132
 
127
133
  this lang:en[English] lang:fr-Latn[Français] section is lang:en[silly] lang:fr[fou]
128
134
 
129
135
  INPUT
136
+ output = <<~OUTPUT
130
137
  #{BLANK_HDR}
131
138
  <sections>
132
139
  <clause id='_' inline-header='false' obligation='normative'>
@@ -150,134 +157,120 @@ RSpec.describe Asciidoctor::Standoc do
150
157
  </sections>
151
158
  </standard-document>
152
159
  OUTPUT
160
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
161
+ .to be_equivalent_to xmlpp(output)
153
162
  end
154
163
 
155
164
  it "processes the Asciidoctor::Standoc concept macros" do
156
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
165
+ input = <<~INPUT
157
166
  #{ASCIIDOC_BLANK_HDR}
158
167
  {{clause1}}
168
+ term:[clause1]
159
169
  {{clause1,w\[o\]rd}}
170
+ term:[clause1,w[o&#93;rd]
160
171
  {{clause1,w\[o\]rd,term}}
161
172
  {{blah}}
173
+ term:[blah]
162
174
  {{blah,word}}
163
- {{blah,word,term}}
164
- {{blah,clause=3.1}}
165
- {{blah,clause=3.1,word}}
166
- {{blah,clause=3.1,word,term}}
167
- {{blah,clause=3.1,figure=a}}
168
- {{blah,clause=3.1,figure=a,word}}
169
- {{blah,clause=3.1,figure=a,word,term}}
170
- {{IEV:135-13-13}}
171
- {{IEV:135-13-13,word}}
172
- {{IEV:135-13-13,word,term}}
175
+ term:[blah,word]
176
+ {{blah,term,word}}
173
177
 
174
178
  [[clause1]]
175
179
  == Clause
176
180
  Terms are defined here
177
-
178
- [bibliography]
179
- == Bibliography
180
- * [[[blah,blah]]] _Blah_
181
181
  INPUT
182
+ output = <<~OUTPUT
182
183
  #{BLANK_HDR}
183
184
  <preface>
184
185
  <foreword id='_' obligation='informative'>
185
186
  <title>Foreword</title>
186
187
  <p id='_'>
187
- <concept>
188
- <xref target='clause1'/>
189
- </concept>
190
- <concept>
191
- <xref target='clause1'>w[o]rd</xref>
192
- </concept>
193
- <concept term='term'>
194
- <xref target='clause1'>w[o]rd</xref>
195
- </concept>
196
- <concept>
197
- <eref/>
198
- </concept>
199
- <concept>
200
- <eref>word</eref>
201
- </concept>
202
- <concept term='term'>
203
- <eref>word</eref>
204
- </concept>
205
- <concept>
206
- <eref>
207
- <localityStack>
208
- <locality type='clause'>
209
- <referenceFrom>3.1</referenceFrom>
210
- </locality>
211
- </localityStack>
212
- </eref>
213
- </concept>
214
- <concept>
215
- <eref>
216
- <localityStack>
217
- <locality type='clause'>
218
- <referenceFrom>3.1</referenceFrom>
219
- </locality>
220
- </localityStack>
221
- word
222
- </eref>
223
- </concept>
224
- <concept term='term'>
225
- <eref>
226
- <localityStack>
227
- <locality type='clause'>
228
- <referenceFrom>3.1</referenceFrom>
229
- </locality>
230
- </localityStack>
231
- word
232
- </eref>
233
- </concept>
234
- <concept>
235
- <eref>
236
- <localityStack>
237
- <locality type='clause'>
238
- <referenceFrom>3.1</referenceFrom>
239
- </locality>
240
- <locality type='figure'>
241
- <referenceFrom>a</referenceFrom>
242
- </locality>
243
- </localityStack>
244
- </eref>
245
- </concept>
246
- <concept>
247
- <eref>
248
- <localityStack>
249
- <locality type='clause'>
250
- <referenceFrom>3.1</referenceFrom>
251
- </locality>
252
- <locality type='figure'>
253
- <referenceFrom>a</referenceFrom>
254
- </locality>
255
- </localityStack>
256
- word
257
- </eref>
258
- </concept>
259
- <concept term='term'>
260
- <eref>
261
- <localityStack>
262
- <locality type='clause'>
263
- <referenceFrom>3.1</referenceFrom>
264
- </locality>
265
- <locality type='figure'>
266
- <referenceFrom>a</referenceFrom>
267
- </locality>
268
- </localityStack>
269
- word
270
- </eref>
271
- </concept>
272
- <concept>
273
- <termref base='IEV' target='135-13-13'/>
274
- </concept>
275
- <concept>
276
- <termref base='IEV' target='135-13-13'>word</termref>
277
- </concept>
278
- <concept term='term'>
279
- <termref base='IEV' target='135-13-13'>word</termref>
280
- </concept>
188
+ <concept>
189
+ <strong>
190
+ term
191
+ <tt>clause1</tt>
192
+ not resolved via ID
193
+ <tt>clause1</tt>
194
+ </strong>
195
+ </concept>
196
+ <concept>
197
+ <strong>
198
+ term
199
+ <tt>clause1</tt>
200
+ not resolved via ID
201
+ <tt>clause1</tt>
202
+ </strong>
203
+ </concept>
204
+ <concept>
205
+ <strong>
206
+ term
207
+ <tt>clause1</tt>, display <tt>w[o]rd</tt>
208
+ not resolved via ID
209
+ <tt>clause1</tt>
210
+ </strong>
211
+ </concept>
212
+ <concept>
213
+ <strong>
214
+ term
215
+ <tt>clause1</tt>, display <tt>w[o]rd</tt>
216
+ not resolved via ID
217
+ <tt>clause1</tt>
218
+ </strong>
219
+ </concept>
220
+ <concept>
221
+ <strong>
222
+ term
223
+ <tt>clause1</tt>, display <tt>w[o]rd</tt>
224
+ not resolved via ID
225
+ <tt>clause1</tt>
226
+ </strong>
227
+ </concept>
228
+ <concept>
229
+ <strong>
230
+ term
231
+ <tt>blah</tt>
232
+ not resolved via ID
233
+ <tt>blah</tt>
234
+ </strong>
235
+ </concept>
236
+ <concept>
237
+ <strong>
238
+ term
239
+ <tt>blah</tt>
240
+ not resolved via ID
241
+ <tt>blah</tt>
242
+ </strong>
243
+ </concept>
244
+ <concept>
245
+ <strong>
246
+ term
247
+ <tt>blah</tt>
248
+ , display
249
+ <tt>word</tt>
250
+ not resolved via ID
251
+ <tt>blah</tt>
252
+ </strong>
253
+ </concept>
254
+ <concept>
255
+ <strong>
256
+ term
257
+ <tt>blah</tt>
258
+ , display
259
+ <tt>word</tt>
260
+ not resolved via ID
261
+ <tt>blah</tt>
262
+ </strong>
263
+ </concept>
264
+ <concept>
265
+ <strong>
266
+ term
267
+ <tt>blah</tt>
268
+ , display
269
+ <tt>term</tt>
270
+ not resolved via ID
271
+ <tt>blah</tt>
272
+ </strong>
273
+ </concept>
281
274
  </p>
282
275
  </foreword>
283
276
  </preface>
@@ -287,23 +280,238 @@ RSpec.describe Asciidoctor::Standoc do
287
280
  <p id='_'>Terms are defined here</p>
288
281
  </clause>
289
282
  </sections>
290
- <bibliography>
291
- <references id='_' obligation='informative' normative="false">
292
- <title>Bibliography</title>
293
- <bibitem id='blah'>
294
- <formattedref format='application/x-isodoc+xml'>
295
- <em>Blah</em>
296
- </formattedref>
297
- <docidentifier>blah</docidentifier>
298
- </bibitem>
299
- </references>
300
- </bibliography>
301
283
  </standard-document>
302
284
  OUTPUT
285
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
286
+ .to be_equivalent_to xmlpp(output)
287
+ end
288
+
289
+ it "processes the concept macros with xrefs" do
290
+ input = <<~INPUT
291
+ #{ASCIIDOC_BLANK_HDR}
292
+ {{<<clause1>>}}
293
+ {{<<clause1>>,w\[o\]rd}}
294
+ {{<<clause1>>,term,w\[o\]rd}}
295
+ {{<<clause1>>,term,w\[o\]rd,Clause #1}}
296
+
297
+ [[clause1]]
298
+ == Clause
299
+ Terms are defined here
300
+ INPUT
301
+ output = <<~OUTPUT
302
+ #{BLANK_HDR}
303
+ <preface>
304
+ <foreword id='_' obligation='informative'>
305
+ <title>Foreword</title>
306
+ <p id='_'>
307
+ <concept>
308
+ <xref target='clause1'/>
309
+ </concept>
310
+ <concept>
311
+ <refterm>w[o]rd</refterm>
312
+ <renderterm>w[o]rd</renderterm>
313
+ <xref target='clause1'/>
314
+ </concept>
315
+ <concept>
316
+ <refterm>term</refterm>
317
+ <renderterm>w[o]rd</renderterm>
318
+ <xref target='clause1'/>
319
+ </concept>
320
+ <concept>
321
+ <refterm>term</refterm>
322
+ <renderterm>w[o]rd</renderterm>
323
+ <xref target='clause1'>Clause #1</xref>
324
+ </concept>
325
+ </p>
326
+ </foreword>
327
+ </preface>
328
+ <sections>
329
+ <clause id='clause1' inline-header='false' obligation='normative'>
330
+ <title>Clause</title>
331
+ <p id='_'>Terms are defined here</p>
332
+ </clause>
333
+ </sections>
334
+ </standard-document>
335
+ OUTPUT
336
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
337
+ .to be_equivalent_to xmlpp(output)
338
+ end
339
+
340
+ it "processes the concept macros with erefs" do
341
+ input = <<~INPUT
342
+ #{ASCIIDOC_BLANK_HDR}
343
+ {{<<blah>>}}
344
+ {{<<blah>>,word}}
345
+ {{<<blah>>,term,word}}
346
+ {{<<blah>>,term,word,Clause #1}}
347
+ {{<<blah,clause=3.1>>}}
348
+ {{<<blah,clause=3.1>>,word}}
349
+ {{<<blah,clause=3.1>>,term,word}}
350
+ {{<<blah,clause=3.1,figure=a>>}}
351
+ {{<<blah,clause=3.1,figure=a>>,word}}
352
+ {{<<blah,clause=3.1,figure=a>>,term,word,Clause #1}}
353
+
354
+ [bibliography]
355
+ == Bibliography
356
+ * [[[blah,blah]]] _Blah_
357
+ INPUT
358
+ output = <<~OUTPUT
359
+ #{BLANK_HDR}
360
+ <preface>
361
+ <foreword id='_' obligation='informative'>
362
+ <title>Foreword</title>
363
+ <p id='_'>
364
+ <concept>
365
+ <eref bibitemid='blah'/>
366
+ </concept>
367
+ <concept>
368
+ <refterm>word</refterm>
369
+ <renderterm>word</renderterm>
370
+ <eref bibitemid='blah'/>
371
+ </concept>
372
+ <concept>
373
+ <refterm>term</refterm>
374
+ <renderterm>word</renderterm>
375
+ <eref bibitemid='blah'/>
376
+ </concept>
377
+ <concept>
378
+ <refterm>term</refterm>
379
+ <renderterm>word</renderterm>
380
+ <eref bibitemid='blah'>Clause #1</eref>
381
+ </concept>
382
+ <concept>
383
+ <eref bibitemid='blah'>
384
+ <localityStack>
385
+ <locality type='clause'>
386
+ <referenceFrom>3.1</referenceFrom>
387
+ </locality>
388
+ </localityStack>
389
+ </eref>
390
+ </concept>
391
+ <concept>
392
+ <refterm>word</refterm>
393
+ <renderterm>word</renderterm>
394
+ <eref bibitemid='blah'>
395
+ <localityStack>
396
+ <locality type='clause'>
397
+ <referenceFrom>3.1</referenceFrom>
398
+ </locality>
399
+ </localityStack>
400
+ </eref>
401
+ </concept>
402
+ <concept>
403
+ <refterm>term</refterm>
404
+ <renderterm>word</renderterm>
405
+ <eref bibitemid='blah'>
406
+ <localityStack>
407
+ <locality type='clause'>
408
+ <referenceFrom>3.1</referenceFrom>
409
+ </locality>
410
+ </localityStack>
411
+ </eref>
412
+ </concept>
413
+ <concept>
414
+ <eref bibitemid='blah'>
415
+ <localityStack>
416
+ <locality type='clause'>
417
+ <referenceFrom>3.1</referenceFrom>
418
+ </locality>
419
+ <locality type='figure'>
420
+ <referenceFrom>a</referenceFrom>
421
+ </locality>
422
+ </localityStack>
423
+ </eref>
424
+ </concept>
425
+ <concept>
426
+ <refterm>word</refterm>
427
+ <renderterm>word</renderterm>
428
+ <eref bibitemid='blah'>
429
+ <localityStack>
430
+ <locality type='clause'>
431
+ <referenceFrom>3.1</referenceFrom>
432
+ </locality>
433
+ <locality type='figure'>
434
+ <referenceFrom>a</referenceFrom>
435
+ </locality>
436
+ </localityStack>
437
+ </eref>
438
+ </concept>
439
+ <concept>
440
+ <refterm>term</refterm>
441
+ <renderterm>word</renderterm>
442
+ <eref bibitemid='blah'>
443
+ <localityStack>
444
+ <locality type='clause'>
445
+ <referenceFrom>3.1</referenceFrom>
446
+ </locality>
447
+ <locality type='figure'>
448
+ <referenceFrom>a</referenceFrom>
449
+ </locality>
450
+ </localityStack>
451
+ Clause #1
452
+ </eref>
453
+ </concept>
454
+ </p>
455
+ </foreword>
456
+ </preface>
457
+ <sections> </sections>
458
+ <bibliography>
459
+ <references id='_' normative='false' obligation='informative'>
460
+ <title>Bibliography</title>
461
+ <bibitem id='blah'>
462
+ <formattedref format='application/x-isodoc+xml'>
463
+ <em>Blah</em>
464
+ </formattedref>
465
+ <docidentifier>blah</docidentifier>
466
+ </bibitem>
467
+ </references>
468
+ </bibliography>
469
+ </standard-document>
470
+ OUTPUT
471
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
472
+ .to be_equivalent_to xmlpp(output)
473
+ end
474
+
475
+ it "processes the concept macros with termbase" do
476
+ input = <<~INPUT
477
+ #{ASCIIDOC_BLANK_HDR}
478
+ {{<<IEV:135-13-13>>}}
479
+ {{<<IEV:135-13-13>>,word}}
480
+ {{<<IEV:135-13-13>>,term,word}}
481
+ {{<<IEV:135-13-13>>,term,word,Clause #1}}
482
+ INPUT
483
+ output = <<~OUTPUT
484
+ #{BLANK_HDR}
485
+ <sections>
486
+ <p id='_'>
487
+ <concept>
488
+ <termref base='IEV' target='135-13-13'/>
489
+ </concept>
490
+ <concept>
491
+ <refterm>word</refterm>
492
+ <renderterm>word</renderterm>
493
+ <termref base='IEV' target='135-13-13'/>
494
+ </concept>
495
+ <concept>
496
+ <refterm>term</refterm>
497
+ <renderterm>word</renderterm>
498
+ <termref base='IEV' target='135-13-13'/>
499
+ </concept>
500
+ <concept>
501
+ <refterm>term</refterm>
502
+ <renderterm>word</renderterm>
503
+ <termref base='IEV' target='135-13-13'>Clause #1</termref>
504
+ </concept>
505
+ </p>
506
+ </sections>
507
+ </standard-document>
508
+ OUTPUT
509
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
510
+ .to be_equivalent_to xmlpp(output)
303
511
  end
304
512
 
305
513
  it "processes the TODO custom admonition" do
306
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
514
+ input = <<~INPUT
307
515
  #{ASCIIDOC_BLANK_HDR}
308
516
  TODO: Note1
309
517
 
@@ -315,6 +523,7 @@ RSpec.describe Asciidoctor::Standoc do
315
523
  [TODO]
316
524
  Note3
317
525
  INPUT
526
+ output = <<~OUTPUT
318
527
  #{BLANK_HDR}
319
528
  <sections><review reviewer="(Unknown)" id="_" date="#{Date.today}T00:00:00Z">
320
529
  <p id="_"/>
@@ -327,10 +536,12 @@ RSpec.describe Asciidoctor::Standoc do
327
536
  </review></sections>
328
537
  </standard-document>
329
538
  OUTPUT
539
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
540
+ .to be_equivalent_to xmlpp(output)
330
541
  end
331
542
 
332
543
  it "generates pseudocode examples, with formatting and initial indentation" do
333
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
544
+ input = <<~INPUT
334
545
  #{ASCIIDOC_BLANK_HDR}
335
546
 
336
547
  [pseudocode,subsequence="A",number="3",keep-with-next=true,keep-lines-together=true]
@@ -342,6 +553,7 @@ RSpec.describe Asciidoctor::Standoc do
342
553
  _C_
343
554
  ====
344
555
  INPUT
556
+ output = <<~OUTPUT
345
557
  #{BLANK_HDR}
346
558
  <sections>
347
559
  <figure id="_" subsequence='A' class="pseudocode" unnumbered="true" number="3" keep-with-next="true" keep-lines-together="true">
@@ -351,10 +563,12 @@ RSpec.describe Asciidoctor::Standoc do
351
563
  </sections>
352
564
  </standard-document>
353
565
  OUTPUT
566
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
567
+ .to be_equivalent_to xmlpp(output)
354
568
  end
355
569
 
356
570
  it "supplies line breaks in pseudocode" do
357
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
571
+ input = <<~INPUT
358
572
  #{ASCIIDOC_BLANK_HDR}
359
573
 
360
574
  [pseudocode]
@@ -366,6 +580,7 @@ RSpec.describe Asciidoctor::Standoc do
366
580
  E
367
581
  ====
368
582
  INPUT
583
+ output = <<~OUTPUT
369
584
  #{BLANK_HDR}
370
585
  <sections>
371
586
  <figure id='_' class='pseudocode'>
@@ -383,10 +598,12 @@ RSpec.describe Asciidoctor::Standoc do
383
598
  </sections>
384
599
  </standard-document>
385
600
  OUTPUT
601
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
602
+ .to be_equivalent_to xmlpp(output)
386
603
  end
387
604
 
388
605
  it "skips embedded blocks when supplying line breaks in pseudocode" do
389
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
606
+ input = <<~INPUT
390
607
  #{ASCIIDOC_BLANK_HDR}
391
608
 
392
609
  [pseudocode]
@@ -397,6 +614,7 @@ RSpec.describe Asciidoctor::Standoc do
397
614
  ++++
398
615
  ====
399
616
  INPUT
617
+ output = <<~OUTPUT
400
618
  #{BLANK_HDR}
401
619
  <sections>
402
620
  <figure id='_' class='pseudocode'>
@@ -449,14 +667,17 @@ RSpec.describe Asciidoctor::Standoc do
449
667
  </sections>
450
668
  </standard-document>
451
669
  OUTPUT
670
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
671
+ .to be_equivalent_to xmlpp(output)
452
672
  end
453
673
 
454
674
  it "processes the Ruby markups" do
455
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
675
+ input = <<~INPUT
456
676
  #{ASCIIDOC_BLANK_HDR}
457
677
 
458
678
  ruby:楽聖少女[がくせいしょうじょ]
459
679
  INPUT
680
+ output = <<~OUTPUT
460
681
  #{BLANK_HDR}
461
682
  <sections>
462
683
  <p id="_">
@@ -465,10 +686,12 @@ RSpec.describe Asciidoctor::Standoc do
465
686
  </sections>
466
687
  </standard-document>
467
688
  OUTPUT
689
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
690
+ .to be_equivalent_to xmlpp(output)
468
691
  end
469
692
 
470
693
  it "processes the footnoteblock macro" do
471
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
694
+ input = <<~INPUT
472
695
  #{ASCIIDOC_BLANK_HDR}
473
696
 
474
697
  footnoteblock:[id1]
@@ -487,6 +710,7 @@ RSpec.describe Asciidoctor::Standoc do
487
710
  * C
488
711
  --
489
712
  INPUT
713
+ output = <<~OUTPUT
490
714
  #{BLANK_HDR}
491
715
  <sections>
492
716
  <p id="_">
@@ -521,10 +745,12 @@ RSpec.describe Asciidoctor::Standoc do
521
745
  </sections>
522
746
  </standard-document>
523
747
  OUTPUT
748
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
749
+ .to be_equivalent_to xmlpp(output)
524
750
  end
525
751
 
526
752
  it "processes the footnoteblock macro with failed reference" do
527
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
753
+ input = <<~INPUT
528
754
  #{ASCIIDOC_BLANK_HDR}
529
755
 
530
756
  footnoteblock:[id1]
@@ -543,6 +769,7 @@ RSpec.describe Asciidoctor::Standoc do
543
769
  * C
544
770
  --
545
771
  INPUT
772
+ output = <<~OUTPUT
546
773
  #{BLANK_HDR}
547
774
  <sections>
548
775
  <p id='_'>
@@ -578,10 +805,12 @@ RSpec.describe Asciidoctor::Standoc do
578
805
  </sections>
579
806
  </standard-document>
580
807
  OUTPUT
808
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
809
+ .to be_equivalent_to xmlpp(output)
581
810
  end
582
811
 
583
812
  it "processes input form macros" do
584
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
813
+ input = <<~INPUT
585
814
  #{ASCIIDOC_BLANK_HDR}
586
815
 
587
816
  [form,id=N0,name=N1,action="/action_page.php"]
@@ -619,6 +848,7 @@ RSpec.describe Asciidoctor::Standoc do
619
848
  input:submit[value="Submit"]
620
849
  --
621
850
  INPUT
851
+ output = <<~OUTPUT
622
852
  #{BLANK_HDR}
623
853
  <sections>
624
854
  <form id='_' name='N1' action='/action_page.php'>
@@ -675,6 +905,8 @@ RSpec.describe Asciidoctor::Standoc do
675
905
  </sections>
676
906
  </standard-document>
677
907
  OUTPUT
908
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
909
+ .to be_equivalent_to xmlpp(output)
678
910
  end
679
911
 
680
912
  describe "term inline macros" do
@@ -683,8 +915,8 @@ RSpec.describe Asciidoctor::Standoc do
683
915
  strip_guid(
684
916
  Asciidoctor.convert(
685
917
  input, *OPTIONS
686
- )
687
- )
918
+ ),
919
+ ),
688
920
  )
689
921
  end
690
922
  let(:input) do
@@ -692,11 +924,13 @@ RSpec.describe Asciidoctor::Standoc do
692
924
  #{ASCIIDOC_BLANK_HDR}
693
925
  == Terms and Definitions
694
926
 
695
- === name2
927
+ === name
696
928
 
697
929
  == Main
698
930
 
699
931
  term:[name,name2] is a term
932
+
933
+ {{name,name2}} is a term
700
934
  XML
701
935
  end
702
936
  let(:output) do
@@ -706,17 +940,27 @@ RSpec.describe Asciidoctor::Standoc do
706
940
  <terms id='_' obligation='normative'>
707
941
  <title>Terms and definitions</title>
708
942
  <p id='_'>For the purposes of this document, the following terms and definitions apply.</p>
709
- <term id='term-name2'>
710
- <preferred>name2</preferred>
943
+ <term id='term-name'>
944
+ <preferred>name</preferred>
711
945
  </term>
712
946
  </terms>
713
947
  <clause id='_' inline-header='false' obligation='normative'>
714
948
  <title>Main</title>
715
949
  <p id='_'>
716
- <em>name</em>
717
- (
718
- <xref target='term-name2'/>
719
- ) is a term
950
+ <concept>
951
+ <refterm>name</refterm>
952
+ <renderterm>name2</renderterm>
953
+ <xref target='term-name'/>
954
+ </concept>
955
+ is a term
956
+ </p>
957
+ <p id='_'>
958
+ <concept>
959
+ <refterm>name</refterm>
960
+ <renderterm>name2</renderterm>
961
+ <xref target='term-name'/>
962
+ </concept>
963
+ is a term
720
964
  </p>
721
965
  </clause>
722
966
  </sections>
@@ -740,6 +984,8 @@ RSpec.describe Asciidoctor::Standoc do
740
984
  == Main
741
985
 
742
986
  term:[name] is a term
987
+
988
+ {{name}} is a term
743
989
  XML
744
990
  end
745
991
  let(:output) do
@@ -756,10 +1002,20 @@ RSpec.describe Asciidoctor::Standoc do
756
1002
  <clause id='_' inline-header='false' obligation='normative'>
757
1003
  <title>Main</title>
758
1004
  <p id='_'>
759
- <em>name</em>
760
- (
761
- <xref target='term-name' />
762
- ) is a term
1005
+ <concept>
1006
+ <refterm>name</refterm>
1007
+ <renderterm>name</renderterm>
1008
+ <xref target='term-name'/>
1009
+ </concept>
1010
+ is a term
1011
+ </p>
1012
+ <p id='_'>
1013
+ <concept>
1014
+ <refterm>name</refterm>
1015
+ <renderterm>name</renderterm>
1016
+ <xref target='term-name'/>
1017
+ </concept>
1018
+ is a term
763
1019
  </p>
764
1020
  </clause>
765
1021
  </sections>
@@ -792,6 +1048,8 @@ RSpec.describe Asciidoctor::Standoc do
792
1048
 
793
1049
  term:[name] is a term
794
1050
  term:[name2] is a term
1051
+ {{name}} is a term
1052
+ {{name2}} is a term
795
1053
  XML
796
1054
  end
797
1055
  let(:output) do
@@ -815,14 +1073,30 @@ RSpec.describe Asciidoctor::Standoc do
815
1073
  <clause id='term-name2' inline-header='false' obligation='normative'>
816
1074
  <title>Second</title>
817
1075
  <p id='_'>
818
- <em>name</em>
819
- (
820
- <xref target='term-name-1' />
821
- ) is a term
822
- <em>name2</em>
823
- (
824
- <xref target='term-name2-1' />
825
- ) is a term
1076
+ <concept>
1077
+ <refterm>name</refterm>
1078
+ <renderterm>name</renderterm>
1079
+ <xref target='term-name-1'/>
1080
+ </concept>
1081
+ is a term
1082
+ <concept>
1083
+ <refterm>name2</refterm>
1084
+ <renderterm>name2</renderterm>
1085
+ <xref target='term-name2-1'/>
1086
+ </concept>
1087
+ is a term
1088
+ <concept>
1089
+ <refterm>name</refterm>
1090
+ <renderterm>name</renderterm>
1091
+ <xref target='term-name-1'/>
1092
+ </concept>
1093
+ is a term
1094
+ <concept>
1095
+ <refterm>name2</refterm>
1096
+ <renderterm>name2</renderterm>
1097
+ <xref target='term-name2-1'/>
1098
+ </concept>
1099
+ is a term
826
1100
  </p>
827
1101
  </clause>
828
1102
  </sections>
@@ -854,40 +1128,90 @@ RSpec.describe Asciidoctor::Standoc do
854
1128
  term:[name identity] is a term
855
1129
 
856
1130
  Moreover, term:[missing] is a term
1131
+
1132
+
1133
+ {{name check}} is a term
1134
+
1135
+ {{name identity}} is a term
1136
+
1137
+ Moreover, {{missing}} is a term
857
1138
  XML
858
1139
  end
859
1140
  let(:output) do
860
1141
  <<~XML
861
1142
  #{BLANK_HDR}
862
- <sections>
863
- <terms id='_' obligation='normative'>
864
- <title>Terms and definitions</title>
865
- <p id='_'>For the purposes of this document, the following terms and definitions apply.</p>
866
- <term id='term-name-identity'>
867
- <preferred>name identity</preferred>
868
- </term>
869
- <term id='name-check'>
870
- <preferred>name check</preferred>
871
- <definition>
872
- <p id='_'>paragraph</p>
873
- <p id='_'>
874
- <em>name check</em>
875
- (
876
- <xref target='name-check'/>
877
- ) is a term
878
- </p>
879
- <p id='_'>
880
- <em>name identity</em>
881
- (
882
- <xref target='term-name-identity'/>
883
- ) is a term
884
- </p>
885
- <p id="_">Moreover, (<strong>term “missing” not resolved</strong>) is a term</p>
886
- </definition>
887
- </term>
888
- </terms>
889
- </sections>
890
- </standard-document>
1143
+ <sections>
1144
+ <terms id='_' obligation='normative'>
1145
+ <title>Terms and definitions</title>
1146
+ <p id='_'>For the purposes of this document, the following terms and definitions apply.</p>
1147
+ <term id='term-name-identity'>
1148
+ <preferred>name identity</preferred>
1149
+ </term>
1150
+ <term id='name-check'>
1151
+ <preferred>name check</preferred>
1152
+ <definition>
1153
+ <p id='_'>paragraph</p>
1154
+ <p id='_'>
1155
+ <concept>
1156
+ <refterm>name check</refterm>
1157
+ <renderterm>name check</renderterm>
1158
+ <xref target='name-check'/>
1159
+ </concept>
1160
+ is a term
1161
+ </p>
1162
+ <p id='_'>
1163
+ <concept>
1164
+ <refterm>name identity</refterm>
1165
+ <renderterm>name identity</renderterm>
1166
+ <xref target='term-name-identity'/>
1167
+ </concept>
1168
+ is a term
1169
+ </p>
1170
+ <p id='_'>
1171
+ Moreover,
1172
+ <concept>
1173
+ <strong>
1174
+ term
1175
+ <tt>missing</tt>
1176
+ not resolved via ID
1177
+ <tt>missing</tt>
1178
+ </strong>
1179
+ </concept>
1180
+ is a term
1181
+ </p>
1182
+ <p id='_'>
1183
+ <concept>
1184
+ <refterm>name check</refterm>
1185
+ <renderterm>name check</renderterm>
1186
+ <xref target='name-check'/>
1187
+ </concept>
1188
+ is a term
1189
+ </p>
1190
+ <p id='_'>
1191
+ <concept>
1192
+ <refterm>name identity</refterm>
1193
+ <renderterm>name identity</renderterm>
1194
+ <xref target='term-name-identity'/>
1195
+ </concept>
1196
+ is a term
1197
+ </p>
1198
+ <p id='_'>
1199
+ Moreover,
1200
+ <concept>
1201
+ <strong>
1202
+ term
1203
+ <tt>missing</tt>
1204
+ not resolved via ID
1205
+ <tt>missing</tt>
1206
+ </strong>
1207
+ </concept>
1208
+ is a term
1209
+ </p>
1210
+ </definition>
1211
+ </term>
1212
+ </terms>
1213
+ </sections>
1214
+ </standard-document>
891
1215
  XML
892
1216
  end
893
1217