metanorma-ietf 2.2.1 → 2.2.6

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: '08a3fef1af7e02a0c603e1304ccd50b2122efb82fb744f2f31e651fe90c13622'
4
- data.tar.gz: 18eaa00b783bfb0308a5fc088ad78562b4ed6f21a950b0494603dc5d47c0933a
3
+ metadata.gz: 8247cbf94f350b91d6489fb85f79488a4cdad584badf37d6c82ffa0593aef09c
4
+ data.tar.gz: ba450b02e8e6209f00bdbc1fbe38c507ed50b03caf0acd1cec0d5de9a15965a1
5
5
  SHA512:
6
- metadata.gz: 4dff850b703e42b2f6ee3fe5a7408a6b8fc33eb05bd6987b48761ee5def3d62ba3acebc0332768de34b5b84201e4003adaddf4cfe70dde1b6c7aadda2eb21fb7
7
- data.tar.gz: 6ab998721ba99fb4a82589c9cd3aa25e090b86535e6b8ecb953a6679b70910cf4165e5bf15787154fffb52090ccb2299476e913f35df444d0d8e5c160361dffc
6
+ metadata.gz: 994cab64f80f8e1f238c1be2a560cdd576cc76b1fff424af31d0ad5883fa6eecdddde74d54a17bddd8eaeea297d0d601d07654bb2c499bc325f93dcb04b71427
7
+ data.tar.gz: d691df321718fa175898cf5ce872b5db913b6d256abe8b72af350653f55c632ef6eff2bb0760f5e73af19b11446cb3709ced34e83d9cbf9a500eb25a1afb5cee
@@ -0,0 +1,91 @@
1
+ # Auto-generated by Cimas: Do not edit it manually!
2
+ # See https://github.com/metanorma/cimas
3
+ name: rake
4
+
5
+ on:
6
+ push:
7
+ branches: [ master, main ]
8
+ tags: [ v* ]
9
+ pull_request:
10
+
11
+ jobs:
12
+ rake:
13
+ name: Test on Ruby ${{ matrix.ruby }} ${{ matrix.os }}
14
+ runs-on: ${{ matrix.os }}
15
+ continue-on-error: ${{ matrix.experimental }}
16
+ strategy:
17
+ fail-fast: false
18
+ matrix:
19
+ ruby: [ '2.6', '2.5', '2.4' ]
20
+ os: [ ubuntu-latest, windows-latest, macos-latest ]
21
+ experimental: [ false ]
22
+ include:
23
+ - ruby: '2.7'
24
+ os: 'ubuntu-latest'
25
+ experimental: true
26
+ - ruby: '2.7'
27
+ os: 'windows-latest'
28
+ experimental: true
29
+ - ruby: '2.7'
30
+ os: 'macos-latest'
31
+ experimental: true
32
+
33
+ steps:
34
+ - uses: actions/checkout@master
35
+
36
+ - uses: ruby/setup-ruby@v1
37
+ with:
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
49
+
50
+ - uses: actions/setup-python@v1
51
+ with:
52
+ python-version: '3.6'
53
+ architecture: 'x64'
54
+
55
+ - name: set PIP_DOWNLOAD_CACHE
56
+ shell: python
57
+ run: |
58
+ import os
59
+ import platform
60
+ from os.path import expanduser
61
+
62
+ home = expanduser("~")
63
+ cache_path = {
64
+ "Linux": f"{home}/.cache/pip",
65
+ "Darwin": f"{home}Library/Caches/pip",
66
+ "Windows": f"{home}\\AppData\\Local\\pip\\Cache"
67
+ }[platform.system()]
68
+
69
+ os.system(f"echo PIP_DOWNLOAD_CACHE={cache_path} >> {os.environ['GITHUB_ENV']}")
70
+
71
+ - uses: actions/cache@v2
72
+ with:
73
+ path: ${{ env.PIP_DOWNLOAD_CACHE }}
74
+ key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
75
+ restore-keys: ${{ runner.os }}-pip-
76
+
77
+ - uses: actions/cache@v2
78
+ with:
79
+ path: ~/.cache/xml2rfc
80
+ key: xml2rfc
81
+ restore-key: xml2rfc
82
+
83
+ - if: matrix.os == 'macos-latest'
84
+ run: brew install libmagic
85
+
86
+ - if: matrix.os == 'windows-latest'
87
+ run: pip install python-magic-bin
88
+
89
+ - run: pip install xml2rfc
90
+
91
+ - run: bundle exec rake
@@ -2,26 +2,21 @@
2
2
  :source-highlighter: coderay
