metanorma-itu 1.0.17 → 1.1.3

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: b41712042e0f88c1a324ba578c37b2a0f53dc0b4864d33bf659d64c608374526
4
- data.tar.gz: 1b3c37954a1e5da6b8bf4f4175befa1c3aeb08e3a27a7934086e0d088b5e131c
3
+ metadata.gz: b7125f1d6d17254c0460f7398d24a43683b2099bc07f0cd7c483ce2725ab847b
4
+ data.tar.gz: bb3b19af63382c527698bdb6402cc314f6e0fd0dfd3e90e6fae6d64d6afe5918
5
5
  SHA512:
6
- metadata.gz: 932e2f9474e91292595ea30ad42766d1b863829855fb3c66ed0d420784c184a35395258f9549a397a43d05966ad554bae21c241ad9b2f59ef7a3309fe9da6a48
7
- data.tar.gz: 7bef0da0c481ee46241f0f5341c05b1028ec715cea0eb716594260ab04eeabd7fa1fbb8962a53c4ef38a383c958043646804deb44e0a779dafb8ccad13ed082e
6
+ metadata.gz: 8637b27bbb50cc729c8be856154330a9cd6ba7fdd60dcc3eb5f3605609fd62384e266e92370178fc603585330522e38fdde42fed426eeab9c5237f2072945c5b
7
+ data.tar.gz: 8ae3568058d7a603c2f875eaaea6f507874249b4ed6bfafca084a220a416cf8186f0c48f6f12fe23b4545f3eddd7055fc7e5385892c250f21c5f38e114f2eea9
@@ -29,7 +29,6 @@ jobs:
29
29
  uses: actions/setup-ruby@v1
30
30
  with:
31
31
  ruby-version: ${{ matrix.ruby }}
32
- architecture: 'x64'
33
32
  - name: Update gems
34
33
  run: |
35
34
  sudo gem install bundler --force
@@ -31,7 +31,6 @@ jobs:
31
31
  uses: actions/setup-ruby@v1
32
32
  with:
33
33
  ruby-version: ${{ matrix.ruby }}
34
- architecture: 'x64'
35
34
  - name: Update gems
36
35
  run: |
37
36
  gem install bundler
@@ -39,15 +38,19 @@ jobs:
39
38
  - name: Run specs
40
39
  run: |
41
40
  bundle exec rake
42
- - name: Trigger dependent repositories
43
- if: github.ref == 'refs/heads/master' && matrix.ruby == '2.6'
41
+ - name: Trigger repositories
42
+ if: matrix.ruby == '2.6'
44
43
  env:
45
- GH_USERNAME: ${{ secrets.PAT_USERNAME }}
46
- GH_ACCESS_TOKEN: ${{ secrets.PAT_TOKEN }}
44
+ GH_USERNAME: metanorma-ci
45
+ GH_ACCESS_TOKEN: ${{ secrets.METANORMA_CI_PAT_TOKEN }}
47
46
  run: |
48
47
  curl -LO --retry 3 https://raw.githubusercontent.com/metanorma/metanorma-build-scripts/master/trigger-gh-actions.sh
49
48
  [[ -f ".github/workflows/dependent_repos.env" ]] && source .github/workflows/dependent_repos.env
50
- for repo in $DEPENDENT_REPOS
49
+ CLIENT_PAYLOAD=$(cat <<EOF
50
+ "{ "ref": "${GITHUB_REF}", "repo": "${GITHUB_REPOSITORY}" }"
51
+ EOF
52
+ )
53
+ for repo in $REPOS
51
54
  do
52
- sh trigger-gh-actions.sh $ORGANISATION $repo $GH_USERNAME $GH_ACCESS_TOKEN $GITHUB_REPOSITORY "{ \"ref\": \"${GITHUB_REF}\" }"
55
+ sh trigger-gh-actions.sh $ORGANISATION $repo $GH_USERNAME $GH_ACCESS_TOKEN $GITHUB_REPOSITORY "$CLIENT_PAYLOAD"
53
56
  done
@@ -29,7 +29,6 @@ jobs:
29
29
  uses: actions/setup-ruby@v1
30
30
  with:
31
31
  ruby-version: ${{ matrix.ruby }}
32
- architecture: 'x64'
33
32
  - name: Update gems
34
33
  shell: pwsh
