isodoc 0.5.8 → 0.5.9

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 (41) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.tb.yml +20 -10
  3. data/lib/isodoc/blocks.rb +13 -13
  4. data/lib/isodoc/cleanup.rb +19 -3
  5. data/lib/isodoc/comments.rb +1 -1
  6. data/lib/isodoc/convert.rb +2 -0
  7. data/lib/isodoc/footnotes.rb +4 -2
  8. data/lib/isodoc/html.rb +28 -10
  9. data/lib/isodoc/i18n-en.yaml +9 -0
  10. data/lib/isodoc/i18n-fr.yaml +12 -3
  11. data/lib/isodoc/i18n-zh-Hans.yaml +10 -1
  12. data/lib/isodoc/i18n.rb +9 -2
  13. data/lib/isodoc/inline.rb +5 -6
  14. data/lib/isodoc/iso2wordhtml.rb +9 -6
  15. data/lib/isodoc/lists.rb +7 -5
  16. data/lib/isodoc/metadata.rb +27 -10
  17. data/lib/isodoc/references.rb +12 -6
  18. data/lib/isodoc/section.rb +17 -11
  19. data/lib/isodoc/table.rb +2 -4
  20. data/lib/isodoc/terms.rb +3 -3
  21. data/lib/isodoc/utils.rb +15 -14
  22. data/lib/isodoc/version.rb +1 -1
  23. data/lib/isodoc/wordconvert/comments.rb +1 -1
  24. data/lib/isodoc/wordconvert/wordconvertmodule.rb +51 -12
  25. data/lib/isodoc/xref_gen.rb +30 -26
  26. data/lib/isodoc/xref_sect_gen.rb +31 -13
  27. data/spec/assets/scripts.html +1 -0
  28. data/spec/isodoc/blocks_spec.rb +50 -49
  29. data/spec/isodoc/cleanup_spec.rb +6 -6
  30. data/spec/isodoc/footnotes_spec.rb +10 -2
  31. data/spec/isodoc/i18n_spec.rb +86 -54
  32. data/spec/isodoc/inline_spec.rb +22 -18
  33. data/spec/isodoc/lists_spec.rb +25 -11
  34. data/spec/isodoc/metadata_spec.rb +4 -3
  35. data/spec/isodoc/postproc_spec.rb +108 -42
  36. data/spec/isodoc/ref_spec.rb +9 -7
  37. data/spec/isodoc/section_spec.rb +162 -141
  38. data/spec/isodoc/table_spec.rb +18 -16
  39. data/spec/isodoc/terms_spec.rb +9 -9
  40. data/spec/isodoc/xref_spec.rb +153 -122
  41. metadata +3 -2
@@ -4,6 +4,7 @@ RSpec.describe IsoDoc do
4
4
  it "processes IsoXML tables" do
5
5
  expect(IsoDoc::Convert.new({}).convert_file(<<~"INPUT", "test", true)).to be_equivalent_to <<~"OUTPUT"
6
6
  <iso-standard xmlns="http://riboseinc.com/isoxml">
7
+ <preface>
7
8
  <foreword>
8
9
  <table id="tableD-1">
9
10
  <name>Repeatability and reproducibility of husked rice yield</name>
@@ -55,6 +56,7 @@ RSpec.describe IsoDoc do
55
56
  <note><p>This is a table about rice</p></note>
56
57
  </table>
57
58
  </foreword>
59
+ </preface>
58
60
  </iso-standard>
59
61
  INPUT
60
62
  <html xmlns:epub="http://www.idpf.org/2007/ops">
@@ -70,7 +72,7 @@ RSpec.describe IsoDoc do
70
72
  <div>
71
73
  <h1 class="ForewordTitle">Foreword</h1>
72
74
  <p class="TableTitle" align="center">
73
- <b>Table 1&#160;&#8212; Repeatability and reproducibility of husked rice yield</b>
75
+ Table 1&#160;&#8212; Repeatability and reproducibility of husked rice yield
74
76
  </p>
75
77
  <table id="tableD-1" class="MsoISOTable" border="1" cellspacing="0" cellpadding="0">
76
78
  <thead>
@@ -80,7 +82,7 @@ RSpec.describe IsoDoc do
80
82
  </tr>
81
83
  <tr>
82
84
  <td align="left" style="border-top:none;border-bottom:solid windowtext 1.5pt;">Arborio</td>
83
- <td align="center" style="border-top:none;border-bottom:solid windowtext 1.5pt;">Drago<a href="#tableD-1a" class="TableFootnoteRef">a</a><aside><div id="ftntableD-1a"><a id="tableD-1a" class="TableFootnoteRef">a&#160; </a>
85
+ <td align="center" style="border-top:none;border-bottom:solid windowtext 1.5pt;">Drago<a href="#tableD-1a" class="TableFootnoteRef">a</a><aside class="footnote"><div id="ftntableD-1a"><a id="tableD-1a" class="TableFootnoteRef">a&#160; </a>
84
86
  <p id="_0fe65e9a-5531-408e-8295-eeff35f41a55">Parboiled rice.</p>
85
87
  </div></aside></td>
86
88
  <td align="center" style="border-top:none;border-bottom:solid windowtext 1.5pt;">Balilla<a href="#tableD-1a" class="TableFootnoteRef">a</a></td>
@@ -119,7 +121,7 @@ RSpec.describe IsoDoc do
119
121
  <dd>A type of rice</dd>
120
122
  </dl>
121
123
  <div id="" class="Note">
122
- <p class="Note">NOTE&#160; This is a table about rice</p>
124
+ <p class="Note"><span class="note_label">NOTE</span>&#160; This is a table about rice</p>
123
125
  </div>
124
126
  </table>
125
127
  </div>
@@ -138,6 +140,7 @@ RSpec.describe IsoDoc do
138
140
  it "processes IsoXML tables (Word)" do
139
141
  expect(IsoDoc::WordConvert.new({}).convert_file(<<~"INPUT", "test", true)).to be_equivalent_to <<~"OUTPUT"
140
142
  <iso-standard xmlns="http://riboseinc.com/isoxml">
143
+ <preface>
141
144
  <foreword>
142
145
  <table id="tableD-1">
143
146
  <name>Repeatability and reproducibility of husked rice yield</name>
@@ -189,9 +192,10 @@ RSpec.describe IsoDoc do
189
192
  <note><p>This is a table about rice</p></note>
190
193
  </table>
191
194
  </foreword>
195
+ </preface>
192
196
  </iso-standard>
193
197
  INPUT
194
- <html xmlns:epub="http://www.idpf.org/2007/ops">
198
+ <html xmlns:epub="http://www.idpf.org/2007/ops">
195
199
  <head>
196
200
  <title>test</title>
197
201
  <body lang="EN-US" link="blue" vlink="#954F72">
@@ -203,9 +207,7 @@ RSpec.describe IsoDoc do
203
207
  <br clear="all" style="mso-special-character:line-break;page-break-before:always"/>
204
208
  <div>
205
209
  <h1 class="ForewordTitle">Foreword</h1>
206
- <p class="TableTitle" align="center">
207
- <b>Table 1&#160;&#8212; Repeatability and reproducibility of husked rice yield</b>
208
- </p>
210
+ <p class="TableTitle" align="center">Table 1&#160;&#8212; Repeatability and reproducibility of husked rice yield</p>
209
211
  <table id="tableD-1" class="MsoISOTable" border="1" cellspacing="0" cellpadding="0">
210
212
  <thead>
211
213
  <tr>
@@ -217,7 +219,7 @@ RSpec.describe IsoDoc do
217
219
  <td align="center" style="border-top:none;mso-border-top-alt:none;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;">Drago<a href="#tableD-1a" class="TableFootnoteRef">a</a><aside><div id="ftntableD-1a"><a id="tableD-1a" class="TableFootnoteRef">a<span style="mso-tab-count:1">&#160; </span></a>
218
220
  <p id="_0fe65e9a-5531-408e-8295-eeff35f41a55">Parboiled rice.</p>
219
221
  </div></aside></td>
220
- <td align="center" style="border-top:none;mso-border-top-alt:none;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;">Balilla<a href="#tableD-1a" class="TableFootnoteRef">a</a></td>
222
+ <td align="center" style="border-top:none;mso-border-top-alt:none;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;">Balilla<a href="#tableD-1a" class="TableFootnoteRef">a</a></td>
221
223
  <td align="center" style="border-top:none;mso-border-top-alt:none;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;">Thaibonnet</td>
222
224
  </tr>
223
225
  </thead>
@@ -247,15 +249,15 @@ RSpec.describe IsoDoc do
247
249
  </tr>
