isodoc 1.7.7 → 1.8.2.1

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/isodoc.gemspec +2 -2
  3. data/lib/isodoc/class_utils.rb +1 -1
  4. data/lib/isodoc/convert.rb +8 -0
  5. data/lib/isodoc/function/cleanup.rb +4 -0
  6. data/lib/isodoc/function/inline.rb +3 -5
  7. data/lib/isodoc/html_function/html.rb +1 -0
  8. data/lib/isodoc/html_function/postprocess.rb +4 -6
  9. data/lib/isodoc/metadata_date.rb +13 -11
  10. data/lib/isodoc/presentation_function/bibdata.rb +2 -2
  11. data/lib/isodoc/presentation_function/block.rb +0 -36
  12. data/lib/isodoc/presentation_function/inline.rb +2 -3
  13. data/lib/isodoc/presentation_function/terms.rb +223 -0
  14. data/lib/isodoc/presentation_xml_convert.rb +11 -4
  15. data/lib/isodoc/version.rb +1 -1
  16. data/lib/isodoc/word_function/body.rb +24 -14
  17. data/lib/isodoc/word_function/comments.rb +0 -4
  18. data/lib/isodoc/word_function/postprocess.rb +184 -176
  19. data/lib/isodoc/xref/xref_gen.rb +18 -22
  20. data/lib/isodoc/xref/xref_gen_seq.rb +10 -16
  21. data/lib/isodoc/xslfo_convert.rb +9 -6
  22. data/lib/isodoc-yaml/i18n-ar.yaml +25 -0
  23. data/lib/isodoc-yaml/i18n-de.yaml +23 -0
  24. data/lib/isodoc-yaml/i18n-en.yaml +23 -0
  25. data/lib/isodoc-yaml/i18n-es.yaml +23 -0
  26. data/lib/isodoc-yaml/i18n-fr.yaml +23 -0
  27. data/lib/isodoc-yaml/i18n-ru.yaml +24 -1
  28. data/lib/isodoc-yaml/i18n-zh-Hans.yaml +24 -0
  29. data/lib/metanorma/output/xslfo.rb +4 -11
  30. data/spec/isodoc/blocks_spec.rb +14 -8
  31. data/spec/isodoc/i18n_spec.rb +20 -15
  32. data/spec/isodoc/inline_spec.rb +71 -3
  33. data/spec/isodoc/lists_spec.rb +344 -222
  34. data/spec/isodoc/section_spec.rb +23 -22
  35. data/spec/isodoc/table_spec.rb +71 -73
  36. data/spec/isodoc/terms_spec.rb +498 -124
  37. data/spec/isodoc/xref_numbering_spec.rb +347 -0
  38. data/spec/isodoc/xref_spec.rb +274 -353
  39. data/spec/isodoc/xslfo_convert_spec.rb +20 -7
  40. metadata +12 -11
  41. data/lib/isodoc/presentation_function/concept.rb +0 -68
@@ -93,6 +93,29 @@ locality: {
93
93
  note: Hinweis,
94
94
  formula: Formel
95
95
  }
96
+ grammar_abbrevs:
97
+ masculine: mask
98
+ feminine: fem
99
+ neuter: neutr
100
+ common: gemein
101
+ singular: Sg
102
+ dual: Dual
103
+ plural: Pl
104
+ isPreposition: Präp
105
+ isParticiple: Part
106
+ isAdjective: Adj
107
+ isAdverb: Adv
108
+ isNoun: Subs
109
+ isVerb: V
110
+ relatedterms:
111
+ deprecates: veraltet
112
+ supersedes: ersetzt
113
+ narrower: enger
114
+ broader: breiter
115
+ equivalent: entspricht
116
+ compare: vergleiche
117
+ contrast: dagegen
118
+ see: siehe
96
119
  inflection:
97
120
  Klausel:
98
121
  sg: Klausel
@@ -99,6 +99,29 @@ locality: {
99
99
  note: Note,
100
100
  formula: Formula
101
101
  }
