metanorma-iso 1.7.0 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +11 -41
  3. data/.gitignore +2 -0
  4. data/.rubocop.yml +6 -2
  5. data/lib/asciidoctor/iso/base.rb +12 -12
  6. data/lib/asciidoctor/iso/biblio.rng +4 -6
  7. data/lib/asciidoctor/iso/cleanup.rb +1 -1
  8. data/lib/asciidoctor/iso/front.rb +1 -1
  9. data/lib/asciidoctor/iso/front_id.rb +30 -25
  10. data/lib/asciidoctor/iso/isodoc.rng +235 -3
  11. data/lib/asciidoctor/iso/isostandard-amd.rng +3 -0
  12. data/lib/asciidoctor/iso/isostandard.rng +17 -97
  13. data/lib/asciidoctor/iso/validate.rb +1 -0
  14. data/lib/asciidoctor/iso/validate_title.rb +21 -13
  15. data/lib/isodoc/iso/base_convert.rb +11 -0
  16. data/lib/isodoc/iso/html/style-human.css +7 -0
  17. data/lib/isodoc/iso/html/style-iso.css +7 -0
  18. data/lib/isodoc/iso/html_convert.rb +0 -1
  19. data/lib/isodoc/iso/i18n-en.yaml +4 -0
  20. data/lib/isodoc/iso/i18n-fr.yaml +4 -0
  21. data/lib/isodoc/iso/i18n-zh-Hans.yaml +4 -0
  22. data/lib/isodoc/iso/index.rb +140 -0
  23. data/lib/isodoc/iso/iso.amendment.xsl +1010 -324
  24. data/lib/isodoc/iso/iso.international-standard.xsl +1010 -324
  25. data/lib/isodoc/iso/presentation_xml_convert.rb +32 -25
  26. data/lib/isodoc/iso/word_convert.rb +0 -1
  27. data/lib/isodoc/iso/xref.rb +13 -5
  28. data/lib/metanorma/iso/version.rb +1 -1
  29. data/metanorma-iso.gemspec +8 -8
  30. data/spec/asciidoctor/amd_spec.rb +696 -0
  31. data/spec/asciidoctor/base_spec.rb +704 -0
  32. data/spec/asciidoctor/blocks_spec.rb +527 -0
  33. data/spec/asciidoctor/cleanup_spec.rb +1134 -0
  34. data/spec/asciidoctor/inline_spec.rb +195 -0
  35. data/spec/asciidoctor/lists_spec.rb +197 -0
  36. data/spec/asciidoctor/refs_spec.rb +375 -0
  37. data/spec/asciidoctor/section_spec.rb +393 -0
  38. data/spec/asciidoctor/table_spec.rb +329 -0
  39. data/spec/asciidoctor/validate_spec.rb +1572 -0
  40. data/spec/isodoc/amd_spec.rb +967 -946
  41. data/spec/isodoc/blocks_spec.rb +530 -507
  42. data/spec/isodoc/i18n_spec.rb +953 -911
  43. data/spec/isodoc/inline_spec.rb +355 -293
  44. data/spec/isodoc/iso_spec.rb +338 -314
  45. data/spec/isodoc/metadata_spec.rb +392 -382
  46. data/spec/isodoc/postproc_spec.rb +837 -657
  47. data/spec/isodoc/ref_spec.rb +374 -331
  48. data/spec/isodoc/section_spec.rb +821 -519
  49. data/spec/isodoc/table_spec.rb +472 -411
  50. data/spec/isodoc/terms_spec.rb +209 -185
  51. data/spec/isodoc/xref_spec.rb +1370 -1236
  52. data/spec/metanorma/processor_spec.rb +28 -26
  53. data/spec/spec_helper.rb +186 -189
  54. metadata +65 -67
  55. data/.rubocop.ribose.yml +0 -66
  56. data/lib/isodoc/iso/html/scripts.html +0 -178
  57. data/spec/asciidoctor-iso/amd_spec.rb +0 -694
  58. data/spec/asciidoctor-iso/base_spec.rb +0 -713
  59. data/spec/asciidoctor-iso/blocks_spec.rb +0 -482
  60. data/spec/asciidoctor-iso/cleanup_spec.rb +0 -1025
  61. data/spec/asciidoctor-iso/inline_spec.rb +0 -170
  62. data/spec/asciidoctor-iso/lists_spec.rb +0 -190
  63. data/spec/asciidoctor-iso/refs_spec.rb +0 -317
  64. data/spec/asciidoctor-iso/section_spec.rb +0 -362
  65. data/spec/asciidoctor-iso/table_spec.rb +0 -313
  66. data/spec/asciidoctor-iso/validate_spec.rb +0 -1619
  67. data/spec/assets/xref_error.adoc +0 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4ec4ec662c484d537eb81f3942a322462babc6f46faa2a4842cb3dd0d933a23a
