isodoc 0.5.8 → 0.5.9

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