metanorma-iso 1.8.4 → 1.9.0.1

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 (39) 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/iso/cleanup.rb +0 -1
  5. data/lib/asciidoctor/iso/isodoc.rng +50 -8
  6. data/lib/asciidoctor/iso/isostandard.rng +7 -3
  7. data/lib/asciidoctor/iso/section.rb +3 -0
  8. data/lib/asciidoctor/iso/validate.rb +4 -17
  9. data/lib/asciidoctor/iso/validate_section.rb +50 -34
  10. data/lib/asciidoctor/iso/validate_style.rb +3 -3
  11. data/lib/isodoc/iso/base_convert.rb +41 -16
  12. data/lib/isodoc/iso/html/isodoc.css +475 -20
  13. data/lib/isodoc/iso/html/isodoc.scss +456 -23
  14. data/lib/isodoc/iso/html/wordstyle.css +202 -31
  15. data/lib/isodoc/iso/html/wordstyle.scss +194 -32
  16. data/lib/isodoc/iso/iso.amendment.xsl +480 -388
  17. data/lib/isodoc/iso/iso.international-standard.xsl +480 -388
  18. data/lib/isodoc/iso/isosts_convert.rb +12 -13
  19. data/lib/isodoc/iso/metadata.rb +2 -2
  20. data/lib/isodoc/iso/presentation_xml_convert.rb +62 -9
  21. data/lib/isodoc/iso/sts_convert.rb +4 -5
  22. data/lib/isodoc/iso/word_convert.rb +153 -39
  23. data/lib/isodoc/iso/xref.rb +17 -1
  24. data/lib/metanorma/iso/version.rb +1 -1
  25. data/metanorma-iso.gemspec +4 -4
  26. data/spec/asciidoctor/section_spec.rb +128 -7
  27. data/spec/asciidoctor/validate_spec.rb +15 -15
  28. data/spec/isodoc/amd_spec.rb +193 -201
  29. data/spec/isodoc/blocks_spec.rb +100 -88
  30. data/spec/isodoc/i18n_spec.rb +36 -36
  31. data/spec/isodoc/inline_spec.rb +472 -2
  32. data/spec/isodoc/iso_spec.rb +86 -138
  33. data/spec/isodoc/postproc_spec.rb +19 -10
  34. data/spec/isodoc/ref_spec.rb +6 -6
  35. data/spec/isodoc/section_spec.rb +394 -276
  36. data/spec/isodoc/table_spec.rb +166 -231
  37. data/spec/isodoc/terms_spec.rb +11 -8
  38. data/spec/isodoc/xref_spec.rb +147 -118
  39. metadata +8 -8
@@ -1,8 +1,8 @@
1
1
  require "spec_helper"
2
2
 
3
3
  RSpec.describe IsoDoc do
4
- it "renders figures (HTML)" do
5
- output = IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true)
4
+ it "renders figures" do
5
+ input = <<~INPUT
6
6
  <iso-standard xmlns='http://riboseinc.com/isoxml'>
7
7
  <preface>
8
8
  <foreword id='fwd'>
@@ -57,7 +57,7 @@ RSpec.describe IsoDoc do
57
57
  </annex>
58
58
  </iso-standard>
59
59
  INPUT
60
- expect(xmlpp(output)).to be_equivalent_to xmlpp(<<~"OUTPUT")
60
+ html = <<~OUTPUT
61
61
  #{HTML_HDR}
62
62
  <br/>
63
63
  <div id="fwd">
@@ -113,6 +113,85 @@ RSpec.describe IsoDoc do
113
113
  </body>
114
114
  </html>
115
115
  OUTPUT