248
250
  </tfoot>
249
251
  <table class="dl">
250
- <tr>
251
- <td valign="top" align="left">
252
- <p style="text-align: left;">Drago</p>
253
- </td>
254
- <td valign="top">A type of rice</td>
255
- </tr>
256
- </table>
252
+ <tr>
253
+ <td valign="top" align="left">
254
+ <p align="left" style="margin-left:0pt;text-align:left;">Drago</p>
255
+ </td>
256
+ <td valign="top">A type of rice</td>
257
+ </tr>
258
+ </table>
257
259
  <div id="" class="Note">
258
- <p class="Note">NOTE<span style="mso-tab-count:1">&#160; </span>This is a table about rice</p>
260
+ <p class="Note"><span class="note_label">NOTE</span><span style="mso-tab-count:1">&#160; </span>This is a table about rice</p>
259
261
  </div>
260
262
  </table>
261
263
  </div>
@@ -66,7 +66,7 @@ RSpec.describe IsoDoc do
66
66
  <br/>
67
67
  <div class="WordSection3">
68
68
  <p class="zzSTDTitle1"/>
69
- <div id="_terms_and_definitions"><h1>3.&#160; Terms and Definitions</h1><p>For the purposes of this document,
69
+ <div id="_terms_and_definitions"><h1>1.&#160; Terms and Definitions</h1><p>For the purposes of this document,
70
70
  the following terms and definitions apply.</p>
71
71
  <p>ISO and IEC maintain terminological databases for use in
72
72
  standardization at the following addresses:</p>
@@ -77,16 +77,16 @@ RSpec.describe IsoDoc do
77
77
  <li> <p>IEC Electropedia: available at
78
78
  <a href="http://www.electropedia.org">http://www.electropedia.org</a>
79
79
  </p> </li> </ul>
80
- <p class="TermNum" id="paddy1">3.1</p><p class="Terms">paddy</p>
80
+ <p class="TermNum" id="paddy1">1.1</p><p class="Terms" style="text-align:left;">paddy</p>
81
81
 
82
82
  <p id="_eb29b35e-123e-4d1c-b50b-2714d41e747f">&lt;rice&gt; rice retaining its husk after threshing</p>
83
- <table id="_bd57bbf1-f948-4bae-b0ce-73c00431f892" class="example"><tr><td width="110pt" valign="top" style="width:82.8pt;padding:.75pt .75pt .75pt .75pt">EXAMPLE 1</td><td valign="top">
83
+ <table id="_bd57bbf1-f948-4bae-b0ce-73c00431f892" class="example"><tr><td width="110pt" valign="top" class="example_label" style="width:82.8pt;padding:.75pt .75pt .75pt .75pt">EXAMPLE 1</td><td valign="top" class="example">
84
84
  <p id="_65c9a509-9a89-4b54-a890-274126aeb55c">Foreign seeds, husks, bran, sand, dust.</p>
85
85
  <ul>
86
86
  <li>A</li>
87
87
  </ul>
88
88
  </td></tr></table>
89
- <table id="_bd57bbf1-f948-4bae-b0ce-73c00431f894" class="example"><tr><td width="110pt" valign="top" style="width:82.8pt;padding:.75pt .75pt .75pt .75pt">EXAMPLE 2</td><td valign="top">
89
+ <table id="_bd57bbf1-f948-4bae-b0ce-73c00431f894" class="example"><tr><td width="110pt" valign="top" class="example_label" style="width:82.8pt;padding:.75pt .75pt .75pt .75pt">EXAMPLE 2</td><td valign="top" class="example">
90
90
  <ul>
91
91
  <li>A</li>
92
92
  </ul>
@@ -95,11 +95,11 @@ RSpec.describe IsoDoc do
95
95
  <p>[TERMREF]
96
96
  <a href="#ISO7301">ISO 7301: 2011, 3.1</a>
97
97
  [MODIFICATION]The term "cargo rice" is shown as deprecated, and Note 1 to entry is not included here
98
- [/TERMREF]</p><p class="TermNum" id="paddy">3.2</p><p class="Terms">paddy</p><p class="AltTerms">paddy rice</p>
99
- <p class="AltTerms">rough rice</p>
100
- <p class="DeprecatedTerms">DEPRECATED: cargo rice</p>
98
+ [/TERMREF]</p><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>
99
+ <p class="AltTerms" style="text-align:left;">rough rice</p>
100
+ <p class="DeprecatedTerms" style="text-align:left;">DEPRECATED: cargo rice</p>
101
101
  <p id="_eb29b35e-123e-4d1c-b50b-2714d41e747f">rice retaining its husk after threshing</p>
102
- <table id="_bd57bbf1-f948-4bae-b0ce-73c00431f893" class="example"><tr><td width="110pt" valign="top" style="width:82.8pt;padding:.75pt .75pt .75pt .75pt">EXAMPLE 1</td><td valign="top">
102
+ <table id="_bd57bbf1-f948-4bae-b0ce-73c00431f893" class="example"><tr><td width="110pt" valign="top" class="example_label" style="width:82.8pt;padding:.75pt .75pt .75pt .75pt">EXAMPLE 1</td><td valign="top" class="example">
103
103
  <ul>
104
104
  <li>A</li>
105
105
  </ul>
@@ -114,5 +114,5 @@ RSpec.describe IsoDoc do
114
114
  </head>
115
115
  </html>
116
116
  OUTPUT
117
- end
117
+ end
118
118
  end
@@ -4,6 +4,7 @@ RSpec.describe IsoDoc do
4
4
  it "cross-references notes" do
5
5
  expect(IsoDoc::Convert.new({}).convert_file(<<~"INPUT", "test", true)). to be_equivalent_to <<~"OUTPUT"
6
6
  <iso-standard xmlns="http://riboseinc.com/isoxml">
7
+ <preface>
7
8
  <foreword>
8
9
  <p>
9
10
  <xref target="N"/>
@@ -14,6 +15,7 @@ RSpec.describe IsoDoc do
14
15
  <xref target="Anote2"/>
15
16
  </p>
16
17
  </foreword>
18
+ </preface>
17
19
  <sections>
18
20
  <clause id="scope"><title>Scope</title>
19
21
  <note id="N">
@@ -24,7 +26,7 @@ RSpec.describe IsoDoc do
24
26
  </clause>
25
27
  <terms id="terms"/>
26
28
  <clause id="widgets"><title>Widgets</title>
27
- <subsection id="widgets1">
29
+ <clause id="widgets1">
28
30
  <note id="note1">
29
31
  <p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f">These results are based on a study carried out on three different types of kernel.</p>
30
32
  </note>
@@ -33,23 +35,23 @@ RSpec.describe IsoDoc do
33
35
  </note>
34
36
  <p> <xref target="note1"/> <xref target="note2"/> </p>
35
37
 
36
- </subsection>
38
+ </clause>
37
39
  </clause>
38
40
  </sections>
39
41
  <annex id="annex1">
40
- <subsection id="annex1a">
42
+ <clause id="annex1a">
41
43
  <note id="AN">
42
44
  <p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f">These results are based on a study carried out on three different types of kernel.</p>
43
45
  </note>
44
- </subsection>
45
- <subsection id="annex1b">
46
+ </clause>
47
+ <clause id="annex1b">
46
48
  <note id="Anote1">
47
49
  <p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f">These results are based on a study carried out on three different types of kernel.</p>
48
50
  </note>
49
51
  <note id="Anote2">
50
52
  <p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83a">These results are based on a study carried out on three different types of kernel.</p>
51
53
  </note>
52
- </subsection>
54
+ </clause>
53
55
  </annex>
54
56
  </iso-standard>
55
57
  INPUT
@@ -67,8 +69,8 @@ RSpec.describe IsoDoc do
67
69
  <h1 class="ForewordTitle">Foreword</h1>
68
70
  <p>
69
71
  <a href="#N">Clause 1, Note</a>
70
- <a href="#note1">4.1, Note 1</a>
71
- <a href="#note2">4.1, Note 2</a>
72
+ <a href="#note1">3.1, Note 1</a>
73
+ <a href="#note2">3.1, Note 2</a>
72
74
  <a href="#AN">A.1, Note</a>
73
75
  <a href="#Anote1">A.2, Note 1</a>
74
76
  <a href="#Anote2">A.2, Note 2</a>
@@ -82,13 +84,13 @@ RSpec.describe IsoDoc do
82
84
  <div id="scope">
83
85
  <h1>1.&#160; Scope</h1>
84
86
  <div id="N" class="Note">