35
34
  run: |
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rspec/core/rake_task"
3
+ require 'isodoc/gem_tasks'
3
4
 
5
+ IsoDoc::GemTasks.install
4
6
  RSpec::Core::RakeTask.new(:spec)
5
7
 
6
8
  task :default => :spec
@@ -532,7 +532,7 @@
532
532
  </define>
533
533
  <define name="LocalityType">
534
534
  <data type="string">
535
- <param name="pattern">section|clause|part|paragraph|chapter|page|whole|table|annex|figure|note|list|example|volume|issue|time|locality:[a-zA-Z0-9_]+</param>
535
+ <param name="pattern">section|clause|part|paragraph|chapter|page|whole|table|annex|figure|note|list|example|volume|issue|time|anchor|locality:[a-zA-Z0-9_]+</param>
536
536
  </data>
537
537
  </define>
538
538
  <define name="referenceFrom">
@@ -71,46 +71,46 @@ module Asciidoctor
71
71
  x.at("//sections/clause[descendant::definitions]")
72
72
  unless x.at("//sections/clause/title[text() = 'Conventions']")
73
73
  ins.next = "<clause id='_#{UUIDTools::UUID.random_create}'>"\
74
- "<title>Conventions</title><p>"\
75
- "#{@labels['clause_empty']}</p></clause>"
76
- end
77
- end
74
+ "<title>Conventions</title><p>"\
75
+ "#{@labels['clause_empty']}</p></clause>"
76
+ end
77
+ end
78
78
 
79
- def cleanup(xmldoc)
80
- symbols_cleanup(xmldoc)
81
- super
82
- obligations_cleanup(xmldoc)
83
- xmldoc
84
- end
79
+ def cleanup(xmldoc)
80
+ symbols_cleanup(xmldoc)
81
+ super
82
+ obligations_cleanup(xmldoc)
83
+ xmldoc
84
+ end
85
85
 
86
- def smartquotes_cleanup(xmldoc)
87
- return super if @smartquotes
88
- xmldoc.traverse do |n|
86
+ def smartquotes_cleanup(xmldoc)
87
+ return super if @smartquotes
88
+ xmldoc.traverse do |n|
89
89
  next unless n.text?
90
90
  n.replace(HTMLEntities.new.encode(
91
91
  n.text.gsub(/\u2019|\u2018|\u201a|\u201b/, "'").
92
92
  gsub(/\u201c|\u201d|\u201e|\u201f/, '"'), :basic))
93
- end
94
- xmldoc
95
- end
93
+ end
94
+ xmldoc
95
+ end
96
96
 
97
- def termdef_cleanup(xmldoc)
98
- xmldoc.xpath("//term/preferred").each do |p|
97
+ def termdef_cleanup(xmldoc)
98
+ xmldoc.xpath("//term/preferred").each do |p|
99
99
  if ["terms defined elsewhere",
100
- "terms defined in this recommendation"].include? p.text.downcase
101
- p.name = "title"
102
- p.parent.name = "terms"
103
- end
104
- end
105
- super
100
+ "terms defined in this recommendation"].include? p.text.downcase
101
+ p.name = "title"
102
+ p.parent.name = "terms"
106
103
  end
104
+ end
105
+ super
106
+ end
107
107
 
108
- def termdef_boilerplate_cleanup(xmldoc)
109
- end
108
+ def termdef_boilerplate_cleanup(xmldoc)
109
+ end
110
110
 
111
- def symbols_cleanup(xmldoc)
112
- sym = xmldoc.at("//definitions/title")
113
- sym and sym&.next_element&.name == "dl" and
111
+ def symbols_cleanup(xmldoc)
112
+ sym = xmldoc.at("//definitions/title")
113
+ sym and sym&.next_element&.name == "dl" and
114
114
  sym.next = "<p>#{@symbols_boilerplate}</p>"
115
115
  end
116
116
 
@@ -118,55 +118,55 @@ module Asciidoctor
118
118
 
119
119
  def pub_class(bib)
120
120
  return 1 if bib.at("#{PUBLISHER}[abbreviation = 'ITU']")