116
+ word = <<~OUTPUT
117
+ <body lang='EN-US' link='blue' vlink='#954F72'>
118
+ <div class='WordSection1'>
119
+ <p>&#xA0;</p>
120
+ </div>
121
+ <p>
122
+ <br clear='all' class='section'/>
123
+ </p>
124
+ <div class='WordSection2'>
125
+ <p>
126
+ <br clear='all' style='mso-special-character:line-break;page-break-before:always'/>
127
+ </p>
128
+ <div id='fwd'>
129
+ <h1 class='ForewordTitle'>Foreword</h1>
130
+ <p class='ForewordText'> </p>
131
+ </div>
132
+ <p>&#xA0;</p>
133
+ </div>
134
+ <p>
135
+ <br clear='all' class='section'/>
136
+ </p>
137
+ <div class='WordSection3'>
138
+ <p class='zzSTDTitle1'/>
139
+ <div id='scope'>
140
+ <h1>Scope</h1>
141
+ <div id='N' class='figure'>
142
+ <img src='rice_images/rice_image1.png'/>
143
+ <p class='FigureTitle' style='text-align:center;'>Figure 1&#xA0;&#x2014; Split-it-right sample divider</p>
144
+ </div>
145
+ <p> </p>
146
+ </div>
147
+ <div id='terms'>
148
+ <h1/>
149
+ </div>
150
+ <div id='widgets'>
151
+ <h1>Widgets</h1>
152
+ <div id='widgets1'>
153
+ <div id='note1' class='figure'>
154
+ <img src='rice_images/rice_image1.png'/>
155
+ <p class='FigureTitle' style='text-align:center;'>Figure 2&#xA0;&#x2014; Split-it-right sample divider</p>
156
+ </div>
157
+ <div id='note2' class='figure'>
158
+ <img src='rice_images/rice_image1.png'/>
159
+ <p class='FigureTitle' style='text-align:center;'>Figure 3&#xA0;&#x2014; Split-it-right sample divider</p>
160
+ </div>
161
+ <p> </p>
162
+ </div>
163
+ </div>
164
+ <p>
165
+ <br clear='all' style='mso-special-character:line-break;page-break-before:always'/>
166
+ </p>
167
+ <div id='annex1' class='Section3'>
168
+ <div id='annex1a'>
169
+ <div id='AN' class='figure'>
170
+ <img src='rice_images/rice_image1.png'/>
171
+ <p class='AnnexFigureTitle' style='text-align:center;'>Figure A.1&#xA0;&#x2014; Split-it-right sample divider</p>
172
+ </div>
173
+ </div>
174
+ <div id='annex1b'>
175
+ <div id='Anote1' class='figure'>
176
+ <img src='rice_images/rice_image1.png'/>
177
+ <p class='AnnexFigureTitle' style='text-align:center;'>Figure A.2&#xA0;&#x2014; Split-it-right sample divider</p>
178
+ </div>
179
+ <div id='Anote2' class='figure'>
180
+ <img src='rice_images/rice_image1.png'/>
181
+ <p class='AnnexFigureTitle' style='text-align:center;'>Figure A.3&#xA0;&#x2014; Split-it-right sample divider</p>
182
+ </div>
183
+ </div>
184
+ </div>
185
+ </div>
186
+ <br clear='all' style='page-break-before:left;mso-break-type:section-break'/>
187
+ <div class='colophon'/>
188
+ </body>
189
+ OUTPUT
190
+ output = IsoDoc::Iso::HtmlConvert.new({}).convert("test", input, true)
191
+ expect(xmlpp(output)).to be_equivalent_to xmlpp(html)
192
+ output = IsoDoc::Iso::WordConvert.new({}).convert("test", input, true)
193
+ expect(xmlpp(Nokogiri::XML(output).at("//body").to_xml))
194
+ .to be_equivalent_to xmlpp(word)
116
195
  end
117
196
 
118
197
  it "renders subfigures (HTML)" do
@@ -250,8 +329,8 @@ RSpec.describe IsoDoc do
250
329
  OUTPUT
251
330
  end
252
331
 
253
- it "processes formulae (Presentation XML)" do
254
- output = IsoDoc::Iso::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true)
332
+ it "processes formulae" do
333
+ input = <<~INPUT
255
334
  <iso-standard xmlns="http://riboseinc.com/isoxml">
256
335
  <preface>
257
336
  <foreword>
@@ -282,11 +361,11 @@ RSpec.describe IsoDoc do
282
361
  </preface>
283
362
  </iso-standard>
284
363
  INPUT
285
- expect(xmlpp(output)).to be_equivalent_to xmlpp(<<~"OUTPUT")
364
+ presxml = <<~OUTPUT
286
365
  <?xml version='1.0'?>