85
- <p class="Note">NOTE&#160; These results are based on a study carried out on three different types of kernel.</p>
87
+ <p class="Note"><span class="note_label">NOTE</span>&#160; These results are based on a study carried out on three different types of kernel.</p>
86
88
  </div>
87
89
  <p>
88
90
  <a href="#N">Note</a>
89
91
  </p>
90
92
  </div>
91
- <div id="terms"><h1>3.&#160; Terms and Definitions</h1><p>No terms and definitions are listed in this document.</p>
93
+ <div id="terms"><h1>2.&#160; Terms and Definitions</h1><p>No terms and definitions are listed in this document.</p>
92
94
  <p>ISO and IEC maintain terminological databases for use in
93
95
  standardization at the following addresses:</p>
94
96
 
@@ -100,10 +102,10 @@ RSpec.describe IsoDoc do
100
102
  </p> </li> </ul>
101
103
  </div>
102
104
  <div id="widgets">
103
- <h1>4.&#160; Widgets</h1>
105
+ <h1>3.&#160; Widgets</h1>
104
106
  <div id="widgets1">
105
- <div id="note1" class="Note"><p class="Note">NOTE 1&#160; These results are based on a study carried out on three different types of kernel.</p></div>
106
- <div id="note2" class="Note"><p class="Note">NOTE 2&#160; These results are based on a study carried out on three different types of kernel.</p></div>
107
+ <div id="note1" class="Note"><p class="Note"><span class="note_label">NOTE 1</span>&#160; These results are based on a study carried out on three different types of kernel.</p></div>
108
+ <div id="note2" class="Note"><p class="Note"><span class="note_label">NOTE 2</span>&#160; These results are based on a study carried out on three different types of kernel.</p></div>
107
109
  <p> <a href="#note1">Note 1</a> <a href="#note2">Note 2</a> </p>
108
110
 
109
111
  </div>
@@ -111,11 +113,11 @@ RSpec.describe IsoDoc do
111
113
  <br/>
112
114
  <div id="annex1" class="Section3">
113
115
  <div id="annex1a">
114
- <div id="AN" class="Note"><p class="Note">NOTE&#160; These results are based on a study carried out on three different types of kernel.</p></div>
116
+ <div id="AN" class="Note"><p class="Note"><span class="note_label">NOTE</span>&#160; These results are based on a study carried out on three different types of kernel.</p></div>
115
117
  </div>
116
118
  <div id="annex1b">
117
- <div id="Anote1" class="Note"><p class="Note">NOTE 1&#160; These results are based on a study carried out on three different types of kernel.</p></div>
118
- <div id="Anote2" class="Note"><p class="Note">NOTE 2&#160; These results are based on a study carried out on three different types of kernel.</p></div>
119
+ <div id="Anote1" class="Note"><p class="Note"><span class="note_label">NOTE 1</span>&#160; These results are based on a study carried out on three different types of kernel.</p></div>
120
+ <div id="Anote2" class="Note"><p class="Note"><span class="note_label">NOTE 2</span>&#160; These results are based on a study carried out on three different types of kernel.</p></div>
119
121
  </div>
120
122
  </div>
121
123
  </div>
@@ -128,6 +130,7 @@ RSpec.describe IsoDoc do
128
130
  it "cross-references figures" do
129
131
  expect(IsoDoc::Convert.new({}).convert_file(<<~"INPUT", "test", true)).to be_equivalent_to <<~"OUTPUT"
130
132
  <iso-standard xmlns="http://riboseinc.com/isoxml">
133
+ <preface>
131
134
  <foreword id="fwd">
132
135
  <p>
133
136
  <xref target="N"/>
@@ -138,6 +141,7 @@ RSpec.describe IsoDoc do
138
141
  <xref target="Anote2"/>
139
142
  </p>
140
143
  </foreword>
144
+ </preface>
141
145
  <sections>
142
146
  <clause id="scope"><title>Scope</title>
143
147
  <figure id="N">
@@ -148,7 +152,7 @@ RSpec.describe IsoDoc do
148
152
  </clause>
149
153
  <terms id="terms"/>
150
154
  <clause id="widgets"><title>Widgets</title>
151
- <subsection id="widgets1">
155
+ <clause id="widgets1">
152
156
  <figure id="note1">
153
157
  <name>Split-it-right sample divider</name>
154
158
  <image src="rice_images/rice_image1.png" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f0" imagetype="PNG"/>
@@ -158,17 +162,17 @@ RSpec.describe IsoDoc do
158
162
  <image src="rice_images/rice_image1.png" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f0" imagetype="PNG"/>
159
163
  </figure>
160
164
  <p> <xref target="note1"/> <xref target="note2"/> </p>
161
- </subsection>
165
+ </clause>
162
166
  </clause>
163
167
  </sections>
164
168
  <annex id="annex1">
165
- <subsection id="annex1a">
169
+ <clause id="annex1a">
166
170
  <figure id="AN">
167
171
  <name>Split-it-right sample divider</name>
168
172
  <image src="rice_images/rice_image1.png" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f0" imagetype="PNG"/>
169
173
  </figure>
170
- </subsection>
171
- <subsection id="annex1b">
174
+ </clause>
175
+ <clause id="annex1b">
172
176
  <figure id="Anote1">
173
177
  <name>Split-it-right sample divider</name>
174
178
  <image src="rice_images/rice_image1.png" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f0" imagetype="PNG"/>
@@ -177,7 +181,7 @@ RSpec.describe IsoDoc do
177
181
  <name>Split-it-right sample divider</name>
178
182
  <image src="rice_images/rice_image1.png" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f0" imagetype="PNG"/>
179
183
  </figure>
180
- </subsection>
184
+ </clause>
181
185
  </annex>
182
186
  </iso-standard>
183
187
  INPUT
@@ -212,12 +216,12 @@ RSpec.describe IsoDoc do
212
216
  <div id="N" class="figure">
213
217
 
214
218
  <img src="rice_images/rice_image1.png"/>
215
- <p class="FigureTitle" align="center"><b>Figure 1&#160;&#8212; Split-it-right sample divider</b></p></div>
219
+ <p class="FigureTitle" align="center">Figure 1&#160;&#8212; Split-it-right sample divider</p></div>
216
220
  <p>
217
221
  <a href="#N">Figure 1</a>
218
222
  </p>
219
223
  </div>
220
- <div id="terms"><h1>3.&#160; Terms and Definitions</h1><p>No terms and definitions are listed in this document.</p>
224
+ <div id="terms"><h1>2.&#160; Terms and Definitions</h1><p>No terms and definitions are listed in this document.</p>
221
225
  <p>ISO and IEC maintain terminological databases for use in
222
226
  standardization at the following addresses:</p>
223
227
 
@@ -229,16 +233,16 @@ RSpec.describe IsoDoc do
229
233
  </p> </li> </ul>
230
234
  </div>
231
235
  <div id="widgets">
232
- <h1>4.&#160; Widgets</h1>
236
+ <h1>3.&#160; Widgets</h1>
233
237
  <div id="widgets1">
234
238
  <div id="note1" class="figure">
235
239
 
236
240
  <img src="rice_images/rice_image1.png"/>
237
- <p class="FigureTitle" align="center"><b>Figure 2&#160;&#8212; Split-it-right sample divider</b></p></div>
241
+ <p class="FigureTitle" align="center">Figure 2&#160;&#8212; Split-it-right sample divider</p></div>
238
242
  <div id="note2" class="figure">
239
243
 
240
244
  <img src="rice_images/rice_image1.png"/>
241
- <p class="FigureTitle" align="center"><b>Figure 3&#160;&#8212; Split-it-right sample divider</b></p></div>
245
+ <p class="FigureTitle" align="center">Figure 3&#160;&#8212; Split-it-right sample divider</p></div>
242
246
  <p> <a href="#note1">Figure 2</a> <a href="#note2">Figure 3</a> </p>
243
247
  </div>
244
248
  </div>
@@ -248,17 +252,17 @@ RSpec.describe IsoDoc do
248
252
  <div id="AN" class="figure">
249
253
 
250
254
  <img src="rice_images/rice_image1.png"/>
251
- <p class="FigureTitle" align="center"><b>Figure A.1&#160;&#8212; Split-it-right sample divider</b></p></div>
255
+ <p class="FigureTitle" align="center">Figure A.1&#160;&#8212; Split-it-right sample divider</p></div>
252
256
  </div>
253
257
  <div id="annex1b">
254
258
  <div id="Anote1" class="figure">
255
259
 
256
260
  <img src="rice_images/rice_image1.png"/>