3
3
  :icons: font
4
4
 
5
- `metanorma-ietf` lets you write Internet-Drafts and RFCs in AsciiDoc, the
6
- "`http://asciidoctor.org/[asciidoctor]-way`".
5
+ `metanorma-ietf` lets you write IETF Internet-Drafts and RFCs via Metanorma.
7
6
 
8
7
  image:https://img.shields.io/gem/v/metanorma-ietf.svg["Gem Version", link="https://rubygems.org/gems/metanorma-ietf"]
9
- image:https://github.com/metanorma/metanorma-ietf/workflows/macos/badge.svg["Build Status (macOS)", link="https://github.com/metanorma/metanorma-ietf/actions?workflow=macos"]
10
- image:https://github.com/metanorma/metanorma-ietf/workflows/ubuntu/badge.svg["Build Status (ubuntu)", link="https://github.com/metanorma/metanorma-ietf/actions?workflow=ubuntu"]
11
- image:https://github.com/metanorma/metanorma-ietf/workflows/windows/badge.svg["Build Status (Windows)", link="https://github.com/metanorma/metanorma-ietf/actions?workflow=windows"]
8
+ image:https://github.com/metanorma/metanorma-ietf/workflows/rake/badge.svg["Build Status", link="https://github.com/metanorma/metanorma-ietf/actions?workflow=rake"]
12
9
  image:https://codeclimate.com/github/metanorma/metanorma-ietf/badges/gpa.svg["Code Climate", link="https://codeclimate.com/github/metanorma/metanorma-ietf"]
13
10
  image:https://img.shields.io/github/issues-pr-raw/metanorma/metanorma-ietf.svg["Pull Requests", link="https://github.com/metanorma/metanorma-ietf/pulls"]
14
11
  image:https://img.shields.io/github/commits-since/metanorma/metanorma-ietf/latest.svg["Commits since latest",link="https://github.com/metanorma/metanorma-ietf/releases"]
15
12
 
16
- _Formerly known as_ `asciidoctor-rfc`.
17
-
18
-
19
13
  == Functionality
20
14
 
21
- This gem processes http://asciidoctor.org/[Asciidoctor] documents following
22
- a template for generating IETF International Standards.
15
+ This gem processes https://www.metanorma.com[Metanorma documents] following
16
+ a template for generating IETF deliverables.
23
17
 
24
- This AsciiDoc syntax for writing IETF standards is called "`AsciiRFC`".
18
+ Metanorma-IETF adheres to AsciiRFC syntax, an AsciiDoc syntax for writing IETF documents
19
+ developed by the Metanorma team.
25
20
 
26
21
  The gem currently inherits from the https://github.com/metanorma/metanorma-standoc
27
22
  gem, and aligns closely to it.
@@ -221,3 +216,6 @@ This gem is developed, maintained and funded by https://www.ribose.com[Ribose In
221
216
 
222
217
  * Document templates are available at the https://github.com/metanorma/mn-templates-ietf[mn-templates-ietf] repository.
223
218
 
219
+ == Notes
220
+
221
+ Metanorma-IETF was formerly published as the `asciidoctor-rfc` gem.
@@ -402,6 +402,16 @@
402
402
  </choice>
403
403
  </attribute>
404
404
  </optional>
405
+ <optional>
406
+ <attribute name="valign">
407
+ <choice>
408
+ <value>top</value>
409
+ <value>middle</value>
410
+ <value>bottom</value>
411
+ <value>baseline</value>
412
+ </choice>
413
+ </attribute>
414
+ </optional>
405
415
  <choice>
406
416
  <zeroOrMore>
407
417
  <ref name="TextElement"/>
@@ -429,6 +439,16 @@
429
439
  </choice>
430
440
  </attribute>
431
441
  </optional>
442
+ <optional>
443
+ <attribute name="valign">
444
+ <choice>
445
+ <value>top</value>
446
+ <value>middle</value>
447
+ <value>bottom</value>
448
+ <value>baseline</value>
449
+ </choice>
450
+ </attribute>
451
+ </optional>
432
452
  <choice>
