metanorma-ietf 2.2.6 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8247cbf94f350b91d6489fb85f79488a4cdad584badf37d6c82ffa0593aef09c
4
- data.tar.gz: ba450b02e8e6209f00bdbc1fbe38c507ed50b03caf0acd1cec0d5de9a15965a1
3
+ metadata.gz: 762b7326f710d4729e85538a72dcb11fe7f960d995303ef0999c5ff8a665e8d6
4
+ data.tar.gz: f22daa0309aa18c071492e8b4f74a0d087835a966581af394cc6eba4be933e79
5
5
  SHA512:
6
- metadata.gz: 994cab64f80f8e1f238c1be2a560cdd576cc76b1fff424af31d0ad5883fa6eecdddde74d54a17bddd8eaeea297d0d601d07654bb2c499bc325f93dcb04b71427
7
- data.tar.gz: d691df321718fa175898cf5ce872b5db913b6d256abe8b72af350653f55c632ef6eff2bb0760f5e73af19b11446cb3709ced34e83d9cbf9a500eb25a1afb5cee
6
+ metadata.gz: 85bff031c15ec990050395691adbdd51ebd67c0cac1dfdc6746e1a21bf7f4547678d268caceb536b69e9013b681d3082a9dc798107396ce1f1cae4329953502b
7
+ data.tar.gz: f0b5cbde4df5519fcbad880e6b2e441523bf6e53bab819f292f6a588b92baff94fd097734f1398920d4fd4a6709f034433e8053f445d1147459744c8f6bca1d9
@@ -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
 
@@ -36,21 +36,11 @@ jobs:
36
36
  - uses: ruby/setup-ruby@v1
37
37
  with:
38
38
  ruby-version: ${{ matrix.ruby }}
39
-
40
- - uses: actions/cache@v2
41
- with:
42
- path: vendor/bundle
43
- key: bundle-${{ matrix.os }}-${{ matrix.ruby }}-${{ hashFiles('**/*.gemspec') }}
44
- restore-keys: bundle-${{ matrix.os }}-${{ matrix.ruby }}
45
-
46
- - run: bundle config set path 'vendor/bundle'
47
-
48
- - run: bundle install --jobs 4 --retry 3
39
+ bundler-cache: true
49
40
 
50
41
  - uses: actions/setup-python@v1
51
42
  with:
52
43
  python-version: '3.6'
53
- architecture: 'x64'
54
44
 
55
45
  - name: set PIP_DOWNLOAD_CACHE
56
46
  shell: python
@@ -89,3 +79,14 @@ jobs:
89
79
  - run: pip install xml2rfc
90
80
 
91
81
  - run: bundle exec rake
82
+
83
+ tests-passed:
84
+ needs: rake
85
+ runs-on: ubuntu-latest
86
+ steps:
87
+ - uses: peter-evans/repository-dispatch@v1
88
+ with:
89
+ token: ${{ secrets.METANORMA_CI_PAT_TOKEN || secrets.GITHUB_TOKEN }}
90
+ repository: ${{ github.repository }}
91
+ event-type: notify
92
+ client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}"}'
data/.gitignore CHANGED
@@ -16,3 +16,5 @@
16
16
  .ruby-gemset
17
17
 
18
18
  **/.byebug_history
19
+
20
+ .rubocop-https--*
data/.rubocop.yml CHANGED
@@ -1,15 +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
- # Thoughtbot's style guide from: https://github.com/thoughtbot/guides
7
- - ".rubocop.tb.yml"
8
- # Overrides from Ribose
9
- - ".rubocop.ribose.yml"
5
+ - https://raw.githubusercontent.com/riboseinc/oss-guides/master/ci/rubocop.yml
6
+
7
+ # local repo-specific modifications
8
+
10
9
  AllCops:
11
10
  DisplayCopNames: false
12
11
  StyleGuideCopsOnly: false
13
- TargetRubyVersion: 2.3
12
+ TargetRubyVersion: 2.4
14
13
  Rails:
15
14
  Enabled: true
@@ -729,9 +729,11 @@
729
729
  </define>
730
730
  <define name="index">
731
731
  <element name="index">