287
366
  <iso-standard type="presentation" xmlns="http://riboseinc.com/isoxml">
288
367
  <preface>
289
- <foreword>
368
+ <foreword displayorder="1">
290
369
  <formula id="_be9158af-7e93-4ee2-90c5-26d31c181934" unnumbered="true">
291
370
  <stem type="AsciiMath">r = 1 %</stem>
292
371
  <dl id="_e4fe94fe-1cde-49d9-b1ad-743293b7e21d">
@@ -319,45 +398,8 @@ RSpec.describe IsoDoc do
319
398
  </preface>
320
399
  </iso-standard>
321
400
  OUTPUT
322
- end
323
401
 
324
- it "processes formulae (HTML)" do
325
- output = IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true)
326
- <iso-standard xmlns="http://riboseinc.com/isoxml">
327
- <preface>
328
- <foreword>
329
- <formula id="_be9158af-7e93-4ee2-90c5-26d31c181934" unnumbered="true">
330
- <stem type="AsciiMath">r = 1 %</stem>
331
- <dl id="_e4fe94fe-1cde-49d9-b1ad-743293b7e21d">
332
- <dt>
333
- <stem type="AsciiMath">r</stem>
334
- </dt>
335
- <dd>
336
- <p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the repeatability limit.</p>
337
- </dd>
338
- <dt>
339
- <stem type="AsciiMath">s_1</stem>
340
- </dt>
341
- <dd>
342
- <p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the other repeatability limit.</p>
343
- </dd>
344
- </dl>
345
- <note id="_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0">
346
- <p id="_511aaa98-4116-42af-8e5b-c87cdf5bfdc8">[durationUnits] is essentially a duration statement without the &quot;P&quot;
347
- prefix. &quot;P&quot; is unnecessary because between &quot;G&quot; and &quot;U&quot; duration is
348
- always expressed.
349
- </p>
350
- </note>
351
- </formula>
352
- <formula id="_be9158af-7e93-4ee2-90c5-26d31c181935">
353
- <name>1</name>
354
- <stem type="AsciiMath">r = 1 %</stem>
355
- </formula>
356
- </foreword>
357
- </preface>
358
- </iso-standard>
359
- INPUT
360
- expect(xmlpp(output)).to be_equivalent_to xmlpp(<<~"OUTPUT")
402
+ html = <<~OUTPUT
361
403
  #{HTML_HDR}
362
404
  <br/>
363
405
  <div>
@@ -385,6 +427,7 @@ RSpec.describe IsoDoc do
385
427
  </dl>
386
428
  <div id='_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0' class='Note'>
387
429
  <p>
430
+ <span class='note_label'>NOTE</span>
388
431
  &#160; [durationUnits] is essentially a duration statement without
389
432
  the "P" prefix. "P" is unnecessary because between "G" and "U"
390
433
  duration is always expressed.
@@ -405,47 +448,8 @@ RSpec.describe IsoDoc do
405
448
  </body>
406
449
  </html>
407
450
  OUTPUT
408
- end
409
451
 