4
- data.tar.gz: 1967914fa124dbe03b21d008f615bb84f576665bf7562d85ef4740bf56d953c3
3
+ metadata.gz: 2e2e7e19a42e3aeb8a036946cd7a312df8887f9a68a9f0b159399c4a2285f636
4
+ data.tar.gz: 229cbacc6397cdf692b6294d4f46b88a22ad39a18b80e29be3d85f37c1eeb203
5
5
  SHA512:
6
- metadata.gz: bbd9e8c580bc90dc62eb14bee46daecd43519b76028f80bb13d7076ad34ce5f1ccfe6cac8159d13ecf08aa82c7afb4a8560ea1d74bd442e2387f03afe1ce0491
7
- data.tar.gz: 240233e6a5eca387b2def2da7660524f28bb11ddbe6d5ee61b9cf829f1baf9ee547ecb411626efa52b8b129434d31e2228a2f7c4c30bacbcf336893ada0f239c
6
+ metadata.gz: bcfbfd49e84b5127ccb0f4cca2777803ea5a560e60267ccd8e077c7a8b68052f38499a2662f3dfea06641f2a8f278525ebc0118ccef63715bf6e4e1f90badbde
7
+ data.tar.gz: 003f5ae00770eeb488ca7adf2c13a611bb8a79425f223f07ed765fc5b2333e2700c7e27fa720ce8cfbcfd55750dd633f1f035f46026e792cab5d0fa0c83e7c72
@@ -16,17 +16,17 @@ jobs:
16
16
  strategy:
17
17
  fail-fast: false
18
18
  matrix:
19
- ruby: [ '2.6', '2.5', '2.4' ]
19
+ ruby: [ '2.7', '2.6', '2.5', '2.4' ]
20
20
  os: [ ubuntu-latest, windows-latest, macos-latest ]
21
21
  experimental: [ false ]
22
22
  include:
23
- - ruby: '2.7'
23
+ - ruby: '3.0'
24
24
  os: 'ubuntu-latest'
25
25
  experimental: true
26
- - ruby: '2.7'
26
+ - ruby: '3.0'
27
27
  os: 'windows-latest'
28
28
  experimental: true
29
- - ruby: '2.7'
29
+ - ruby: '3.0'
30
30
  os: 'macos-latest'
31
31
  experimental: true
32
32
  steps:
@@ -35,49 +35,19 @@ jobs:
35
35
  - uses: ruby/setup-ruby@v1
36
36
  with:
37
37
  ruby-version: ${{ matrix.ruby }}
38
+ bundler-cache: true
38
39
 
39
- - if: matrix.os == 'macos-latest'
40
- run: brew install autoconf automake libtool
41
-
42
- - uses: actions/cache@v2
43
- with:
44
- path: vendor/bundle
45
- key: bundle-${{ matrix.os }}-${{ matrix.ruby }}-${{ hashFiles('**/*.gemspec') }}
46
- restore-keys: bundle-${{ matrix.os }}-${{ matrix.ruby }}
47
-
48
- - run: bundle config set path 'vendor/bundle'
49
-
50
- - run: bundle install --jobs 4 --retry 3
51
-
52
- - name: install plantuml ubuntu
53
- if: matrix.os == 'ubuntu-latest'
54
- uses: nick-invision/retry@v1
55
- with:
56
- polling_interval_seconds: 5
57
- timeout_minutes: 5
58
- max_attempts: 3
59
- command: >
60
- sudo apt-get update -y && sudo bash -c
61
- "curl -L https://github.com/metanorma/plantuml-install/raw/master/ubuntu.sh | bash"
62
-
63
- - if: matrix.os == 'macos-latest'
64
- run: brew install plantuml
65
-
66
- - if: matrix.os == 'windows-latest'
67
- run: cinst -y plantuml
40
+ - uses: metanorma/metanorma-build-scripts/plantuml-setup-action@master
68
41
 