433
453
  <zeroOrMore>
434
454
  <ref name="TextElement"/>
@@ -576,6 +596,7 @@
576
596
  <ref name="bookmark"/>
577
597
  <ref name="image"/>
578
598
  <ref name="index"/>
599
+ <ref name="index-xref"/>
579
600
  </choice>
580
601
  </define>
581
602
  <define name="PureTextElement">
@@ -708,15 +729,61 @@
708
729
  </define>
709
730
  <define name="index">
710
731
  <element name="index">
711
- <attribute name="primary"/>
732
+ <attribute name="to">
733
+ <data type="IDREF"/>
734
+ </attribute>
735
+ <element name="primary">
736
+ <oneOrMore>
737
+ <ref name="PureTextElement"/>
738
+ </oneOrMore>
739
+ </element>
712
740
  <optional>
713
- <attribute name="secondary"/>
741
+ <element name="secondary">
742
+ <oneOrMore>
743
+ <ref name="PureTextElement"/>
744
+ </oneOrMore>
745
+ </element>
714
746
  </optional>
715
747
  <optional>
716
- <attribute name="tertiary"/>
748
+ <element name="tertiary">
749
+ <oneOrMore>
750
+ <ref name="PureTextElement"/>
751
+ </oneOrMore>
752
+ </element>
717
753
  </optional>
718
754
  </element>
719
755
  </define>
756
+ <define name="index-xref">
757
+ <element name="index-xref">
758
+ <attribute name="also">
759
+ <data type="boolean"/>
760
+ </attribute>
761
+ <element name="primary">
762
+ <oneOrMore>
763
+ <ref name="PureTextElement"/>
764
+ </oneOrMore>
765
+ </element>
766
+ <optional>
767
+ <element name="secondary">
768
+ <oneOrMore>
769
+ <ref name="PureTextElement"/>
770
+ </oneOrMore>
771
+ </element>
772
+ </optional>
773
+ <optional>
774
+ <element name="tertiary">
775
+ <oneOrMore>
776
+ <ref name="PureTextElement"/>
777
+ </oneOrMore>
778
+ </element>
779
+ </optional>
780
+ <element name="target">
781
+ <oneOrMore>
782
+ <ref name="PureTextElement"/>
783
+ </oneOrMore>
784
+ </element>
785
+ </element>
786
+ </define>
720
787
  <!-- bare ID element, used for referencing arbitrary spans of text -->
721
788
  <define name="bookmark">
722
789
  <element name="bookmark">
@@ -998,6 +1065,9 @@
998
1065
  <value>alphabet_upper</value>
999
1066
  </choice>
1000
1067
  </attribute>
1068
+ <optional>
1069
+ <attribute name="start"/>
1070
+ </optional>
1001
1071
  <oneOrMore>
1002
1072
  <ref name="li"/>
1003
1073
  </oneOrMore>
@@ -32,8 +32,8 @@ module Asciidoctor
32
32
  end
33
33
 
34
34
  def doctype(node)
35
- ret = node.attr("doctype")
36
- ret = "Internet-Draft" if ret == "article"
35
+ ret = super
36
+ ret = "internet-draft" if ret == "article"
37
37
  ret
38
38
  end
39
39
 
@@ -114,13 +114,21 @@ module Asciidoctor
114
114
 
115
115
  def cleanup(xmldoc)
116
116
  bcp14_cleanup(xmldoc)
117
- rfc_anchor_cleanup(xmldoc)
117
+ abstract_cleanup(xmldoc)
118
118
  super
119
+ rfc_anchor_cleanup(xmldoc)
119
120
  end
120
121
 
121
122
  BCP_KEYWORDS = ["MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
122
123
  "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", "OPTIONAL"].freeze
123
124
 
125
+ def abstract_cleanup(xmldoc)
126
+ xmldoc.xpath("//abstract[not(text())]").each do |x|
127
+ x.remove
128
+ warn "Empty abstract section removed"
129
+ end
130
+ end
131
+
124
132
  def bcp14_cleanup(xmldoc)
125
133
  return unless @bcp_bold
126
134
  xmldoc.xpath("//strong").each do |s|
@@ -174,6 +182,13 @@ module Asciidoctor
174
182
  super
175
183
  end
176
184
 
