relaton-ogc 0.7.0 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,84 +1,31 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2
+ <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3
3
  <!--
4
4
  Currently we inherit from a namespaced grammar, isostandard. Until we inherit from isodoc,
5
5
  we cannot have a new default namespace: we will end up with a grammar with two different
6
6
  namespaces, one for isostandard and one for csand additions. And we do not want that.
7
7
  -->
8
- <include href="isostandard.rng">
8
+ <include href="isodoc.rng">
9
9
  <start>
10
10
  <ref name="ogc-standard"/>
11
11
  </start>
12
- <define name="figure">
13
- <element name="figure">
14
- <attribute name="id">
15
- <data type="ID"/>
16
- </attribute>
17
- <optional>
18
- <ref name="tname"/>
19
- </optional>
20
- <choice>
21
- <ref name="image"/>
22
- <ref name="pre"/>
23
- <oneOrMore>
24
- <ref name="subfigure"/>
25
- </oneOrMore>
26
- </choice>
27
- <zeroOrMore>
28
- <ref name="fn"/>
29
- </zeroOrMore>
30
- <optional>
31
- <ref name="dl"/>
32
- </optional>
33
- <zeroOrMore>
34
- <ref name="note"/>
35
- </zeroOrMore>
36
- </element>
37
- </define>
38
- <define name="subfigure">
39
- <element name="figure">
40
- <attribute name="id">
41
- <data type="ID"/>
42
- </attribute>
43
- <optional>
44
- <ref name="tname"/>
45
- </optional>
46
- <choice>
47
- <ref name="image"/>
48
- <ref name="pre"/>
49
- </choice>
50
- </element>
51
- </define>
52
12
  <define name="DocumentType">
53
13
  <choice>
54
- <value>abstract-specification</value>
14
+ <value>abstract-specification-topic</value>
55
15
  <value>best-practice</value>
56
- <value>candidate-standard</value>
57
- <value>conformance-class</value>
58
- <value>change-request</value>
16
+ <value>change-request-supporting-document</value>
59
17
  <value>community-practice</value>
60
18
  <value>community-standard</value>
61
19
  <value>discussion-paper</value>
62
- <value>draft-discussion-paper</value>
63
- <value>interoperability-program-report</value>
64
- <value>implementation-standard</value>
65
- <value>implementation-standard-corrigendum</value>
66
- <value>extension-package-standard</value>
67
- <value>notes</value>
68
- <value>ogc-reference-model</value>
69
- <value>profile-corrigendum</value>
70
- <value>public-engineering-report</value>
20
+ <value>engineering-report</value>
21
+ <value>other</value>
71
22
  <value>policy</value>
72
- <value>policy-name-type-specification</value>
73
- <value>primer</value>
74
- <value>profile</value>
75
- <value>request-for-comment</value>
76
- <value>retired</value>
77
- <value>standard-application-profile</value>
23
+ <value>reference-model</value>
24
+ <value>release-notes</value>
25
+ <value>standard</value>
26
+ <value>user-guide</value>
27
+ <value>white-paper</value>
78
28
  <value>test-suite</value>
79
- <value>whitepaper</value>
80
- <value>approved-technical-baseline</value>
81
- <value>recommendation-paper</value>
82
29
  </choice>
83
30
  </define>
84
31
  <define name="editorialgroup">
@@ -96,6 +43,9 @@
96
43
  <optional>
97
44
  <ref name="doctype"/>
98
45
  </optional>
46
+ <optional>
47
+ <ref name="docsubtype"/>
48
+ </optional>
99
49
  <ref name="editorialgroup"/>
100
50
  <zeroOrMore>
101
51
  <ref name="ics"/>
@@ -113,6 +63,25 @@
113
63
  </element>
114
64
  </define>
115
65
  </include>
66
+ <define name="docsubtype">
67
+ <element name="docsubtype">
68
+ <choice>
69
+ <value>conceptual-model</value>
70
+ <value>conceptual-model-and-encoding</value>
71
+ <value>conceptual-model-and-implementation</value>
72
+ <value>encoding</value>
73
+ <value>extension</value>
74
+ <value>implementation</value>
75
+ <value>profile</value>
76
+ <value>profile-with-extension</value>
77
+ <value>general</value>
78
+ <value>encoding</value>
79
+ <value>extension</value>
80
+ <value>profile</value>
81
+ <value>profile-with-extension</value>
82
+ </choice>
83
+ </element>
84
+ </define>
116
85
  <define name="submitters">
117
86
  <element name="submitters">
118
87
  <ref name="Basic-Section"/>
@@ -127,6 +96,16 @@
127
96
  </choice>
128
97
  </element>
129
98
  </define>