257
- <p class="FigureTitle" align="center"><b>Figure A.2&#160;&#8212; Split-it-right sample divider</b></p></div>
261
+ <p class="FigureTitle" align="center">Figure A.2&#160;&#8212; Split-it-right sample divider</p></div>
258
262
  <div id="Anote2" class="figure">
259
263
 
260
264
  <img src="rice_images/rice_image1.png"/>
261
- <p class="FigureTitle" align="center"><b>Figure A.3&#160;&#8212; Split-it-right sample divider</b></p></div>
265
+ <p class="FigureTitle" align="center">Figure A.3&#160;&#8212; Split-it-right sample divider</p></div>
262
266
  </div>
263
267
  </div>
264
268
  </div>
@@ -271,6 +275,7 @@ RSpec.describe IsoDoc do
271
275
  it "cross-references subfigures" do
272
276
  expect(IsoDoc::Convert.new({}).convert_file(<<~"INPUT", "test", true)).to be_equivalent_to <<~"OUTPUT"
273
277
  <iso-standard xmlns="http://riboseinc.com/isoxml">
278
+ <preface>
274
279
  <foreword id="fwd">
275
280
  <p>
276
281
  <xref target="N"/>
@@ -281,12 +286,13 @@ RSpec.describe IsoDoc do
281
286
  <xref target="Anote2"/>
282
287
  </p>
283
288
  </foreword>
289
+ </preface>
284
290
  <sections>
285
291
  <clause id="scope"><title>Scope</title>
286
292
  </clause>
287
293
  <terms id="terms"/>
288
294
  <clause id="widgets"><title>Widgets</title>
289
- <subsection id="widgets1">
295
+ <clause id="widgets1">
290
296
  <figure id="N">
291
297
  <figure id="note1">
292
298
  <name>Split-it-right sample divider</name>
@@ -298,13 +304,13 @@ RSpec.describe IsoDoc do
298
304
  </figure>
299
305
  </figure>
300
306
  <p> <xref target="note1"/> <xref target="note2"/> </p>
301
- </subsection>
307
+ </clause>
302
308
  </clause>
303
309
  </sections>
304
310
  <annex id="annex1">
305
- <subsection id="annex1a">
306
- </subsection>
307
- <subsection id="annex1b">
311
+ <clause id="annex1a">
312
+ </clause>
313
+ <clause id="annex1b">
308
314
  <figure id="AN">
309
315
  <figure id="Anote1">
310
316
  <name>Split-it-right sample divider</name>
@@ -315,7 +321,7 @@ RSpec.describe IsoDoc do
315
321
  <image src="rice_images/rice_image1.png" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f0" imagetype="PNG"/>
316
322
  </figure>
317
323
  </figure>
318
- </subsection>
324
+ </clause>
319
325
  </annex>
320
326
  </iso-standard>
321
327
  INPUT
@@ -348,7 +354,7 @@ RSpec.describe IsoDoc do
348
354
  <div id="scope">
349
355
  <h1>1.&#160; Scope</h1>
350
356
  </div>
351
- <div id="terms"><h1>3.&#160; Terms and Definitions</h1><p>No terms and definitions are listed in this document.</p>
357
+ <div id="terms"><h1>2.&#160; Terms and Definitions</h1><p>No terms and definitions are listed in this document.</p>
352
358
  <p>ISO and IEC maintain terminological databases for use in
353
359
  standardization at the following addresses:</p>
354
360
 
@@ -360,17 +366,17 @@ RSpec.describe IsoDoc do
360
366
  </p> </li> </ul>
361
367
  </div>
362
368
  <div id="widgets">
363
- <h1>4.&#160; Widgets</h1>
369
+ <h1>3.&#160; Widgets</h1>
364
370
  <div id="widgets1">
365
371
  <div id="N" class="figure">
366
372
  <div id="note1" class="figure">
367
373
 
368
374
  <img src="rice_images/rice_image1.png"/>
369
- <p class="FigureTitle" align="center"><b>Figure 1-1&#160;&#8212; Split-it-right sample divider</b></p></div>
375
+ <p class="FigureTitle" align="center">Figure 1-1&#160;&#8212; Split-it-right sample divider</p></div>
370
376
  <div id="note2" class="figure">
371
377
 
372
378
  <img src="rice_images/rice_image1.png"/>
373
- <p class="FigureTitle" align="center"><b>Figure 1-2&#160;&#8212; Split-it-right sample divider</b></p></div>
379
+ <p class="FigureTitle" align="center">Figure 1-2&#160;&#8212; Split-it-right sample divider</p></div>
374
380
  </div>
375
381
  <p> <a href="#note1">Figure 1-1</a> <a href="#note2">Figure 1-2</a> </p>
376
382
  </div>
@@ -384,11 +390,11 @@ RSpec.describe IsoDoc do
384
390
  <div id="Anote1" class="figure">
385
391
 
386
392
  <img src="rice_images/rice_image1.png"/>
387
- <p class="FigureTitle" align="center"><b>Figure A.1-1&#160;&#8212; Split-it-right sample divider</b></p></div>
393
+ <p class="FigureTitle" align="center">Figure A.1-1&#160;&#8212; Split-it-right sample divider</p></div>
388
394
  <div id="Anote2" class="figure">
389
395
 
390
396
  <img src="rice_images/rice_image1.png"/>
391
- <p class="FigureTitle" align="center"><b>Figure A.1-2&#160;&#8212; Split-it-right sample divider</b></p></div>
397
+ <p class="FigureTitle" align="center">Figure A.1-2&#160;&#8212; Split-it-right sample divider</p></div>
392
398
  </div>
393
399
  </div>
394
400
  </div>
@@ -402,6 +408,7 @@ RSpec.describe IsoDoc do
402
408
  it "cross-references examples" do
403
409
  expect(IsoDoc::Convert.new({}).convert_file(<<~"INPUT", "test", true)).to be_equivalent_to <<~"OUTPUT"
404
410
  <iso-standard xmlns="http://riboseinc.com/isoxml">
411
+ <preface>
405
412
  <foreword>
406
413
  <p>
407
414
  <xref target="N"/>
@@ -412,6 +419,7 @@ RSpec.describe IsoDoc do
412
419
  <xref target="Anote2"/>
413
420
  </p>
414
421
  </foreword>
422
+ </preface>
415
423
  <sections>
416
424
  <clause id="scope"><title>Scope</title>
417
425
  <example id="N">
@@ -421,7 +429,7 @@ RSpec.describe IsoDoc do
421
429
  </clause>
422
430
  <terms id="terms"/>
423
431
  <clause id="widgets"><title>Widgets</title>
424
- <subsection id="widgets1">
432
+ <clause id="widgets1">
425
433
  <example id="note1">
426
434
  <p>Hello</p>
427
435
  </example>
@@ -429,23 +437,23 @@ RSpec.describe IsoDoc do
429
437
  <p>Hello</p>
430
438
  </example>
431
439
  <p> <xref target="note1"/> <xref target="note2"/> </p>
432
- </subsection>
440
+ </clause>
433
441
  </clause>
434
442
  </sections>
435
443
  <annex id="annex1">
436
- <subsection id="annex1a">
444
+ <clause id="annex1a">
437
445
  <example id="AN">
438
446
  <p>Hello</p>
439
447
  </example>
440
- </subsection>
441
- <subsection id="annex1b">
448
+ </clause>
449
+ <clause id="annex1b">
442
450
  <example id="Anote1">
443
451
  <p>Hello</p>
444
452
  </example>
445
453
  <example id="Anote2">
446
454
  <p>Hello</p>
447
455
  </example>
448
- </subsection>
456
+ </clause>
449
457
  </annex>
450
458
  </iso-standard>
451
459
  INPUT
@@ -463,8 +471,8 @@ RSpec.describe IsoDoc do
463
471
  <h1 class="ForewordTitle">Foreword</h1>
464
472
  <p>
465
473
  <a href="#N">Clause 1, Example</a>
466
- <a href="#note1">4.1, Example 1</a>
467
- <a href="#note2">4.1, Example 2</a>
474
+ <a href="#note1">3.1, Example 1</a>
475
+ <a href="#note2">3.1, Example 2</a>
468
476
  <a href="#AN">A.1, Example</a>
469
477
  <a href="#Anote1">A.2, Example 1</a>
470
478
  <a href="#Anote2">A.2, Example 2</a>
@@ -479,8 +487,8 @@ RSpec.describe IsoDoc do
479
487
  <h1>1.&#160; Scope</h1>
480
488
  <table id="N" class="example">
481
489
  <tr>