121
- return 1 if bib.at("#{PUBLISHER}[name = 'International "\
122
- "Telecommunication Union']")
123
- return 2 if bib.at("#{PUBLISHER}[abbreviation = 'ISO']")
124
- return 2 if bib.at("#{PUBLISHER}[name = 'International Organization "\
125
- "for Standardization']")
126
- return 3 if bib.at("#{PUBLISHER}[abbreviation = 'IEC']")
127
- return 3 if bib.at("#{PUBLISHER}[name = 'International "\
128
- "Electrotechnical Commission']")
129
- return 4 if bib.at("./docidentifier[@type][not(@type = 'DOI' or "\
130
- "@type = 'metanorma' or @type = 'ISSN' or @type = "\
131
- "'ISBN')]")
132
- 5
133
- end
121
+ return 1 if bib.at("#{PUBLISHER}[name = 'International "\
122
+ "Telecommunication Union']")
123
+ return 2 if bib.at("#{PUBLISHER}[abbreviation = 'ISO']")
124
+ return 2 if bib.at("#{PUBLISHER}[name = 'International Organization "\
125
+ "for Standardization']")
126
+ return 3 if bib.at("#{PUBLISHER}[abbreviation = 'IEC']")
127
+ return 3 if bib.at("#{PUBLISHER}[name = 'International "\
128
+ "Electrotechnical Commission']")
129
+ return 4 if bib.at("./docidentifier[@type][not(@type = 'DOI' or "\
130
+ "@type = 'metanorma' or @type = 'ISSN' or @type = "\
131
+ "'ISBN')]")
132
+ 5
133
+ end
134
134
 
135
- def sort_biblio(bib)
136
- bib.sort do |a, b|
137
- sort_biblio_key(a) <=> sort_biblio_key(b)
138
- end
135
+ def sort_biblio(bib)
136
+ bib.sort do |a, b|
137
+ sort_biblio_key(a) <=> sort_biblio_key(b)
139
138
  end
139
+ end
140
140
 
141
- # sort by: doc class (ITU, ISO, IEC, other standard (not DOI &c), other
142
- # then standard class (docid class other than DOI &c)
143
- # then alphanumeric doc id (not DOI &c)
144
- # then title
145
- def sort_biblio_key(bib)
146
- pubclass = pub_class(bib)
147
- num = bib&.at("./docnumber")&.text
148
- id = bib&.at("./docidentifier[not(@type = 'DOI' or @type = "\
149
- "'metanorma' or @type = 'ISSN' or @type = 'ISBN')]")
150
- metaid = bib&.at("./docidentifier[@type = 'metanorma']")&.text
151
- abbrid = metaid unless /^\[\d+\]$/.match(metaid)
152
- type = id['type'] if id
153
- title = bib&.at("./title[@type = 'main']")&.text ||
154
- bib&.at("./title")&.text || bib&.at("./formattedref")&.text
155
- "#{pubclass} :: #{type} :: #{id&.text || metaid} :: #{title}"
156
- end
141
+ # sort by: doc class (ITU, ISO, IEC, other standard (not DOI &c), other
142
+ # then standard class (docid class other than DOI &c)
143
+ # then alphanumeric doc id (not DOI &c)
144
+ # then title
145
+ def sort_biblio_key(bib)
146
+ pubclass = pub_class(bib)
147
+ num = bib&.at("./docnumber")&.text
148
+ id = bib&.at("./docidentifier[not(@type = 'DOI' or @type = "\
149
+ "'metanorma' or @type = 'ISSN' or @type = 'ISBN')]")
150
+ metaid = bib&.at("./docidentifier[@type = 'metanorma']")&.text
151
+ abbrid = metaid unless /^\[\d+\]$/.match(metaid)
152
+ type = id['type'] if id
153
+ title = bib&.at("./title[@type = 'main']")&.text ||
154
+ bib&.at("./title")&.text || bib&.at("./formattedref")&.text
155
+ "#{pubclass} :: #{type} :: #{id&.text || metaid} :: #{title}"
156
+ end
157
157
 
158
- def biblio_reorder(xmldoc)
159
- xmldoc.xpath("//references").each do |r|
160
- biblio_reorder1(r)
161
- end
158
+ def biblio_reorder(xmldoc)
159
+ xmldoc.xpath("//references").each do |r|
160
+ biblio_reorder1(r)
162
161
  end
162
+ end
163
163
 
164
- def normref_cleanup(xmldoc)
165
- super
166
- r = xmldoc.at(NORM_REF) || return
167
- title = r.at("./title") and
168
- title.content = "References"
169
- end
164
+ def normref_cleanup(xmldoc)
165
+ super
166
+ r = xmldoc.at(NORM_REF) || return
167
+ title = r.at("./title") and
168
+ title.content = "References"
170
169
  end