732
- <attribute name="to">
733
- <data type="IDREF"/>
734
- </attribute>
732
+ <optional>
733
+ <attribute name="to">
734
+ <data type="IDREF"/>
735
+ </attribute>
736
+ </optional>
735
737
  <element name="primary">
736
738
  <oneOrMore>
737
739
  <ref name="PureTextElement"/>
@@ -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>
@@ -6,17 +6,17 @@ module Asciidoctor
6
6
  node.attr("keep-with-next"),
7
7
  "keep-with-previous": node.attr("keepWithPrevious") ||
8
8
  node.attr("keep-with-previous"),
9
- id: ::Asciidoctor::Standoc::Utils::anchor_or_uuid(node))
9
+ id: ::Metanorma::Utils::anchor_or_uuid(node))
10
10
  end
11
11
 
12
12
  def ul_attrs(node)
13
- attr_code(id: ::Asciidoctor::Standoc::Utils::anchor_or_uuid(node),
13
+ attr_code(id: ::Metanorma::Utils::anchor_or_uuid(node),
14
14
  nobullet: node.attr("nobullet"),
15
15
  spacing: node.attr("spacing"))
16
16
  end
17
17
 
18
18
  def ol_attrs(node)
19
- attr_code(id: ::Asciidoctor::Standoc::Utils::anchor_or_uuid(node),
19
+ attr_code(id: ::Metanorma::Utils::anchor_or_uuid(node),
20
20
  type: node.attr("format") || olist_style(node.style),
21
21
  group: node.attr("group"),
22
22
  spacing: node.attr("spacing"),
@@ -24,7 +24,7 @@ module Asciidoctor
24
24
  end
25
25
 
26
26
  def dl_attrs(node)
27
- attr_code(id: ::Asciidoctor::Standoc::Utils::anchor_or_uuid(node),
27
+ attr_code(id: ::Metanorma::Utils::anchor_or_uuid(node),
28
28
  newline: node.attr("newline"),
29
29
  indent: node.attr("indent"),
30
30
  spacing: node.attr("spacing"))
@@ -46,7 +46,7 @@ module Asciidoctor
46
46
 
47
47
  def note(n)
48
48
  noko do |xml|
49
- xml.note **attr_code(id: ::Asciidoctor::Standoc::Utils::anchor_or_uuid(n),
49
+ xml.note **attr_code(id: ::Metanorma::Utils::anchor_or_uuid(n),
50
50
  removeInRFC: n.attr("remove-in-rfc")) do |c|
51
51
  n.title.nil? or c.name { |name| name << n.title }
52
52
  wrap_in_para(n, c)
@@ -60,7 +60,7 @@ module Asciidoctor
60
60
  figure_title(node, f)
61
61
  f.pre node.lines.join("\n"),
62
62
  **attr_code(align: node.attr("align"),
63
- id: ::Asciidoctor::Standoc::Utils::anchor_or_uuid(nil),
63
+ id: ::Metanorma::Utils::anchor_or_uuid(nil),
64
64
  alt: node.attr("alt"))
65
65
  end
66
66
  end
@@ -140,6 +140,7 @@ module Asciidoctor
140
140
  def rfc_anchor_cleanup(xmldoc)
141
141
  map = {}
142
142
  xmldoc.xpath("//bibitem[docidentifier/@type = 'rfc-anchor']").each do |b|
143
+ next if b.at("./ancestor::bibdata")
143
144
  map[b["id"]] = b.at("./docidentifier[@type = 'rfc-anchor']").text
144
145
  b["id"] = b.at("./docidentifier[@type = 'rfc-anchor']").text
145
146
  end
@@ -204,6 +205,25 @@ module Asciidoctor
204
205
  end
205
206
  end
206
207
 
208
+ def inline_indexterm(node)
209
+ noko do |xml|
210
+ node.type == :visible and xml << node.text.sub(/^primary:(?=\S)/, "")
211
+ terms = (node.attr("terms") || [node.text]).map { |x| xml_encode(x) }
212
+ if /^primary:\S/.match(terms[0])
213
+ terms[0].sub!(/^primary:/, "")
214
+ has_primary = true
215
+ end
216
+ xml.index **attr_code(primary: has_primary) do |i|
217
+ i.primary { |x| x << terms[0] }
218
+ a = terms.dig(1) and i.secondary { |x| x << a }
219
+ a = terms.dig(2) and i.tertiary { |x| x << a }
220
+ end
221
+ end.join
222
+ end
223
+
224
+ def section_names_refs_cleanup(x)
225
+ end
226
+
207
227
  def html_extract_attributes(node)
208
228
  super.merge(use_xinclude: node.attr("use-xinclude"))
209
229
  end
@@ -51,8 +51,8 @@ module Asciidoctor
51
51
  ["en"].each do |lang|
52
52
  at = { language: lang, format: "text/plain" }
53
53
  xml.title **attr_code(at.merge(type: "main")) do |t|
54
- t << (::Asciidoctor::Standoc::Utils::asciidoc_sub(node.attr("title")) ||
55
- ::Asciidoctor::Standoc::Utils::asciidoc_sub(node.attr("title-en")) ||
54
+ t << (::Metanorma::Utils::asciidoc_sub(node.attr("title")) ||
55
+ ::Metanorma::Utils::asciidoc_sub(node.attr("title-en")) ||
56
56
  node.title)
57
57
  end
58
58
  a = node.attr("abbrev") and
@@ -564,6 +564,39 @@
564
564
  </zeroOrMore>
565
565
  </element>
566
566
  </define>
567
+ <define name="index">
568
+ <element name="index">
569
+ <optional>
570
+ <attribute name="to">
571
+ <data type="IDREF"/>
572
+ </attribute>
573
+ </optional>
574
+ <optional>
575
+ <attribute name="primary">
576
+ <data type="boolean"/>
577
+ </attribute>
578
+ </optional>
579
+ <element name="primary">
580
+ <oneOrMore>
581
+ <ref name="PureTextElement"/>
582
+ </oneOrMore>
583
+ </element>
584
+ <optional>
585
+ <element name="secondary">
586
+ <oneOrMore>
587
+ <ref name="PureTextElement"/>
588
+ </oneOrMore>
589
+ </element>
590
+ </optional>
591
+ <optional>
592
+ <element name="tertiary">
593
+ <oneOrMore>
594
+ <ref name="PureTextElement"/>
595
+ </oneOrMore>
596
+ </element>
597
+ </optional>
598
+ </element>
599
+ </define>
567
600
  </include>
568
601
  <define name="TextElement" combine="choice">
569
602
  <ref name="bcp14"/>
@@ -879,6 +912,9 @@
879
912
  <zeroOrMore>
880
913
  <ref name="termdocsource"/>
881
914
  </zeroOrMore>
915
+ <optional>
916
+ <ref name="misccontainer"/>
917
+ </optional>
882
918
  <optional>
883
919
  <ref name="boilerplate"/>
884
920
  </optional>
@@ -890,6 +926,9 @@
890
926
  <ref name="annex"/>
891
927
  </zeroOrMore>
892
928
  <ref name="bibliography"/>
929
+ <zeroOrMore>
930
+ <ref name="indexsect"/>
931
+ </zeroOrMore>
893
932
  </element>
894
933
  </define>
895
934
  </grammar>
@@ -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"/>
@@ -253,6 +282,9 @@
253
282
  <data type="boolean"/>
254
283
  </attribute>
255
284
  </optional>
285
+ <optional>
286
+ <attribute name="width"/>
287
+ </optional>
256
288
  <optional>
257
289
  <ref name="colgroup"/>
258
290
  </optional>
@@ -772,6 +804,78 @@
772
804
  <ref name="paragraph"/>
773
805
  </element>
774
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>
775
879
  </include>
776
880
  <!-- end overrides -->
777
881
  <define name="colgroup">
@@ -786,8 +890,39 @@
786
890
  <attribute name="width"/>
787
891
  </element>
788
892
  </define>
893
+ <define name="BibItemType" combine="choice">
894
+ <value>internal</value>
895
+ </define>
789
896
  <define name="TextElement" combine="choice">
790
- <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>
791
926
  </define>
792
927
  <define name="concept">
793
928
  <element name="concept">
@@ -806,6 +941,8 @@
806
941
  <ref name="requirement"/>
807
942
  <ref name="recommendation"/>
808
943
  <ref name="permission"/>
944
+ <ref name="imagemap"/>
945
+ <ref name="svgmap"/>
809
946
  </choice>
810
947
  </define>
811
948
  <define name="bibliography">
@@ -836,6 +973,9 @@
836
973
  <data type="boolean"/>
837
974
  </attribute>
838
975
  </optional>
976
+ <optional>
977
+ <attribute name="number"/>
978
+ </optional>
839
979
  <optional>
840
980
  <attribute name="obligation">
841
981
  <choice>
@@ -891,9 +1031,11 @@
891
1031
  <element name="code">
892
1032
  <text/>
893
1033
  </element>
894
- <element name="text">
895
- <text/>
896
- </element>
1034
+ <optional>
1035
+ <element name="text">
1036
+ <text/>
1037
+ </element>
1038
+ </optional>
897
1039
  </element>
898
1040
  </define>
899
1041
  <define name="standard-document">
@@ -906,6 +1048,9 @@
906
1048
  </choice>
907
1049
  </attribute>
908
1050
  <ref name="bibdata"/>
1051
+ <optional>
1052
+ <ref name="misccontainer"/>
1053
+ </optional>
909
1054
  <optional>
910
1055
  <ref name="boilerplate"/>
911
1056
  </optional>
@@ -916,11 +1061,21 @@
916
1061
  <zeroOrMore>
917
1062
  <ref name="annex"/>
918
1063
  </zeroOrMore>
1064
+ <optional>
1065
+ <ref name="bibliography"/>
1066
+ </optional>
919
1067
  <zeroOrMore>
920
- <ref name="references"/>
1068
+ <ref name="indexsect"/>
921
1069
  </zeroOrMore>
922
1070
  </element>
923
1071
  </define>
1072
+ <define name="misccontainer">
1073
+ <element name="misc-container">
1074
+ <oneOrMore>
1075
+ <ref name="AnyElement"/>
1076
+ </oneOrMore>
1077
+ </element>
1078
+ </define>
924
1079
  <define name="preface">
925
1080
  <element name="preface">
926
1081
  <oneOrMore>
@@ -944,6 +1099,11 @@
944
1099
  <ref name="Content-Section"/>
945
1100
  </element>
946
1101
  </define>
1102
+ <define name="indexsect">
1103
+ <element name="indexsect">
1104
+ <ref name="Content-Section"/>
1105
+ </element>
1106
+ </define>
947
1107
  <define name="boilerplate">
948
1108
  <element name="boilerplate">
949
1109
  <optional>
@@ -1063,6 +1223,9 @@
1063
1223
  </choice>
1064
1224
  </attribute>
1065
1225
  </optional>
1226
+ <optional>
1227
+ <attribute name="number"/>
1228
+ </optional>
1066
1229
  <optional>
1067
1230
  <attribute name="type"/>
1068
1231
  </optional>
@@ -1116,6 +1279,9 @@
1116
1279
  <optional>
1117
1280
  <attribute name="type"/>
1118
1281
  </optional>
1282
+ <optional>
1283
+ <attribute name="number"/>
1284
+ </optional>
1119
1285
  <optional>
1120
1286
  <ref name="section-title"/>
1121
1287
  </optional>
@@ -1218,6 +1384,9 @@
1218
1384
  <optional>
1219
1385
  <attribute name="type"/>
1220
1386
  </optional>
1387
+ <optional>
1388
+ <attribute name="number"/>
1389
+ </optional>
1221
1390
  <optional>
1222
1391
  <attribute name="obligation">
1223
1392
  <choice>
@@ -1546,6 +1715,7 @@
1546
1715
  <value>add</value>
1547
1716
  <value>modify</value>
1548
1717
  <value>delete</value>
1718
+ <value>replace</value>
1549
1719
  </choice>
1550
1720
  </attribute>
1551
1721
  <optional>
@@ -1576,6 +1746,11 @@
1576
1746
  </optional>
1577
1747
  <optional>
1578
1748
  <element name="newcontent">
1749
+ <optional>
1750
+ <attribute name="id">
1751
+ <data type="ID"/>
1752
+ </attribute>
1753
+ </optional>
1579
1754
  <zeroOrMore>
1580
1755
  <ref name="BasicBlock"/>
1581
1756
  </zeroOrMore>
@@ -1609,4 +1784,87 @@
1609
1784
  <text/>
1610
1785
  </element>
1611
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>
1612
1870
  </grammar>