69
42
  - run: bundle exec rake
70
43
 
71
44
  tests-passed:
72
45
  needs: rake
73
46
  runs-on: ubuntu-latest
74
- continue-on-error: true
75
47
  steps:
76
- - name: Trigger tests passed event
77
- uses: Sibz/github-status-action@v1
48
+ - uses: peter-evans/repository-dispatch@v1
78
49
  with:
79
- authToken: ${{ secrets.METANORMA_CI_PAT_TOKEN || secrets.GITHUB_TOKEN }}
80
- context: 'tests-passed-successfully'
81
- description: 'Tests passed successfully'
82
- state: 'success'
83
- sha: ${{ github.event.pull_request.head.sha || github.sha }}
50
+ token: ${{ secrets.METANORMA_CI_PAT_TOKEN || secrets.GITHUB_TOKEN }}
51
+ repository: ${{ github.repository }}
52
+ event-type: notify
53
+ client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}"}'
data/.gitignore CHANGED
@@ -9,3 +9,5 @@ spec/examples/rice.doc
9
9
  spec/examples/rice.html
10
10
  spec/examples/rice.xml
11
11
  spec/examples/rice_files/
12
+
13
+ .rubocop-https--*
data/.rubocop.yml CHANGED
@@ -1,10 +1,14 @@
1
1
  # This project follows the Ribose OSS style guide.
2
2
  # https://github.com/riboseinc/oss-guides
3
3
  # All project-specific additions and overrides should be specified in this file.
4
-
5
4
  inherit_from:
6
5
  - https://raw.githubusercontent.com/riboseinc/oss-guides/master/ci/rubocop.yml
6
+
7
+ # local repo-specific modifications
8
+
7
9
  AllCops:
8
- TargetRubyVersion: 2.3
10
+ DisplayCopNames: false
11
+ StyleGuideCopsOnly: false
12
+ TargetRubyVersion: 2.4
9
13
  Rails:
10
14
  Enabled: true
@@ -44,23 +44,23 @@ module Asciidoctor
44
44
  @amd = %w(amendment technical-corrigendum).include? doctype(node)
45
45
  end
46
46
 
47
- def ol_attrs(node)
47
+ def ol_attrs(node)
48
48
  attr_code(keep_attrs(node).
49
49
  merge(id: ::Metanorma::Utils::anchor_or_uuid(node)))
50
50
  end
51
51
 
52
52
  def outputs(node, ret)
53
- File.open(@filename + ".xml", "w:UTF-8") { |f| f.write(ret) }
54
- presentation_xml_converter(node).convert(@filename + ".xml")
55
- html_converter_alt(node).convert(@filename + ".presentation.xml",
56
- nil, false, "#{@filename}_alt.html")
57
- html_converter(node).convert(@filename + ".presentation.xml",
58
- nil, false, "#{@filename}.html")
59
- doc_converter(node).convert(@filename + ".presentation.xml",
60
- nil, false, "#{@filename}.doc")
61
- pdf_converter(node)&.convert(@filename + ".presentation.xml",
62
- nil, false, "#{@filename}.pdf")
63
- #sts_converter(node)&.convert(@filename + ".xml")
53
+ File.open(@filename + ".xml", "w:UTF-8") { |f| f.write(ret) }
54
+ presentation_xml_converter(node).convert(@filename + ".xml")
55
+ html_converter_alt(node).convert(@filename + ".presentation.xml",
56
+ nil, false, "#{@filename}_alt.html")
57
+ html_converter(node).convert(@filename + ".presentation.xml",
58
+ nil, false, "#{@filename}.html")
59
+ doc_converter(node).convert(@filename + ".presentation.xml",
60
+ nil, false, "#{@filename}.doc")
61
+ pdf_converter(node)&.convert(@filename + ".presentation.xml",
62
+ nil, false, "#{@filename}.pdf")
63
+ #sts_converter(node)&.convert(@filename + ".xml")
64
64
  end
65
65
  end
66
66
  end
@@ -124,7 +124,7 @@
124
124
  <value>application/tei+xml</value>
125
125
  <value>text/x-asciidoc</value>
126
126
  <value>text/markdown</value>
127
- <value>application/x-isodoc+xml</value>
127
+ <value>application/x-metanorma+xml</value>
128
128
  <text/>
129
129
  </choice>
130
130
  </attribute>