102
+ grammar_abbrevs:
103
+ masculine: m
104
+ feminine: f
105
+ neuter: n
106
+ common: common
107
+ singular: sg
108
+ dual: dual
109
+ pl: pl
110
+ isPreposition: prep
111
+ isParticiple: part
112
+ isAdjective: adj
113
+ isAdverb: adv
114
+ isNoun: noun
115
+ isVerb: verb
116
+ relatedterms:
117
+ deprecates: deprecates
118
+ supersedes: supersedes
119
+ narrower: narrower
120
+ broader: broader
121
+ equivalent: equivalent
122
+ compare: compare
123
+ contrast: contrast
124
+ see: see
102
125
  inflection:
103
126
  Clause:
104
127
  sg: Clause
@@ -95,6 +95,29 @@ locality: {
95
95
  note: Nota,
96
96
  formula: Fórmula
97
97
  }
98
+ grammar_abbrevs:
99
+ masculine: masc
100
+ feminine: fem
101
+ neuter: neut
102
+ common: epicen@
103
+ singular: sg
104
+ dual: dual
105
+ plural: pl
106
+ isPreposition: prep
107
+ isParticiple: part
108
+ isAdjective: adj
109
+ isAdverb: adv
110
+ isNoun: sust
111
+ isVerb: v
112
+ relatedterms:
113
+ deprecates: obsoleto
114
+ supersedes: reemplaza
115
+ narrower: incluye
116
+ broader: extiende
117
+ equivalent: equivalente
118
+ compare: relacionado
119
+ contrast: difiere
120
+ see: véase
98
121
  inflection:
99
122
  Cláusula:
100
123
  sg: Cláusula
@@ -92,6 +92,29 @@ locality: {
92
92
  note: Note,
93
93
  formula: Formule
94
94
  }
95
+ grammar_abbrevs:
96
+ masculine: masc
97
+ feminine: fem
98
+ neuter: neut
99
+ common: épicène
100
+ singular: sg
101
+ dual: duel
102
+ plural: pl
103
+ isPreposition: prép
104
+ isParticiple: part
105
+ isAdjective: adj
106
+ isAdverb: adv
107
+ isNoun: subst
108
+ isVerb: vb
109
+ relatedterms:
110
+ deprecates: déprécie
111
+ supersedes: remplace
112
+ narrower: plus étroit
113
+ broader: plus large
114
+ equivalent: équivalent
115
+ compare: comparez
116
+ contrast: contrastez
117
+ see: voir
95
118
  inflection:
96
119
  Clause:
97
120
  sg: Article
@@ -97,7 +97,30 @@ locality: {
97
97
  example: Пример,
98
98
  note: Примечание,
99
99
  formula: Формула
100
- }
100
+ }
101
+ grammar_abbrevs:
102
+ masculine: муж
103
+ feminine: жен
104
+ neuter: ср
105
+ common: общего рода
106
+ singular: ед
107
+ dual: дв
108
+ plural: мн
109
+ isPreposition: предл
110
+ isParticiple: прич
111
+ isAdjective: прил
112
+ isAdverb: нар
113
+ isNoun: сущ
114
+ isVerb: глаг
115
+ relatedterms:
116
+ deprecates: устаревший
117
+ supersedes: заменяет
118
+ narrower: более узкий
119
+ broader: более широкий
120
+ equivalent: эквивалент
121
+ compare: наравне
122
+ contrast: противоположный
123
+ see: см.
101
124
  inflection:
102
125
  Пункт:
103
126
  sg: Пункт
@@ -93,3 +93,27 @@ locality: {
93
93
  example: 示例,
94
94
  note: 注
95
95
  }
96
+ grammar_abbrevs:
97
+ masculine: 男性性别
98
+ feminine: 阴性
99
+ neuter: 中性的
100
+ common: 通性
101
+ singular: 单数
102
+ dual: 双
103
+ plural: 复数
104
+ isPreposition: 介词
105
+ isParticiple: 分词
106
+ isAdjective: 形容词
107
+ isAdverb: 副词
108
+ isNoun: 名词
109
+ isVerb: 动词
110
+ relatedterms:
111
+ deprecates: 旧词
112
+ supersedes: 取替
113
+ narrower: 狭义
114
+ broader: 广义
115
+ equivalent: 同义
116
+ compare: 比较
117
+ contrast: 对比
118
+ see: 见
119
+
@@ -1,21 +1,14 @@
1
- require 'mn2pdf'
2
- require_relative "./utils.rb"
1
+ require "mn2pdf"
2
+ require_relative "./utils"
3
3
 