171
170
  end
172
171
  end
172
+ end
@@ -53,21 +53,12 @@ module Asciidoctor
53
53
  end.join("\n")
54
54
  end
55
55
 
56
- def document(node)
57
- init(node)
58
- ret1 = makexml(node)
59
- ret = ret1.to_xml(indent: 2)
60
- unless node.attr("nodoc") || !node.attr("docfile")
61
- filename = node.attr("docfile").gsub(/\.adoc/, ".xml").
62
- gsub(%r{^.*/}, "")
63
- File.open(filename, "w") { |f| f.write(ret) }
64
- html_converter(node).convert filename unless node.attr("nodoc")
65
- word_converter(node).convert filename unless node.attr("nodoc")
66
- pdf_converter(node).convert filename unless node.attr("nodoc")
67
- end
68
- @log.write(@localdir + @filename + ".err") unless @novalid
69
- @files_to_delete.each { |f| FileUtils.rm f }
70
- ret
56
+ def outputs(node, ret)
57
+ File.open(@filename + ".xml", "w:UTF-8") { |f| f.write(ret) }
58
+ presentation_xml_converter(node).convert(@filename + ".xml")
59
+ html_converter(node).convert(@filename + ".presentation.xml", nil, false, "#{@filename}.html")
60
+ doc_converter(node).convert(@filename + ".presentation.xml", nil, false, "#{@filename}.doc")
61
+ pdf_converter(node)&.convert(@filename + ".presentation.xml", nil, false, "#{@filename}.pdf")
71
62
  end
72
63
 
73
64
  def validate(doc)
@@ -137,7 +128,7 @@ module Asciidoctor
137
128
  super
138
129
  end
139
130
 
140
- def metadata_keywords(node, xml)
131
+ def metadata_keywords(node, xml)
141
132
  return unless node.attr("keywords")
142
133
  node.attr("keywords").split(/,[ ]*/).sort.each_with_index do |kw, i|
143
134
  xml.keyword (i == 0 ? kw.capitalize : kw)
@@ -152,6 +143,10 @@ module Asciidoctor
152
143
  super.merge(hierarchical_assets: node.attr("hierarchical-object-numbering"))
153
144
  end
154
145
 
146
+ def presentation_xml_converter(node)
147
+ IsoDoc::ITU::PresentationXMLConvert.new(html_extract_attributes(node))
148
+ end
149
+
155
150
  def html_converter(node)
156
151
  IsoDoc::ITU::HtmlConvert.new(html_extract_attributes(node))
157
152
  end
@@ -160,7 +155,7 @@ module Asciidoctor
160
155
  IsoDoc::ITU::PdfConvert.new(html_extract_attributes(node))
161
156
  end
162
157
 
163
- def word_converter(node)
158
+ def doc_converter(node)
164
159
  IsoDoc::ITU::WordConvert.new(doc_extract_attributes(node))
165
160
  end
166
161
  end
@@ -64,6 +64,85 @@
64
64
  <text/>
65
65
  </element>
66
66
  </define>