@@ -452,6 +452,7 @@
452
452
  <attribute name="type">
453
453
  <choice>
454
454
  <value>isni</value>
455
+ <value>orcid</value>
455
456
  <value>uri</value>
456
457
  </choice>
457
458
  </attribute>
@@ -461,10 +462,7 @@
461
462
  <define name="org-identifier">
462
463
  <element name="identifier">
463
464
  <attribute name="type">
464
- <choice>
465
- <value>orcid</value>
466
- <value>uri</value>
467
- </choice>
465
+ <data type="string" datatypeLibrary=""/>
468
466
  </attribute>
469
467
  <text/>
470
468
  </element>
@@ -1106,7 +1104,7 @@
1106
1104
  <value>complementOf</value>
1107
1105
  <value>obsoletes</value>
1108
1106
  <value>obsoletedBy</value>
1109
- <value>cited</value>
1107
+ <value>cites</value>
1110
1108
  <value>isCitedIn</value>
1111
1109
  </choice>
1112
1110
  </define>
@@ -61,7 +61,7 @@ module Asciidoctor
61
61
  id.content = id_prefix(prefix, id)
62
62
  end
63
63
 
64
- def format_ref(ref, type, isopub)
64
+ def format_ref(ref, type)
65
65
  ref = ref.sub(/ \(All Parts\)/i, "")
66
66
  super
67
67
  end
@@ -67,7 +67,7 @@ module Asciidoctor
67
67
  stage = get_stage(node)
68
68
  substage = get_substage(node)
69
69
  xml.status do |s|
70
- s.stage stage, **attr_code(abbreviation: stage_abbr(stage, substage, doctype(node)))
70
+ s.stage stage, **attr_code(abbreviation: cover_stage_abbr(node))
71
71
  s.substage substage
72
72
  node.attr("iteration") && (s.iteration node.attr("iteration"))
73
73
  end
@@ -11,7 +11,7 @@ module Asciidoctor
11
11
  class Converter < Standoc::Converter