482
- <td width="110pt" valign="top" style="width:82.8pt;padding:.75pt .75pt .75pt .75pt">EXAMPLE</td>
483
- <td valign="top">
490
+ <td width="110pt" valign="top" class="example_label" style="width:82.8pt;padding:.75pt .75pt .75pt .75pt">EXAMPLE</td>
491
+ <td valign="top" class="example">
484
492
  <p>Hello</p>
485
493
  </td>
486
494
  </tr>
@@ -489,7 +497,7 @@ RSpec.describe IsoDoc do
489
497
  <a href="#N">Example</a>
490
498
  </p>
491
499
  </div>
492
- <div id="terms"><h1>3.&#160; Terms and Definitions</h1><p>No terms and definitions are listed in this document.</p>
500
+ <div id="terms"><h1>2.&#160; Terms and Definitions</h1><p>No terms and definitions are listed in this document.</p>
493
501
  <p>ISO and IEC maintain terminological databases for use in
494
502
  standardization at the following addresses:</p>
495
503
 
@@ -501,12 +509,12 @@ RSpec.describe IsoDoc do
501
509
  </p> </li> </ul>
502
510
  </div>
503
511
  <div id="widgets">
504
- <h1>4.&#160; Widgets</h1>
512
+ <h1>3.&#160; Widgets</h1>
505
513
  <div id="widgets1">
506
- <table id="note1" class="example"><tr><td width="110pt" valign="top" style="width:82.8pt;padding:.75pt .75pt .75pt .75pt">EXAMPLE 1</td><td valign="top">
514
+ <table id="note1" class="example"><tr><td width="110pt" valign="top" class="example_label" style="width:82.8pt;padding:.75pt .75pt .75pt .75pt">EXAMPLE 1</td><td valign="top" class="example">
507
515
  <p>Hello</p>
508
516
  </td></tr></table>
509
- <table id="note2" class="example"><tr><td width="110pt" valign="top" style="width:82.8pt;padding:.75pt .75pt .75pt .75pt">EXAMPLE 2</td><td valign="top">
517
+ <table id="note2" class="example"><tr><td width="110pt" valign="top" class="example_label" style="width:82.8pt;padding:.75pt .75pt .75pt .75pt">EXAMPLE 2</td><td valign="top" class="example">
510
518
  <p>Hello</p>
511
519
  </td></tr></table>
512
520
  <p> <a href="#note1">Example 1</a> <a href="#note2">Example 2</a> </p>
@@ -515,15 +523,15 @@ RSpec.describe IsoDoc do
515
523
  <br/>
516
524
  <div id="annex1" class="Section3">
517
525
  <div id="annex1a">
518
- <table id="AN" class="example"><tr><td width="110pt" valign="top" style="width:82.8pt;padding:.75pt .75pt .75pt .75pt">EXAMPLE</td><td valign="top">
526
+ <table id="AN" class="example"><tr><td width="110pt" valign="top" class="example_label" style="width:82.8pt;padding:.75pt .75pt .75pt .75pt">EXAMPLE</td><td valign="top" class="example">
519
527
  <p>Hello</p>
520
528
  </td></tr></table>
521
529
  </div>
522
530
  <div id="annex1b">
523
- <table id="Anote1" class="example"><tr><td width="110pt" valign="top" style="width:82.8pt;padding:.75pt .75pt .75pt .75pt">EXAMPLE 1</td><td valign="top">
531
+ <table id="Anote1" class="example"><tr><td width="110pt" valign="top" class="example_label" style="width:82.8pt;padding:.75pt .75pt .75pt .75pt">EXAMPLE 1</td><td valign="top" class="example">
524
532
  <p>Hello</p>
525
533
  </td></tr></table>
526
- <table id="Anote2" class="example"><tr><td width="110pt" valign="top" style="width:82.8pt;padding:.75pt .75pt .75pt .75pt">EXAMPLE 2</td><td valign="top">
534
+ <table id="Anote2" class="example"><tr><td width="110pt" valign="top" class="example_label" style="width:82.8pt;padding:.75pt .75pt .75pt .75pt">EXAMPLE 2</td><td valign="top" class="example">
527
535
  <p>Hello</p>
528
536
  </td></tr></table>
529
537
  </div>
@@ -538,6 +546,7 @@ RSpec.describe IsoDoc do
538
546
  it "cross-references formulae" do
539
547
  expect(IsoDoc::Convert.new({}).convert_file(<<~"INPUT", "test", true)).to be_equivalent_to <<~"OUTPUT"
540
548
  <iso-standard xmlns="http://riboseinc.com/isoxml">
549
+ <preface>
541
550
  <foreword>
542
551
  <p>
543
552
  <xref target="N"/>
@@ -548,6 +557,7 @@ RSpec.describe IsoDoc do
548
557
  <xref target="Anote2"/>
549
558
  </p>
550
559
  </foreword>
560
+ </preface>
551
561
  <sections>
552
562
  <clause id="scope"><title>Scope</title>
553
563
  <formula id="N">
@@ -557,7 +567,7 @@ RSpec.describe IsoDoc do
557
567
  </clause>
558
568
  <terms id="terms"/>
559
569
  <clause id="widgets"><title>Widgets</title>
560
- <subsection id="widgets1">
570
+ <clause id="widgets1">
561
571
  <formula id="note1">
562
572
  <stem type="AsciiMath">r = 1 %</stem>
563
573
  </formula>
@@ -565,23 +575,23 @@ RSpec.describe IsoDoc do
565
575
  <stem type="AsciiMath">r = 1 %</stem>
566
576
  </formula>
567
577
  <p> <xref target="note1"/> <xref target="note2"/> </p>
568
- </subsection>
578
+ </clause>
569
579
  </clause>
570
580
  </sections>
571
581
  <annex id="annex1">
572
- <subsection id="annex1a">
582
+ <clause id="annex1a">
573
583
  <formula id="AN">
574
584
  <stem type="AsciiMath">r = 1 %</stem>
575
585
  </formula>
576
- </subsection>
577
- <subsection id="annex1b">
586
+ </clause>
587
+ <clause id="annex1b">
578
588
  <formula id="Anote1">
579
589
  <stem type="AsciiMath">r = 1 %</stem>
580
590
  </formula>
581
591
  <formula id="Anote2">
582
592
  <stem type="AsciiMath">r = 1 %</stem>
583
593
  </formula>
584
- </subsection>
594
+ </clause>
585
595
  </annex>
586
596
  </iso-standard>
587
597
 
@@ -596,6 +606,7 @@ RSpec.describe IsoDoc do
596
606
  </dd>
597
607
  </dl></formula>
598
608
  </foreword>
609
+ </preface>
599
610
  </iso-standard>
600
611
  INPUT
601
612
  <html xmlns:epub="http://www.idpf.org/2007/ops">
@@ -612,8 +623,8 @@ RSpec.describe IsoDoc do
612
623
  <h1 class="ForewordTitle">Foreword</h1>
613
624
  <p>
614
625
  <a href="#N">Clause 1, Formula (1)</a>
615
- <a href="#note1">4.1, Formula (2)</a>
616
- <a href="#note2">4.1, Formula (3)</a>
626
+ <a href="#note1">3.1, Formula (2)</a>
627
+ <a href="#note2">3.1, Formula (3)</a>
617
628
  <a href="#AN">A.1, Formula (A.1)</a>
618
629
  <a href="#Anote1">A.2, Formula (A.2)</a>
619
630
  <a href="#Anote2">A.2, Formula (A.3)</a>
@@ -631,7 +642,7 @@ RSpec.describe IsoDoc do
631
642
  <a href="#N">Formula (1)</a>
632
643
  </p>
633
644
  </div>
634
- <div id="terms"><h1>3.&#160; Terms and Definitions</h1><p>No terms and definitions are listed in this document.</p>
645
+ <div id="terms"><h1>2.&#160; Terms and Definitions</h1><p>No terms and definitions are listed in this document.</p>
635
646
  <p>ISO and IEC maintain terminological databases for use in
636
647
  standardization at the following addresses:</p>
637
648
 
@@ -643,7 +654,7 @@ RSpec.describe IsoDoc do
643
654
  </p> </li> </ul>
644
655
  </div>
645
656
  <div id="widgets">
646
- <h1>4.&#160; Widgets</h1>
657
+ <h1>3.&#160; Widgets</h1>
647
658
  <div id="widgets1">