67
+ <define name="ul">
68
+ <element name="ul">
69
+ <attribute name="id">
70
+ <data type="ID"/>
71
+ </attribute>
72
+ <optional>
73
+ <attribute name="keep-with-next">
74
+ <data type="boolean"/>
75
+ </attribute>
76
+ </optional>
77
+ <optional>
78
+ <attribute name="keep-lines-together">
79
+ <data type="boolean"/>
80
+ </attribute>
81
+ </optional>
82
+ <oneOrMore>
83
+ <ref name="li"/>
84
+ </oneOrMore>
85
+ <zeroOrMore>
86
+ <ref name="note"/>
87
+ </zeroOrMore>
88
+ </element>
89
+ </define>
90
+ <define name="ol">
91
+ <element name="ol">
92
+ <attribute name="id">
93
+ <data type="ID"/>
94
+ </attribute>
95
+ <optional>
96
+ <attribute name="keep-with-next">
97
+ <data type="boolean"/>
98
+ </attribute>
99
+ </optional>
100
+ <optional>
101
+ <attribute name="keep-lines-together">
102
+ <data type="boolean"/>
103
+ </attribute>
104
+ </optional>
105
+ <attribute name="type">
106
+ <choice>
107
+ <value>roman</value>
108
+ <value>alphabet</value>
109
+ <value>arabic</value>
110
+ <value>roman_upper</value>
111
+ <value>alphabet_upper</value>
112
+ </choice>
113
+ </attribute>
114
+ <oneOrMore>
115
+ <ref name="li"/>
116
+ </oneOrMore>
117
+ <zeroOrMore>
118
+ <ref name="note"/>
119
+ </zeroOrMore>
120
+ </element>
121
+ </define>
122
+ <define name="dl">
123
+ <element name="dl">
124
+ <attribute name="id">
125
+ <data type="ID"/>
126
+ </attribute>
127
+ <optional>
128
+ <attribute name="keep-with-next">
129
+ <data type="boolean"/>
130
+ </attribute>
131
+ </optional>
132
+ <optional>
133
+ <attribute name="keep-lines-together">
134
+ <data type="boolean"/>
135
+ </attribute>
136
+ </optional>
137
+ <oneOrMore>
138
+ <ref name="dt"/>
139
+ <ref name="dd"/>
140
+ </oneOrMore>
141
+ <zeroOrMore>
142
+ <ref name="note"/>
143
+ </zeroOrMore>
144
+ </element>
145
+ </define>
67
146
  <define name="example">
68
147
  <element name="example">
69
148
  <attribute name="id">
@@ -77,6 +156,19 @@
77
156
  <optional>
78
157
  <attribute name="subsequence"/>
79
158
  </optional>
159
+ <optional>
160
+ <attribute name="number"/>
161
+ </optional>
162
+ <optional>
163
+ <attribute name="keep-with-next">
164
+ <data type="boolean"/>
165
+ </attribute>
166
+ </optional>
167
+ <optional>
168
+ <attribute name="keep-lines-together">
169
+ <data type="boolean"/>
170
+ </attribute>
171
+ </optional>
80
172
  <optional>
81
173
  <ref name="tname"/>
82
174
  </optional>
@@ -97,6 +189,296 @@
97
189
  </zeroOrMore>
98
190
  </element>
99
191
  </define>