99
+ <define name="subcommittee">
100
+ <element name="subcommittee">
101
+ <ref name="IsoWorkgroup"/>
102
+ </element>
103
+ </define>
104
+ <define name="workgroup">
105
+ <element name="workgroup">
106
+ <ref name="IsoWorkgroup"/>
107
+ </element>
108
+ </define>
130
109
  <define name="ogc-standard">
131
110
  <element name="ogc-standard">
132
111
  <ref name="bibdata"/>
@@ -1,14 +1,37 @@
1
1
  module RelatonOgc
2
2
  class OgcBibliographicItem < RelatonIsoBib::IsoBibliographicItem
3
3
  TYPES = %w[
4
- abstract-specification best-practice candidate-standard conformance-class
5
- change-request community-practice community-standard discussion-paper
6
- draft-discussion-paper interoperability-program-report implementation-standard
7
- implementation-standard-corrigendum extension-package-standard notes
8
- ogc-reference-model profile-corrigendum public-engineering-report policy
9
- policy-name-type-specification primer profile request-for-comment retired
10
- standard-application-profile test-suite whitepaper approved-technical-baseline
11
- recommendation-paper
4
+ abstract-specification-topic best-practice
5
+ change-request-supporting-document
6
+ community-practice community-standard discussion-paper engineering-report
7
+ other policy reference-model release-notes standard user-guide white-paper
8
+ test-suite
12
9
  ].freeze
10
+
11
+ SUBTYPES = %w[
12
+ conceptual-model conceptual-model-and-encoding
13
+ conceptual-model-and-implementation encoding extension implementation
14
+ profile profile-with-extension general
15
+ ].freeze
16
+
17
+ # @return [String]
18
+ attr_reader :docsubtype
19
+
20
+ # @param docsubtype [String]
21
+ def initialize(**args)
22
+ if args[:docsubtype] && !SUBTYPES.include?(args[:docsubtype])
23
+ warn "[relaton-ogc] invalid document subtype: #{args[:docsubtype]}"
24
+ end
25
+
26
+ @docsubtype = args.delete :docsubtype
27
+ super
28
+ end
29
+
30
+ # @return [Hash]
31
+ def to_hash
32
+ hash = super
33
+ hash["docsubtype"] = docsubtype if docsubtype
34
+ hash
35
+ end
13
36
  end
14
37
  end
@@ -1,46 +1,49 @@
1
1
  module RelatonOgc
2
2
  module Scrapper
3
3
  TYPES = {
4
- "AS" => "abstract-specification",
5
- "BP" => "best-practice",
6
- "CAN" => "candidate-standard",
7
- "CC" => "conformance-class",
8
- "CR" => "change-request",
9
- "CP" => "community-practice",
10
- "CS" => "community-standard",
11
- "DP" => "discussion-paper",
12
- "DP-Draft" => "draft-discussion-paper",
13
- "IPR" => "interoperability-program-report",
14
- "IS" => "implementation-standard",
15
- "ISC" => "implementation-standard-corrigendum",
16
- "ISx" => "extension-package-standard",
17
- "Notes" => "notes",
18
- "ORM" => "ogc-reference-model",
19
- "PC" => "profile-corrigendum",
20
- "PER" => "public-engineering-report",
21
- "POL" => "policy",
22
- "POLNTS" => "policy-name-type-specification",
23
- "Primer" => "primer",
24
- "Profile" => "profile",
25
- "RFC" => "request-for-comment",
26
- "Retired" => "retired",
27
- "SAP" => "standard-application-profile",
28
- "TS" => "test-suite",
29
- "WhitePaper" => "whitepaper",
30
- "ATB" => "approved-technical-baseline",
31
- "RP" => "recommendation-paper",
4
+ "AS" => { type: "abstract-specification-topic" },
5
+ "BP" => { type: "best-practice", subtype: "general" },
6
+ "CAN" => { type: "standard", subtype: "general", stage: "draft" },
7
+ # "CC" => "conformance-class",
8
+ "CR" => { type: "change-request-supporting-document" },
9
+ "CP" => { type: "community-practice" },
10
+ "CS" => { type: "community-standard" },
11
+ "DP" => { type: "discussion-paper" },
12
+ "DP-Draft" => { type: "discussion-paper", stage: "draft" },
13
+ "IPR" => { type: "engineering-report" },
14
+ "IS" => { type: "standard", subtype: "implementation" },
15
+ "ISC" => { type: "standard", subtype: "implementation" },
16
+ "ISx" => { type: "standard", subtype: "extesion" },
17
+ "Notes" => { type: "other" },
18
+ "ORM" => { type: "reference-model" },
19
+ "PC" => { type: "standard", subtype: "profile" },
20
+ "PER" => { type: "engineering-report" },
21
+ "POL" => { type: "standard" },
22
+ # "POLNTS" => "policy-name-type-specification",
23
+ "Primer" => { type: "other" },
24
+ "Profile" => { type: "standard", subtype: "profile" },
25
+ "RFC" => { type: "standard", stage: "draft" },
26
+ # "Retired" => "retired",
27
+ "SAP" => { type: "standard", subtype: "profile" },
28
+ # "TS" => "test-suite", # @PENDING
29
+ "WhitePaper" => { type: "white-paper" },
30
+ "ATB" => { type: "other" },
31
+ "RP" => { type: "discussion-paper" },
32
32
  }.freeze