648
659
  <div id="note1" class="formula"><span class="stem">(#(r = 1 %)#)</span>&#160; (2)</div>
649
660
  <div id="note2" class="formula"><span class="stem">(#(r = 1 %)#)</span>&#160; (3)</div>
@@ -670,6 +681,7 @@ RSpec.describe IsoDoc do
670
681
  it "cross-references tables" do
671
682
  expect(IsoDoc::Convert.new({}).convert_file(<<~"INPUT", "test", true)).to be_equivalent_to <<~"OUTPUT"
672
683
  <iso-standard xmlns="http://riboseinc.com/isoxml">
684
+ <preface>
673
685
  <foreword>
674
686
  <p>
675
687
  <xref target="N"/>
@@ -680,6 +692,7 @@ RSpec.describe IsoDoc do
680
692
  <xref target="Anote2"/>
681
693
  </p>
682
694
  </foreword>
695
+ </preface>
683
696
  <sections>
684
697
  <clause id="scope"><title>Scope</title>
685
698
  <table id="N">
@@ -696,7 +709,7 @@ RSpec.describe IsoDoc do
696
709
  </clause>
697
710
  <terms id="terms"/>
698
711
  <clause id="widgets"><title>Widgets</title>
699
- <subsection id="widgets1">
712
+ <clause id="widgets1">
700
713
  <table id="note1">
701
714
  <name>Repeatability and reproducibility of husked rice yield</name>
702
715
  <tbody>
@@ -718,11 +731,11 @@ RSpec.describe IsoDoc do
718
731
  </tbody>
719
732
  </table>
720
733
  <p> <xref target="note1"/> <xref target="note2"/> </p>
721
- </subsection>
734
+ </clause>
722
735
  </clause>
723
736
  </sections>
724
737
  <annex id="annex1">
725
- <subsection id="annex1a">
738
+ <clause id="annex1a">
726
739
  <table id="AN">
727
740
  <name>Repeatability and reproducibility of husked rice yield</name>
728
741
  <tbody>
@@ -733,8 +746,8 @@ RSpec.describe IsoDoc do
733
746
  </tr>
734
747
  </tbody>
735
748
  </table>
736
- </subsection>
737
- <subsection id="annex1b">
749
+ </clause>
750
+ <clause id="annex1b">
738
751
  <table id="Anote1">
739
752
  <name>Repeatability and reproducibility of husked rice yield</name>
740
753
  <tbody>
@@ -755,7 +768,7 @@ RSpec.describe IsoDoc do
755
768
  </tr>
756
769
  </tbody>
757
770
  </table>
758
- </subsection>
771
+ </clause>
759
772
  </annex>
760
773
  </iso-standard>
761
774
  INPUT
@@ -788,7 +801,7 @@ RSpec.describe IsoDoc do
788
801
  <div id="scope">
789
802
  <h1>1.&#160; Scope</h1>
790
803
  <p class="TableTitle" align="center">
791
- <b>Table 1&#160;&#8212; Repeatability and reproducibility of husked rice yield</b>
804
+ Table 1&#160;&#8212; Repeatability and reproducibility of husked rice yield
792
805
  </p>
793
806
  <table id="N" class="MsoISOTable" border="1" cellspacing="0" cellpadding="0">
794
807
  <tbody>
@@ -803,7 +816,7 @@ RSpec.describe IsoDoc do
803
816
  <a href="#N">Table 1</a>
804
817
  </p>
805
818
  </div>
806
- <div id="terms"><h1>3.&#160; Terms and Definitions</h1><p>No terms and definitions are listed in this document.</p>
819
+ <div id="terms"><h1>2.&#160; Terms and Definitions</h1><p>No terms and definitions are listed in this document.</p>
807
820
  <p>ISO and IEC maintain terminological databases for use in
808
821
  standardization at the following addresses:</p>
809
822
 
@@ -815,21 +828,21 @@ RSpec.describe IsoDoc do
815
828
  </p> </li> </ul>
816
829
  </div>
817
830
  <div id="widgets">
818
- <h1>4.&#160; Widgets</h1>
831
+ <h1>3.&#160; Widgets</h1>
819
832
  <div id="widgets1">
820
- <p class="TableTitle" align="center"><b>Table 2&#160;&#8212; Repeatability and reproducibility of husked rice yield</b></p><table id="note1" class="MsoISOTable" border="1" cellspacing="0" cellpadding="0"><tbody><tr><td align="left" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Number of laboratories retained after eliminating outliers</td><td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">13</td><td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">11</td></tr></tbody></table>
821
- <p class="TableTitle" align="center"><b>Table 3&#160;&#8212; Repeatability and reproducibility of husked rice yield</b></p><table id="note2" class="MsoISOTable" border="1" cellspacing="0" cellpadding="0"><tbody><tr><td align="left" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Number of laboratories retained after eliminating outliers</td><td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">13</td><td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">11</td></tr></tbody></table>
833
+ <p class="TableTitle" align="center">Table 2&#160;&#8212; Repeatability and reproducibility of husked rice yield</p><table id="note1" class="MsoISOTable" border="1" cellspacing="0" cellpadding="0"><tbody><tr><td align="left" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Number of laboratories retained after eliminating outliers</td><td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">13</td><td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">11</td></tr></tbody></table>
834
+ <p class="TableTitle" align="center">Table 3&#160;&#8212; Repeatability and reproducibility of husked rice yield</p><table id="note2" class="MsoISOTable" border="1" cellspacing="0" cellpadding="0"><tbody><tr><td align="left" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Number of laboratories retained after eliminating outliers</td><td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">13</td><td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">11</td></tr></tbody></table>
822
835
  <p> <a href="#note1">Table 2</a> <a href="#note2">Table 3</a> </p>
823
836
  </div>
824
837
  </div>
825
838
  <br/>
826
839
  <div id="annex1" class="Section3">
827
840
  <div id="annex1a">
828
- <p class="TableTitle" align="center"><b>Table A.1&#160;&#8212; Repeatability and reproducibility of husked rice yield</b></p><table id="AN" class="MsoISOTable" border="1" cellspacing="0" cellpadding="0"><tbody><tr><td align="left" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Number of laboratories retained after eliminating outliers</td><td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">13</td><td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">11</td></tr></tbody></table>
841
+ <p class="TableTitle" align="center">Table A.1&#160;&#8212; Repeatability and reproducibility of husked rice yield</p><table id="AN" class="MsoISOTable" border="1" cellspacing="0" cellpadding="0"><tbody><tr><td align="left" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Number of laboratories retained after eliminating outliers</td><td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">13</td><td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">11</td></tr></tbody></table>
829
842
  </div>
830
843
  <div id="annex1b">
831
- <p class="TableTitle" align="center"><b>Table A.2&#160;&#8212; Repeatability and reproducibility of husked rice yield</b></p><table id="Anote1" class="MsoISOTable" border="1" cellspacing="0" cellpadding="0"><tbody><tr><td align="left" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Number of laboratories retained after eliminating outliers</td><td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">13</td><td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">11</td></tr></tbody></table>
832
- <p class="TableTitle" align="center"><b>Table A.3&#160;&#8212; Repeatability and reproducibility of husked rice yield</b></p><table id="Anote2" class="MsoISOTable" border="1" cellspacing="0" cellpadding="0"><tbody><tr><td align="left" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Number of laboratories retained after eliminating outliers</td><td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">13</td><td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">11</td></tr></tbody></table>
844
+ <p class="TableTitle" align="center">Table A.2&#160;&#8212; Repeatability and reproducibility of husked rice yield</p><table id="Anote1" class="MsoISOTable" border="1" cellspacing="0" cellpadding="0"><tbody><tr><td align="left" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Number of laboratories retained after eliminating outliers</td><td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">13</td><td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">11</td></tr></tbody></table>
845
+ <p class="TableTitle" align="center">Table A.3&#160;&#8212; Repeatability and reproducibility of husked rice yield</p><table id="Anote2" class="MsoISOTable" border="1" cellspacing="0" cellpadding="0"><tbody><tr><td align="left" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Number of laboratories retained after eliminating outliers</td><td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">13</td><td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">11</td></tr></tbody></table>
833
846
  </div>
834
847
  </div>
835
848
  </div>
@@ -842,6 +855,7 @@ RSpec.describe IsoDoc do
842
855
  it "cross-references term notes" do
843
856
  expect(IsoDoc::Convert.new({}).convert_file(<<~"INPUT", "test", true)).to be_equivalent_to <<~"OUTPUT"
844
857
  <iso-standard xmlns="http://riboseinc.com/isoxml">
858
+ <preface>
845
859
  <foreword>
846
860
  <p>
847
861
  <xref target="note1"/>
@@ -849,6 +863,7 @@ RSpec.describe IsoDoc do
849
863
  <xref target="note3"/>
850
864
  </p>
851
865
  </foreword>
866
+ </preface>
852
867
  <sections>
853
868
  <clause id="scope"><title>Scope</title>
854
869
  </clause>
@@ -881,9 +896,9 @@ RSpec.describe IsoDoc do
881
896
  <div>
882
897
  <h1 class="ForewordTitle">Foreword</h1>
883
898
  <p>
884
- <a href="#note1">3.1, Note 1</a>
885
- <a href="#note2">3.2, Note 1</a>
886
- <a href="#note3">3.2, Note 2</a>
899
+ <a href="#note1">2.1, Note 1</a>
900
+ <a href="#note2">2.2, Note 1</a>
901
+ <a href="#note3">2.2, Note 2</a>
887
902
  </p>
888
903
  </div>
889
904
  <p>&#160;</p>
@@ -894,7 +909,7 @@ RSpec.describe IsoDoc do
894
909
  <div id="scope">
895
910
  <h1>1.&#160; Scope</h1>
896
911
  </div>
897
- <div id="terms"><h1>3.&#160; Terms and Definitions</h1><p>For the purposes of this document,
912
+ <div id="terms"><h1>2.&#160; Terms and Definitions</h1><p>For the purposes of this document,
898
913
  the following terms and definitions apply.</p>
899
914
  <p>ISO and IEC maintain terminological databases for use in
900
915
  standardization at the following addresses:</p>
@@ -905,8 +920,8 @@ RSpec.describe IsoDoc do
905
920
  <li> <p>IEC Electropedia: available at
906
921
  <a href="http://www.electropedia.org">http://www.electropedia.org</a>
907
922
  </p> </li> </ul>
908
- <p class="TermNum" id="_waxy_rice">3.1</p><p class="Terms">waxy rice</p>
909
- <div class="Note"><p class="Note">Note 1 to entry: The starch of waxy rice consists almost entirely of amylopectin. The kernels have a tendency to stick together after cooking.</p></div><p class="TermNum" id="_nonwaxy_rice">3.2</p><p class="Terms">nonwaxy rice</p>
923
+ <p class="TermNum" id="_waxy_rice">2.1</p><p class="Terms" style="text-align:left;">waxy rice</p>
924
+ <div class="Note"><p class="Note">Note 1 to entry: The starch of waxy rice consists almost entirely of amylopectin. The kernels have a tendency to stick together after cooking.</p></div><p class="TermNum" id="_nonwaxy_rice">2.2</p><p class="Terms" style="text-align:left;">nonwaxy rice</p>
910
925
  <div class="Note"><p class="Note">Note 1 to entry: The starch of waxy rice consists almost entirely of amylopectin. The kernels have a tendency to stick together after cooking.</p></div>
911
926
  <div class="Note"><p class="Note">Note 2 to entry: The starch of waxy rice consists almost entirely of amylopectin. The kernels have a tendency to stick together after cooking.</p></div></div>
912
927
  </div>
@@ -919,6 +934,7 @@ RSpec.describe IsoDoc do
919
934
  it "cross-references sections" do
920
935
  expect(IsoDoc::Convert.new({}).convert_file(<<~"INPUT", "test", true)).to be_equivalent_to <<~"OUTPUT"
921
936
  <iso-standard xmlns="http://riboseinc.com/isoxml">
937
+ <preface>
922
938
  <foreword obligation="informative">
923
939
  <title>Foreword</title>
924
940
  <p id="A">This is a preamble
@@ -935,16 +951,17 @@ RSpec.describe IsoDoc do
935
951
  <xref target="P"/>
936
952
  <xref target="Q"/>
937
953
  <xref target="Q1"/>
954
+ <xref target="Q2"/>
938
955
  <xref target="R"/>
939
956
  </p>
940
957
  </foreword>
941
- <introduction id="B" obligation="informative"><title>Introduction</title><subsection id="C" inline-header="false" obligation="informative">
958
+ <introduction id="B" obligation="informative"><title>Introduction</title><clause id="C" inline-header="false" obligation="informative">
942
959
  <title>Introduction Subsection</title>
943
- </subsection>
960
+ </clause>
944
961
  <patent-notice>
945
962
  <p>This is patent boilerplate</p>
946
963
  </patent-notice>
947
- </introduction><sections>
964
+ </introduction></preface><sections>
948
965
  <clause id="D" obligation="normative">
949
966
  <title>Scope</title>
950
967
  <p id="E">Text</p>
@@ -969,22 +986,25 @@ RSpec.describe IsoDoc do
969
986
  <dd>Definition</dd>
970
987
  </dl>
971
988
  </symbols-abbrevs>
972
- <clause id="M" inline-header="false" obligation="normative"><title>Clause 4</title><subsection id="N" inline-header="false" obligation="normative">
989
+ <clause id="M" inline-header="false" obligation="normative"><title>Clause 4</title><clause id="N" inline-header="false" obligation="normative">
973
990
  <title>Introduction</title>
974
- </subsection>
975
- <subsection id="O" inline-header="false" obligation="normative">
991
+ </clause>
992
+ <clause id="O" inline-header="false" obligation="normative">
976
993
  <title>Clause 4.2</title>
977
- </subsection></clause>
994
+ </clause></clause>
978
995
 
979
996
  </sections><annex id="P" inline-header="false" obligation="normative">
980
997
  <title>Annex</title>
981
- <subsection id="Q" inline-header="false" obligation="normative">
998
+ <clause id="Q" inline-header="false" obligation="normative">
982
999
  <title>Annex A.1</title>
983
- <subsection id="Q1" inline-header="false" obligation="normative">
1000
+ <clause id="Q1" inline-header="false" obligation="normative">
984
1001
  <title>Annex A.1a</title>
985
- </subsection>
986
- </subsection>
987
- </annex><references id="R" obligation="informative">
1002
+ </clause>
1003
+ </clause>
1004
+ <appendix id="Q2" inline-header="false" obligation="normative">
1005
+ <title>An Appendix</title>
1006
+ </appendix>
1007
+ </annex><bibliography><references id="R" obligation="informative">
988
1008
  <title>Normative References</title>
989
1009
  </references><clause id="S" obligation="informative">
990
1010
  <title>Bibliography</title>
@@ -992,6 +1012,7 @@ RSpec.describe IsoDoc do
992
1012
  <title>Bibliography Subsection</title>
993
1013
  </references>
994
1014
  </clause>
1015
+ </bibliography>
995
1016
  </iso-standard>
996
1017
  INPUT
997
1018
  <html xmlns:epub="http://www.idpf.org/2007/ops">
@@ -1020,6 +1041,7 @@ RSpec.describe IsoDoc do
1020
1041
  <a href="#P">Annex A</a>
1021
1042
  <a href="#Q">A.1</a>
1022
1043
  <a href="#Q1">A.1.1</a>
1044
+ <a href="#Q2">Annex A, Appendix 1</a>
1023
1045
  <a href="#R">Clause 2</a>
1024
1046
  </p>
1025
1047
  </div>
@@ -1058,7 +1080,7 @@ RSpec.describe IsoDoc do
1058
1080
  <div id="I">
1059
1081
  <h2>3.1. Normal Terms</h2>
1060
1082
  <p class="TermNum" id="J">3.1.1</p>
1061
- <p class="Terms">Term2</p>
1083
+ <p class="Terms" style="text-align:left;">Term2</p>
1062
1084
 
1063
1085
  </div><div id="K"><h2>3.2. Symbols and Abbreviated Terms</h2>
1064
1086
  <dl><dt><p>Symbol</p></dt><dd>Definition</dd></dl>
@@ -1089,6 +1111,9 @@ RSpec.describe IsoDoc do
1089
1111
  <div id="Q1">
1090
1112
  <h3>A.1.1. Annex A.1a</h3>
1091
1113
  </div>
1114
+ </div>
1115
+ <div id="Q2">
1116
+ <h2>Appendix 1. An Appendix</h2>
1092
1117
  </div>
1093
1118
  </div>
1094
1119
  <br/>
@@ -1108,6 +1133,7 @@ RSpec.describe IsoDoc do
1108
1133
  it "cross-references lists" do
1109
1134
  expect(IsoDoc::Convert.new({}).convert_file(<<~"INPUT", "test", true)).to be_equivalent_to <<~"OUTPUT"
1110
1135
  <iso-standard xmlns="http://riboseinc.com/isoxml">
1136
+ <preface>
1111
1137
  <foreword>
1112
1138
  <p>
1113
1139
  <xref target="N"/>
@@ -1118,6 +1144,7 @@ RSpec.describe IsoDoc do
1118
1144
  <xref target="Anote2"/>
1119
1145
  </p>
1120
1146
  </foreword>
1147
+ </preface>
1121
1148
  <sections>
1122
1149
  <clause id="scope"><title>Scope</title>
1123
1150
  <ol id="N">
@@ -1126,30 +1153,30 @@ RSpec.describe IsoDoc do
1126
1153
  </clause>
1127
1154
  <terms id="terms"/>
1128
1155
  <clause id="widgets"><title>Widgets</title>
1129
- <subsection id="widgets1">
1156
+ <clause id="widgets1">
1130
1157
  <ol id="note1">
1131
1158
  <p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f">These results are based on a study carried out on three different types of kernel.</p>
1132
1159
  </ol>
1133
1160
  <ol id="note2">
1134
1161
  <p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83a">These results are based on a study carried out on three different types of kernel.</p>
1135
1162
  </ol>
1136
- </subsection>
1163
+ </clause>
1137
1164
  </clause>
1138
1165
  </sections>
1139
1166
  <annex id="annex1">
1140
- <subsection id="annex1a">
1167
+ <clause id="annex1a">
1141
1168
  <ol id="AN">
1142
1169
  <p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f">These results are based on a study carried out on three different types of kernel.</p>
1143
1170
  </ol>
1144
- </subsection>
1145
- <subsection id="annex1b">
1171
+ </clause>
1172
+ <clause id="annex1b">
1146
1173
  <ol id="Anote1">
1147
1174
  <p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f">These results are based on a study carried out on three different types of kernel.</p>
1148
1175
  </ol>
1149
1176
  <ol id="Anote2">
1150
1177
  <p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83a">These results are based on a study carried out on three different types of kernel.</p>
1151
1178
  </ol>
1152
- </subsection>
1179
+ </clause>
1153
1180
  </annex>
1154
1181
  </iso-standard>
1155
1182
  INPUT
@@ -1167,8 +1194,8 @@ RSpec.describe IsoDoc do
1167
1194
  <h1 class="ForewordTitle">Foreword</h1>
1168
1195
  <p>
1169
1196
  <a href="#N">Clause 1, List</a>
1170
- <a href="#note1">4.1, List 1</a>
1171
- <a href="#note2">4.1, List 2</a>
1197
+ <a href="#note1">3.1, List 1</a>
1198
+ <a href="#note2">3.1, List 2</a>
1172
1199
  <a href="#AN">A.1, List</a>
1173
1200
  <a href="#Anote1">A.2, List 1</a>
1174
1201
  <a href="#Anote2">A.2, List 2</a>
@@ -1185,7 +1212,7 @@ RSpec.describe IsoDoc do
1185
1212
  <li><p>A</p></li>
1186
1213
  </ol>
1187
1214
  </div>
1188
- <div id="terms"><h1>3.&#160; Terms and Definitions</h1><p>No terms and definitions are listed in this document.</p>
1215
+ <div id="terms"><h1>2.&#160; Terms and Definitions</h1><p>No terms and definitions are listed in this document.</p>
1189
1216
  <p>ISO and IEC maintain terminological databases for use in
1190
1217
  standardization at the following addresses:</p>
1191
1218
 
@@ -1197,7 +1224,7 @@ RSpec.describe IsoDoc do
1197
1224
  </p> </li> </ul>
1198
1225
  </div>
1199
1226
  <div id="widgets">
1200
- <h1>4.&#160; Widgets</h1>
1227
+ <h1>3.&#160; Widgets</h1>
1201
1228
  <div id="widgets1">
1202
1229
  <ol type="a">
1203
1230
  <p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f">These results are based on a study carried out on three different types of kernel.</p>
@@ -1233,6 +1260,7 @@ RSpec.describe IsoDoc do
1233
1260
  it "cross-references list items" do
1234
1261
  expect(IsoDoc::Convert.new({}).convert_file(<<~"INPUT", "test", true)).to be_equivalent_to <<~"OUTPUT"
1235
1262
  <iso-standard xmlns="http://riboseinc.com/isoxml">
1263
+ <preface>
1236
1264
  <foreword>
1237
1265
  <p>
1238
1266
  <xref target="N"/>
@@ -1243,6 +1271,7 @@ RSpec.describe IsoDoc do
1243
1271
  <xref target="Anote2"/>
1244
1272
  </p>
1245
1273
  </foreword>
1274
+ </preface>
1246
1275
  <sections>
1247
1276
  <clause id="scope"><title>Scope</title>
1248
1277
  <ol id="N1">
@@ -1251,30 +1280,30 @@ RSpec.describe IsoDoc do
1251
1280
  </clause>
1252
1281
  <terms id="terms"/>
1253
1282
  <clause id="widgets"><title>Widgets</title>
1254
- <subsection id="widgets1">
1283
+ <clause id="widgets1">
1255
1284
  <ol id="note1l">
1256
1285
  <li id="note1"><p>A</p></li>
1257
1286
  </ol>
1258
1287
  <ol id="note2l">
1259
1288
  <li id="note2"><p>A</p></li>
1260
1289
  </ol>
1261
- </subsection>
1290
+ </clause>
1262
1291
  </clause>
1263
1292
  </sections>
1264
1293
  <annex id="annex1">
1265
- <subsection id="annex1a">
1294
+ <clause id="annex1a">
1266
1295
  <ol id="ANl">
1267
1296
  <li id="AN"><p>A</p></li>
1268
1297
  </ol>
1269
- </subsection>
1270
- <subsection id="annex1b">
1298
+ </clause>
1299
+ <clause id="annex1b">
1271
1300
  <ol id="Anote1l">
1272
1301
  <li id="Anote1"><p>A</p></li>
1273
1302
  </ol>
1274
1303
  <ol id="Anote2l">
1275
1304
  <li id="Anote2"><p>A</p></li>
1276
1305
  </ol>
1277
- </subsection>
1306
+ </clause>
1278
1307
  </annex>
1279
1308
  </iso-standard>
1280
1309
  INPUT
@@ -1292,8 +1321,8 @@ RSpec.describe IsoDoc do
1292
1321
  <h1 class="ForewordTitle">Foreword</h1>
1293
1322
  <p>
1294
1323
  <a href="#N">Clause 1, a)</a>
1295
- <a href="#note1">4.1, List 1 a)</a>
1296
- <a href="#note2">4.1, List 2 a)</a>
1324
+ <a href="#note1">3.1, List 1 a)</a>
1325
+ <a href="#note2">3.1, List 2 a)</a>
1297
1326
  <a href="#AN">A.1, a)</a>