185
+ def annex_parse(attrs, xml, node)
186
+ attrs[:numbered] = node.attr("numbered")
187
+ attrs[:removeInRFC] = node.attr("removeInRFC")
188
+ attrs[:toc] = node.attr("toc")
189
+ super
190
+ end
191
+
177
192
  def introduction_parse(attrs, xml, node)
178
193
  clause_parse(attrs, xml, node)
179
194
  end
@@ -196,6 +211,13 @@ module Asciidoctor
196
211
  def rfc_converter(node)
197
212
  IsoDoc::Ietf::RfcConvert.new(html_extract_attributes(node))
198
213
  end
214
+
215
+ def isodoc(lang, script, i18nyaml = nil)
216
+ conv = rfc_converter(EmptyAttr.new)
217
+ i18n = conv.i18n_init(lang, script, i18nyaml)
218
+ conv.metadata_init(lang, script, i18n)
219
+ conv
220
+ end
199
221
  end
200
222
  end
201
223
  end
@@ -31,14 +31,8 @@ module Asciidoctor
31
31
  end
32
32
  end
33
33
 
34
- def organization(org, orgname)
35
- if ["IETF",
36
- "Internet Engineering Task Force"].include? orgname
37
- org.name "Internet Engineering Task Force"
38
- org.abbreviation "IETF"
39
- else
40
- org.name orgname
41
- end
34
+ def org_abbrev
35
+ { "Internet Engineering Task Force" => "IETF" }
42
36
  end
43
37
 
44
38
  def metadata_series(node, xml)
@@ -80,7 +74,7 @@ module Asciidoctor
80
74
  x = node.attr("area") and x.split(/,\s*/).each do |a|
81
75
  xml.area a
82
76
  end
83
- x = node.attr("ipr") and xml.ipr x
77
+ xml.ipr (node.attr("ipr") || "trust200902")
84
78
  x = node.attr("consensus") and xml.consensus x
85
79
  x = node.attr("index-include") and xml.indexInclude x
86
80
  x = node.attr("ipr-extract") and xml.iprExtract x
@@ -868,6 +868,13 @@
868
868
  </define>
869
869
  <define name="ietf-standard">
870
870
  <element name="ietf-standard">
871
+ <attribute name="version"/>
872
+ <attribute name="type">
873
+ <choice>
874
+ <value>semantic</value>
875
+ <value>presentation</value>
876
+ </choice>
877
+ </attribute>
871
878
  <ref name="bibdata"/>
872
879
  <zeroOrMore>
873
880
  <ref name="termdocsource"/>
@@ -24,6 +24,14 @@
24
24
  <start>
25
25
  <ref name="standard-document"/>
26
26
  </start>
27
+ <define name="doctype">
28
+ <element name="doctype">
29
+ <optional>
30
+ <attribute name="abbreviation"/>
31
+ </optional>
32
+ <ref name="DocumentType"/>
33
+ </element>
34
+ </define>
27
35
  <define name="hyperlink">
28
36
  <element name="link">
29
37
  <attribute name="target">
@@ -43,8 +51,17 @@
43
51
  <define name="xref">
44
52
  <element name="xref">
45
53
  <attribute name="target">
46
- <data type="IDREF"/>
54
+ <data type="string">
55
+ <param name="pattern">\i\c*|\c+#\c+</param>
56
+ </data>
47
57
  </attribute>
58
+ <optional>
59
+ <attribute name="to">
60
+ <data type="string">
61
+ <param name="pattern">\i\c*|\c+#\c+</param>
62
+ </data>
63
+ </attribute>
64
+ </optional>
48
65
  <optional>
49
66
  <attribute name="type">
50
67
  <ref name="ReferenceFormat"/>
@@ -61,6 +78,11 @@
61
78
  </choice>
62
79
  </attribute>
63
80
  </optional>
81
+ <optional>
82
+ <attribute name="droploc">
83
+ <data type="boolean"/>
84
+ </attribute>
85
+ </optional>
64
86
  <text/>
65
87
  </element>
66
88
  </define>
@@ -134,6 +156,11 @@
134
156
  <data type="boolean"/>
135
157
  </attribute>
136
158
  </optional>
159
+ <optional>
160
+ <attribute name="key">
161
+ <data type="boolean"/>
162
+ </attribute>
163
+ </optional>
137
164
  <oneOrMore>