4
4
  module Metanorma
5
5
  module Output
6
6
  class XslfoPdf < Base
7
- def convert(url_path, output_path, xsl_stylesheet, options = "")
7
+ def convert(url_path, output_path, xsl_stylesheet, options = {})
8
8
  return if url_path.nil? || output_path.nil? || xsl_stylesheet.nil?
9
9
 
10
- Mn2pdf.convert(quote(url_path), quote(output_path), quote(xsl_stylesheet), options)
11
- end
12
-
13
- def quote(x)
14
- return x if /^'.*'$/.match(x)
15
- return x if /^".*"$/.match(x)
16
- %("#{x}")
10
+ Mn2pdf.convert(url_path, output_path, xsl_stylesheet, options)
17
11
  end
18
12
  end
19
13
  end
20
14
  end
21
-
@@ -809,8 +809,11 @@ RSpec.describe IsoDoc do
809
809
  expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
810
810
  .convert("test", input, true)
811
811
  .gsub(/&lt;/, "&#x3c;")
812
- .gsub(%r{data:application/x-msmetafile[^"']+}, 'data:application/x-msmetafile')
813
- )).to be_equivalent_to xmlpp(presxml.gsub(%r{data:application/x-msmetafile[^"']+}, 'data:application/x-msmetafile'))
812
+ .gsub(%r{data:application/x-msmetafile[^"']+},
813
+ "data:application/x-msmetafile")))
814
+ .to be_equivalent_to xmlpp(presxml
815
+ .gsub(%r{data:application/x-msmetafile[^"']+},
816
+ "data:application/x-msmetafile"))
814
817
  expect(xmlpp(strip_guid(IsoDoc::HtmlConvert.new({})
815
818
  .convert("test", presxml, true)))).to be_equivalent_to xmlpp(html)
816
819
  expect(xmlpp(strip_guid(IsoDoc::WordConvert.new({})
@@ -900,9 +903,11 @@ RSpec.describe IsoDoc do
900
903
  expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
901
904
  .convert("test", input, true)
902
905
  .gsub(/&lt;/, "&#x3c;")
903
- .gsub(%r{data:application/x-msmetafile[^"']+}, 'data:application/x-msmetafile')))
906
+ .gsub(%r{data:application/x-msmetafile[^"']+},
907
+ "data:application/x-msmetafile")))
904
908
  .to be_equivalent_to xmlpp(presxml
905
- .gsub( %r{data:application/x-msmetafile[^"']+}, 'data:application/x-msmetafile'))
909
+ .gsub(%r{data:application/x-msmetafile[^"']+},
910
+ "data:application/x-msmetafile"))
906
911
  expect(xmlpp(strip_guid(IsoDoc::WordConvert.new({})
907
912
  .convert("test", presxml, true)
908
913
  .gsub(/['"][^'".]+(?<!odf1)(?<!odf)\.emf['"]/, "'_.emf'")
@@ -991,9 +996,11 @@ RSpec.describe IsoDoc do
991
996
  expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
992
997
  .convert("test", input, true)
993
998
  .gsub(/&lt;/, "&#x3c;")
994
- .gsub(%r{data:application/x-msmetafile[^"']+}, 'data:application/x-msmetafile')))
999
+ .gsub(%r{data:application/x-msmetafile[^"']+},
1000
+ "data:application/x-msmetafile")))
995
1001
  .to be_equivalent_to xmlpp(presxml
996
- .gsub( %r{data:application/x-msmetafile[^"']+}, 'data:application/x-msmetafile'))
1002
+ .gsub(%r{data:application/x-msmetafile[^"']+},
1003
+ "data:application/x-msmetafile"))
997
1004
  expect(xmlpp(strip_guid(IsoDoc::WordConvert.new({})
998
1005
  .convert("test", presxml, true)
999
1006
  .gsub(/['"][^'".]+(?<!odf1)(?<!odf)\.svg['"]/, "'_.svg'")
@@ -2521,8 +2528,7 @@ RSpec.describe IsoDoc do
2521
2528
  .convert("test", input, true))
2522
2529
  .sub(%r{<localized-strings>.*</localized-strings>}m, "")
2523
2530
  .gsub(%r{"\.\\}, '"./')
2524
- .gsub(%r{'\.\\}, "'./")
2525
- )
2531
+ .gsub(%r{'\.\\}, "'./"))
2526
2532
  .to be_equivalent_to xmlpp(output)
2527
2533
  end
2528
2534
 
@@ -24,7 +24,7 @@ RSpec.describe IsoDoc do
24
24
  <clause id="H" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
25
25
  <title>Normal Terms</title>
26
26
  <term id="J">
27
- <preferred>Term2</preferred>
27
+ <preferred><expression><name>Term2</name></expression></preferred>
28
28
  </term>
29
29
  </terms>
30
30
  <definitions id="K">
@@ -88,7 +88,7 @@ RSpec.describe IsoDoc do
88
88
  <clause id="H" obligation="normative" displayorder="5"><title depth="1">3.<tab/>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
89
89
  <title depth="2">3.1.<tab/>Normal Terms</title>
90
90
  <term id="J"><name>3.1.1.</name>
91
- <preferred>Term2</preferred>
91
+ <preferred><strong>Term2</strong></preferred>
92
92
  </term>
93
93
  </terms>
94
94
  <definitions id="K"><title>3.2.</title>
@@ -159,7 +159,7 @@ RSpec.describe IsoDoc do
159
159
  <div id="I">
160
160
  <h2>3.1.&#160; Normal Terms</h2>
161
161
  <p class="TermNum" id="J">3.1.1.</p>
162
- <p class="Terms" style="text-align:left;">Term2</p>
162
+ <p class="Terms" style="text-align:left;"><b>Term2</b></p>
163
163
  </div><div id="K"><h2>3.2.</h2>
164
164
  <dl><dt><p>Symbol</p></dt><dd>Definition</dd></dl>
165
165
  </div></div>
@@ -211,7 +211,7 @@ RSpec.describe IsoDoc do
211
211
  end
212
212
 
213
213
  it "defaults to English" do
214
- expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true).sub(%r{<localized-strings>.*</localized-strings>}m, ""))).to be_equivalent_to xmlpp(<<~"OUTPUT")
214
+ input = <<~INPUT
215
215
  <iso-standard xmlns="http://riboseinc.com/isoxml">
216
216
  <bibdata>
217
217
  <language>tlh</language>
@@ -233,7 +233,7 @@ RSpec.describe IsoDoc do
233
233
  <clause id="H" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
234
234
  <title>Normal Terms</title>
235
235
  <term id="J">
236
- <preferred>Term2</preferred>
236
+ <preferred><expression><name>Term2</name></expression></preferred>
237
237
  </term>
238
238
  </terms>
239
239
  <definitions id="K">
@@ -275,6 +275,7 @@ RSpec.describe IsoDoc do
275
275
  </bibliography>
276
276
  </iso-standard>
277
277
  INPUT
278
+ output = <<~OUTPUT
278
279
  <iso-standard xmlns="http://riboseinc.com/isoxml" type="presentation">
279
280
  <bibdata>
280
281
  <language current="true">tlh</language>
@@ -295,7 +296,7 @@ RSpec.describe IsoDoc do
295
296
  <clause id="H" obligation="normative" displayorder="5"><title depth="1">3.<tab/>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
296
297
  <title depth="2">3.1.<tab/>Normal Terms</title>
297
298
  <term id="J"><name>3.1.1.</name>
298
- <preferred>Term2</preferred>
299
+ <preferred><strong>Term2</strong></preferred>
299
300
  </term>
300
301
  </terms>
301
302
  <definitions id="K"><title>3.2.</title>
@@ -336,6 +337,10 @@ RSpec.describe IsoDoc do
336
337
  </bibliography>
337
338
  </iso-standard>
338
339
  OUTPUT
340
+ expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
341
+ .convert("test", input, true)
342
+ .sub(%r{<localized-strings>.*</localized-strings>}m, "")))
343
+ .to be_equivalent_to xmlpp(output)
339
344
  end
340
345
 
341
346
  it "processes French" do
@@ -361,7 +366,7 @@ RSpec.describe IsoDoc do
361
366
  <clause id="H" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
362
367
  <title>Normal Terms</title>
363
368
  <term id="J">
364
- <preferred>Term2</preferred>
369
+ <preferred><expression><name>Term2</name></expression></preferred>
365
370
  </term>
366
371
  </terms>
367
372
  <definitions id="K">
@@ -425,7 +430,7 @@ RSpec.describe IsoDoc do
425
430
  <clause id="H" obligation="normative" displayorder="5"><title depth="1">3.<tab/>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
426
431
  <title depth="2">3.1.<tab/>Normal Terms</title>
427
432
  <term id="J"><name>3.1.1.</name>
428
- <preferred>Term2</preferred>
433
+ <preferred><strong>Term2</strong></preferred>
429
434
  </term>
430
435
  </terms>
431
436
  <definitions id="K"><title>3.2.</title>
@@ -496,7 +501,7 @@ RSpec.describe IsoDoc do
496
501
  <div id="I">
497
502
  <h2>3.1.&#160; Normal Terms</h2>
498
503
  <p class="TermNum" id="J">3.1.1.</p>
499
- <p class="Terms" style="text-align:left;">Term2</p>
504
+ <p class="Terms" style="text-align:left;"><b>Term2</b></p>
500
505
  </div><div id="K"><h2>3.2.</h2>
501
506
  <dl><dt><p>Symbol</p></dt><dd>Definition</dd></dl>
502
507
  </div></div>
@@ -570,7 +575,7 @@ RSpec.describe IsoDoc do
570
575
  <clause id="H" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
571
576
  <title>Normal Terms</title>
572
577
  <term id="J">
573
- <preferred>Term2</preferred>
578
+ <preferred><expression><name>Term2</name></expression></preferred>
574
579
  </term>
575
580
  </terms>
576
581
  <definitions id="K">
@@ -644,7 +649,7 @@ RSpec.describe IsoDoc do
644
649
  <clause id="H" obligation="normative" displayorder="5"><title depth="1">3.<tab/>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
645
650
  <title depth="2">3.1.<tab/>Normal Terms</title>
646
651
  <term id="J"><name>3.1.1.</name>
647
- <preferred>Term2</preferred>
652
+ <preferred><strong>Term2</strong></preferred>
648
653
  </term>
649
654
  </terms>
650
655
  <definitions id="K"><title>3.2.</title>
@@ -728,7 +733,7 @@ RSpec.describe IsoDoc do
728
733
  <div id="I">
729
734
  <h2>3.1.&#12288;Normal Terms</h2>
730
735
  <p class="TermNum" id="J">3.1.1.</p>
731
- <p class="Terms" style="text-align:left;">Term2</p>
736
+ <p class="Terms" style="text-align:left;"><b>Term2</b></p>
732
737
  </div><div id="K"><h2>3.2.</h2>
733
738
  <dl><dt><p>Symbol</p></dt><dd>Definition</dd></dl>
734
739
  </div></div>
@@ -812,7 +817,7 @@ RSpec.describe IsoDoc do
812
817
  <clause id="H" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
813
818
  <title>Normal Terms</title>
814
819
  <term id="J">
815
- <preferred>Term2</preferred>
820
+ <preferred><expression><name>Term2</name></expression></preferred>
816
821
  </term>
817
822
  </terms>
818
823
  <definitions id="K">
@@ -896,7 +901,7 @@ RSpec.describe IsoDoc do
896
901
  <clause id="H" obligation="normative" displayorder="5"><title depth="1">3.<tab/>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
897
902
  <title depth="2">3.1.<tab/>Normal Terms</title>
898
903
  <term id="J"><name>3.1.1.</name>
899
- <preferred>Term2</preferred>
904
+ <preferred><strong>Term2</strong></preferred>
900
905
  </term>
901
906
  </terms>
902
907
  <definitions id="K"><title>3.2.</title>
@@ -1002,7 +1007,7 @@ RSpec.describe IsoDoc do
1002
1007
  <div id='I'>
1003
1008
  <h2>3.1.&#160; Normal Terms</h2>
1004
1009
  <p class='TermNum' id='J'>3.1.1.</p>
1005
- <p class='Terms' style='text-align:left;'>Term2</p>
1010
+ <p class='Terms' style='text-align:left;'><b>Term2</b></p>
1006
1011
  </div>
1007
1012
  <div id='K'>
1008
1013
  <h2>3.2.</h2>
@@ -625,6 +625,74 @@ RSpec.describe IsoDoc do
625
625
  .convert("test", presxml, true))).to be_equivalent_to xmlpp(output)
626
626
  end
627
627
 
628
+ it "processes related terms" do
629
+ input = <<~INPUT
630
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
631
+ <sections>
632
+ <terms id='A' obligation='normative'>
633
+ <title>Terms and definitions</title>
634
+ <term id='second'>
635
+ <preferred>
636
+ <expression>
637
+ <name>Second Term</name>
638
+ </expression>
639
+ <field-of-application>Field</field-of-application>
640
+ <usage-info>Usage Info 1</usage-info>
641
+ </preferred>
642
+ <definition><verbal-definition>Definition 1</verbal-definition></definition>
643
+ </term>
644
+ <term id="C">
645
+ <preferred language='fr' script='Latn' type='prefix'>
646
+ <expression>
647
+ <name>First Designation</name>
648
+ </expression></preferred>
649
+ <related type='contrast'>
650
+ <preferred>
651
+ <expression>
652
+ <name>Fifth Designation</name>
653
+ <grammar>
654
+ <gender>neuter</gender>
655
+ </grammar>
656
+ </expression>
657
+ </preferred>
658
+ <xref target='second'/>
659
+ </related>
660
+ <definition><verbal-definition>Definition 2</verbal-definition></definition>
661
+ </term>
662
+ </terms>
663
+ </sections>
664
+ </iso-standard>
665
+ INPUT
666
+ output = <<~OUTPUT
667
+ <?xml version='1.0'?>
668
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type='presentation'>
669
+ <sections>
670
+ <terms id='A' obligation='normative' displayorder='1'>
671
+ <title depth='1'>1.<tab/>Terms and definitions</title>
672
+ <term id='second'>
673
+ <name>1.1.</name>
674
+ <preferred><strong>Second Term, &lt;Field, Usage Info 1&gt;</strong></preferred>
675
+ <definition>Definition 1</definition>
676
+ </term>
677
+ <term id='C'>
678
+ <name>1.2.</name>
679
+ <preferred language='fr' script='Latn' type='prefix'><strong>First Designation</strong></preferred>
680
+ <p>
681
+ <strong>CONTRAST:</strong>
682
+ <em>
683
+ <preferred><strong>Fifth Designation</strong>, n</preferred>
684
+ </em> (<xref target='second'>Clause 1.1</xref>)
685
+ </p>
686
+ <definition>Definition 2</definition>
687
+ </term>
688
+ </terms>
689
+ </sections>
690
+ </iso-standard>
691
+ OUTPUT
692
+ expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
693
+ .convert("test", input, true))).to be_equivalent_to xmlpp(output)
694
+ end
695
+
628
696
  it "processes embedded inline formatting" do
629
697
  input = <<~INPUT
630
698
  <iso-standard xmlns="http://riboseinc.com/isoxml">
@@ -724,9 +792,9 @@ RSpec.describe IsoDoc do
724
792
  <iso-standard xmlns="http://riboseinc.com/isoxml">
725
793
  <preface><foreword>
726
794
  <p>
727
- <link updatetype="true" target="http://example.com"/>
728
- <link updatetype="true" target="list.adoc">example</link>
729
- <link updatetype="true" target="list" alt="tip">example</link>
795
+ <link update-type="true" target="http://example.com"/>
796
+ <link update-type="true" target="list.adoc">example</link>
797
+ <link update-type="true" target="list" alt="tip">example</link>
730
798
  </p>
731
799
  </foreword></preface>
732
800
  <sections>