1298
1327
  <a href="#Anote1">A.2, List 1 a)</a>
1299
1328
  <a href="#Anote2">A.2, List 2 a)</a>
@@ -1310,7 +1339,7 @@ RSpec.describe IsoDoc do
1310
1339
  <li><p>A</p></li>
1311
1340
  </ol>
1312
1341
  </div>
1313
- <div id="terms"><h1>3.&#160; Terms and Definitions</h1><p>No terms and definitions are listed in this document.</p>
1342
+ <div id="terms"><h1>2.&#160; Terms and Definitions</h1><p>No terms and definitions are listed in this document.</p>
1314
1343
  <p>ISO and IEC maintain terminological databases for use in
1315
1344
  standardization at the following addresses:</p>
1316
1345
 
@@ -1322,7 +1351,7 @@ RSpec.describe IsoDoc do
1322
1351
  </p> </li> </ul>
1323
1352
  </div>
1324
1353
  <div id="widgets">
1325
- <h1>4.&#160; Widgets</h1>
1354
+ <h1>3.&#160; Widgets</h1>
1326
1355
  <div id="widgets1">
1327
1356
  <ol type="a">
1328
1357
  <li><p>A</p></li>
@@ -1358,6 +1387,7 @@ RSpec.describe IsoDoc do
1358
1387
  it "cross-references nested list items" do
1359
1388
  expect(IsoDoc::Convert.new({}).convert_file(<<~"INPUT", "test", true)).to be_equivalent_to <<~"OUTPUT"
1360
1389
  <iso-standard xmlns="http://riboseinc.com/isoxml">
1390
+ <preface>
1361
1391
  <foreword>
1362
1392
  <p>
1363
1393
  <xref target="N"/>
@@ -1368,6 +1398,7 @@ RSpec.describe IsoDoc do
1368
1398
  <xref target="Anote2"/>
1369
1399
  </p>
1370
1400
  </foreword>
1401
+ </preface>
1371
1402
  <sections>
1372
1403
  <clause id="scope"><title>Scope</title>
1373
1404
  <ol id="N1">