isodoc 1.6.7.1 → 1.7.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/isodoc.gemspec +1 -1
- data/lib/isodoc-yaml/i18n-ar.yaml +19 -25
- data/lib/isodoc-yaml/i18n-de.yaml +1 -0
- data/lib/isodoc-yaml/i18n-en.yaml +1 -0
- data/lib/isodoc-yaml/i18n-es.yaml +1 -0
- data/lib/isodoc-yaml/i18n-fr.yaml +1 -0
- data/lib/isodoc-yaml/i18n-ru.yaml +1 -0
- data/lib/isodoc-yaml/i18n-zh-Hans.yaml +1 -0
- data/lib/isodoc.rb +1 -0
- data/lib/isodoc/convert.rb +1 -1
- data/lib/isodoc/css.rb +3 -3
- data/lib/isodoc/function/blocks.rb +180 -168
- data/lib/isodoc/function/form.rb +39 -36
- data/lib/isodoc/function/inline.rb +5 -1
- data/lib/isodoc/function/reqt.rb +91 -85
- data/lib/isodoc/function/to_word_html.rb +207 -204
- data/lib/isodoc/html_convert.rb +0 -4
- data/lib/isodoc/html_function/form.rb +48 -45
- data/lib/isodoc/html_function/html.rb +2 -0
- data/lib/isodoc/html_function/postprocess.rb +9 -4
- data/lib/isodoc/presentation_function/block.rb +7 -4
- data/lib/isodoc/presentation_function/inline.rb +29 -12
- data/lib/isodoc/presentation_function/section.rb +1 -2
- data/lib/isodoc/presentation_xml_convert.rb +2 -2
- data/lib/isodoc/version.rb +1 -1
- data/lib/isodoc/xref.rb +8 -7
- data/lib/isodoc/xref/xref_anchor.rb +45 -44
- data/lib/isodoc/xref/xref_counter.rb +113 -103
- data/lib/isodoc/xref/xref_gen.rb +39 -11
- data/lib/metanorma/output.rb +7 -0
- data/lib/metanorma/output/base.rb +13 -0
- data/lib/metanorma/output/utils.rb +17 -0
- data/lib/metanorma/output/xslfo.rb +21 -0
- data/spec/assets/outputtest/a.xml +66 -0
- data/spec/assets/outputtest/iso.international-standard.xsl +3011 -0
- data/spec/isodoc/blocks_spec.rb +358 -243
- data/spec/isodoc/form_spec.rb +94 -90
- data/spec/isodoc/inline_spec.rb +413 -234
- data/spec/isodoc/postproc_spec.rb +70 -27
- data/spec/isodoc/terms_spec.rb +2 -2
- data/spec/isodoc/xref_spec.rb +274 -652
- metadata +8 -18
- data/lib/isodoc/html_function/sectionsplit.rb +0 -230
- data/spec/isodoc/sectionsplit_spec.rb +0 -190
@@ -245,7 +245,7 @@ RSpec.describe IsoDoc do
|
|
245
245
|
html = File.read("test.html")
|
246
246
|
expect(html).to match(/another empty stylesheet/)
|
247
247
|
expect(html).to match(/p \{[^}]*?font-family: Arial/m)
|
248
|
-
expect(html).to match(/code \{[^}]*?font-family: Courier/m)
|
248
|
+
expect(html).to match(/code \{[^}]*?font-family: Courier New/m)
|
249
249
|
expect(html).to match(/h1 \{[^}]*?font-family: Arial/m)
|
250
250
|
expect(html).to match(/p \{[^}]*?font-size: 1em;/m)
|
251
251
|
expect(html).to match(/code \{[^}]*?font-size: 0.8em/m)
|
@@ -329,7 +329,7 @@ RSpec.describe IsoDoc do
|
|
329
329
|
word = File.read("test.doc")
|
330
330
|
expect(word).to match(/another empty stylesheet/)
|
331
331
|
expect(word).to match(/p \{[^}]*?font-family: Arial/m)
|
332
|
-
expect(word).to match(/code \{[^}]*?font-family: Courier/m)
|
332
|
+
expect(word).to match(/code \{[^}]*?font-family: Courier New/m)
|
333
333
|
expect(word).to match(/h1 \{[^}]*?font-family: Arial/m)
|
334
334
|
expect(word).to match(/p \{[^}]*?font-size: 12pt/m)
|
335
335
|
expect(word).to match(/code \{[^}]*?font-size: 11pt/m)
|
@@ -344,6 +344,62 @@ RSpec.describe IsoDoc do
|
|
344
344
|
expect(word).to match(%r{Antaŭparolo</h1>})
|
345
345
|
end
|
346
346
|
|
347
|
+
it "cleans up HTML output preface placeholder paragraphs" do
|
348
|
+
FileUtils.rm_f "test.doc"
|
349
|
+
FileUtils.rm_f "test.html"
|
350
|
+
IsoDoc::HtmlConvert.new(
|
351
|
+
{ bodyfont: "Zapf",
|
352
|
+
monospacefont: "Consolas",
|
353
|
+
headerfont: "Comic Sans",
|
354
|
+
normalfontsize: "30pt",
|
355
|
+
monospacefontsize: "29pt",
|
356
|
+
smallerfontsize: "28pt",
|
357
|
+
footnotefontsize: "27pt",
|
358
|
+
htmlstylesheet: "spec/assets/html.scss",
|
359
|
+
htmlstylesheet_override: "spec/assets/html_override.css",
|
360
|
+
htmlcoverpage: "spec/assets/htmlcover.html",
|
361
|
+
htmlintropage: "spec/assets/htmlintro.html",
|
362
|
+
scripts: "spec/assets/scripts.html",
|
363
|
+
scripts_override: "spec/assets/scripts_override.html",
|
364
|
+
i18nyaml: "spec/assets/i18n.yaml",
|
365
|
+
ulstyle: "l1",
|
366
|
+
olstyle: "l2" },
|
367
|
+
).convert("test", <<~"INPUT", false)
|
368
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
369
|
+
<preface><foreword>
|
370
|
+
<note>
|
371
|
+
<p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f">These results are based on a study carried out on three different types of kernel.</p>
|
372
|
+
</note>
|
373
|
+
</foreword></preface>
|
374
|
+
</iso-standard>
|
375
|
+
INPUT
|
376
|
+
html = Nokogiri::XML(File.read("test.html")).at("//body")
|
377
|
+
html.xpath("//script").each(&:remove)
|
378
|
+
expect(html.to_xml).to be_equivalent_to <<~OUTPUT
|
379
|
+
<body lang="en" xml:lang="en">
|
380
|
+
<div class="title-section">
|
381
|
+
/* an empty html cover page */
|
382
|
+
</div>
|
383
|
+
<br/>
|
384
|
+
<div class="prefatory-section">
|
385
|
+
/* an empty html intro page */
|
386
|
+
<ul id="toc-list"/>
|
387
|
+
</div>
|
388
|
+
<br/>
|
389
|
+
<main class="main-section"><button onclick="topFunction()" id="myBtn" title="Go to top">Top</button>
|
390
|
+
<br/>
|
391
|
+
<div>
|
392
|
+
<h1 class="ForewordTitle">Antaŭparolo</h1>
|
393
|
+
<div class="Note">
|
394
|
+
<p>  These results are based on a study carried out on three different types of kernel.</p>
|
395
|
+
</div>
|
396
|
+
</div>
|
397
|
+
<p class="zzSTDTitle1"/>
|
398
|
+
</main>
|
399
|
+
</body>
|
400
|
+
OUTPUT
|
401
|
+
end
|
402
|
+
|
347
403
|
it "converts definition lists to tables for Word" do
|
348
404
|
FileUtils.rm_f "test.doc"
|
349
405
|
FileUtils.rm_f "test.html"
|
@@ -1277,17 +1333,17 @@ RSpec.describe IsoDoc do
|
|
1277
1333
|
it "does not lose HTML escapes in postprocessing" do
|
1278
1334
|
FileUtils.rm_f "test.doc"
|
1279
1335
|
FileUtils.rm_f "test.html"
|
1280
|
-
|
1281
|
-
|
1282
|
-
|
1283
|
-
|
1284
|
-
|
1285
|
-
|
1286
|
-
|
1287
|
-
|
1288
|
-
|
1289
|
-
|
1290
|
-
|
1336
|
+
input = <<~INPUT
|
1337
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
1338
|
+
<preface><foreword>
|
1339
|
+
<sourcecode id="samplecode">
|
1340
|
+
<name>XML code</name>
|
1341
|
+
<xml> &
|
1342
|
+
</sourcecode>
|
1343
|
+
</foreword></preface>
|
1344
|
+
</iso-standard>
|
1345
|
+
INPUT
|
1346
|
+
IsoDoc::HtmlConvert.new(options).convert("test", input, false)
|
1291
1347
|
html = File.read("test.html")
|
1292
1348
|
.sub(/^.*<main class="main-section">/m, '<main class="main-section">')
|
1293
1349
|
.sub(%r{</main>.*$}m, "</main>")
|
@@ -1303,22 +1359,10 @@ RSpec.describe IsoDoc do
|
|
1303
1359
|
<p class="zzSTDTitle1"></p>
|
1304
1360
|
</main>
|
1305
1361
|
OUTPUT
|
1306
|
-
end
|
1307
1362
|
|
1308
|
-
it "does not lose HTML escapes in postprocessing (Word)" do
|
1309
1363
|
FileUtils.rm_f "test.doc"
|
1310
1364
|
FileUtils.rm_f "test.html"
|
1311
|
-
IsoDoc::WordConvert.new(options)
|
1312
|
-
.convert("test", <<~"INPUT", false)
|
1313
|
-
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
1314
|
-
<preface><foreword>
|
1315
|
-
<sourcecode id="samplecode">
|
1316
|
-
<name>XML code</name>
|
1317
|
-
<xml> &
|
1318
|
-
</sourcecode>
|
1319
|
-
</foreword></preface>
|
1320
|
-
</iso-standard>
|
1321
|
-
INPUT
|
1365
|
+
IsoDoc::WordConvert.new(options).convert("test", input, false)
|
1322
1366
|
word = File.read("test.doc")
|
1323
1367
|
.sub(/^.*<div class="WordSection2">/m, '<div class="WordSection2">')
|
1324
1368
|
.sub(%r{<p class="MsoNormal">\s*<br clear="all" class="section"/>\s*</p>\s*<div class="WordSection3">.*$}m, "")
|
@@ -2227,7 +2271,6 @@ RSpec.describe IsoDoc do
|
|
2227
2271
|
output = <<~OUTPUT
|
2228
2272
|
<body lang='en' xml:lang='en'>
|
2229
2273
|
<main class='main-section'>
|
2230
|
-
<button onclick='topFunction()' id='myBtn' title='Go to top'>Top</button>
|
2231
2274
|
<br/>
|
2232
2275
|
<div>
|
2233
2276
|
<h1 class='ForewordTitle'>Foreword</h1>
|
data/spec/isodoc/terms_spec.rb
CHANGED
@@ -189,7 +189,7 @@ RSpec.describe IsoDoc do
|
|
189
189
|
<a href="#ISO7301">ISO 7301:2011, Clause 3.1</a>
|
190
190
|
[MODIFICATION] The term "cargo rice" is shown as deprecated, and Note 1 to entry is not included here
|
191
191
|
[/TERMREF]</p>
|
192
|
-
<p>[TERMREF]
|
192
|
+
<p>[TERMREF] t1 [/TERMREF]</p>
|
193
193
|
<p>[TERMREF] Termbase IEV, term ID xyz [MODIFICATION]with adjustments [/TERMREF]</p>
|
194
194
|
<p class="TermNum" id="paddy">1.2.</p><p class="Terms" style="text-align:left;">paddy</p><p class="AltTerms" style="text-align:left;">paddy rice</p>
|
195
195
|
<p class="AltTerms" style="text-align:left;">rough rice</p>
|
@@ -233,7 +233,7 @@ RSpec.describe IsoDoc do
|
|
233
233
|
<a href="#ISO7301">ISO 7301:2011, Clause 3.1</a>
|
234
234
|
[MODIFICATION] The term "cargo rice" is shown as deprecated, and Note 1 to entry is not included here
|
235
235
|
[/TERMREF]</p>
|
236
|
-
<p>[TERMREF]
|
236
|
+
<p>[TERMREF] t1 [/TERMREF]</p>
|
237
237
|
<p>[TERMREF] Termbase IEV, term ID xyz [MODIFICATION]with adjustments [/TERMREF]</p>
|
238
238
|
<p class="TermNum" id="paddy">1.2.</p><p class="Terms" style="text-align:left;">paddy</p><p class="AltTerms" style="text-align:left;">paddy rice</p>
|
239
239
|
<p class="AltTerms" style="text-align:left;">rough rice</p>
|
data/spec/isodoc/xref_spec.rb
CHANGED
@@ -2213,110 +2213,23 @@ RSpec.describe IsoDoc do
|
|
2213
2213
|
</iso-standard>
|
2214
2214
|
INPUT
|
2215
2215
|
output = <<~OUTPUT
|
2216
|
-
<
|
2217
|
-
|
2218
|
-
|
2219
|
-
|
2220
|
-
|
2221
|
-
|
2222
|
-
|
2223
|
-
|
2224
|
-
|
2225
|
-
|
2226
|
-
|
2227
|
-
|
2228
|
-
</p>
|
2229
|
-
</foreword>
|
2230
|
-
<introduction id='intro' displayorder='2'>
|
2231
|
-
<ol id='N1'>
|
2232
|
-
<li>
|
2233
|
-
<p>A</p>
|
2234
|
-
</li>
|
2235
|
-
</ol>
|
2236
|
-
<clause id='xyz'>
|
2237
|
-
<title depth='2'>Preparatory</title>
|
2238
|
-
<ol id='N2'>
|
2239
|
-
<li>
|
2240
|
-
<p>A</p>
|
2241
|
-
</li>
|
2242
|
-
</ol>
|
2243
|
-
</clause>
|
2244
|
-
</introduction>
|
2245
|
-
</preface>
|
2246
|
-
<sections>
|
2247
|
-
<clause id='scope' type='scope' displayorder='3'>
|
2248
|
-
<title depth='1'>
|
2249
|
-
1.
|
2250
|
-
<tab/>
|
2251
|
-
Scope
|
2252
|
-
</title>
|
2253
|
-
<ol id='N'>
|
2254
|
-
<li>
|
2255
|
-
<p>A</p>
|
2256
|
-
</li>
|
2257
|
-
</ol>
|
2258
|
-
</clause>
|
2259
|
-
<terms id='terms' displayorder='4'>
|
2260
|
-
<title>2.</title>
|
2261
|
-
</terms>
|
2262
|
-
<clause id='widgets' displayorder='5'>
|
2263
|
-
<title depth='1'>
|
2264
|
-
3.
|
2265
|
-
<tab/>
|
2266
|
-
Widgets
|
2267
|
-
</title>
|
2268
|
-
<clause id='widgets1'>
|
2269
|
-
<title>3.1.</title>
|
2270
|
-
<ol id='note1'>
|
2271
|
-
<p id='_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f'>
|
2272
|
-
These results are based on a study carried out on three different
|
2273
|
-
types of kernel.
|
2274
|
-
</p>
|
2275
|
-
</ol>
|
2276
|
-
<ol id='note2'>
|
2277
|
-
<p id='_f06fd0d1-a203-4f3d-a515-0bdba0f8d83a'>
|
2278
|
-
These results are based on a study carried out on three different
|
2279
|
-
types of kernel.
|
2280
|
-
</p>
|
2281
|
-
</ol>
|
2282
|
-
</clause>
|
2283
|
-
</clause>
|
2284
|
-
</sections>
|
2285
|
-
<annex id='annex1' displayorder='6'>
|
2286
|
-
<title>
|
2287
|
-
<strong>Annex A</strong>
|
2288
|
-
<br/>
|
2289
|
-
(informative)
|
2290
|
-
</title>
|
2291
|
-
<clause id='annex1a'>
|
2292
|
-
<title>A.1.</title>
|
2293
|
-
<ol id='AN'>
|
2294
|
-
<p id='_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f'>
|
2295
|
-
These results are based on a study carried out on three different
|
2296
|
-
types of kernel.
|
2297
|
-
</p>
|
2298
|
-
</ol>
|
2299
|
-
</clause>
|
2300
|
-
<clause id='annex1b'>
|
2301
|
-
<title>A.2.</title>
|
2302
|
-
<ol id='Anote1'>
|
2303
|
-
<p id='_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f'>
|
2304
|
-
These results are based on a study carried out on three different
|
2305
|
-
types of kernel.
|
2306
|
-
</p>
|
2307
|
-
</ol>
|
2308
|
-
<ol id='Anote2'>
|
2309
|
-
<p id='_f06fd0d1-a203-4f3d-a515-0bdba0f8d83a'>
|
2310
|
-
These results are based on a study carried out on three different
|
2311
|
-
types of kernel.
|
2312
|
-
</p>
|
2313
|
-
</ol>
|
2314
|
-
</clause>
|
2315
|
-
</annex>
|
2316
|
-
</iso-standard>
|
2216
|
+
<foreword displayorder='1'>
|
2217
|
+
<p>
|
2218
|
+
<xref target='N1'>Introduction, List</xref>
|
2219
|
+
<xref target='N2'>Preparatory, List</xref>
|
2220
|
+
<xref target='N'>Clause 1, List</xref>
|
2221
|
+
<xref target='note1'>Clause 3.1, List 1</xref>
|
2222
|
+
<xref target='note2'>Clause 3.1, List 2</xref>
|
2223
|
+
<xref target='AN'>Annex A.1, List</xref>
|
2224
|
+
<xref target='Anote1'>Annex A.2, List 1</xref>
|
2225
|
+
<xref target='Anote2'>Annex A.2, List 2</xref>
|
2226
|
+
</p>
|
2227
|
+
</foreword>
|
2317
2228
|
OUTPUT
|
2318
|
-
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
|
2319
|
-
.convert("test", input, true))
|
2229
|
+
expect(xmlpp(Nokogiri::XML(IsoDoc::PresentationXMLConvert.new({})
|
2230
|
+
.convert("test", input, true))
|
2231
|
+
.at("//xmlns:foreword").to_xml))
|
2232
|
+
.to be_equivalent_to xmlpp(output)
|
2320
2233
|
end
|
2321
2234
|
|
2322
2235
|
it "cross-references list items" do
|
@@ -2382,105 +2295,23 @@ RSpec.describe IsoDoc do
|
|
2382
2295
|
</iso-standard>
|
2383
2296
|
INPUT
|
2384
2297
|
output = <<~OUTPUT
|
2385
|
-
<
|
2386
|
-
|
2387
|
-
|
2388
|
-
|
2389
|
-
|
2390
|
-
|
2391
|
-
|
2392
|
-
|
2393
|
-
|
2394
|
-
|
2395
|
-
|
2396
|
-
|
2397
|
-
</p>
|
2398
|
-
</foreword>
|
2399
|
-
<introduction id='intro' displayorder='2'>
|
2400
|
-
<ol id='N01'>
|
2401
|
-
<li id='N1'>
|
2402
|
-
<p>A</p>
|
2403
|
-
</li>
|
2404
|
-
</ol>
|
2405
|
-
<clause id='xyz'>
|
2406
|
-
<title depth='2'>Preparatory</title>
|
2407
|
-
<ol id='N02' type='arabic'>
|
2408
|
-
<li id='N2'>
|
2409
|
-
<p>A</p>
|
2410
|
-
</li>
|
2411
|
-
</ol>
|
2412
|
-
</clause>
|
2413
|
-
</introduction>
|
2414
|
-
</preface>
|
2415
|
-
<sections>
|
2416
|
-
<clause id='scope' type='scope' displayorder='3'>
|
2417
|
-
<title depth='1'>
|
2418
|
-
1.
|
2419
|
-
<tab/>
|
2420
|
-
Scope
|
2421
|
-
</title>
|
2422
|
-
<ol id='N0' type='roman'>
|
2423
|
-
<li id='N'>
|
2424
|
-
<p>A</p>
|
2425
|
-
</li>
|
2426
|
-
</ol>
|
2427
|
-
</clause>
|
2428
|
-
<terms id='terms' displayorder='4'>
|
2429
|
-
<title>2.</title>
|
2430
|
-
</terms>
|
2431
|
-
<clause id='widgets' displayorder='5'>
|
2432
|
-
<title depth='1'>
|
2433
|
-
3.
|
2434
|
-
<tab/>
|
2435
|
-
Widgets
|
2436
|
-
</title>
|
2437
|
-
<clause id='widgets1'>
|
2438
|
-
<title>3.1.</title>
|
2439
|
-
<ol id='note1l' type='alphabet'>
|
2440
|
-
<li id='note1'>
|
2441
|
-
<p>A</p>
|
2442
|
-
</li>
|
2443
|
-
</ol>
|
2444
|
-
<ol id='note2l' type='roman_upper'>
|
2445
|
-
<li id='note2'>
|
2446
|
-
<p>A</p>
|
2447
|
-
</li>
|
2448
|
-
</ol>
|
2449
|
-
</clause>
|
2450
|
-
</clause>
|
2451
|
-
</sections>
|
2452
|
-
<annex id='annex1' displayorder='6'>
|
2453
|
-
<title>
|
2454
|
-
<strong>Annex A</strong>
|
2455
|
-
<br/>
|
2456
|
-
(informative)
|
2457
|
-
</title>
|
2458
|
-
<clause id='annex1a'>
|
2459
|
-
<title>A.1.</title>
|
2460
|
-
<ol id='ANl' type='alphabet_upper'>
|
2461
|
-
<li id='AN'>
|
2462
|
-
<p>A</p>
|
2463
|
-
</li>
|
2464
|
-
</ol>
|
2465
|
-
</clause>
|
2466
|
-
<clause id='annex1b'>
|
2467
|
-
<title>A.2.</title>
|
2468
|
-
<ol id='Anote1l' type='roman' start='4'>
|
2469
|
-
<li id='Anote1'>
|
2470
|
-
<p>A</p>
|
2471
|
-
</li>
|
2472
|
-
</ol>
|
2473
|
-
<ol id='Anote2l'>
|
2474
|
-
<li id='Anote2'>
|
2475
|
-
<p>A</p>
|
2476
|
-
</li>
|
2477
|
-
</ol>
|
2478
|
-
</clause>
|
2479
|
-
</annex>
|
2480
|
-
</iso-standard>
|
2298
|
+
<foreword displayorder='1'>
|
2299
|
+
<p>
|
2300
|
+
<xref target='N1'>Introduction, a)</xref>
|
2301
|
+
<xref target='N2'>Preparatory, 1)</xref>
|
2302
|
+
<xref target='N'>Clause 1, i)</xref>
|
2303
|
+
<xref target='note1'>Clause 3.1, List 1 a)</xref>
|
2304
|
+
<xref target='note2'>Clause 3.1, List 2 I)</xref>
|
2305
|
+
<xref target='AN'>Annex A.1, A)</xref>
|
2306
|
+
<xref target='Anote1'>Annex A.2, List 1 iv)</xref>
|
2307
|
+
<xref target='Anote2'>Annex A.2, List 2 a)</xref>
|
2308
|
+
</p>
|
2309
|
+
</foreword>
|
2481
2310
|
OUTPUT
|
2482
|
-
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
|
2483
|
-
.convert("test", input, true))
|
2311
|
+
expect(xmlpp(Nokogiri::XML(IsoDoc::PresentationXMLConvert.new({})
|
2312
|
+
.convert("test", input, true))
|
2313
|
+
.at("//xmlns:foreword").to_xml))
|
2314
|
+
.to be_equivalent_to xmlpp(output)
|
2484
2315
|
end
|
2485
2316
|
|
2486
2317
|
it "cross-references nested list items" do
|
@@ -2523,65 +2354,187 @@ RSpec.describe IsoDoc do
|
|
2523
2354
|
</iso-standard>
|
2524
2355
|
INPUT
|
2525
2356
|
output = <<~OUTPUT
|
2526
|
-
|
2527
|
-
|
2528
|
-
|
2529
|
-
<
|
2530
|
-
|
2531
|
-
|
2532
|
-
|
2533
|
-
|
2534
|
-
|
2535
|
-
|
2536
|
-
|
2537
|
-
|
2357
|
+
<foreword displayorder="1">
|
2358
|
+
<p>
|
2359
|
+
<xref target='N'>Clause 1, a)</xref>
|
2360
|
+
<xref target='note1'>Clause 1, a.1)</xref>
|
2361
|
+
<xref target='note2'>Clause 1, a.1.i)</xref>
|
2362
|
+
<xref target='AN'>Clause 1, a.1.i.A)</xref>
|
2363
|
+
<xref target='Anote1'>Clause 1, a.1.i.A.I)</xref>
|
2364
|
+
<xref target='Anote2'>Clause 1, a.1.i.A.I.a)</xref>
|
2365
|
+
</p>
|
2366
|
+
</foreword>
|
2367
|
+
OUTPUT
|
2368
|
+
expect(xmlpp(Nokogiri::XML(IsoDoc::PresentationXMLConvert.new({})
|
2369
|
+
.convert("test", input, true))
|
2370
|
+
.at("//xmlns:foreword").to_xml))
|
2371
|
+
.to be_equivalent_to xmlpp(output)
|
2372
|
+
end
|
2373
|
+
|
2374
|
+
it "cross-references definition lists" do
|
2375
|
+
input = <<~INPUT
|
2376
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
2377
|
+
<preface>
|
2378
|
+
<foreword>
|
2379
|
+
<p>
|
2380
|
+
<xref target="N1"/>
|
2381
|
+
<xref target="N2"/>
|
2382
|
+
<xref target="N"/>
|
2383
|
+
<xref target="note1"/>
|
2384
|
+
<xref target="note2"/>
|
2385
|
+
<xref target="AN"/>
|
2386
|
+
<xref target="Anote1"/>
|
2387
|
+
<xref target="Anote2"/>
|
2388
|
+
</p>
|
2538
2389
|
</foreword>
|
2539
|
-
|
2540
|
-
|
2541
|
-
|
2542
|
-
|
2543
|
-
|
2544
|
-
|
2545
|
-
|
2546
|
-
</
|
2547
|
-
|
2548
|
-
|
2549
|
-
|
2550
|
-
|
2551
|
-
|
2552
|
-
|
2553
|
-
|
2554
|
-
|
2555
|
-
<p>A</p>
|
2556
|
-
<ol>
|
2557
|
-
<li id='AN'>
|
2558
|
-
<p>A</p>
|
2559
|
-
<ol>
|
2560
|
-
<li id='Anote1'>
|
2561
|
-
<p>A</p>
|
2562
|
-
<ol>
|
2563
|
-
<li id='Anote2'>
|
2564
|
-
<p>A</p>
|
2565
|
-
</li>
|
2566
|
-
</ol>
|
2567
|
-
</li>
|
2568
|
-
</ol>
|
2569
|
-
</li>
|
2570
|
-
</ol>
|
2571
|
-
</li>
|
2572
|
-
</ol>
|
2573
|
-
</li>
|
2574
|
-
</ol>
|
2575
|
-
</li>
|
2576
|
-
</ol>
|
2390
|
+
<introduction id="intro">
|
2391
|
+
<dl id="N1">
|
2392
|
+
<li><p>A</p></li>
|
2393
|
+
</dl>
|
2394
|
+
<clause id="xyz"><title>Preparatory</title>
|
2395
|
+
<dl id="N2">
|
2396
|
+
<li><p>A</p></li>
|
2397
|
+
</dl>
|
2398
|
+
</clause>
|
2399
|
+
</introduction>
|
2400
|
+
</preface>
|
2401
|
+
<sections>
|
2402
|
+
<clause id="scope" type="scope"><title>Scope</title>
|
2403
|
+
<dl id="N">
|
2404
|
+
<li><p>A</p></li>
|
2405
|
+
</dl>
|
2577
2406
|
</clause>
|
2578
|
-
|
2579
|
-
|
2407
|
+
<terms id="terms"/>
|
2408
|
+
<clause id="widgets"><title>Widgets</title>
|
2409
|
+
<clause id="widgets1">
|
2410
|
+
<dl id="note1">
|
2411
|
+
<p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f">These results are based on a study carried out on three different types of kernel.</p>
|
2412
|
+
</dl>
|
2413
|
+
<dl id="note2">
|
2414
|
+
<p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83a">These results are based on a study carried out on three different types of kernel.</p>
|
2415
|
+
</dl>
|
2416
|
+
</clause>
|
2417
|
+
</clause>
|
2418
|
+
</sections>
|
2419
|
+
<annex id="annex1">
|
2420
|
+
<clause id="annex1a">
|
2421
|
+
<dl id="AN">
|
2422
|
+
<p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f">These results are based on a study carried out on three different types of kernel.</p>
|
2423
|
+
</dl>
|
2424
|
+
</clause>
|
2425
|
+
<clause id="annex1b">
|
2426
|
+
<dl id="Anote1">
|
2427
|
+
<p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f">These results are based on a study carried out on three different types of kernel.</p>
|
2428
|
+
</dl>
|
2429
|
+
<dl id="Anote2">
|
2430
|
+
<p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83a">These results are based on a study carried out on three different types of kernel.</p>
|
2431
|
+
</dl>
|
2432
|
+
</clause>
|
2433
|
+
</annex>
|
2434
|
+
</iso-standard>
|
2435
|
+
INPUT
|
2436
|
+
output = <<~OUTPUT
|
2437
|
+
<foreword displayorder='1'>
|
2438
|
+
<p>
|
2439
|
+
<xref target='N1'>Introduction, Definition List</xref>
|
2440
|
+
<xref target='N2'>Preparatory, Definition List</xref>
|
2441
|
+
<xref target='N'>Clause 1, Definition List</xref>
|
2442
|
+
<xref target='note1'>Clause 3.1, Definition List 1</xref>
|
2443
|
+
<xref target='note2'>Clause 3.1, Definition List 2</xref>
|
2444
|
+
<xref target='AN'>Annex A.1, Definition List</xref>
|
2445
|
+
<xref target='Anote1'>Annex A.2, Definition List 1</xref>
|
2446
|
+
<xref target='Anote2'>Annex A.2, Definition List 2</xref>
|
2447
|
+
</p>
|
2448
|
+
</foreword>
|
2580
2449
|
OUTPUT
|
2581
|
-
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
|
2582
|
-
.convert("test", input, true))
|
2450
|
+
expect(xmlpp(Nokogiri::XML(IsoDoc::PresentationXMLConvert.new({})
|
2451
|
+
.convert("test", input, true))
|
2452
|
+
.at("//xmlns:foreword").to_xml))
|
2453
|
+
.to be_equivalent_to xmlpp(output)
|
2583
2454
|
end
|
2584
2455
|
|
2456
|
+
it "cross-references definition list terms" do
|
2457
|
+
input = <<~INPUT
|
2458
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
2459
|
+
<preface>
|
2460
|
+
<foreword>
|
2461
|
+
<p>
|
2462
|
+
<xref target="N1"/>
|
2463
|
+
<xref target="N2"/>
|
2464
|
+
<xref target="N"/>
|
2465
|
+
<xref target="note1"/>
|
2466
|
+
<xref target="note2"/>
|
2467
|
+
<xref target="AN"/>
|
2468
|
+
<xref target="Anote1"/>
|
2469
|
+
<xref target="Anote2"/>
|
2470
|
+
</p>
|
2471
|
+
</foreword>
|
2472
|
+
<introduction id="intro">
|
2473
|
+
<dl id="N01">
|
2474
|
+
<dt id="N1"><p>A</p></dt>
|
2475
|
+
</dl>
|
2476
|
+
<clause id="xyz"><title>Preparatory</title>
|
2477
|
+
<dl id="N02" type="arabic">
|
2478
|
+
<dt id="N2"><p>A</p></dt>
|
2479
|
+
</dl>
|
2480
|
+
</clause>
|
2481
|
+
</introduction>
|
2482
|
+
</preface>
|
2483
|
+
<sections>
|
2484
|
+
<clause id="scope" type="scope"><title>Scope</title>
|
2485
|
+
<dl id="N0" type="roman">
|
2486
|
+
<dt id="N"><p>A</p></dt>
|
2487
|
+
</dl>
|
2488
|
+
</clause>
|
2489
|
+
<terms id="terms"/>
|
2490
|
+
<clause id="widgets"><title>Widgets</title>
|
2491
|
+
<clause id="widgets1">
|
2492
|
+
<dl id="note1l" type="alphabet">
|
2493
|
+
<dt id="note1"><p>A</p></dt>
|
2494
|
+
</dl>
|
2495
|
+
<dl id="note2l" type="roman_upper">
|
2496
|
+
<dt id="note2"><p>A</p></dt>
|
2497
|
+
</dl>
|
2498
|
+
</clause>
|
2499
|
+
</clause>
|
2500
|
+
</sections>
|
2501
|
+
<annex id="annex1">
|
2502
|
+
<clause id="annex1a">
|
2503
|
+
<dl id="ANl" type="alphabet_upper">
|
2504
|
+
<dt id="AN"><p>A</p></dt>
|
2505
|
+
</dl>
|
2506
|
+
</clause>
|
2507
|
+
<clause id="annex1b">
|
2508
|
+
<dl id="Anote1l" type="roman" start="4">
|
2509
|
+
<dt id="Anote1"><p>A</p></dt>
|
2510
|
+
</dl>
|
2511
|
+
<dl id="Anote2l">
|
2512
|
+
<dt id="Anote2"><p>A</p></dt>
|
2513
|
+
</dl>
|
2514
|
+
</clause>
|
2515
|
+
</annex>
|
2516
|
+
</iso-standard>
|
2517
|
+
INPUT
|
2518
|
+
output = <<~OUTPUT
|
2519
|
+
<foreword displayorder='1'>
|
2520
|
+
<p>
|
2521
|
+
<xref target='N1'>Introduction, Definition List: A</xref>
|
2522
|
+
<xref target='N2'>Preparatory, Definition List: A</xref>
|
2523
|
+
<xref target='N'>Clause 1, Definition List: A</xref>
|
2524
|
+
<xref target='note1'>Clause 3.1, Definition List 1: A</xref>
|
2525
|
+
<xref target='note2'>Clause 3.1, Definition List 2: A</xref>
|
2526
|
+
<xref target='AN'>Annex A.1, Definition List: A</xref>
|
2527
|
+
<xref target='Anote1'>Annex A.2, Definition List 1: A</xref>
|
2528
|
+
<xref target='Anote2'>Annex A.2, Definition List 2: A</xref>
|
2529
|
+
</p>
|
2530
|
+
</foreword>
|
2531
|
+
OUTPUT
|
2532
|
+
expect(xmlpp(Nokogiri::XML(IsoDoc::PresentationXMLConvert.new({})
|
2533
|
+
.convert("test", input, true))
|
2534
|
+
.at("//xmlns:foreword").to_xml))
|
2535
|
+
.to be_equivalent_to xmlpp(output)
|
2536
|
+
end
|
2537
|
+
|
2585
2538
|
it "cross-references bookmarks" do
|
2586
2539
|
input = <<~INPUT
|
2587
2540
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
@@ -2646,94 +2599,23 @@ RSpec.describe IsoDoc do
|
|
2646
2599
|
</iso-standard>
|
2647
2600
|
INPUT
|
2648
2601
|
output = <<~OUTPUT
|
2649
|
-
<
|
2650
|
-
|
2651
|
-
|
2652
|
-
|
2653
|
-
|
2654
|
-
|
2655
|
-
|
2656
|
-
|
2657
|
-
|
2658
|
-
|
2659
|
-
|
2660
|
-
|
2661
|
-
</p>
|
2662
|
-
</foreword>
|
2663
|
-
<introduction id='intro' displayorder='2'>
|
2664
|
-
<p id='N01'>
|
2665
|
-
<bookmark id='N1'/>
|
2666
|
-
</p>
|
2667
|
-
<clause id='xyz'>
|
2668
|
-
<title depth='2'>Preparatory</title>
|
2669
|
-
<p id='N02' type='arabic'>
|
2670
|
-
<bookmark id='N2'/>
|
2671
|
-
</p>
|
2672
|
-
</clause>
|
2673
|
-
</introduction>
|
2674
|
-
</preface>
|
2675
|
-
<sections>
|
2676
|
-
<clause id='scope' type='scope' displayorder='3'>
|
2677
|
-
<title depth='1'>
|
2678
|
-
1.
|
2679
|
-
<tab/>
|
2680
|
-
Scope
|
2681
|
-
</title>
|
2682
|
-
<p id='N0' type='roman'>
|
2683
|
-
<bookmark id='N'/>
|
2684
|
-
</p>
|
2685
|
-
</clause>
|
2686
|
-
<terms id='terms' displayorder='4'>
|
2687
|
-
<title>2.</title>
|
2688
|
-
</terms>
|
2689
|
-
<clause id='widgets' displayorder='5'>
|
2690
|
-
<title depth='1'>
|
2691
|
-
3.
|
2692
|
-
<tab/>
|
2693
|
-
Widgets
|
2694
|
-
</title>
|
2695
|
-
<clause id='widgets1'>
|
2696
|
-
<title>3.1.</title>
|
2697
|
-
<note id='note0'>
|
2698
|
-
<name>NOTE 1</name>
|
2699
|
-
</note>
|
2700
|
-
<note id='note1l' type='alphabet'>
|
2701
|
-
<name>NOTE 2</name>
|
2702
|
-
<bookmark id='note1'/>
|
2703
|
-
</note>
|
2704
|
-
<p id='note2l' type='roman_upper'>
|
2705
|
-
<bookmark id='note2'/>
|
2706
|
-
</p>
|
2707
|
-
</clause>
|
2708
|
-
</clause>
|
2709
|
-
</sections>
|
2710
|
-
<annex id='annex1' displayorder='6'>
|
2711
|
-
<title>
|
2712
|
-
<strong>Annex A</strong>
|
2713
|
-
<br/>
|
2714
|
-
(informative)
|
2715
|
-
</title>
|
2716
|
-
<clause id='annex1a'>
|
2717
|
-
<title>A.1.</title>
|
2718
|
-
<p id='ANl' type='alphabet_upper'>
|
2719
|
-
<bookmark id='AN'/>
|
2720
|
-
</p>
|
2721
|
-
</clause>
|
2722
|
-
<clause id='annex1b'>
|
2723
|
-
<title>A.2.</title>
|
2724
|
-
<figure id='Anote1l' type='roman' start='4'>
|
2725
|
-
<name>Figure A.1</name>
|
2726
|
-
<bookmark id='Anote1'/>
|
2727
|
-
</figure>
|
2728
|
-
<p id='Anote2l'>
|
2729
|
-
<bookmark id='Anote2'/>
|
2730
|
-
</p>
|
2731
|
-
</clause>
|
2732
|
-
</annex>
|
2733
|
-
</iso-standard>
|
2602
|
+
<foreword displayorder='1'>
|
2603
|
+
<p>
|
2604
|
+
<xref target='N1'>Introduction</xref>
|
2605
|
+
<xref target='N2'>Preparatory</xref>
|
2606
|
+
<xref target='N'>Clause 1</xref>
|
2607
|
+
<xref target='note1'>Note 2</xref>
|
2608
|
+
<xref target='note2'>Clause 3.1</xref>
|
2609
|
+
<xref target='AN'>Annex A.1</xref>
|
2610
|
+
<xref target='Anote1'>Figure A.1</xref>
|
2611
|
+
<xref target='Anote2'>Annex A.2</xref>
|
2612
|
+
</p>
|
2613
|
+
</foreword>
|
2734
2614
|
OUTPUT
|
2735
|
-
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
|
2736
|
-
.convert("test", input, true))
|
2615
|
+
expect(xmlpp(Nokogiri::XML(IsoDoc::PresentationXMLConvert.new({})
|
2616
|
+
.convert("test", input, true))
|
2617
|
+
.at("//xmlns:foreword").to_xml))
|
2618
|
+
.to be_equivalent_to xmlpp(output)
|
2737
2619
|
end
|
2738
2620
|
|
2739
2621
|
it "realises subsequences" do
|
@@ -2781,9 +2663,6 @@ RSpec.describe IsoDoc do
|
|
2781
2663
|
</iso-standard>
|
2782
2664
|
INPUT
|
2783
2665
|
output = <<~OUTPUT
|
2784
|
-
<?xml version='1.0'?>
|
2785
|
-
<iso-standard xmlns='http://riboseinc.com/isoxml' type="presentation">
|
2786
|
-
<preface>
|
2787
2666
|
<foreword id='fwd' displayorder="1">
|
2788
2667
|
<p>
|
2789
2668
|
<xref target='N1'>Figure 1</xref>
|
@@ -2796,45 +2675,11 @@ RSpec.describe IsoDoc do
|
|
2796
2675
|
<xref target='N8'>Figure 5</xref>
|
2797
2676
|
</p>
|
2798
2677
|
</foreword>
|
2799
|
-
<introduction id='intro' displayorder="2">
|
2800
|
-
<figure id='N1'>
|
2801
|
-
<name>Figure 1 — Split-it-right sample divider</name>
|
2802
|
-
<image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
|
2803
|
-
</figure>
|
2804
|
-
<figure id='N2' subsequence='A'>
|
2805
|
-
<name>Figure 2a — Split-it-right sample divider</name>
|
2806
|
-
<image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
|
2807
|
-
</figure>
|
2808
|
-
<figure id='N3' subsequence='A'>
|
2809
|
-
<name>Figure 2b — Split-it-right sample divider</name>
|
2810
|
-
<image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
|
2811
|
-
</figure>
|
2812
|
-
<figure id='N4' subsequence='B'>
|
2813
|
-
<name>Figure 3a — Split-it-right sample divider</name>
|
2814
|
-
<image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
|
2815
|
-
</figure>
|
2816
|
-
<figure id='N5' subsequence='B'>
|
2817
|
-
<name>Figure 3b — Split-it-right sample divider</name>
|
2818
|
-
<image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
|
2819
|
-
</figure>
|
2820
|
-
<figure id='N6' subsequence='B'>
|
2821
|
-
<name>Figure 3c — Split-it-right sample divider</name>
|
2822
|
-
<image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
|
2823
|
-
</figure>
|
2824
|
-
<figure id='N7'>
|
2825
|
-
<name>Figure 4 — Split-it-right sample divider</name>
|
2826
|
-
<image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
|
2827
|
-
</figure>
|
2828
|
-
<figure id='N8'>
|
2829
|
-
<name>Figure 5 — Split-it-right sample divider</name>
|
2830
|
-
<image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
|
2831
|
-
</figure>
|
2832
|
-
</introduction>
|
2833
|
-
</preface>
|
2834
|
-
</iso-standard>
|
2835
2678
|
OUTPUT
|
2836
|
-
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
|
2837
|
-
.convert("test", input, true))
|
2679
|
+
expect(xmlpp(Nokogiri::XML(IsoDoc::PresentationXMLConvert.new({})
|
2680
|
+
.convert("test", input, true))
|
2681
|
+
.at("//xmlns:foreword").to_xml))
|
2682
|
+
.to be_equivalent_to xmlpp(output)
|
2838
2683
|
end
|
2839
2684
|
|
2840
2685
|
it "realises numbering overrides" do
|
@@ -3004,276 +2849,53 @@ RSpec.describe IsoDoc do
|
|
3004
2849
|
</iso-standard>
|
3005
2850
|
INPUT
|
3006
2851
|
output = <<~OUTPUT
|
3007
|
-
|
3008
|
-
|
3009
|
-
|
3010
|
-
|
3011
|
-
|
3012
|
-
|
3013
|
-
|
3014
|
-
|
3015
|
-
|
3016
|
-
|
3017
|
-
|
3018
|
-
|
3019
|
-
|
3020
|
-
|
3021
|
-
|
3022
|
-
|
3023
|
-
|
3024
|
-
|
3025
|
-
|
3026
|
-
|
3027
|
-
|
3028
|
-
|
3029
|
-
|
3030
|
-
|
3031
|
-
|
3032
|
-
|
3033
|
-
|
3034
|
-
|
3035
|
-
|
3036
|
-
|
3037
|
-
|
3038
|
-
|
3039
|
-
|
3040
|
-
|
3041
|
-
|
3042
|
-
|
3043
|
-
|
3044
|
-
|
3045
|
-
|
3046
|
-
|
3047
|
-
|
3048
|
-
|
3049
|
-
<xref target='S30'>Bibliography Subsection</xref>
|
3050
|
-
</p>
|
3051
|
-
</foreword>
|
3052
|
-
<introduction id='intro' displayorder='2'>
|
3053
|
-
<figure id='N1'>
|
3054
|
-
<name>Figure 1 — Split-it-right sample divider</name>
|
3055
|
-
<image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
|
3056
|
-
</figure>
|
3057
|
-
<figure id='N2' number='A'>
|
3058
|
-
<name>Figure A — Split-it-right sample divider</name>
|
3059
|
-
<image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
|
3060
|
-
</figure>
|
3061
|
-
<figure id='N3'>
|
3062
|
-
<name>Figure B — Split-it-right sample divider</name>
|
3063
|
-
<image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
|
3064
|
-
</figure>
|
3065
|
-
<figure id='N4' number='7'>
|
3066
|
-
<name>Figure 7 — Split-it-right sample divider</name>
|
3067
|
-
<image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
|
3068
|
-
</figure>
|
3069
|
-
<figure id='N5'>
|
3070
|
-
<name>Figure 8 — Split-it-right sample divider</name>
|
3071
|
-
<image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
|
3072
|
-
</figure>
|
3073
|
-
<figure id='N6' subsequence='B'>
|
3074
|
-
<name>Figure 9a — Split-it-right sample divider</name>
|
3075
|
-
<image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
|
3076
|
-
</figure>
|
3077
|
-
<figure id='N7' subsequence='B' number='c'>
|
3078
|
-
<name>Figure 9c — Split-it-right sample divider</name>
|
3079
|
-
<image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
|
3080
|
-
</figure>
|
3081
|
-
<figure id='N8' subsequence='B'>
|
3082
|
-
<name>Figure 9d — Split-it-right sample divider</name>
|
3083
|
-
<image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
|
3084
|
-
</figure>
|
3085
|
-
<figure id='N9' subsequence='C' number='20f'>
|
3086
|
-
<name>Figure 20f — Split-it-right sample divider</name>
|
3087
|
-
<image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
|
3088
|
-
</figure>
|
3089
|
-
<figure id='N10' subsequence='C'>
|
3090
|
-
<name>Figure 20g — Split-it-right sample divider</name>
|
3091
|
-
<image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
|
3092
|
-
</figure>
|
3093
|
-
<figure id='N11' number='A.1'>
|
3094
|
-
<name>Figure A.1 — Split-it-right sample divider</name>
|
3095
|
-
<image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
|
3096
|
-
</figure>
|
3097
|
-
<figure id='N12'>
|
3098
|
-
<name>Figure A.2 — Split-it-right sample divider</name>
|
3099
|
-
<image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
|
3100
|
-
</figure>
|
3101
|
-
<figure id='N13' number='100'>
|
3102
|
-
<name>Figure 100 — Split-it-right sample divider</name>
|
3103
|
-
<image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
|
3104
|
-
</figure>
|
3105
|
-
</introduction>
|
3106
|
-
</preface>
|
3107
|
-
<sections>
|
3108
|
-
<clause id='S1' number='1bis' type='scope' inline-header='false' obligation='normative' displayorder='3'>
|
3109
|
-
<title depth='1'>
|
3110
|
-
1bis.
|
3111
|
-
<tab/>
|
3112
|
-
Scope
|
3113
|
-
</title>
|
3114
|
-
<p id='_'>Text</p>
|
3115
|
-
</clause>
|
3116
|
-
<terms id='S3' number='3bis' obligation='normative' displayorder='5'>
|
3117
|
-
<title depth='1'>
|
3118
|
-
3bis.
|
3119
|
-
<tab/>
|
3120
|
-
Terms and definitions
|
3121
|
-
</title>
|
3122
|
-
<p id='_'>For the purposes of this document, the following terms and definitions apply.</p>
|
3123
|
-
<term id='S4' number='4bis'>
|
3124
|
-
<name>3bis.4bis.</name>
|
3125
|
-
<preferred>Term1</preferred>
|
3126
|
-
</term>
|
3127
|
-
</terms>
|
3128
|
-
<definitions id='S12' number='12bis' type='abbreviated_terms' obligation='normative' displayorder='6'>
|
3129
|
-
<title depth='1'>
|
3130
|
-
12bis.
|
3131
|
-
<tab/>
|
3132
|
-
Abbreviated terms
|
3133
|
-
</title>
|
3134
|
-
</definitions>
|
3135
|
-
<clause id='S13' number='13bis' inline-header='false' obligation='normative' displayorder='7'>
|
3136
|
-
<title depth='1'>
|
3137
|
-
13bis.
|
3138
|
-
<tab/>
|
3139
|
-
Clause 4
|
3140
|
-
</title>
|
3141
|
-
<clause id='S14' number='14bis' inline-header='false' obligation='normative'>
|
3142
|
-
<title depth='2'>
|
3143
|
-
13bis.14bis.
|
3144
|
-
<tab/>
|
3145
|
-
Introduction
|
3146
|
-
</title>
|
3147
|
-
</clause>
|
3148
|
-
<clause id='S15' inline-header='false' obligation='normative'>
|
3149
|
-
<title depth='2'>
|
3150
|
-
13bis.14bit.
|
3151
|
-
<tab/>
|
3152
|
-
Clause A
|
3153
|
-
</title>
|
3154
|
-
</clause>
|
3155
|
-
<clause id='S16' inline-header='false' obligation='normative'>
|
3156
|
-
<title depth='2'>
|
3157
|
-
13bis.14biu.
|
3158
|
-
<tab/>
|
3159
|
-
Clause B
|
3160
|
-
</title>
|
3161
|
-
</clause>
|
3162
|
-
<clause id='S17' number='0' inline-header='false' obligation='normative'>
|
3163
|
-
<title depth='2'>
|
3164
|
-
13bis.0.
|
3165
|
-
<tab/>
|
3166
|
-
Clause C
|
3167
|
-
</title>
|
3168
|
-
</clause>
|
3169
|
-
<clause id='S18' inline-header='false' obligation='normative'>
|
3170
|
-
<title depth='2'>
|
3171
|
-
13bis.1.
|
3172
|
-
<tab/>
|
3173
|
-
Clause D
|
3174
|
-
</title>
|
3175
|
-
</clause>
|
3176
|
-
<clause id='S19' inline-header='false' obligation='normative'>
|
3177
|
-
<title depth='2'>
|
3178
|
-
13bis.2.
|
3179
|
-
<tab/>
|
3180
|
-
Clause E
|
3181
|
-
</title>
|
3182
|
-
</clause>
|
3183
|
-
<clause id='S20' number='a' inline-header='false' obligation='normative'>
|
3184
|
-
<title depth='2'>
|
3185
|
-
13bis.a.
|
3186
|
-
<tab/>
|
3187
|
-
Clause F
|
3188
|
-
</title>
|
3189
|
-
</clause>
|
3190
|
-
<clause id='S21' inline-header='false' obligation='normative'>
|
3191
|
-
<title depth='2'>
|
3192
|
-
13bis.b.
|
3193
|
-
<tab/>
|
3194
|
-
Clause G
|
3195
|
-
</title>
|
3196
|
-
</clause>
|
3197
|
-
<clause id='S22' number='B' inline-header='false' obligation='normative'>
|
3198
|
-
<title depth='2'>
|
3199
|
-
13bis.B.
|
3200
|
-
<tab/>
|
3201
|
-
Clause H
|
3202
|
-
</title>
|
3203
|
-
</clause>
|
3204
|
-
<clause id='S23' inline-header='false' obligation='normative'>
|
3205
|
-
<title depth='2'>
|
3206
|
-
13bis.C.
|
3207
|
-
<tab/>
|
3208
|
-
Clause I
|
3209
|
-
</title>
|
3210
|
-
</clause>
|
3211
|
-
</clause>
|
3212
|
-
<clause id='S24' number='16bis' inline-header='false' obligation='normative' displayorder='8'>
|
3213
|
-
<title depth='1'>
|
3214
|
-
16bis.
|
3215
|
-
<tab/>
|
3216
|
-
Terms and Definitions
|
3217
|
-
</title>
|
3218
|
-
</clause>
|
3219
|
-
</sections>
|
3220
|
-
<annex id='S25' obligation='normative' displayorder='9'>
|
3221
|
-
<title>
|
3222
|
-
<strong>Annex A</strong>
|
3223
|
-
<br/>
|
3224
|
-
(normative)
|
3225
|
-
<br/>
|
3226
|
-
<br/>
|
3227
|
-
<strong>First Annex</strong>
|
3228
|
-
</title>
|
3229
|
-
</annex>
|
3230
|
-
<annex id='S26' number='17bis' inline-header='false' obligation='normative' displayorder='10'>
|
3231
|
-
<title>
|
3232
|
-
<strong>Annex 17bis</strong>
|
3233
|
-
<br/>
|
3234
|
-
(normative)
|
3235
|
-
<br/>
|
3236
|
-
<br/>
|
3237
|
-
<strong>Annex</strong>
|
3238
|
-
</title>
|
3239
|
-
<clause id='S27' number='18bis' inline-header='false' obligation='normative'>
|
3240
|
-
<title depth='2'>
|
3241
|
-
17bis.18bis.
|
3242
|
-
<tab/>
|
3243
|
-
Annex A.1
|
3244
|
-
</title>
|
3245
|
-
</clause>
|
3246
|
-
</annex>
|
3247
|
-
<annex id='S28' inline-header='false' obligation='normative' displayorder='11'>
|
3248
|
-
<title>
|
3249
|
-
<strong>Annex 17bit</strong>
|
3250
|
-
<br/>
|
3251
|
-
(normative)
|
3252
|
-
<br/>
|
3253
|
-
<br/>
|
3254
|
-
<strong>Another Annex</strong>
|
3255
|
-
</title>
|
3256
|
-
</annex>
|
3257
|
-
<bibliography>
|
3258
|
-
<references id='S2' number='2bis' normative='true' obligation='informative' displayorder='4'>
|
3259
|
-
<title depth='1'>
|
3260
|
-
2bis.
|
3261
|
-
<tab/>
|
3262
|
-
Normative references
|
3263
|
-
</title>
|
3264
|
-
<p id='_'>There are no normative references in this document.</p>
|
3265
|
-
</references>
|
3266
|
-
<clause id='S29' number='19bis' obligation='informative' displayorder='12'>
|
3267
|
-
<title depth='1'>Bibliography</title>
|
3268
|
-
<references id='S30' number='20bis' normative='false' obligation='informative'>
|
3269
|
-
<title depth='2'>Bibliography Subsection</title>
|
3270
|
-
</references>
|
3271
|
-
</clause>
|
3272
|
-
</bibliography>
|
3273
|
-
</iso-standard>
|
2852
|
+
<foreword id='fwd' displayorder='1'>
|
2853
|
+
<p>
|
2854
|
+
<xref target='N1'>Figure 1</xref>
|
2855
|
+
<xref target='N2'>Figure A</xref>
|
2856
|
+
<xref target='N3'>Figure B</xref>
|
2857
|
+
<xref target='N4'>Figure 7</xref>
|
2858
|
+
<xref target='N5'>Figure 8</xref>
|
2859
|
+
<xref target='N6'>Figure 9a</xref>
|
2860
|
+
<xref target='N7'>Figure 9c</xref>
|
2861
|
+
<xref target='N8'>Figure 9d</xref>
|
2862
|
+
<xref target='N9'>Figure 20f</xref>
|
2863
|
+
<xref target='N10'>Figure 20g</xref>
|
2864
|
+
<xref target='N11'>Figure A.1</xref>
|
2865
|
+
<xref target='N12'>Figure A.2</xref>
|
2866
|
+
<xref target='N13'>Figure 100</xref>
|
2867
|
+
</p>
|
2868
|
+
<p>
|
2869
|
+
<xref target='S1'>Clause 1bis</xref>
|
2870
|
+
<xref target='S2'>Clause 2bis</xref>
|
2871
|
+
<xref target='S3'>Clause 3bis</xref>
|
2872
|
+
<xref target='S4'>Clause 3bis.4bis</xref>
|
2873
|
+
<xref target='S12'>Clause 12bis</xref>
|
2874
|
+
<xref target='S13'>Clause 13bis</xref>
|
2875
|
+
<xref target='S14'>Clause 13bis.14bis</xref>
|
2876
|
+
<xref target='S15'>Clause 13bis.14bit</xref>
|
2877
|
+
<xref target='S16'>Clause 13bis.14biu</xref>
|
2878
|
+
<xref target='S17'>Clause 13bis.0</xref>
|
2879
|
+
<xref target='S18'>Clause 13bis.1</xref>
|
2880
|
+
<xref target='S19'>Clause 13bis.2</xref>
|
2881
|
+
<xref target='S20'>Clause 13bis.a</xref>
|
2882
|
+
<xref target='S21'>Clause 13bis.b</xref>
|
2883
|
+
<xref target='S22'>Clause 13bis.B</xref>
|
2884
|
+
<xref target='S23'>Clause 13bis.C</xref>
|
2885
|
+
<xref target='S24'>Clause 16bis</xref>
|
2886
|
+
<xref target='S25'>Annex A</xref>
|
2887
|
+
<xref target='S26'>Annex 17bis</xref>
|
2888
|
+
<xref target='S27'>Annex 17bis.18bis</xref>
|
2889
|
+
<xref target='S28'>Annex 17bit</xref>
|
2890
|
+
<xref target='S29'>Bibliography</xref>
|
2891
|
+
<xref target='S30'>Bibliography Subsection</xref>
|
2892
|
+
</p>
|
2893
|
+
</foreword>
|
3274
2894
|
OUTPUT
|
3275
|
-
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
|
3276
|
-
.convert("test", input, true))
|
2895
|
+
expect(xmlpp(Nokogiri::XML(IsoDoc::PresentationXMLConvert.new({})
|
2896
|
+
.convert("test", input, true))
|
2897
|
+
.at("//xmlns:foreword").to_xml))
|
2898
|
+
.to be_equivalent_to xmlpp(output)
|
3277
2899
|
end
|
3278
2900
|
|
3279
2901
|
it "realises roman counter for xrefs" do
|