12
12
  STAGE_ABBRS = {
13
13
  "00": "PWI",
14
- "10": "NWIP",
14
+ "10": "NP",
15
15
  "20": "WD",
16
16
  "30": "CD",
17
17
  "40": "DIS",
@@ -37,15 +37,11 @@ module Asciidoctor
37
37
  return nil if stage.to_i > 60
38
38
  ret = STAGE_ABBRS[stage.to_sym]
39
39
  ret = "PRF" if stage == "60" && substage == "00"
40
+ ret = "AWI" if stage == "10" && substage == "99"
40
41
  if %w(amendment technical-corrigendum technical-report
41
42
  technical-specification).include?(doctype)
42
- ret = "NP" if stage == "10"
43
- ret = "AWI" if stage == "10" && substage == "99"
44
- ret = "D" if stage == "40" and doctype == "amendment"
45
- ret = "FD" if stage == "50" and
46
- %w(amendment technical-corrigendum).include?(doctype)
47
- ret = "D" if stage == "50" and
48
- %w(technical-report technical-specification).include?(doctype)
43
+ ret = "D" if stage == "40" && doctype == "amendment"
44
+ ret = "FD" if stage == "50" && %w(amendment technical-corrigendum).include?(doctype)
49
45
  end
50
46
  ret
51
47
  end
@@ -54,8 +50,7 @@ module Asciidoctor
54
50
  return "Proof" if stage == "60" && substage == "00"
55
51
  ret = STAGE_NAMES[stage.to_sym]
56
52
  if iteration && %w(20 30).include?(stage)
57
- prefix = iteration.to_i.localize(@lang.to_sym).
58
- to_rbnf_s("SpelloutRules", "spellout-ordinal")
53
+ prefix = iteration.to_i.localize(@lang.to_sym).to_rbnf_s("SpelloutRules", "spellout-ordinal")
59
54
  ret = "#{prefix.capitalize} #{ret.downcase}"
60
55
  end
61
56
  ret
@@ -70,16 +65,13 @@ module Asciidoctor
70
65
  end
71
66
 
72
67
  def iso_id(node, xml)
73
- return unless !@amd && node.attr("docnumber") ||
74
- @amd && node.attr("updates")
68
+ return unless !@amd && node.attr("docnumber") || @amd && node.attr("updates")
75
69
  dn = iso_id1(node)
76
70
  dn1 = id_stage_prefix(dn, node, false)
77
71
  dn2 = id_stage_prefix(dn, node, true)
78
72
  xml.docidentifier dn1, **attr_code(type: "ISO")
79
- xml.docidentifier id_langsuffix(dn1, node),
80
- **attr_code(type: "iso-with-lang")
81
- xml.docidentifier id_langsuffix(dn2, node),
82
- **attr_code(type: "iso-reference")
73
+ xml.docidentifier id_langsuffix(dn1, node), **attr_code(type: "iso-with-lang")
74
+ xml.docidentifier id_langsuffix(dn2, node), **attr_code(type: "iso-reference")
83
75
  end
84
76
 
85
77
  def iso_id1(node)
@@ -132,18 +124,29 @@ module Asciidoctor
132
124
  dn
133
125
  end
134
126
 
135
- def id_stage_abbr(stage, substage, node)
136
- ret = IsoDoc::Iso::Metadata.new("en", "Latn", @i18n).
137
- status_abbrev(stage_abbr(stage, substage, doctype(node)),
138
- substage, node.attr("iteration"),
139
- node.attr("draft"), doctype(node))
140
- if %w(amendment technical-corrigendum amendment
141
- technical-corrigendum).include?(doctype(node))
142
- ret = ret + " " unless %w(40 50).include?(stage)
127
+ def id_stage_abbr(stage, substage, node, bare = false)
128
+ ret = bare ?
129
+ IsoDoc::Iso::Metadata.new("en", "Latn", @i18n)
130
+ .status_abbrev(stage_abbr(stage, substage, doctype(node)),
131
+ substage, nil, nil, doctype(node)) :
132
+ IsoDoc::Iso::Metadata.new("en", "Latn", @i18n)
133
+ .status_abbrev(stage_abbr(stage, substage, doctype(node)),
134
+ substage, node.attr("iteration"),
135
+ node.attr("draft"), doctype(node))
136
+ if %w(amendment technical-corrigendum technical-report technical-specification).include?(doctype(node))
137
+ ret = ret + " " unless %w(D FD).include?(ret)
143
138
  end
144
139
  ret
145
140
  end
146
141
 
142
+ def cover_stage_abbr(node)
143
+ stage = get_stage(node)
144
+ abbr = id_stage_abbr(get_stage(node), get_substage(node), node, true)
145
+ typeabbr = get_typeabbr(node, true)
146
+ typeabbr = "" if stage.to_i > 50 || stage.to_i == 60 && get_substage(node).to_i < 60
147
+ "#{abbr}#{typeabbr}".strip
148
+ end
149
+
147
150
  def id_stage_prefix(dn, node, force_year)
148
151
  stage = get_stage(node)
149
152
  typeabbr = get_typeabbr(node)
@@ -183,10 +186,12 @@ module Asciidoctor
183
186
  node.attr("docsubstage") || ( stage == "60" ? "60" : "00" )
184
187
  end
185
188
 
186
- def get_typeabbr(node)
189
+ def get_typeabbr(node, amd = false)
187
190
  case doctype(node)
188
191
  when "technical-report" then "TR "
189
192
  when "technical-specification" then "TS "
193
+ when "amendment" then (amd ? "Amd " : "")
194
+ when "technical-corrigendum" then (amd ? "Cor " : "")
190
195
  else
191
196
  nil
192
197
  end
@@ -86,6 +86,35 @@
86
86
  <text/>
87
87
  </element>
88
88
  </define>
89
+ <define name="erefType">
90
+ <optional>
91
+ <attribute name="normative">
92
+ <data type="boolean"/>
93
+ </attribute>
94
+ </optional>
95
+ <attribute name="citeas"/>
96
+ <attribute name="type">
97
+ <ref name="ReferenceFormat"/>
98
+ </attribute>
99
+ <optional>
100
+ <attribute name="alt"/>
101
+ </optional>
102
+ <optional>
103
+ <attribute name="case">
104
+ <choice>
105
+ <value>capital</value>
106
+ <value>lowercase</value>
107
+ </choice>
108
+ </attribute>
109
+ </optional>
110
+ <optional>
111
+ <attribute name="droploc">
112
+ <data type="boolean"/>
113
+ </attribute>
114
+ </optional>
115
+ <ref name="CitationType"/>
116
+ <text/>
117
+ </define>
89
118
  <define name="ul">
90
119
  <element name="ul">
91
120
  <attribute name="id">
@@ -102,7 +131,7 @@
102
131
  </attribute>
103
132
  </optional>
104
133
  <oneOrMore>
105
- <ref name="li"/>
134
+ <ref name="ul_li"/>
106
135
  </oneOrMore>
107
136
  <zeroOrMore>
108
137
  <ref name="note"/>
@@ -775,6 +804,78 @@
775
804
  <ref name="paragraph"/>
776
805
  </element>
777
806
  </define>
807
+ <define name="em">
808
+ <element name="em">
809
+ <zeroOrMore>
810
+ <choice>
811
+ <ref name="PureTextElement"/>
812
+ <ref name="stem"/>
813
+ <ref name="index"/>
814
+ </choice>
815
+ </zeroOrMore>
816
+ </element>
817
+ </define>
818
+ <define name="strong">
819
+ <element name="strong">
820
+ <zeroOrMore>
821
+ <choice>
822
+ <ref name="PureTextElement"/>
823
+ <ref name="stem"/>
824
+ <ref name="index"/>
825
+ </choice>
826
+ </zeroOrMore>
827
+ </element>
828
+ </define>
829
+ <define name="tt">
830
+ <element name="tt">
831
+ <zeroOrMore>
832
+ <choice>
833
+ <ref name="PureTextElement"/>
834
+ <ref name="index"/>
835
+ </choice>
836
+ </zeroOrMore>
837
+ </element>
838
+ </define>
839
+ <define name="keyword">
840
+ <element name="keyword">
841
+ <zeroOrMore>
842
+ <choice>
843
+ <ref name="PureTextElement"/>
844
+ <ref name="index"/>
845
+ </choice>
846
+ </zeroOrMore>
847
+ </element>
848
+ </define>
849
+ <define name="strike">
850
+ <element name="strike">
851
+ <zeroOrMore>
852
+ <choice>
853
+ <ref name="PureTextElement"/>
854
+ <ref name="index"/>
855
+ </choice>
856
+ </zeroOrMore>
857
+ </element>
858
+ </define>
859
+ <define name="underline">
860
+ <element name="underline">
861
+ <zeroOrMore>
862
+ <choice>
863
+ <ref name="PureTextElement"/>
864
+ <ref name="index"/>
865
+ </choice>
866
+ </zeroOrMore>
867
+ </element>
868
+ </define>
869
+ <define name="smallcap">
870
+ <element name="smallcap">
871
+ <zeroOrMore>
872
+ <choice>
873
+ <ref name="PureTextElement"/>
874
+ <ref name="index"/>
875
+ </choice>
876
+ </zeroOrMore>
877
+ </element>
878
+ </define>
778
879
  </include>
779
880
  <!-- end overrides -->
780
881
  <define name="colgroup">
@@ -793,7 +894,35 @@
793
894
  <value>internal</value>
794
895
  </define>
795
896
  <define name="TextElement" combine="choice">
796
- <ref name="concept"/>
897
+ <choice>
898
+ <ref name="concept"/>
899
+ <ref name="add"/>
900
+ <ref name="del"/>
901
+ </choice>
902
+ </define>
903
+ <define name="add">
904
+ <element name="add">
905
+ <choice>
906
+ <ref name="PureTextElement"/>
907
+ <ref name="eref"/>
908
+ <ref name="stem"/>
909
+ <ref name="keyword"/>
910
+ <ref name="xref"/>
911
+ <ref name="hyperlink"/>
912
+ </choice>
913
+ </element>
914
+ </define>
915
+ <define name="del">
916
+ <element name="del">
917
+ <choice>
918
+ <ref name="PureTextElement"/>
919
+ <ref name="eref"/>
920
+ <ref name="stem"/>
921
+ <ref name="keyword"/>
922
+ <ref name="xref"/>
923
+ <ref name="hyperlink"/>
924
+ </choice>
925
+ </element>
797
926
  </define>
798
927
  <define name="concept">
799
928
  <element name="concept">
@@ -812,6 +941,8 @@
812
941
  <ref name="requirement"/>
813
942
  <ref name="recommendation"/>
814
943
  <ref name="permission"/>
944
+ <ref name="imagemap"/>
945
+ <ref name="svgmap"/>
815
946
  </choice>
816
947
  </define>
817
948
  <define name="bibliography">
@@ -917,6 +1048,9 @@
917
1048
  </choice>
918
1049
  </attribute>
919
1050
  <ref name="bibdata"/>
1051
+ <optional>
1052
+ <ref name="misccontainer"/>
1053
+ </optional>
920
1054
  <optional>
921
1055
  <ref name="boilerplate"/>
922
1056
  </optional>
@@ -927,11 +1061,21 @@
927
1061
  <zeroOrMore>
928
1062
  <ref name="annex"/>
929
1063
  </zeroOrMore>
1064
+ <optional>
1065
+ <ref name="bibliography"/>
1066
+ </optional>
930
1067
  <zeroOrMore>
931
- <ref name="references"/>
1068
+ <ref name="indexsect"/>
932
1069
  </zeroOrMore>
933
1070
  </element>
934
1071
  </define>
1072
+ <define name="misccontainer">
1073
+ <element name="misc-container">
1074
+ <oneOrMore>
1075
+ <ref name="AnyElement"/>
1076
+ </oneOrMore>
1077
+ </element>
1078
+ </define>
935
1079
  <define name="preface">
936
1080
  <element name="preface">
937
1081
  <oneOrMore>
@@ -955,6 +1099,11 @@
955
1099
  <ref name="Content-Section"/>
956
1100
  </element>
957
1101
  </define>
1102
+ <define name="indexsect">
1103
+ <element name="indexsect">
1104
+ <ref name="Content-Section"/>
1105
+ </element>
1106
+ </define>
958
1107
  <define name="boilerplate">
959
1108
  <element name="boilerplate">
960
1109
  <optional>
@@ -1635,4 +1784,87 @@
1635
1784
  <text/>
1636
1785
  </element>
1637
1786
  </define>
1787
+ <define name="imagemap">
1788
+ <element name="imagemap">
1789
+ <ref name="figure"/>
1790
+ <zeroOrMore>
1791
+ <element name="area">
1792
+ <attribute name="type">
1793
+ <choice>
1794
+ <value>rect</value>
1795
+ <value>circle</value>
1796
+ <value>ellipse</value>
1797
+ <value>poly</value>
1798
+ </choice>
1799
+ </attribute>
1800
+ <choice>
1801
+ <ref name="xref"/>
1802
+ <ref name="hyperlink"/>
1803
+ <ref name="eref"/>
1804
+ </choice>
1805
+ <oneOrMore>
1806
+ <element name="coords">
1807
+ <attribute name="x">
1808
+ <data type="float"/>
1809
+ </attribute>
1810
+ <attribute name="y">
1811
+ <data type="float"/>
1812
+ </attribute>
1813
+ </element>
1814
+ </oneOrMore>
1815
+ <optional>
1816
+ <element name="radius">
1817
+ <attribute name="x">
1818
+ <data type="float"/>
1819
+ </attribute>
1820
+ <optional>
1821
+ <attribute name="y">
1822
+ <data type="float"/>
1823
+ </attribute>
1824
+ </optional>
1825
+ </element>
1826
+ </optional>
1827
+ </element>
1828
+ </zeroOrMore>
1829
+ </element>
1830
+ </define>
1831
+ <define name="svgmap">
1832
+ <element name="svgmap">
1833
+ <ref name="figure"/>
1834
+ <zeroOrMore>
1835
+ <element name="target">
1836
+ <attribute name="href">
1837
+ <data type="anyURI"/>
1838
+ </attribute>
1839
+ <choice>
1840
+ <ref name="xref"/>
1841
+ <ref name="hyperlink"/>
1842
+ <ref name="eref"/>
1843
+ </choice>
1844
+ </element>
1845
+ </zeroOrMore>
1846
+ </element>
1847
+ </define>
1848
+ <define name="ul_li">
1849
+ <element name="li">
1850
+ <optional>
1851
+ <attribute name="id">
1852
+ <data type="ID"/>
1853
+ </attribute>
1854
+ </optional>
1855
+ <optional>
1856
+ <attribute name="uncheckedcheckbox">
1857
+ <data type="boolean"/>
1858
+ </attribute>
1859
+ </optional>
1860
+ <optional>
1861
+ <attribute name="checkedcheckbox">
1862
+ <data type="boolean"/>
1863
+ </attribute>
1864
+ </optional>
1865
+ <oneOrMore>
1866
+ <ref name="BasicBlock"/>
1867
+ </oneOrMore>
1868
+ </element>
1869
+ </define>
1638
1870
  </grammar>