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.
- checksums.yaml +4 -4
- data/.github/workflows/rake.yml +1 -1
- data/.rubocop.yml +1 -1
- data/lib/asciidoctor/iso/cleanup.rb +0 -1
- data/lib/asciidoctor/iso/isodoc.rng +50 -8
- data/lib/asciidoctor/iso/isostandard.rng +7 -3
- data/lib/asciidoctor/iso/section.rb +3 -0
- data/lib/asciidoctor/iso/validate.rb +4 -17
- data/lib/asciidoctor/iso/validate_section.rb +50 -34
- data/lib/asciidoctor/iso/validate_style.rb +3 -3
- data/lib/isodoc/iso/base_convert.rb +41 -16
- data/lib/isodoc/iso/html/isodoc.css +475 -20
- data/lib/isodoc/iso/html/isodoc.scss +456 -23
- data/lib/isodoc/iso/html/wordstyle.css +202 -31
- data/lib/isodoc/iso/html/wordstyle.scss +194 -32
- data/lib/isodoc/iso/iso.amendment.xsl +480 -388
- data/lib/isodoc/iso/iso.international-standard.xsl +480 -388
- data/lib/isodoc/iso/isosts_convert.rb +12 -13
- data/lib/isodoc/iso/metadata.rb +2 -2
- data/lib/isodoc/iso/presentation_xml_convert.rb +62 -9
- data/lib/isodoc/iso/sts_convert.rb +4 -5
- data/lib/isodoc/iso/word_convert.rb +153 -39
- data/lib/isodoc/iso/xref.rb +17 -1
- data/lib/metanorma/iso/version.rb +1 -1
- data/metanorma-iso.gemspec +4 -4
- data/spec/asciidoctor/section_spec.rb +128 -7
- data/spec/asciidoctor/validate_spec.rb +15 -15
- data/spec/isodoc/amd_spec.rb +193 -201
- data/spec/isodoc/blocks_spec.rb +100 -88
- data/spec/isodoc/i18n_spec.rb +36 -36
- data/spec/isodoc/inline_spec.rb +472 -2
- data/spec/isodoc/iso_spec.rb +86 -138
- data/spec/isodoc/postproc_spec.rb +19 -10
- data/spec/isodoc/ref_spec.rb +6 -6
- data/spec/isodoc/section_spec.rb +394 -276
- data/spec/isodoc/table_spec.rb +166 -231
- data/spec/isodoc/terms_spec.rb +11 -8
- data/spec/isodoc/xref_spec.rb +147 -118
- metadata +8 -8
    
        data/spec/isodoc/blocks_spec.rb
    CHANGED
    
    | @@ -1,8 +1,8 @@ | |
| 1 1 | 
             
            require "spec_helper"
         | 
| 2 2 |  | 
| 3 3 | 
             
            RSpec.describe IsoDoc do
         | 
| 4 | 
            -
              it "renders figures | 
| 5 | 
            -
                 | 
| 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 | 
            -
                 | 
| 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> </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> </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 — 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 — 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 — 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 — 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 — 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 — 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 | 
| 254 | 
            -
                 | 
| 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 | 
            -
                 | 
| 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 | 
            -
             | 
| 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 "P"
         | 
| 347 | 
            -
                              prefix. "P" is unnecessary because between "G" and "U" 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 | 
             
                                      [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 | 
            -
             | 
| 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 "P"
         | 
| 433 | 
            -
                              prefix. "P" is unnecessary because between "G" and "U" 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> </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 | 
            -
             | 
| 486 | 
            +
                                  <span class='note_label'>NOTE</span>
         | 
| 483 487 | 
             
                              <span style='mso-tab-count:1'>  </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> </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
         | 
    
        data/spec/isodoc/i18n_spec.rb
    CHANGED
    
    | @@ -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>
         |