138
165
  <ref name="dt"/>
139
166
  <ref name="dd"/>
@@ -226,6 +253,9 @@
226
253
  <data type="boolean"/>
227
254
  </attribute>
228
255
  </optional>
256
+ <optional>
257
+ <ref name="colgroup"/>
258
+ </optional>
229
259
  <optional>
230
260
  <ref name="tname"/>
231
261
  </optional>
@@ -578,6 +608,8 @@
578
608
  <ref name="ol"/>
579
609
  <ref name="dl"/>
580
610
  <ref name="formula"/>
611
+ <ref name="quote"/>
612
+ <ref name="sourcecode"/>
581
613
  </choice>
582
614
  </oneOrMore>
583
615
  </element>
@@ -661,6 +693,16 @@
661
693
  </choice>
662
694
  </attribute>
663
695
  </optional>
696
+ <optional>
697
+ <attribute name="valign">
698
+ <choice>
699
+ <value>top</value>
700
+ <value>middle</value>
701
+ <value>bottom</value>
702
+ <value>baseline</value>
703
+ </choice>
704
+ </attribute>
705
+ </optional>
664
706
  <choice>
665
707
  <zeroOrMore>
666
708
  <choice>
@@ -697,6 +739,16 @@
697
739
  </choice>
698
740
  </attribute>
699
741
  </optional>
742
+ <optional>
743
+ <attribute name="valign">
744
+ <choice>
745
+ <value>top</value>
746
+ <value>middle</value>
747
+ <value>bottom</value>
748
+ <value>baseline</value>
749
+ </choice>
750
+ </attribute>
751
+ </optional>
700
752
  <choice>
701
753
  <zeroOrMore>
702
754
  <choice>
@@ -722,6 +774,18 @@
722
774
  </define>
723
775
  </include>
724
776
  <!-- end overrides -->
777
+ <define name="colgroup">
778
+ <element name="colgroup">
779
+ <oneOrMore>
780
+ <ref name="col"/>
781
+ </oneOrMore>
782
+ </element>
783
+ </define>
784
+ <define name="col">
785
+ <element name="col">
786
+ <attribute name="width"/>
787
+ </element>
788
+ </define>
725
789
  <define name="TextElement" combine="choice">
726
790
  <ref name="concept"/>
727
791
  </define>
@@ -834,6 +898,13 @@
834
898
  </define>
835
899
  <define name="standard-document">
836
900
  <element name="standard-document">
901
+ <attribute name="version"/>
902
+ <attribute name="type">
903
+ <choice>
904
+ <value>semantic</value>
905
+ <value>presentation</value>
906
+ </choice>
907
+ </attribute>
837
908
  <ref name="bibdata"/>
838
909
  <optional>
839
910
  <ref name="boilerplate"/>
@@ -855,7 +926,7 @@
855
926
  <oneOrMore>
856
927
  <choice>
857
928
  <ref name="content"/>
858
- <ref name="preface_abstract"/>
929
+ <ref name="abstract"/>
859
930
  <ref name="foreword"/>
860
931
  <ref name="introduction"/>
861
932
  <ref name="acknowledgements"/>
@@ -1049,14 +1120,17 @@
1049
1120
  <ref name="section-title"/>
1050
1121
  </optional>
1051
1122
  <group>
1052
- <group>
1053
- <zeroOrMore>
1054
- <ref name="BasicBlock"/>
1055
- </zeroOrMore>
1056
- <zeroOrMore>
1057
- <ref name="note"/>
1058
- </zeroOrMore>
1059
- </group>
1123
+ <choice>
1124
+ <group>
1125
+ <zeroOrMore>
1126
+ <ref name="BasicBlock"/>
1127
+ </zeroOrMore>
1128
+ <zeroOrMore>
1129
+ <ref name="note"/>
1130
+ </zeroOrMore>
1131
+ </group>
1132
+ <ref name="amend"/>
1133
+ </choice>
1060
1134
  <zeroOrMore>
1061
1135
  <choice>
1062
1136
  <ref name="clause-subsection"/>
@@ -1125,49 +1199,7 @@
1125
1199
  </define>
1126
1200
  <define name="annex">
1127
1201
  <element name="annex">
