metanorma-iso 2.1.4 → 2.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: da005628ba019121c2c72d9e74dcfe32dcd01fc555d7cc14d2a9936766375d51
4
- data.tar.gz: 1e415f917d4d2737ecfad1b15bdcb6f4071d2c35df4b8a91e94926d7434c081d
3
+ metadata.gz: d3629dd32172e9b6df3f58715579377d8cf71e989c27b54200f1f562a9892b3d
4
+ data.tar.gz: 5645a46a5e59c5a55543469064124582250ef5b676ced7627d839c120b5f6da2
5
5
  SHA512:
6
- metadata.gz: a7d82b3fe97c1e2ed1a078c335d97b32f16f23f0d0640e97d978ec8fb7b99243f023cc8ef9946f0c5f2a425daa0bb657cf14c61691c1f943b6790645901b08e1
7
- data.tar.gz: faf3e8a9eff4650f60b7a4db80d429e1c7c9b68b9de1e9b708cf0d49030d62b1b62bc2114a581ac09db40c8eae7f97ee81e6f17a8036e3cc0ff62e5067e15dd1
6
+ metadata.gz: b6cdedb8c9ebfd573277b5a757a9599687f3818c3be99cd50e835866b2306846c8d93c4df0fde2a0f29575832f56af3a17f4fb31fc98734df918626a21d9a035
7
+ data.tar.gz: bf939763b17cd5db3c55cfc3f870be2de3892727849073d33785439a113561300fe81941ee4d8ffe02a2cb5712b11b172a7347f5b9209d956f8755dbc4a694ef
@@ -76,7 +76,7 @@ p.NormRef, li.NormRef, div.NormRef {
76
76
  mso-ansi-language: EN-GB; }
77
77
 
