metanorma-standoc 1.9.4 → 1.10.0

Sign up to get free protection for your applications and to get access to all the features.
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