relaton-ogc 0.7.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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>