192
+ <define name="table">
193
+ <element name="table">
194
+ <attribute name="id">
195
+ <data type="ID"/>
196
+ </attribute>
197
+ <optional>
198
+ <attribute name="unnumbered">
199
+ <data type="boolean"/>
200
+ </attribute>
201
+ </optional>
202
+ <optional>
203
+ <attribute name="number"/>
204
+ </optional>
205
+ <optional>
206
+ <attribute name="subsequence"/>
207
+ </optional>
208
+ <optional>
209
+ <attribute name="alt"/>
210
+ </optional>
211
+ <optional>
212
+ <attribute name="summary"/>
213
+ </optional>
214
+ <optional>
215
+ <attribute name="uri">
216
+ <data type="anyURI"/>
217
+ </attribute>
218
+ </optional>
219
+ <optional>
220
+ <attribute name="keep-with-next">
221
+ <data type="boolean"/>
222
+ </attribute>
223
+ </optional>
224
+ <optional>
225
+ <attribute name="keep-lines-together">
226
+ <data type="boolean"/>
227
+ </attribute>
228
+ </optional>
229
+ <optional>
230
+ <ref name="tname"/>
231
+ </optional>
232
+ <optional>
233
+ <ref name="thead"/>
234
+ </optional>
235
+ <ref name="tbody"/>
236
+ <optional>
237
+ <ref name="tfoot"/>
238
+ </optional>
239
+ <zeroOrMore>
240
+ <ref name="table-note"/>
241
+ </zeroOrMore>
242
+ <optional>
243
+ <ref name="dl"/>
244
+ </optional>
245
+ </element>
246
+ </define>
247
+ <define name="figure">
248
+ <element name="figure">
249
+ <attribute name="id">
250
+ <data type="ID"/>
251
+ </attribute>
252
+ <optional>
253
+ <attribute name="unnumbered">
254
+ <data type="boolean"/>
255
+ </attribute>
256
+ </optional>
257
+ <optional>
258
+ <attribute name="number"/>
259
+ </optional>
260
+ <optional>
261
+ <attribute name="subsequence"/>
262
+ </optional>
263
+ <optional>
264
+ <attribute name="keep-with-next">
265
+ <data type="boolean"/>
266
+ </attribute>
267
+ </optional>
268
+ <optional>
269
+ <attribute name="keep-lines-together">
270
+ <data type="boolean"/>
271
+ </attribute>
272
+ </optional>
273
+ <optional>
274
+ <attribute name="class"/>
275
+ </optional>
276
+ <optional>
277
+ <ref name="source"/>
278
+ </optional>
279
+ <optional>
280
+ <ref name="tname"/>
281
+ </optional>
282
+ <choice>
283
+ <ref name="image"/>
284
+ <ref name="video"/>
285
+ <ref name="audio"/>
286
+ <ref name="pre"/>
287
+ <oneOrMore>
288
+ <ref name="paragraph-with-footnote"/>
289
+ </oneOrMore>
290
+ <zeroOrMore>
291
+ <ref name="figure"/>
292
+ </zeroOrMore>
293
+ </choice>
294
+ <zeroOrMore>
295
+ <ref name="fn"/>
296
+ </zeroOrMore>
297
+ <optional>
298
+ <ref name="dl"/>
299
+ </optional>
300
+ <zeroOrMore>
301
+ <ref name="note"/>
302
+ </zeroOrMore>
303
+ </element>
304
+ </define>
305
+ <define name="sourcecode">
306
+ <element name="sourcecode">
307
+ <attribute name="id">
308
+ <data type="ID"/>
309
+ </attribute>
310
+ <optional>
311
+ <attribute name="unnumbered">
312
+ <data type="boolean"/>
313
+ </attribute>
314
+ </optional>
315
+ <optional>
316
+ <attribute name="number"/>
317
+ </optional>
318
+ <optional>
319
+ <attribute name="subsequence"/>
320
+ </optional>
321
+ <optional>
322
+ <attribute name="keep-with-next">
323
+ <data type="boolean"/>
324
+ </attribute>
325
+ </optional>
326
+ <optional>
327
+ <attribute name="keep-lines-together">
328
+ <data type="boolean"/>
329
+ </attribute>
330
+ </optional>
331
+ <optional>
332
+ <attribute name="lang"/>
333
+ </optional>
334
+ <optional>
335
+ <ref name="tname"/>
336
+ </optional>
337
+ <oneOrMore>
338
+ <choice>
339
+ <text/>
340
+ <ref name="callout"/>
341
+ </choice>
342
+ </oneOrMore>
343
+ <zeroOrMore>
344
+ <ref name="annotation"/>
345
+ </zeroOrMore>
346
+ <zeroOrMore>
347
+ <ref name="note"/>
348
+ </zeroOrMore>
349
+ </element>
350
+ </define>
351
+ <define name="formula">
352
+ <element name="formula">
353
+ <attribute name="id">
354
+ <data type="ID"/>
355
+ </attribute>
356
+ <optional>
357
+ <attribute name="unnumbered">
358
+ <data type="boolean"/>
359
+ </attribute>
360
+ </optional>
361
+ <optional>
362
+ <attribute name="number"/>
363
+ </optional>
364
+ <optional>
365
+ <attribute name="subsequence"/>
366
+ </optional>
367
+ <optional>
368
+ <attribute name="keep-with-next">
369
+ <data type="boolean"/>
370
+ </attribute>
371
+ </optional>
372
+ <optional>
373
+ <attribute name="keep-lines-together">
374
+ <data type="boolean"/>
375
+ </attribute>
376
+ </optional>
377
+ <optional>
378
+ <attribute name="inequality">
379
+ <data type="boolean"/>
380
+ </attribute>
381
+ </optional>
382
+ <ref name="stem"/>
383
+ <optional>
384
+ <ref name="dl"/>
385
+ </optional>
386
+ <zeroOrMore>
387
+ <ref name="note"/>
388
+ </zeroOrMore>
389
+ </element>
390
+ </define>
391
+ <define name="ParagraphType">
392
+ <attribute name="id">
393
+ <data type="ID"/>
394
+ </attribute>
395
+ <optional>
396
+ <attribute name="align">
397
+ <ref name="Alignments"/>
398
+ </attribute>
399
+ </optional>
400
+ <optional>
401
+ <attribute name="keep-with-next">
402
+ <data type="boolean"/>
403
+ </attribute>
404
+ </optional>
405
+ <optional>
406
+ <attribute name="keep-lines-together">
407
+ <data type="boolean"/>
408
+ </attribute>
409
+ </optional>
410
+ <zeroOrMore>
411
+ <ref name="TextElement"/>
412
+ </zeroOrMore>
413
+ <zeroOrMore>
414
+ <ref name="note"/>
415
+ </zeroOrMore>
416
+ </define>
417
+ <define name="paragraph-with-footnote">
418
+ <element name="p">
419
+ <attribute name="id">
420
+ <data type="ID"/>
421
+ </attribute>
422
+ <optional>
423
+ <attribute name="align">
424
+ <ref name="Alignments"/>
425
+ </attribute>
426
+ </optional>
427
+ <optional>
428
+ <attribute name="keep-with-next">
429
+ <data type="boolean"/>
430
+ </attribute>
431
+ </optional>
432
+ <optional>
433
+ <attribute name="keep-lines-together">
434
+ <data type="boolean"/>
435
+ </attribute>
436
+ </optional>
437
+ <zeroOrMore>
438
+ <choice>
439
+ <ref name="TextElement"/>
440
+ <ref name="fn"/>
441
+ </choice>
442
+ </zeroOrMore>
443
+ <zeroOrMore>
444
+ <ref name="note"/>
445
+ </zeroOrMore>
446
+ </element>
447
+ </define>
448
+ <define name="quote">
449
+ <element name="quote">
450
+ <attribute name="id">
451
+ <data type="ID"/>
452
+ </attribute>
453
+ <optional>
454
+ <attribute name="alignment">
455
+ <ref name="Alignments"/>
456
+ </attribute>
457
+ </optional>
458
+ <optional>
459
+ <attribute name="keep-with-next">
460
+ <data type="boolean"/>
461
+ </attribute>
462
+ </optional>
463
+ <optional>
464
+ <attribute name="keep-lines-together">
465
+ <data type="boolean"/>
466
+ </attribute>
467
+ </optional>
468
+ <optional>
469
+ <ref name="quote-source"/>
470
+ </optional>
471
+ <optional>
472
+ <ref name="quote-author"/>
473
+ </optional>
474
+ <oneOrMore>
475
+ <ref name="paragraph-with-footnote"/>
476
+ </oneOrMore>
477
+ <zeroOrMore>
478
+ <ref name="note"/>
479
+ </zeroOrMore>
480
+ </element>
481
+ </define>
100
482
  <define name="BibDataExtensionType">