410
- it "processes formulae (Word)" do
411
- output = IsoDoc::Iso::WordConvert.new({}).convert("test", <<~"INPUT", true)
412
- <iso-standard xmlns="http://riboseinc.com/isoxml">
413
- <preface>
414
- <foreword>
415
- <formula id="_be9158af-7e93-4ee2-90c5-26d31c181934" unnumbered="true">
416
- <stem type="AsciiMath">r = 1 %</stem>
417
- <dl id="_e4fe94fe-1cde-49d9-b1ad-743293b7e21d">
418
- <dt>
419
- <stem type="AsciiMath">r</stem>
420
- </dt>
421
- <dd>
422
- <p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the repeatability limit.</p>
423
- </dd>
424
- <dt>
425
- <stem type="AsciiMath">s_1</stem>
426
- </dt>
427
- <dd>
428
- <p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the other repeatability limit.</p>
429
- </dd>
430
- </dl>
431
- <note id="_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0">
432
- <p id="_511aaa98-4116-42af-8e5b-c87cdf5bfdc8">[durationUnits] is essentially a duration statement without the &quot;P&quot;
433
- prefix. &quot;P&quot; is unnecessary because between &quot;G&quot; and &quot;U&quot; duration is
434
- always expressed.
435
- </p>
436
- </note>
437
- </formula>
438
- <formula id="_be9158af-7e93-4ee2-90c5-26d31c181935">
439
- <name>1</name>
440
- <stem type="AsciiMath">r = 1 %</stem>
441
- </formula>
442
- </foreword>
443
- </preface>
444
- </iso-standard>
445
- INPUT
446
- expect(xmlpp(output
447
- .sub(%r{^.*<div>\s*<h1 class="ForewordTitle">}m, '<div><h1 class="ForewordTitle">')
448
- .sub(%r{<p>&#160;</p>\s*</div>.*$}m, ""))).to be_equivalent_to xmlpp(<<~"OUTPUT")
452
+ word = <<~OUTPUT
449
453
  <div>
450
454
  <h1 class='ForewordTitle'>Foreword</h1>
451
455
  <div id='_be9158af-7e93-4ee2-90c5-26d31c181934'><div class='formula'>
@@ -463,7 +467,7 @@ RSpec.describe IsoDoc do
463
467
  </p>
464
468
  </td>
465
469
  <td valign="top">
466
- <p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the repeatability limit.</p>
470
+ <p class="ForewordText" id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the repeatability limit.</p>
467
471
  </td>
468
472
  </tr>
469
473
  <tr>
@@ -473,13 +477,13 @@ RSpec.describe IsoDoc do
473
477
  </p>
474
478
  </td>
475
479
  <td valign="top">
476
- <p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the other repeatability limit.</p>
480
+ <p class="ForewordText" id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the other repeatability limit.</p>
477
481
  </td>
478
482
  </tr>
479
483
  </table>
480
484
  <div id='_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0' class='Note'>
481
485
  <p class='Note'>
482
- <span class='note_label'/>
486
+ <span class='note_label'>NOTE</span>
483
487
  <span style='mso-tab-count:1'>&#160; </span>
484
488
  [durationUnits] is essentially a duration statement without the "P"
485
489
  prefix. "P" is unnecessary because between "G" and "U" duration is
@@ -497,6 +501,14 @@ RSpec.describe IsoDoc do
497
501
  </div>
498
502
  </div>
499
503
  OUTPUT
504
+ output = IsoDoc::Iso::PresentationXMLConvert.new({}).convert("test", input, true)
505
+ expect(xmlpp(output)).to be_equivalent_to xmlpp(presxml)
506
+ output = IsoDoc::Iso::HtmlConvert.new({}).convert("test", presxml, true)
507
+ expect(xmlpp(output)).to be_equivalent_to xmlpp(html)
508
+ output = IsoDoc::Iso::WordConvert.new({}).convert("test", presxml, true)
509
+ expect(xmlpp(output
510
+ .sub(%r{^.*<div>\s*<h1 class="ForewordTitle">}m, '<div><h1 class="ForewordTitle">')
511
+ .sub(%r{<p>&#160;</p>\s*</div>.*$}m, ""))).to be_equivalent_to xmlpp(word)
500
512
  end
501
513
 
502
514
  it "processes formulae with single definition list entry" do
@@ -88,11 +88,11 @@ RSpec.describe IsoDoc do
88
88
  <language current="true">en</language>
89
89
  </bibdata>
90
90
  <preface>
91
- <foreword obligation="informative">
91
+ <foreword obligation="informative" displayorder='1'>
92
92
  <title>Foreword</title>
93
93
  <p id="A">This is a preamble</p>
94
94
  </foreword>
95
- <introduction id="B" obligation="informative">
95
+ <introduction id="B" obligation="informative" displayorder='2'>
96
96
  <title depth="1">0<tab/>Introduction</title>
97
97
  <clause id="C" inline-header="false" obligation="informative">
98
98
  <title depth="2">0.1<tab/>Introduction Subsection</title>
@@ -101,11 +101,11 @@ RSpec.describe IsoDoc do
101
101
  </introduction>
102
102
  </preface>
103
103
  <sections>
104
- <clause id="D" obligation="normative" type="scope">
104
+ <clause id="D" obligation="normative" type="scope" displayorder='3'>
105
105
  <title depth="1">1<tab/>Scope</title>
106
106
  <p id="E">Text</p>
107
107
  </clause>
108
- <clause id="H" obligation="normative">
108
+ <clause id="H" obligation="normative" displayorder='5'>
109
109
  <title depth="1">3<tab/>Terms, definitions, symbols and abbreviated terms</title>
110
110
  <terms id="I" obligation="normative">
111
111
  <title depth="2">3.1<tab/>Normal Terms</title>
@@ -122,14 +122,14 @@ RSpec.describe IsoDoc do
122
122
  </dl>
123
123
  </definitions>
124
124
  </clause>
125
- <definitions id="L">
125
+ <definitions id="L" displayorder='6'>
126
126
  <title>4</title>
127
127
  <dl>
128
128
  <dt>Symbol</dt>
129
129
  <dd>Definition</dd>
130
130
  </dl>
131
131
  </definitions>
132
- <clause id="M" inline-header="false" obligation="normative">
132
+ <clause id="M" inline-header="false" obligation="normative" displayorder='7'>
133
133
  <title depth="1">5<tab/>Clause 4</title>
134
134
  <clause id="N" inline-header="false" obligation="normative">
135
135
  <title depth="2">5.1<tab/>Introduction</title>
@@ -139,7 +139,7 @@ RSpec.describe IsoDoc do
139
139
  </clause>
140
140
  </clause>
141
141
  </sections>
142
- <annex id="P" inline-header="false" obligation="normative">
142
+ <annex id="P" inline-header="false" obligation="normative" displayorder='8'>
143
143
  <title>
144
144
  <strong>Annex A</strong>
145
145
  <br/>(normative)
@@ -157,10 +157,10 @@ RSpec.describe IsoDoc do
157
157
  </appendix>
158
158
  </annex>
159
159
  <bibliography>
160
- <references id="R" normative="true" obligation="informative">
160
+ <references id="R" normative="true" obligation="informative" displayorder='4'>
161
161
  <title depth="1">2<tab/>Normative References</title>
162
162
  </references>
163
- <clause id="S" obligation="informative">
163
+ <clause id="S" obligation="informative" displayorder='9'>
164
164
  <title depth="1">Bibliography</title>
165
165
  <references id="T" normative="false" obligation="informative">
166
166
  <title depth="2">Bibliography Subsection</title>
@@ -341,11 +341,11 @@ RSpec.describe IsoDoc do
341
341
  <language current="true">tlh</language>
342
342
  </bibdata>
343
343
  <preface>
344
- <foreword obligation="informative">
344
+ <foreword obligation="informative" displayorder='1'>
345
345
  <title>Foreword</title>
346
346
  <p id="A">This is a preamble</p>
347
347
  </foreword>
348
- <introduction id="B" obligation="informative">
348
+ <introduction id="B" obligation="informative" displayorder='2'>
349
349
  <title depth="1">
350
350
  0
351
351
  <tab/>
@@ -358,11 +358,11 @@ RSpec.describe IsoDoc do
358
358
  </introduction>
359
359
  </preface>
360
360
  <sections>
361
- <clause id="D" obligation="normative" type="scope">
361
+ <clause id="D" obligation="normative" type="scope" displayorder='3'>
362
362
  <title depth="1">1<tab/>Scope</title>
363
363
  <p id="E">Text</p>
364
364
  </clause>
365
- <clause id="H" obligation="normative">
365
+ <clause id="H" obligation="normative" displayorder='5'>
366
366
  <title depth="1">3<tab/>Terms, definitions, symbols and abbreviated terms</title>
367
367
  <terms id="I" obligation="normative">
368
368
  <title depth="2">3.1<tab/>Normal Terms</title>
@@ -379,14 +379,14 @@ RSpec.describe IsoDoc do
379
379
  </dl>
380
380
  </definitions>
381
381
  </clause>
382
- <definitions id="L">
382
+ <definitions id="L" displayorder='6'>
383
383
  <title>4</title>
384
384
  <dl>
385
385
  <dt>Symbol</dt>
386
386
  <dd>Definition</dd>
387
387
  </dl>
388
388
  </definitions>
389
- <clause id="M" inline-header="false" obligation="normative">
389
+ <clause id="M" inline-header="false" obligation="normative" displayorder='7'>
390
390
  <title depth="1">5<tab/>Clause 4</title>
391
391
  <clause id="N" inline-header="false" obligation="normative">
392
392
  <title depth="2">5.1<tab/>Introduction</title>
@@ -396,7 +396,7 @@ RSpec.describe IsoDoc do
396
396
  </clause>
397
397
  </clause>
398
398
  </sections>
399
- <annex id="P" inline-header="false" obligation="normative">
399
+ <annex id="P" inline-header="false" obligation="normative" displayorder='8'>
400
400
  <title>
401
401
  <strong>Annex A</strong>
402
402
  <br/>(normative)
@@ -414,10 +414,10 @@ RSpec.describe IsoDoc do
414
414
  </appendix>
415
415
  </annex>
416
416
  <bibliography>
417
- <references id="R" normative="true" obligation="informative">
417
+ <references id="R" normative="true" obligation="informative" displayorder='4'>
418
418
  <title depth="1">2<tab/>Normative References</title>
419
419
  </references>
420
- <clause id="S" obligation="informative">
420
+ <clause id="S" obligation="informative" displayorder='9'>
421
421
  <title depth="1">Bibliography</title>
422
422
  <references id="T" normative="false" obligation="informative">
423
423
  <title depth="2">Bibliography Subsection</title>
@@ -515,11 +515,11 @@ RSpec.describe IsoDoc do
515
515
  <language current="true">fr</language>
516
516
  </bibdata>
517
517
  <preface>
518
- <foreword obligation="informative">
518
+ <foreword obligation="informative" displayorder='1'>
519
519
  <title>Foreword</title>
520
520
  <p id="A">This is a preamble</p>
521
521
  </foreword>
522
- <introduction id="B" obligation="informative">
522
+ <introduction id="B" obligation="informative" displayorder='2'>
523
523
  <title depth="1">0<tab/>Introduction</title>
524
524
  <clause id="C" inline-header="false" obligation="informative">
525
525
  <title depth="2">0.1<tab/>Introduction Subsection</title>
@@ -528,11 +528,11 @@ RSpec.describe IsoDoc do
528
528
  </introduction>
529
529
  </preface>
530
530
  <sections>
531
- <clause id="D" obligation="normative" type="scope">
531
+ <clause id="D" obligation="normative" type="scope" displayorder='3'>
532
532
  <title depth="1">1<tab/>Scope</title>
533
533
  <p id="E">Text</p>
534
534
  </clause>
535
- <clause id="H" obligation="normative">
535
+ <clause id="H" obligation="normative" displayorder='5'>
536
536
  <title depth="1">3<tab/>Terms, definitions, symbols and abbreviated terms</title>
537
537
  <terms id="I" obligation="normative">
538
538
  <title depth="2">3.1<tab/>Normal Terms</title>
@@ -549,14 +549,14 @@ RSpec.describe IsoDoc do
549
549
  </dl>
550
550
  </definitions>
551
551
  </clause>
552
- <definitions id="L">
552
+ <definitions id="L" displayorder='6'>
553
553
  <title>4</title>
554
554
  <dl>
555
555
  <dt>Symbol</dt>
556
556
  <dd>Definition</dd>
557
557
  </dl>
558
558
  </definitions>
559
- <clause id="M" inline-header="false" obligation="normative">
559
+ <clause id="M" inline-header="false" obligation="normative" displayorder='7'>
560
560
  <title depth="1">5<tab/>Clause 4</title>
561
561
  <clause id="N" inline-header="false" obligation="normative">
562
562
  <title depth="2">5.1<tab/>Introduction</title>
@@ -566,7 +566,7 @@ RSpec.describe IsoDoc do
566
566
  </clause>
567
567
  </clause>
568
568
  </sections>
569
- <annex id="P" inline-header="false" obligation="normative">
569
+ <annex id="P" inline-header="false" obligation="normative" displayorder='8'>
570
570
  <title>
571
571
  <strong>Annexe A</strong>
572
572
  <br/>(normative)
@@ -584,10 +584,10 @@ RSpec.describe IsoDoc do
584
584
  </appendix>
585
585
  </annex>
586
586
  <bibliography>
587
- <references id="R" normative="true" obligation="informative">
587
+ <references id="R" normative="true" obligation="informative" displayorder='4'>
588
588
  <title depth="1">2<tab/>Normative References</title>
589
589
  </references>
590
- <clause id="S" obligation="informative">
590
+ <clause id="S" obligation="informative" displayorder='9'>
591
591
  <title depth="1">Bibliography</title>
592
592
  <references id="T" normative="false" obligation="informative">
593
593
  <title depth="2">Bibliography Subsection</title>
@@ -796,11 +796,11 @@ RSpec.describe IsoDoc do
796
796
  <script current="true">Hans</script>
797
797
  </bibdata>
798
798
  <preface>
799
- <foreword obligation="informative">
799
+ <foreword obligation="informative" displayorder='1'>
800
800
  <title>Foreword</title>
801
801
  <p id="A">This is a preamble</p>
802
802
  </foreword>
803
- <introduction id="B" obligation="informative">
803
+ <introduction id="B" obligation="informative" displayorder='2'>
804
804
  <title depth="1">0
805
805
  <tab/>
806
806
  Introduction</title>
@@ -813,7 +813,7 @@ RSpec.describe IsoDoc do
813
813
  </introduction>
814
814
  </preface>
815
815
  <sections>
816
- <clause id="D" obligation="normative" type="scope">
816
+ <clause id="D" obligation="normative" type="scope" displayorder='3'>
817
817
  <title depth="1">1
818
818
  <tab/>
819
819
  Scope</title>
@@ -821,7 +821,7 @@ RSpec.describe IsoDoc do
821
821
  <eref bibitemid="ISO712" type="inline"><locality type="table"><referenceFrom>1</referenceFrom><referenceTo>1</referenceTo></locality>ISO 712、第1–1表</eref>
822
822
  </p>
823
823
  </clause>
824
- <clause id="H" obligation="normative">
824
+ <clause id="H" obligation="normative" displayorder='5'>
825
825
  <title depth="1">3
826
826
  <tab/>
827
827
  Terms, definitions, symbols and abbreviated terms</title>
@@ -842,14 +842,14 @@ RSpec.describe IsoDoc do
842
842
  </dl>
843
843
  </definitions>
844
844
  </clause>
845
- <definitions id="L">
845
+ <definitions id="L" displayorder='6'>
846
846
  <title>4</title>
847
847
  <dl>
848
848
  <dt>Symbol</dt>
849
849
  <dd>Definition</dd>
850
850
  </dl>
851
851
  </definitions>
852
- <clause id="M" inline-header="false" obligation="normative">
852
+ <clause id="M" inline-header="false" obligation="normative" displayorder='7'>
853
853
  <title depth="1">5
854
854
  <tab/>
855
855
  Clause 4</title>
@@ -865,7 +865,7 @@ RSpec.describe IsoDoc do
865
865
  </clause>
866
866
  </clause>
867
867
  </sections>
868
- <annex id="P" inline-header="false" obligation="normative">
868
+ <annex id="P" inline-header="false" obligation="normative" displayorder='8'>
869
869
  <title>
870
870
  <strong>附件A</strong>
871
871
  <br/>(规范性附录)
@@ -889,7 +889,7 @@ RSpec.describe IsoDoc do
889
889
  </appendix>
890
890
  </annex>
891
891
  <bibliography>
892
- <references id="R" normative="true" obligation="informative">
892
+ <references id="R" normative="true" obligation="informative" displayorder='4'>
893
893
  <title depth="1">2
894
894
  <tab/>
895
895
  Normative References</title>
@@ -904,7 +904,7 @@ RSpec.describe IsoDoc do
904
904
  </contributor>
905
905
  </bibitem>
906
906
  </references>
907
- <clause id="S" obligation="informative">
907
+ <clause id="S" obligation="informative" displayorder='9'>
908
908
  <title depth="1">Bibliography</title>
909
909
  <references id="T" normative="false" obligation="informative">
910
910
  <title depth="2">Bibliography Subsection</title>