1128
- <optional>
1129
- <attribute name="id">
1130
- <data type="ID"/>
1131
- </attribute>
1132
- </optional>
1133
- <optional>
1134
- <attribute name="language"/>
1135
- </optional>
1136
- <optional>
1137
- <attribute name="script"/>
1138
- </optional>
1139
- <optional>
1140
- <attribute name="inline-header">
1141
- <data type="boolean"/>
1142
- </attribute>
1143
- </optional>
1144
- <attribute name="obligation">
1145
- <choice>
1146
- <value>normative</value>
1147
- <value>informative</value>
1148
- </choice>
1149
- </attribute>
1150
- <optional>
1151
- <ref name="section-title"/>
1152
- </optional>
1153
- <group>
1154
- <group>
1155
- <zeroOrMore>
1156
- <ref name="BasicBlock"/>
1157
- </zeroOrMore>
1158
- <zeroOrMore>
1159
- <ref name="note"/>
1160
- </zeroOrMore>
1161
- </group>
1162
- <zeroOrMore>
1163
- <choice>
1164
- <ref name="annex-subsection"/>
1165
- <ref name="terms"/>
1166
- <ref name="definitions"/>
1167
- <ref name="references"/>
1168
- </choice>
1169
- </zeroOrMore>
1170
- </group>
1202
+ <ref name="Annex-Section"/>
1171
1203
  </element>
1172
1204
  </define>
1173
1205
  <define name="terms">
@@ -1453,11 +1485,6 @@
1453
1485
  </optional>
1454
1486
  </element>
1455
1487
  </define>
1456
- <define name="preface_abstract">
1457
- <element name="abstract">
1458
- <ref name="Basic-Section"/>
1459
- </element>
1460
- </define>
1461
1488
  <define name="term-clause">
1462
1489
  <element name="clause">
1463
1490
  <optional>
@@ -1507,4 +1534,79 @@
1507
1534
  <ref name="CitationType"/>
1508
1535
  </element>
1509
1536
  </define>
1537
+ <define name="amend">
1538
+ <element name="amend">
1539
+ <optional>
1540
+ <attribute name="id">
1541
+ <data type="ID"/>
1542
+ </attribute>
1543
+ </optional>
1544
+ <attribute name="change">
1545
+ <choice>
1546
+ <value>add</value>
1547
+ <value>modify</value>
1548
+ <value>delete</value>
1549
+ </choice>
1550
+ </attribute>
1551
+ <optional>
1552
+ <attribute name="path"/>
1553
+ </optional>
1554
+ <optional>
1555
+ <attribute name="path_end"/>
1556
+ </optional>
1557
+ <optional>
1558
+ <attribute name="title"/>
1559
+ </optional>
1560
+ <optional>
1561
+ <element name="location">
1562
+ <zeroOrMore>
1563
+ <ref name="locality"/>
1564
+ </zeroOrMore>
1565
+ </element>
1566
+ </optional>
1567
+ <zeroOrMore>
1568
+ <ref name="autonumber"/>
1569
+ </zeroOrMore>
1570
+ <optional>
1571
+ <element name="description">
1572
+ <zeroOrMore>
1573
+ <ref name="BasicBlock"/>
1574
+ </zeroOrMore>
1575
+ </element>
1576
+ </optional>
1577
+ <optional>
1578
+ <element name="newcontent">
1579
+ <zeroOrMore>
1580
+ <ref name="BasicBlock"/>
1581
+ </zeroOrMore>
1582
+ </element>
1583
+ </optional>
1584
+ <optional>
1585
+ <element name="description">
1586
+ <zeroOrMore>
1587
+ <ref name="BasicBlock"/>
1588
+ </zeroOrMore>
1589
+ </element>
1590
+ </optional>
1591
+ </element>
1592
+ </define>
1593
+ <define name="autonumber">
1594
+ <element name="autonumber">
1595
+ <attribute name="type">
1596
+ <choice>
1597
+ <value>requirement</value>
1598
+ <value>recommendation</value>
1599
+ <value>permission</value>
1600
+ <value>table</value>
1601
+ <value>figure</value>
1602
+ <value>admonition</value>
1603
+ <value>formula</value>
1604
+ <value>sourcecode</value>
1605
+ <value>example</value>
1606
+ <value>note</value>
1607
+ </choice>
1608
+ </attribute>
1609
+ <text/>
1610
+ </element>
1611
+ </define>
1510
1612
  </grammar>