101
483
  <ref name="doctype"/>
102
484
  <optional>
@@ -165,6 +547,30 @@
165
547
  <attribute name="id">
166
548
  <data type="ID"/>
167
549
  </attribute>
550
+ <optional>
551
+ <attribute name="unnumbered">
552
+ <data type="boolean"/>
553
+ </attribute>
554
+ </optional>
555
+ <optional>
556
+ <attribute name="number"/>
557
+ </optional>
558
+ <optional>
559
+ <attribute name="subsequence"/>
560
+ </optional>
561
+ <optional>
562
+ <attribute name="keep-with-next">
563
+ <data type="boolean"/>
564
+ </attribute>
565
+ </optional>
566
+ <optional>
567
+ <attribute name="keep-lines-together">
568
+ <data type="boolean"/>
569
+ </attribute>
570
+ </optional>
571
+ <optional>
572
+ <attribute name="type"/>
573
+ </optional>
168
574
  <oneOrMore>
169
575
  <choice>
170
576
  <ref name="paragraph"/>
@@ -910,6 +1316,27 @@
910
1316
  <attribute name="id">
911
1317
  <data type="ID"/>
912
1318
  </attribute>
1319
+ <optional>
1320
+ <attribute name="unnumbered">
1321
+ <data type="boolean"/>
1322
+ </attribute>
1323
+ </optional>
1324
+ <optional>
1325
+ <attribute name="number"/>
1326
+ </optional>
1327
+ <optional>
1328
+ <attribute name="subsequence"/>
1329
+ </optional>
1330
+ <optional>
1331
+ <attribute name="keep-with-next">
1332
+ <data type="boolean"/>
1333
+ </attribute>
1334
+ </optional>
1335
+ <optional>
1336
+ <attribute name="keep-lines-together">
1337
+ <data type="boolean"/>
1338
+ </attribute>
1339
+ </optional>
913
1340
  <oneOrMore>
914
1341
  <choice>
915
1342
  <ref name="paragraph"/>