33
33
 
34
34
  class << self
35
35
  # papam hit [Hash]
36
36
  # @return [RelatonOgc::OrcBibliographicItem]
37
37
  def parse_page(hit)
38
+ type = fetch_type(hit["type"])
38
39
  OgcBibliographicItem.new(
39
40
  fetched: Date.today.to_s,
40
41
  title: fetch_title(hit["title"]),
41
42
  docid: fetch_docid(hit["identifier"]),
42
43
  link: fetch_link(hit["URL"]),
43
- doctype: fetch_type(hit["type"]),
44
+ doctype: type[:type],
45
+ docsubtype: type[:subtype],
46
+ docstatus: fetch_status(type[:stage]),
44
47
  edition: fetch_edition(hit["identifier"]),
45
48
  abstract: fetch_abstract(hit["description"]),
46
49
  contributor: fetch_contributor(hit),
@@ -90,6 +93,12 @@ module RelatonOgc
90
93
  TYPES[type.sub(/^D-/, "")]
91
94
  end
92
95
 
96
+ # @param stage [String]
97
+ # @return [RelatonBib::DocumentStatus, NilClass]
98
+ def fetch_status(stage)
99
+ stage && RelatonBib::DocunentStatus.new(stage: stage)
100
+ end
101
+
93
102
  # @param identifier [String]
94
103
  # @return [String]
95
104
  def fetch_edition(identifier)
@@ -1,3 +1,3 @@
1
1
  module RelatonOgc
2
- VERSION = "0.7.0".freeze
2
+ VERSION = "0.7.1".freeze
3
3
  end
@@ -8,9 +8,9 @@ module RelatonOgc
8
8
  # @return [RelatonOgc::OgcBibliographicItem]
9
9
  def from_xml(xml)
10
10
  doc = Nokogiri::XML(xml)
11
- isoitem = doc.at "/bibitem|/bibdata"
12
- if isoitem
13
- OgcBibliographicItem.new item_data(isoitem)
11
+ item = doc.at "/bibitem|/bibdata"
12
+ if item
13
+ OgcBibliographicItem.new item_data(item)
14
14
  else
15
15
  warn "[relaton-ogc] can't find bibitem or bibdata element in the XML"
16
16
  end
@@ -18,6 +18,18 @@ module RelatonOgc
18
18
 
19
19
  private
20
20
 
21
+ # Override RelatonIsoBib::XMLParser.item_data method.
22
+ # @param item [Nokogiri::XML::Element]
23
+ # @returtn [Hash]
24
+ def item_data(item)
25
+ data = super
26
+ ext = item.at "./ext"
27
+ return data unless ext
28
+
29
+ data[:docsubtype] = ext.at("./docsubtype")&.text
30
+ data
31
+ end
32
+
21
33
  # @TODO Organization doesn't recreated
22
34
  # @param ext [Nokogiri::XML::Element]
23
35
  # @return [RelatonIsoBib::EditorialGroup]
@@ -36,5 +36,5 @@ Gem::Specification.new do |spec|
36
36
  spec.add_development_dependency "webmock"
37
37
 
38
38
  spec.add_dependency "faraday", "~> 1.0.0"
39
- spec.add_dependency "relaton-iso-bib", "~> 0.9.0"
39
+ spec.add_dependency "relaton-iso-bib", ">= 0.9.1"
40
40
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-ogc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-30 00:00:00.000000000 Z
11
+ date: 2020-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: debase
@@ -168,16 +168,16 @@ dependencies:
168
168
  name: relaton-iso-bib
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - "~>"
171
+ - - ">="
172
172
  - !ruby/object:Gem::Version
173
- version: 0.9.0
173
+ version: 0.9.1
174
174
  type: :runtime
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
- - - "~>"
178
+ - - ">="
179
179
  - !ruby/object:Gem::Version
180
- version: 0.9.0
180
+ version: 0.9.1
181
181
  description: 'RelatonIso: retrieve ISO Standards for bibliographic use using the IsoBibliographicItem
182
182
  model'
183
183
  email:
@@ -201,7 +201,6 @@ files:
201
201
  - grammars/basicdoc.rng
202
202
  - grammars/biblio.rng
203
203
  - grammars/isodoc.rng
204
- - grammars/isostandard.rng
205
204
  - grammars/ogc.rng
206
205
  - grammars/reqt.rng
207
206
  - lib/relaton_ogc.rb
@@ -1,855 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3
- <include href="isodoc.rng">
4
- <start>
5
- <ref name="iso-standard"/>
6
- </start>
7
- <define name="organization">
8
- <element name="organization">
9
- <ref name="orgname"/>
10
- <optional>
11
- <ref name="abbreviation"/>
12
- </optional>
13
- <optional>
14
- <ref name="uri"/>
15
- </optional>
16
- <zeroOrMore>
17
- <ref name="org-identifier"/>
18
- </zeroOrMore>
19
- <zeroOrMore>
20
- <ref name="contact"/>
21
- </zeroOrMore>
22
- <optional>
23
- <ref name="technical-committee"/>
24
- </optional>
25
- <optional>
26
- <ref name="subcommittee"/>
27
- </optional>
28
- <optional>
29
- <ref name="workgroup"/>
30
- </optional>
31
- <optional>
32
- <ref name="secretariat"/>
33
- </optional>
34
- </element>
35
- </define>
36
- <define name="BibDataExtensionType">
37
- <optional>
38
- <ref name="doctype"/>
39
- </optional>
40
- <ref name="editorialgroup"/>
41
- <zeroOrMore>
42
- <ref name="ics"/>
43
- </zeroOrMore>
44
- <ref name="structuredidentifier"/>
45
- </define>
46
- <define name="bdate">
47
- <element name="date">
48
- <attribute name="type">
49
- <choice>
50
- <ref name="BibliographicDateType"/>
51
- <text/>
52
- </choice>
53
- </attribute>
54
- <choice>
55
- <group>
56
- <element name="from">
57
- <ref name="ISO8601Date"/>
58
- </element>
59
- <optional>
60
- <element name="to">
61
- <ref name="ISO8601Date"/>
62
- </element>
63
- </optional>
64
- </group>
65
- <element name="on">
66
- <choice>
67
- <ref name="ISO8601Date"/>
68
- <value>--</value>
69
- </choice>
70
- </element>
71
- </choice>
72
- </element>
73
- </define>
74
- <define name="sections">
75
- <element name="sections">
76
- <ref name="clause"/>
77
- <choice>
78
- <ref name="term-clause"/>
79
- <ref name="terms"/>
80
- </choice>
81
- <optional>
82
- <ref name="definitions"/>
83
- </optional>
84
- <oneOrMore>
85
- <ref name="clause"/>
86
- </oneOrMore>
87
- </element>
88
- </define>
89
- <define name="Basic-Section">
90
- <optional>
91
- <attribute name="id">
92
- <data type="ID"/>
93
- </attribute>
94
- </optional>
95
- <optional>
96
- <attribute name="language"/>
97
- </optional>
98
- <optional>
99
- <attribute name="script"/>
100
- </optional>
101
- <optional>
102
- <attribute name="obligation">
103
- <choice>
104
- <value>normative</value>
105
- <value>informative</value>
106
- </choice>
107
- </attribute>
108
- </optional>
109
- <optional>
110
- <ref name="section-title"/>
111
- </optional>
112
- <group>
113
- <oneOrMore>
114
- <ref name="BasicBlock"/>
115
- </oneOrMore>
116
- <zeroOrMore>
117
- <ref name="note"/>
118
- </zeroOrMore>
119
- </group>
120
- </define>
121
- <define name="Content-Section">
122
- <optional>
123
- <attribute name="id">
124
- <data type="ID"/>
125
- </attribute>
126
- </optional>
127
- <optional>
128
- <attribute name="language"/>
129
- </optional>
130
- <optional>
131
- <attribute name="script"/>
132
- </optional>
133
- <optional>
134
- <attribute name="obligation">
135
- <choice>
136
- <value>normative</value>
137
- <value>informative</value>
138
- </choice>
139
- </attribute>
140
- </optional>
141
- <optional>
142
- <ref name="section-title"/>
143
- </optional>
144
- <choice>
145
- <group>
146
- <oneOrMore>
147
- <ref name="BasicBlock"/>
148
- </oneOrMore>
149
- <zeroOrMore>
150
- <ref name="note"/>
151
- </zeroOrMore>
152
- </group>
153
- <oneOrMore>
154
- <ref name="content-subsection"/>
155
- </oneOrMore>
156
- </choice>
157
- </define>
158
- <define name="Clause-Section">
159
- <optional>
160
- <attribute name="id">
161
- <data type="ID"/>
162
- </attribute>
163
- </optional>
164
- <optional>
165
- <attribute name="language"/>
166
- </optional>
167
- <optional>
168
- <attribute name="script"/>
169
- </optional>
170
- <optional>
171
- <attribute name="inline-header">
172
- <data type="boolean"/>
173
- </attribute>
174
- </optional>
175
- <optional>
176
- <attribute name="obligation">
177
- <choice>
178
- <value>normative</value>
179
- <value>informative</value>
180
- </choice>
181
- </attribute>
182
- </optional>
183
- <optional>
184
- <ref name="section-title"/>
185
- </optional>
186
- <choice>
187
- <group>
188
- <oneOrMore>
189
- <ref name="BasicBlock"/>
190
- </oneOrMore>
191
- <zeroOrMore>
192
- <ref name="note"/>
193
- </zeroOrMore>
194
- </group>
195
- <oneOrMore>
196
- <ref name="clause-subsection"/>
197
- </oneOrMore>
198
- </choice>
199
- </define>
200
- <define name="references">
201
- <element name="references">
202
- <optional>
203
- <attribute name="id">
204
- <data type="ID"/>
205
- </attribute>
206
- </optional>
207
- <optional>
208
- <attribute name="obligation">
209
- <choice>
210
- <value>normative</value>
211
- <value>informative</value>
212
- </choice>
213
- </attribute>
214
- </optional>
215
- <optional>
216
- <ref name="section-title"/>
217
- </optional>
218
- <zeroOrMore>
219
- <ref name="BasicBlock"/>
220
- </zeroOrMore>
221
- <zeroOrMore>
222
- <ref name="bibitem"/>
223
- <zeroOrMore>
224
- <ref name="note"/>
225
- </zeroOrMore>
226
- </zeroOrMore>
227
- <zeroOrMore>
228
- <ref name="references"/>
229
- </zeroOrMore>
230
- </element>
231
- </define>
232
- <define name="definitions">
233
- <element name="definitions">
234
- <optional>
235
- <attribute name="id">
236
- <data type="ID"/>
237
- </attribute>
238
- </optional>
239
- <optional>
240
- <attribute name="language"/>
241
- </optional>
242
- <optional>
243
- <attribute name="script"/>
244
- </optional>
245
- <optional>
246
- <attribute name="obligation">
247
- <choice>
248
- <value>normative</value>
249
- <value>informative</value>
250
- </choice>
251
- </attribute>
252
- </optional>
253
- <zeroOrMore>
254
- <ref name="BasicBlock"/>
255
- </zeroOrMore>
256
- <ref name="dl"/>
257
- </element>
258
- </define>
259
- <define name="terms">
260
- <element name="terms">
261
- <optional>
262
- <attribute name="id">
263
- <data type="ID"/>
264
- </attribute>
265
- </optional>
266
- <optional>
267
- <attribute name="language"/>
268
- </optional>
269
- <optional>
270
- <attribute name="script"/>
271
- </optional>
272
- <optional>
273
- <attribute name="obligation">
274
- <choice>
275
- <value>normative</value>
276
- <value>informative</value>
277
- </choice>
278
- </attribute>
279
- </optional>
280
- <optional>
281
- <ref name="section-title"/>
282
- </optional>
283
- <zeroOrMore>
284
- <ref name="BasicBlock"/>
285
- </zeroOrMore>
286
- <choice>
287
- <oneOrMore>
288
- <ref name="term"/>
289
- </oneOrMore>
290
- <group>
291
- <zeroOrMore>
292
- <ref name="terms"/>
293
- </zeroOrMore>
294
- <optional>
295
- <ref name="definitions"/>
296
- </optional>
297
- </group>
298
- </choice>
299
- </element>
300
- </define>
301
- <define name="term">
302
- <element name="term">
303
- <optional>
304
- <attribute name="id">
305
- <data type="ID"/>
306
- </attribute>
307
- </optional>
308
- <ref name="preferred"/>
309
- <zeroOrMore>
310
- <ref name="admitted"/>
311
- </zeroOrMore>
312
- <zeroOrMore>
313
- <ref name="deprecates"/>
314
- </zeroOrMore>
315
- <optional>
316
- <ref name="termdomain"/>
317
- </optional>
318
- <ref name="definition"/>
319
- <zeroOrMore>
320
- <ref name="termnote"/>
321
- </zeroOrMore>
322
- <zeroOrMore>
323
- <ref name="termexample"/>
324
- </zeroOrMore>
325
- <zeroOrMore>
326
- <ref name="termsource"/>
327
- </zeroOrMore>
328
- </element>
329
- </define>
330
- <define name="definition">
331
- <element name="definition">
332
- <oneOrMore>
333
- <choice>
334
- <ref name="paragraph"/>
335
- <ref name="figure"/>
336
- <ref name="formula"/>
337
- </choice>
338
- </oneOrMore>
339
- </element>
340
- </define>
341
- <define name="annex">
342
- <element name="annex">
343
- <optional>
344
- <attribute name="id">
345
- <data type="ID"/>
346
- </attribute>
347
- </optional>
348
- <optional>
349
- <attribute name="language"/>
350
- </optional>
351
- <optional>
352
- <attribute name="script"/>
353
- </optional>
354
- <optional>
355
- <attribute name="inline-header">
356
- <data type="boolean"/>
357
- </attribute>
358
- </optional>
359
- <optional>
360
- <attribute name="obligation">
361
- <choice>
362
- <value>normative</value>
363
- <value>informative</value>
364
- </choice>
365
- </attribute>
366
- </optional>
367
- <optional>
368
- <ref name="section-title"/>
369
- </optional>
370
- <zeroOrMore>
371
- <!--
372
- allow hanging paragraps in annexes: they introduce lists
373
- ( paragraph-with-footnote | table | note | formula | admonition | ol | ul | dl | figure | quote | sourcecode | review | example )*,
374
- -->
375
- <ref name="BasicBlock"/>
376
- </zeroOrMore>
377
- <zeroOrMore>
378
- <ref name="note"/>
379
- </zeroOrMore>
380
- <zeroOrMore>
381
- <ref name="clause-hanging-paragraph-with-footnote"/>
382
- </zeroOrMore>
383
- <zeroOrMore>
384
- <ref name="annex-appendix"/>
385
- </zeroOrMore>
386
- </element>
387
- </define>
388
- <define name="figure">
389
- <element name="figure">
390
- <attribute name="id">
391
- <data type="ID"/>
392
- </attribute>
393
- <optional>
394
- <ref name="tname"/>
395
- </optional>
396
- <choice>
397
- <ref name="image"/>
398
- <oneOrMore>
399
- <ref name="subfigure"/>
400
- </oneOrMore>
401
- </choice>
402
- <zeroOrMore>
403
- <ref name="fn"/>
404
- </zeroOrMore>
405
- <optional>
406
- <ref name="dl"/>
407
- </optional>
408
- <zeroOrMore>
409
- <ref name="note"/>
410
- </zeroOrMore>
411
- </element>
412
- </define>
413
- <define name="li">
414
- <element name="li">
415
- <group>
416
- <optional>
417
- <!-- ( paragraph-with-footnote | table | note | formula | admonition | ol | ul | dl | quote | sourcecode | review | example )+ -->
418
- <attribute name="id">
419
- <data type="ID"/>
420
- </attribute>
421
- </optional>
422
- <oneOrMore>
423
- <ref name="BasicBlock"/>
424
- </oneOrMore>
425
- </group>
426
- <!-- exclude figures? -->
427
- </element>
428
- </define>
429
- <define name="dd">
430
- <element name="dd">
431
- <zeroOrMore>
432
- <!--
433
- ( paragraph-with-footnote | table | note | formula | admonition | ol | ul | dl | quote | sourcecode | review | example )*
434
- exclude figures?
435
- -->
436
- <ref name="BasicBlock"/>
437
- </zeroOrMore>
438
- </element>
439
- </define>
440
- <define name="admonition">
441
- <element name="admonition">
442
- <attribute name="id">
443
- <data type="ID"/>
444
- </attribute>
445
- <attribute name="type">
446
- <choice>
447
- <value>danger</value>
448
- <value>caution</value>
449
- <value>warning</value>
450
- <value>important</value>
451
- <value>safety precautions</value>
452
- </choice>
453
- </attribute>
454
- <oneOrMore>
455
- <ref name="paragraph-with-footnote"/>
456
- </oneOrMore>
457
- <zeroOrMore>
458
- <ref name="note"/>
459
- </zeroOrMore>
460
- </element>
461
- </define>
462
- <define name="xref">
463
- <element name="xref">
464
- <attribute name="target">
465
- <data type="IDREF"/>
466
- </attribute>
467
- <text/>
468
- </element>
469
- </define>
470
- <define name="hyperlink">
471
- <element name="link">
472
- <attribute name="target">
473
- <data type="anyURI"/>
474
- </attribute>
475
- <text/>
476
- </element>
477
- </define>
478
- <define name="thead">
479
- <element name="thead">
480
- <oneOrMore>
481
- <ref name="tr"/>
482
- </oneOrMore>
483
- </element>
484
- </define>
485
- <define name="td">
486
- <element name="td">
487
- <optional>
488
- <attribute name="colspan"/>
489
- </optional>
490
- <optional>
491
- <attribute name="rowspan"/>
492
- </optional>
493
- <optional>
494
- <attribute name="align">
495
- <choice>
496
- <value>left</value>
497
- <value>right</value>
498
- <value>center</value>
499
- </choice>
500
- </attribute>
501
- </optional>
502
- <choice>
503
- <zeroOrMore>
504
- <choice>
505
- <ref name="TextElement"/>
506
- <ref name="fn"/>
507
- </choice>
508
- </zeroOrMore>
509
- <oneOrMore>
510
- <ref name="paragraph-with-footnote"/>
511
- </oneOrMore>
512
- </choice>
513
- </element>
514
- </define>
515
- <define name="th">
516
- <element name="th">
517
- <optional>
518
- <attribute name="colspan"/>
519
- </optional>
520
- <optional>
521
- <attribute name="rowspan"/>
522
- </optional>
523
- <optional>
524
- <attribute name="align">
525
- <choice>
526
- <value>left</value>
527
- <value>right</value>
528
- <value>center</value>
529
- </choice>
530
- </attribute>
531
- </optional>
532
- <choice>
533
- <zeroOrMore>
534
- <choice>
535
- <ref name="TextElement"/>
536
- <ref name="fn"/>
537
- </choice>
538
- </zeroOrMore>
539
- <oneOrMore>
540
- <ref name="paragraph-with-footnote"/>
541
- </oneOrMore>
542
- </choice>
543
- </element>
544
- </define>
545
- <define name="table-note">
546
- <element name="note">
547
- <optional>
548
- <attribute name="id">
549
- <data type="ID"/>
550
- </attribute>
551
- </optional>
552
- <ref name="paragraph"/>
553
- </element>
554
- </define>
555
- <define name="preface">
556
- <element name="preface">
557
- <optional>
558
- <ref name="preface_abstract"/>
559
- </optional>
560
- <ref name="foreword"/>
561
- <optional>
562
- <ref name="introduction"/>
563
- </optional>
564
- </element>
565
- </define>
566
- <define name="DocumentType">
567
- <choice>
568
- <value>international-standard</value>
569
- <value>technical-specification</value>
570
- <value>technical-report</value>
571
- <value>publicly-available-specification</value>
572
- <value>international-workshop-agreement</value>
573
- <value>guide</value>
574
- </choice>
575
- </define>
576
- <define name="structuredidentifier">
577
- <element name="structuredidentifier">
578
- <optional>
579
- <attribute name="type"/>
580
- </optional>
581
- <group>
582
- <ref name="documentnumber"/>
583
- <optional>
584
- <ref name="tc-documentnumber"/>
585
- </optional>
586
- </group>
587
- </element>
588
- </define>
589
- <define name="foreword">
590
- <element name="foreword">
591
- <ref name="Basic-Section"/>
592
- </element>
593
- </define>
594
- <define name="introduction">
595
- <element name="introduction">
596
- <ref name="Content-Section"/>
597
- </element>
598
- </define>
599
- </include>
600
- <!-- end overrides -->
601
- <!--
602
- We display the Normative References between scope and terms; but to keep the
603
- grammar simple, we keep the references together
604
- -->
605
- <define name="iso-standard">
606
- <element name="iso-standard">
607
- <ref name="bibdata"/>
608
- <zeroOrMore>
609
- <ref name="termdocsource"/>
610
- </zeroOrMore>
611
- <optional>
612
- <ref name="boilerplate"/>
613
- </optional>
614
- <ref name="preface"/>
615
- <oneOrMore>
616
- <ref name="sections"/>
617
- </oneOrMore>
618
- <zeroOrMore>
619
- <ref name="annex"/>
620
- </zeroOrMore>
621
- <ref name="bibliography"/>
622
- </element>
623
- </define>
624
- <define name="bibliography">
625
- <element name="bibliography">
626
- <oneOrMore>
627
- <choice>
628
- <ref name="references"/>
629
- <ref name="reference-clause"/>
630
- </choice>
631
- </oneOrMore>
632
- </element>
633
- </define>
634
- <define name="editorialgroup">
635
- <element name="editorialgroup">
636
- <oneOrMore>
637
- <ref name="technical-committee"/>
638
- </oneOrMore>
639
- <zeroOrMore>
640
- <ref name="subcommittee"/>
641
- </zeroOrMore>
642
- <zeroOrMore>
643
- <ref name="workgroup"/>
644
- </zeroOrMore>
645
- <optional>
646
- <ref name="secretariat"/>
647
- </optional>
648
- </element>
649
- </define>
650
- <define name="preface_abstract">
651
- <element name="abstract">
652
- <ref name="Basic-Section"/>
653
- </element>
654
- </define>
655
- <define name="documentnumber">
656
- <element name="project-number">
657
- <optional>
658
- <attribute name="part">
659
- <data type="int"/>
660
- </attribute>
661
- </optional>
662
- <optional>
663
- <attribute name="subpart">
664
- <data type="int"/>
665
- </attribute>
666
- </optional>
667
- <text/>
668
- </element>
669
- </define>
670
- <define name="tc-documentnumber">
671
- <element name="tc-document-number">
672
- <data type="int"/>
673
- </element>
674
- </define>
675
- <define name="technical-committee">
676
- <element name="technical-committee">
677
- <ref name="IsoWorkgroup"/>
678
- </element>
679
- </define>
680
- <define name="subcommittee">
681
- <element name="subcommittee">
682
- <ref name="IsoWorkgroup"/>
683
- </element>
684
- </define>
685
- <define name="workgroup">
686
- <element name="workgroup">
687
- <ref name="IsoWorkgroup"/>
688
- </element>
689
- </define>
690
- <define name="IsoWorkgroup">
691
- <optional>
692
- <attribute name="number">
693
- <data type="int"/>
694
- </attribute>
695
- </optional>
696
- <optional>
697
- <attribute name="type"/>
698
- </optional>
699
- <text/>
700
- </define>
701
- <define name="secretariat">
702
- <element name="secretariat">
703
- <text/>
704
- </element>
705
- </define>
706
- <define name="clause-hanging-paragraph-with-footnote">
707
- <element name="clause">
708
- <optional>
709
- <attribute name="id">
710
- <data type="ID"/>
711
- </attribute>
712
- </optional>
713
- <optional>
714
- <attribute name="language"/>
715
- </optional>
716
- <optional>
717
- <attribute name="script"/>
718
- </optional>
719
- <optional>
720
- <attribute name="inline-header">
721
- <data type="boolean"/>
722
- </attribute>
723
- </optional>
724
- <optional>
725
- <attribute name="obligation">
726
- <choice>
727
- <value>normative</value>
728
- <value>informative</value>
729
- </choice>
730
- </attribute>
731
- </optional>
732
- <optional>
733
- <ref name="section-title"/>
734
- </optional>
735
- <zeroOrMore>
736
- <!-- allow hanging paragraphs in annexes: they introduce lists -->
737
- <ref name="BasicBlock"/>
738
- </zeroOrMore>
739
- <zeroOrMore>
740
- <ref name="note"/>
741
- </zeroOrMore>
742
- <zeroOrMore>
743
- <ref name="clause-hanging-paragraph-with-footnote"/>
744
- </zeroOrMore>
745
- </element>
746
- </define>
747
- <define name="subfigure">
748
- <element name="figure">
749
- <attribute name="id">
750
- <data type="ID"/>
751
- </attribute>
752
- <optional>
753
- <ref name="tname"/>
754
- </optional>
755
- <ref name="image"/>
756
- </element>
757
- </define>
758
- <define name="termdocsource">
759
- <element name="termdocsource">
760
- <ref name="CitationType"/>
761
- </element>
762
- </define>
763
- <define name="ics">
764
- <element name="ics">
765
- <element name="code">
766
- <text/>
767
- </element>
768
- <element name="text">
769
- <text/>
770
- </element>
771
- </element>
772
- </define>
773
- <define name="term-clause">
774
- <element name="clause">
775
- <optional>
776
- <attribute name="id">
777
- <data type="ID"/>
778
- </attribute>
779
- </optional>
780
- <optional>
781
- <attribute name="language"/>
782
- </optional>
783
- <optional>
784
- <attribute name="script"/>
785
- </optional>
786
- <optional>
787
- <attribute name="inline-header">
788
- <data type="boolean"/>
789
- </attribute>
790
- </optional>
791
- <optional>
792
- <attribute name="obligation">
793
- <choice>
794
- <value>normative</value>
795
- <value>informative</value>
796
- </choice>
797
- </attribute>
798
- </optional>
799
- <optional>
800
- <ref name="section-title"/>
801
- </optional>
802
- <zeroOrMore>
803
- <choice>
804
- <ref name="term-clause"/>
805
- <ref name="terms"/>
806
- <ref name="definitions"/>
807
- </choice>
808
- </zeroOrMore>
809
- </element>
810
- </define>
811
- <define name="reference-clause">
812
- <element name="clause">
813
- <optional>
814
- <attribute name="id">
815
- <data type="ID"/>
816
- </attribute>
817
- </optional>
818
- <optional>
819
- <attribute name="language"/>
820
- </optional>
821
- <optional>
822
- <attribute name="script"/>
823
- </optional>
824
- <optional>
825
- <attribute name="inline-header">
826
- <data type="boolean"/>
827
- </attribute>
828
- </optional>
829
- <optional>
830
- <attribute name="obligation">
831
- <choice>
832
- <value>normative</value>
833
- <value>informative</value>
834
- </choice>
835
- </attribute>
836
- </optional>
837
- <optional>
838
- <ref name="section-title"/>
839
- </optional>
840
- <choice>
841
- <oneOrMore>
842
- <ref name="reference-clause"/>
843
- </oneOrMore>
844
- <zeroOrMore>
845
- <ref name="references"/>
846
- </zeroOrMore>
847
- </choice>
848
- </element>
849
- </define>
850
- <define name="annex-appendix">
851
- <element name="appendix">
852
- <ref name="Clause-Section"/>
853
- </element>
854
- </define>
855
- </grammar>