78
78
  p.FigureTitle, li.FigureTitle, div.FigureTitle {
79
- mso-style-name: figuretitle;
79
+ mso-style-name: "Figure Title";
80
80
  mso-style-unhide: no;
81
81
  mso-style-qformat: yes;
82
82
  mso-style-parent: "";
@@ -1691,12 +1691,6 @@ div.Example, td.Example {
1691
1691
  margin: 0in;
1692
1692
  margin-bottom: 6.0pt; }
1693
1693
 
1694
- td.Example p.MsoListParagraph {
1695
- font-size: {{smallerfontsize}}; }
1696
-
1697
- div.Example p.MsoListParagraph {
1698
- font-size: {{smallerfontsize}}; }
1699
-
1700
1694
  p.Example, li.Example, div.Example {
1701
1695
  mso-style-unhide: no;
1702
1696
  mso-style-qformat: yes;
@@ -4483,9 +4477,6 @@ span.SpellE {
4483
4477
  mso-style-name: "";
4484
4478
  mso-spl-e: yes; }
4485
4479
 
4486
- div.Note p.MsoListParagraph {
4487
- font-size: {{smallerfontsize}}; }
4488
-
4489
4480
  div.Note span.stem {
4490
4481
  font-size: {{smallerfontsize}}; }
4491
4482
 
@@ -71,7 +71,7 @@ p.NormRef, li.NormRef, div.NormRef
71
71
  mso-bidi-font-family:$bodyfont;
72
72
  mso-ansi-language:EN-GB;}
73
73
  p.FigureTitle, li.FigureTitle, div.FigureTitle
74
- {mso-style-name:figuretitle;
74
+ {mso-style-name:"Figure Title";
75
75
  mso-style-unhide:no;
76
76
  mso-style-qformat:yes;
77
77
  mso-style-parent:"";
@@ -1626,14 +1626,6 @@ div.Example, td.Example {
1626
1626
  margin-bottom:6.0pt;
1627
1627
  }
1628
1628
 
1629
- td.Example p.MsoListParagraph {
1630
- font-size: $smallerfontsize;
1631
- }
1632
-
1633
- div.Example p.MsoListParagraph {
1634
- font-size: $smallerfontsize;
1635
- }
1636
-
1637
1629
  p.Example, li.Example, div.Example
1638
1630
  {
1639
1631
  mso-style-unhide:no;
@@ -4308,10 +4300,6 @@ span.SpellE
4308
4300
  mso-spl-e:yes;}
4309
4301
 
4310
4302
 
4311
- div.Note p.MsoListParagraph {
4312
- font-size: $smallerfontsize;
4313
- }
4314
-
4315
4303
  div.Note span.stem {
4316
4304
  font-size: $smallerfontsize; }
4317
4305
 
@@ -376,6 +376,7 @@ p.SourceTitle {
376
376
  mso-ansi-language: EN-GB; }
377
377
 
378
378
  p.Tabletitle, li.Tabletitle, div.Tabletitle, p.ListTitle {
379
+ mso-style-name: "Table title";
379
380
  mso-style-unhide: no;
380
381
  mso-style-qformat: yes;
381
382
  mso-style-parent: "";
@@ -510,6 +511,7 @@ span.AnnexFigureTitleChar {
510
511
 
511
512
  p.Note, div.Note, li.Note, p.TableFootnote, div.TableFootnote, li.TableFootnote {
512
513
  mso-style-unhide: no;
514
+ mso-style-name: "Note";
513
515
  mso-style-qformat: yes;
514
516
  mso-style-parent: "";
515
517
  margin-top: 0cm;
@@ -1277,7 +1279,7 @@ aside {
1277
1279
  font-size: {{footnotefontsize}}; }
1278
1280
 
1279
1281
  /*
1280
- div.example {
1282
+ div.Example {
1281
1283
  border:solid black .25pt;
1282
1284
  mso-border-alt:solid black .25pt;
1283
1285
  padding:10pt;
@@ -1287,7 +1289,7 @@ div.example {
1287
1289
  }
1288
1290
  */
1289
1291
  /*
1290
- div.example {
1292
+ div.Example {
1291
1293
  margin-left:70.9pt;
1292
1294
  text-indent:-70.9pt;
1293
1295
  }
@@ -1305,12 +1307,6 @@ div.Example, td.Example {
1305
1307
  margin: 0in;
1306
1308
  margin-bottom: 6.0pt; }
1307
1309
 
1308
- td.Example p.MsoListParagraph {
1309
- font-size: {{smallerfontsize}}; }
1310
-
1311
- div.Example p.MsoListParagraph {
1312
- font-size: {{smallerfontsize}}; }
1313
-
1314
1310
  p.Example, li.Example, div.Example {
1315
1311
  mso-style-unhide: no;
1316
1312
  mso-style-qformat: yes;
@@ -1334,9 +1330,6 @@ span.ExampleChar {
1334
1330
  mso-style-link: Example;
1335
1331
  mso-ansi-language: EN-GB; }
1336
1332
 
1337
- div.Note p.MsoListParagraph {
1338
- font-size: {{smallerfontsize}}; }
1339
-
1340
1333
  div.Note span.stem {
1341
1334
  font-size: {{smallerfontsize}}; }
1342
1335
 
@@ -358,7 +358,8 @@ p.SourceTitle
358
358
  mso-bidi-font-family:$bodyfont;
359
359
  mso-ansi-language:EN-GB;}
360
360
  p.Tabletitle, li.Tabletitle, div.Tabletitle, p.ListTitle
361
- {mso-style-unhide:no;
361
+ {mso-style-name:"Table title";
362
+ mso-style-unhide:no;
362
363
  mso-style-qformat:yes;
363
364
  mso-style-parent:"";
364
365
  margin-top:0cm;
@@ -485,6 +486,7 @@ span.AnnexFigureTitleChar
485
486
  font-weight:bold;}
486
487
  p.Note, div.Note, li.Note, p.TableFootnote, div.TableFootnote, li.TableFootnote
487
488
  {mso-style-unhide:no;
489
+ mso-style-name:"Note";
488
490
  mso-style-qformat:yes;
489
491
  mso-style-parent:"";
490
492
  margin-top:0cm;
@@ -1234,7 +1236,7 @@ aside {
1234
1236
  }
1235
1237
 
1236
1238
  /*
1237
- div.example {
1239
+ div.Example {
1238
1240
  border:solid black .25pt;
1239
1241
  mso-border-alt:solid black .25pt;
1240
1242
  padding:10pt;
@@ -1246,7 +1248,7 @@ div.example {
1246
1248
 
1247
1249
 
1248
1250
  /*
1249
- div.example {
1251
+ div.Example {
1250
1252
  margin-left:70.9pt;
1251
1253
  text-indent:-70.9pt;
1252
1254
  }
@@ -1267,14 +1269,6 @@ div.Example, td.Example {
1267
1269
  margin-bottom:6.0pt;
1268
1270
  }
1269
1271
 
1270
- td.Example p.MsoListParagraph {
1271
- font-size: $smallerfontsize;
1272
- }
1273
-
1274
- div.Example p.MsoListParagraph {
1275
- font-size: $smallerfontsize;
1276
- }
1277
-
1278
1272
  p.Example, li.Example, div.Example
1279
1273
  {
1280
1274
  mso-style-unhide:no;
@@ -1300,10 +1294,6 @@ span.ExampleChar
1300
1294
 
1301
1295
 
1302
1296
 
1303
- div.Note p.MsoListParagraph {
1304
- font-size: $smallerfontsize;
1305
- }
1306
-
1307
1297
  div.Note span.stem {
1308
1298
  font-size: $smallerfontsize; }
1309
1299
 
@@ -1,5 +1,5 @@
1
1
  term_def_boilerplate: |
2
- <p>ISO and IEC maintain terminological databases for use in
2
+ <p>ISO and IEC maintain terminology databases for use in
3
3
  standardization at the following addresses:</p>
4
4
 
5
5
  <ul>
@@ -3445,10 +3445,12 @@
3445
3445
  </xsl:attribute-set><xsl:attribute-set name="bibitem-normative-list-body-style">
3446
3446
 
3447
3447
 
3448
+
3448
3449
  </xsl:attribute-set><xsl:attribute-set name="bibitem-non-normative-list-body-style">
3449
3450
 
3450
3451
 
3451
3452
 
3453
+
3452
3454
  </xsl:attribute-set><xsl:attribute-set name="bibitem-note-fn-style">
3453
3455
  <xsl:attribute name="keep-with-previous.within-line">always</xsl:attribute>
3454
3456
  <xsl:attribute name="font-size">65%</xsl:attribute>
@@ -4086,6 +4088,14 @@
4086
4088
 
4087
4089
 
4088
4090
 
4091
+ <xsl:if test="*[local-name()='bookmark']"> <!-- special case: table/bookmark -->
4092
+ <fo:block keep-with-previous="always" line-height="0.1">
4093
+ <xsl:for-each select="*[local-name()='bookmark']">
4094
+ <xsl:call-template name="bookmark"/>
4095
+ </xsl:for-each>
4096
+ </fo:block>
4097
+ </xsl:if>
4098
+
4089
4099
  </fo:block-container>
4090
4100
  </xsl:variable>
4091
4101
 
@@ -7976,7 +7986,7 @@
7976
7986
 
7977
7987
 
7978
7988
  <!-- <xsl:if test="$namespace = 'ieee'">
7979
- <xsl:if test="$doctype = 'standard' and $stage = 'published'">8</xsl:if>
7989
+ <xsl:if test="$current_template = 'standard'">8</xsl:if>
7980
7990
  </xsl:if> -->
7981
7991
 
7982
7992
 
@@ -9305,7 +9315,7 @@
9305
9315
  </xsl:template><xsl:template match="*[local-name() = 'indexsect']//*[local-name() = 'li']/text()">
9306
9316
  <!-- to split by '_' and other chars -->
9307
9317
  <xsl:call-template name="add-zero-spaces-java"/>
9308
- </xsl:template><xsl:template match="*[local-name() = 'bookmark']" name="bookmark">
9318
+ </xsl:template><xsl:template match="*[local-name() = 'table']/*[local-name() = 'bookmark']" priority="2"/><xsl:template match="*[local-name() = 'bookmark']" name="bookmark">
9309
9319
  <!-- <fo:inline id="{@id}" font-size="1pt"/> -->
9310
9320
  <fo:inline id="{@id}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:inline>
9311
9321
  <!-- we need to add zero-width space, otherwise this fo:inline is missing in IF xml -->
@@ -3445,10 +3445,12 @@
3445
3445
  </xsl:attribute-set><xsl:attribute-set name="bibitem-normative-list-body-style">
3446
3446
 
3447
3447
 
3448
+
3448
3449
  </xsl:attribute-set><xsl:attribute-set name="bibitem-non-normative-list-body-style">
3449
3450
 
3450
3451
 
3451
3452
 
3453
+
3452
3454
  </xsl:attribute-set><xsl:attribute-set name="bibitem-note-fn-style">
3453
3455
  <xsl:attribute name="keep-with-previous.within-line">always</xsl:attribute>
3454
3456
  <xsl:attribute name="font-size">65%</xsl:attribute>
@@ -4086,6 +4088,14 @@
4086
4088
 
4087
4089
 
4088
4090
 
4091
+ <xsl:if test="*[local-name()='bookmark']"> <!-- special case: table/bookmark -->
4092
+ <fo:block keep-with-previous="always" line-height="0.1">
4093
+ <xsl:for-each select="*[local-name()='bookmark']">
4094
+ <xsl:call-template name="bookmark"/>
4095
+ </xsl:for-each>
4096
+ </fo:block>
4097
+ </xsl:if>
4098
+
4089
4099
  </fo:block-container>
4090
4100
  </xsl:variable>
4091
4101
 
@@ -7976,7 +7986,7 @@
7976
7986
 
7977
7987
 
7978
7988
  <!-- <xsl:if test="$namespace = 'ieee'">
7979
- <xsl:if test="$doctype = 'standard' and $stage = 'published'">8</xsl:if>
7989
+ <xsl:if test="$current_template = 'standard'">8</xsl:if>
7980
7990
  </xsl:if> -->
7981
7991
 
7982
7992
 
@@ -9305,7 +9315,7 @@
9305
9315
  </xsl:template><xsl:template match="*[local-name() = 'indexsect']//*[local-name() = 'li']/text()">
9306
9316
  <!-- to split by '_' and other chars -->
9307
9317
  <xsl:call-template name="add-zero-spaces-java"/>
9308
- </xsl:template><xsl:template match="*[local-name() = 'bookmark']" name="bookmark">
9318
+ </xsl:template><xsl:template match="*[local-name() = 'table']/*[local-name() = 'bookmark']" priority="2"/><xsl:template match="*[local-name() = 'bookmark']" name="bookmark">
9309
9319
  <!-- <fo:inline id="{@id}" font-size="1pt"/> -->
9310
9320
  <fo:inline id="{@id}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:inline>
9311
9321
  <!-- we need to add zero-width space, otherwise this fo:inline is missing in IF xml -->
@@ -196,6 +196,10 @@ module IsoDoc
196
196
  type
197
197
  end
198
198
 
199
+ def related1(node)
200
+ node.remove
201
+ end
202
+
199
203
  include Init
200
204
  end
201
205
  end
@@ -11,11 +11,10 @@ module IsoDoc
11
11
  end
12
12
  end
13
13
 
14
- # force Annex h2 down to be p.h2Annex, so it is not picked up by ToC
15
14
  def word_annex_cleanup1(docxml, lvl)
16
15
  docxml.xpath("//h#{lvl}[ancestor::*[@class = 'Section3']]").each do |h2|
17
16
  h2.name = "p"
18
- h2["class"] = "h#{lvl}Annex"
17
+ h2["class"] = "a#{lvl}"
19
18
  end
20
19
  end
21
20
 
@@ -37,16 +36,51 @@ module IsoDoc
37
36
 
38
37
  def style_cleanup(docxml)
39
38
  word_annex_cleanup_h1(docxml)
40
- style_cleanup1(docxml)
39
+ figure_style(docxml)
40
+ new_styles(docxml)
41
41
  end
42
42
 
43
- def style_cleanup1(docxml)
44
- docxml.xpath("//*[@class = 'example']").each do |p|
45
- p["class"] = "Example"
43
+ def figure_style(docxml)
44
+ docxml.xpath("//div[@class = 'figure']").each do |f|
45
+ f["style"] ||= ""
46
+ f["style"] += "text-align:center;"
46
47
  end
48
+ end
49
+
50
+ def quote_style(docxml)
51
+ docxml.xpath("//div[@class = 'Quote' or @class = 'Note' or "\
52
+ "@class = 'Example' or @class = 'Admonition']").each do |d|
53
+ quote_style1(d)
54
+ end
55
+ end
56
+
57
+ def quote_style1(div)
58
+ div.xpath(".//li").each do |p|
59
+ p["style"] ||= ""
60
+ p["style"] += "font-size:#{default_fonts({})[:smallerfontsize]};"
61
+ end
62
+ end
63
+
64
+ STYLESMAP = {
65
+ example: "Example",
66
+ note: "Note",
67
+ Sourcecode: "Code",
68
+ tabletitle: "Tabletitle",
69
+ Biblio: "MsoNormal",
70
+ figure: "MsoNormal",
71
+ SourceTitle: "FigureTitle",
72
+ }.freeze
73
+
74
+ def new_styles(docxml)
75
+ STYLESMAP.each do |k, v|
76
+ docxml.xpath("//*[@class = '#{k}']").each { |s| s["class"] = v }
77
+ end
78
+ docxml.xpath("//div[@class = 'Section3']//p[@class = 'Tabletitle']")
79
+ .each { |t| t["class"] = "AnnexTableTitle" }
47
80
  docxml.xpath("//*[@class = 'zzHelp']/p[not(@class)]").each do |p|
48
81
  p["class"] = "zzHelp"
49
82
  end
83
+ quote_style(docxml)
50
84
  end
51
85
 
52
86
  def authority_hdr_cleanup(docxml)
@@ -1,11 +1,6 @@
1
1
  module IsoDoc
2
2
  module Iso
3
3
  class WordDISConvert < WordConvert
4
- def style_cleanup(docxml)
5
- super
6
- dis_styles(docxml)
7
- end
8
-
9
4
  STYLESMAP = {
10
5
  AltTerms: "AdmittedTerm",
11
6
  TableFootnote: "Tablefootnote",
@@ -30,7 +25,7 @@ module IsoDoc
30
25
  zzCopyright1: "zzCopyright",
31
26
  }.freeze
32
27
 
33
- def dis_styles(docxml)
28
+ def new_styles(docxml)
34
29
  STYLESMAP.each do |k, v|
35
30
  docxml.xpath("//*[@class = '#{k}']").each { |s| s["class"] = v }
36
31
  end
@@ -46,8 +41,8 @@ module IsoDoc
46
41
  figure_style(docxml)
47
42
  note_style(docxml)
48
43
  example_style(docxml)
49
- quote_style(docxml)
50
44
  dis_style_interactions(docxml)
45
+ quote_style(docxml)
51
46
  end
52
47
 
53
48
  def dis_style_interactions(docxml)
@@ -68,13 +63,6 @@ module IsoDoc
68
63
  end
69
64
  end
70
65
 
71
- def quote_style(docxml)
72
- docxml.xpath("//div[@class = 'Quote' or @class = 'Note' or "\
73
- "@class = 'Example' or @class = 'Admonition']").each do |d|
74
- quote_style1(d)
75
- end
76
- end
77
-
78
66
  def para_style_change(div, class1, class2)
79
67
  s = class1 ? "@class = '#{class1}'" : "not(@class)"
80
68
  div.xpath(".//p[#{s}]").each do |p|
@@ -2504,6 +2504,16 @@
2504
2504
  <text/>
2505
2505
  </element>
2506
2506
  </optional>
2507
+ <optional>
2508
+ <element name="amendment">
2509
+ <text/>
2510
+ </element>
2511
+ </optional>
2512
+ <optional>
2513
+ <element name="corrigendum">
2514
+ <text/>
2515
+ </element>
2516
+ </optional>
2507
2517
  <optional>
2508
2518
  <element name="language">
2509
2519
  <text/>
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module ISO
3
- VERSION = "2.1.4".freeze
3
+ VERSION = "2.1.5".freeze
4
4
  end
5
5
  end
@@ -126,66 +126,6 @@ RSpec.describe IsoDoc do
126
126
  expect(File.exist?("spec/assets/iso.pdf")).to be true
127
127
  end
128
128
 
129
- it "converts annex subheadings to h2Annex class for Word" do
130
- IsoDoc::Iso::WordConvert
131
- .new(WORD_HTML_CSS.dup)
132
- .convert("test", <<~"INPUT", false)
133
- <iso-standard xmlns="http://riboseinc.com/isoxml">
134
- <annex id="P" inline-header="false" obligation="normative">
135
- <title>Annex</title>
136
- <clause id="Q" inline-header="false" obligation="normative">
137
- <title>A.1
138
- <tab/>
139
- Annex A.1</title>
140
- </clause>
141
- <appendix id="Q2" inline-header="false" obligation="normative">
142
- <title>Appendix 1
143
- <tab/>
144
- An Appendix</title>
145
- </appendix>
146
- </annex>
147
- <bibliography>
148
- <references id="R" normative="false"><title>Bibliography</title></references>
149
- </bibliography>
150
- </iso-standard>
151
- INPUT
152
-
153
- word = File.read("test.doc", encoding: "UTF-8")
154
- .sub(/^.*<div class="WordSection3">/m, '<div class="WordSection3">')
155
- .sub(%r{<br[^>]*>\s*<div class="colophon".*$}m, "")
156
-
157
- expect(xmlpp(word)).to be_equivalent_to xmlpp(<<~"OUTPUT")
158
- <div class="WordSection3">
159
- <p class="zzSTDTitle1"/>
160
- <p class="MsoNormal">
161
- <br clear="all" style="mso-special-character:line-break;page-break-before:always"/>
162
- </p>
163
- <div class="Section3">
164
- <a id="P" name="P"/>
165
- <p class="ANNEX">Annex</p>
166
- <div>
167
- <a id="Q" name="Q"/>
168
- <p class="h2Annex">A.1
169
- <span style="mso-tab-count:1">  </span>
170
- Annex A.1</p>
171
- </div>
172
- <div>
173
- <a id="Q2" name="Q2"/>
174
- <p class="h2Annex">Appendix 1
175
- <span style="mso-tab-count:1">  </span>
176
- An Appendix</p>
177
- </div>
178
- </div>
179
- <p class='MsoNormal'>
180
- <br clear='all' style='mso-special-character:line-break;page-break-before:always'/>
181
- </p>
182
- <div>
183
- <p class='BiblioTitle'>Bibliography</p>
184
- </div>
185
- </div>
186
- OUTPUT
187
- end
188
-
189
129
  it "populates Word template with terms reference labels" do
190
130
  IsoDoc::Iso::WordConvert
191
131
  .new(WORD_HTML_CSS.dup)
@@ -817,7 +757,7 @@ RSpec.describe IsoDoc do
817
757
  </p>
818
758
  <div class="Section3">
819
759
  <a id="P" name="P"/>
820
- <div class="figure">
760
+ <div class="MsoNormal" style='text-align:center;'>
821
761
  <a id="samplecode" name="samplecode"/>
822
762
  <p class="MsoNormal">Hello</p>
823
763
  <p class="MsoNormal">Key</p>
@@ -864,7 +804,7 @@ RSpec.describe IsoDoc do
864
804
  .sub(/^.*<div class="WordSection3">/m, '<div class="WordSection3">')
865
805
  .sub(%r{<br[^>]*>\s*<div class="colophon".*$}m, "")
866
806
  expect(xmlpp(word)).to be_equivalent_to xmlpp(<<~"OUTPUT")
867
- <div class='WordSection3'>
807
+ <div class='WordSection3'>
868
808
  <p class='zzSTDTitle1'/>
869
809
  <p class='MsoNormal'>
870
810
  <br clear='all' style='mso-special-character:line-break;page-break-before:always'/>
@@ -249,4 +249,66 @@ RSpec.describe IsoDoc do
249
249
  .sub(%r{</div>\s*<br.*$}m, "")))
250
250
  .to be_equivalent_to xmlpp(word)
251
251
  end
252
+
253
+ it "processes related terms" do
254
+ input = <<~INPUT
255
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
256
+ <sections>
257
+ <terms id='A' obligation='normative'>
258
+ <title>Terms and definitions</title>
259
+ <term id='second'>
260
+ <preferred>
261
+ <expression>
262
+ <name>Second Term</name>
263
+ </expression>
264
+ <field-of-application>Field</field-of-application>
265
+ <usage-info>Usage Info 1</usage-info>
266
+ </preferred>
267
+ <definition><verbal-definition>Definition 1</verbal-definition></definition>
268
+ </term>
269
+ <term id="C">
270
+ <preferred language='fr' script='Latn' type='prefix'>
271
+ <expression>
272
+ <name>First Designation</name>
273
+ </expression></preferred>
274
+ <related type='contrast'>
275
+ <preferred>
276
+ <expression>
277
+ <name>Fifth Designation</name>
278
+ <grammar>
279
+ <gender>neuter</gender>
280
+ </grammar>
281
+ </expression>
282
+ </preferred>
283
+ <xref target='second'/>
284
+ </related>
285
+ <definition><verbal-definition>Definition 2</verbal-definition></definition>
286
+ </term>
287
+ </terms>
288
+ </sections>
289
+ </iso-standard>
290
+ INPUT
291
+ output = <<~OUTPUT
292
+ <?xml version='1.0'?>
293
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type='presentation'>
294
+ <sections>
295
+ <terms id='A' obligation='normative' displayorder='1'>
296
+ <title depth='1'>1<tab/>Terms and definitions</title>
297
+ <term id='second'>
298
+ <name>1.1</name>
299
+ <preferred><strong>Second Term</strong>, &#x3c;Field, Usage Info 1&#x3e;</preferred>
300
+ <definition>Definition 1</definition>
301
+ </term>
302
+ <term id='C'>
303
+ <name>1.2</name>
304
+ <preferred language='fr' script='Latn' type='prefix'><strong>First Designation</strong></preferred>
305
+ <definition>Definition 2</definition>
306
+ </term>
307
+ </terms>
308
+ </sections>
309
+ </iso-standard>
310
+ OUTPUT
311
+ expect(xmlpp(IsoDoc::Iso::PresentationXMLConvert.new({})
312
+ .convert("test", input, true))).to be_equivalent_to xmlpp(output)
313
+ end
252
314
  end