xsd-reader 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/xsd_reader/complex_type.rb +0 -4
- data/lib/xsd_reader/shared.rb +28 -5
- data/spec/element_spec.rb +136 -73
- data/spec/examples/referencing.xsd +70 -0
- data/spec/xsd_reader_spec.rb +79 -1
- data/xsd-reader.gemspec +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 400a3673c38ae983e49e7d63dfd1dc80daaa027e
|
4
|
+
data.tar.gz: 0e2be864321537a953e21a63bd33f520f5b0d679
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd2dcc16a9996af3ee4898e6f4d039245d52946bf2429fcf2952400c305acf94947afd324ecd81a70458ea357bdac7305310a459dd442cfc79bda12558771a89
|
7
|
+
data.tar.gz: 0998edb3ce6a52e8202c277db093e71b997d2cc7c921c6dc95428bec33caaed1be925d5b8e8dbf9c45a235a13c08bfde70902184e74fc06d2a9c869705c7fa7f
|
data/lib/xsd_reader/shared.rb
CHANGED
@@ -49,11 +49,29 @@ module XsdReader
|
|
49
49
|
# attribute properties
|
50
50
|
#
|
51
51
|
def name
|
52
|
-
|
52
|
+
name_local || name_referenced
|
53
53
|
end
|
54
54
|
|
55
|
+
def name_local
|
56
|
+
node.attributes['name'] ? node.attributes['name'].value : nil
|
57
|
+
end
|
58
|
+
|
59
|
+
def name_referenced
|
60
|
+
referenced_element ? referenced_element.name : nil
|
61
|
+
end
|
62
|
+
|
63
|
+
def ref
|
64
|
+
node.attributes['ref'] ? node.attributes['ref'].value : nil
|
65
|
+
end
|
66
|
+
|
67
|
+
def referenced_element
|
68
|
+
ref && schema ? schema.elements.find{|el| el.name == ref} : nil
|
69
|
+
end
|
70
|
+
|
71
|
+
|
55
72
|
def type
|
56
|
-
node.attributes['type'] ? node.attributes['type'].value : nil
|
73
|
+
type = node.attributes['type'] ? node.attributes['type'].value : nil
|
74
|
+
type || (referenced_element ? referenced_element.type : nil)
|
57
75
|
end
|
58
76
|
|
59
77
|
def type_name
|
@@ -64,6 +82,7 @@ module XsdReader
|
|
64
82
|
type ? type.split(':').first : nil
|
65
83
|
end
|
66
84
|
|
85
|
+
|
67
86
|
# base stuff belongs to extension type objects only, but let's be flexible
|
68
87
|
def base
|
69
88
|
node.attributes['base'] ? node.attributes['base'].value : nil
|
@@ -77,6 +96,7 @@ module XsdReader
|
|
77
96
|
base ? base.split(':').first : nil
|
78
97
|
end
|
79
98
|
|
99
|
+
|
80
100
|
#
|
81
101
|
# Node to class mapping
|
82
102
|
#
|
@@ -135,7 +155,9 @@ module XsdReader
|
|
135
155
|
end
|
136
156
|
|
137
157
|
def all_elements
|
138
|
-
@all_elements ||= ordered_elements +
|
158
|
+
@all_elements ||= ordered_elements +
|
159
|
+
(linked_complex_type ? linked_complex_type.all_elements : []) +
|
160
|
+
(referenced_element ? referenced_element.all_elements : [])
|
139
161
|
end
|
140
162
|
|
141
163
|
def child_elements?
|
@@ -143,7 +165,8 @@ module XsdReader
|
|
143
165
|
end
|
144
166
|
|
145
167
|
def attributes
|
146
|
-
@attributes ||= map_children('xs:attribute')
|
168
|
+
@attributes ||= map_children('xs:attribute') #+
|
169
|
+
#(referenced_element ? referenced_element.attributes : [])
|
147
170
|
end
|
148
171
|
|
149
172
|
def sequences
|
@@ -159,7 +182,7 @@ module XsdReader
|
|
159
182
|
end
|
160
183
|
|
161
184
|
def complex_type
|
162
|
-
complex_types.first || linked_complex_type
|
185
|
+
complex_types.first || linked_complex_type || (referenced_element ? referenced_element.complex_type : nil)
|
163
186
|
end
|
164
187
|
|
165
188
|
def linked_complex_type
|
data/spec/element_spec.rb
CHANGED
@@ -10,80 +10,57 @@ describe XsdReader::Element do
|
|
10
10
|
reader.elements[0]
|
11
11
|
}
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
let(:referencing_reader){
|
14
|
+
XsdReader::XML.new(:xsd_file => File.expand_path('examples/referencing.xsd', File.dirname(__FILE__)))
|
15
|
+
}
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
17
|
+
describe '#[]' do
|
18
|
+
it "gives an element's child" do
|
19
|
+
expect(reader['NewReleaseMessage']).to eq reader.elements[0]
|
20
|
+
end
|
20
21
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
"MessageHeader",
|
25
|
-
"UpdateIndicator",
|
26
|
-
"IsBackfill",
|
27
|
-
"CatalogTransfer",
|
28
|
-
"WorkList",
|
29
|
-
"CueSheetList",
|
30
|
-
"ResourceList",
|
31
|
-
"CollectionList",
|
32
|
-
"ReleaseList",
|
33
|
-
"DealList"]
|
22
|
+
it "gives an element's child through reference element" do
|
23
|
+
expect(referencing_reader['Album', 'Tracks', 'Track', 'ISRC'].type).to eq 'xs:NCName'
|
24
|
+
end
|
34
25
|
end
|
35
26
|
|
36
|
-
describe
|
37
|
-
|
38
|
-
element.
|
39
|
-
}
|
40
|
-
|
41
|
-
it "gives the type name" do
|
42
|
-
expect(header.type_name).to eq 'MessageHeader'
|
27
|
+
describe '#name' do
|
28
|
+
it "gives the element's name" do
|
29
|
+
expect(element.name).to eq 'NewReleaseMessage'
|
43
30
|
end
|
44
31
|
|
45
|
-
it "gives the
|
46
|
-
expect(
|
32
|
+
it "gives the element's name obtained through reference" do
|
33
|
+
expect(referencing_reader.elements[0].elements[0].name).to eq 'Source'
|
47
34
|
end
|
35
|
+
end
|
48
36
|
|
49
|
-
|
50
|
-
|
37
|
+
describe '#ref' do
|
38
|
+
it "gives an element's ref attribute value" do
|
39
|
+
expect(referencing_reader['Album']['Source'].ref).to eq 'Source'
|
51
40
|
end
|
52
41
|
|
53
|
-
it "
|
54
|
-
expect(
|
42
|
+
it "returns nil when attribute available" do
|
43
|
+
expect(element.ref).to eq nil
|
55
44
|
end
|
45
|
+
end
|
56
46
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
"MessageFileName",
|
62
|
-
"MessageSender",
|
63
|
-
"SentOnBehalfOf",
|
64
|
-
"MessageRecipient",
|
65
|
-
"MessageCreatedDateTime",
|
66
|
-
"MessageAuditTrail",
|
67
|
-
"Comment",
|
68
|
-
"MessageControlType"]
|
47
|
+
describe '#type' do
|
48
|
+
it "gives the type of an element" do
|
49
|
+
expect(reader['NewReleaseMessage']['MessageHeader'].type).to eq 'ern:MessageHeader'
|
50
|
+
end
|
69
51
|
|
70
|
-
|
71
|
-
expect(
|
52
|
+
it "gives the type of an elements obtained through the referenced element" do
|
53
|
+
expect(referencing_reader['Album']['Source'].type).to eq 'xs:string'
|
72
54
|
end
|
73
55
|
end
|
74
56
|
|
75
|
-
describe
|
76
|
-
|
77
|
-
|
78
|
-
el = element.elements[3]
|
79
|
-
expect(el.name).to eq 'CatalogTransfer'
|
80
|
-
elements_without = ["CatalogTransferCompleted", "EffectiveTransferDate", "CatalogReleaseReferenceList", "TransferringFrom", "TransferringTo"]
|
81
|
-
elements_with = ["CatalogTransferCompleted", "EffectiveTransferDate", "CatalogReleaseReferenceList", "TerritoryCode", "ExcludedTerritoryCode", "TransferringFrom", "TransferringTo"]
|
82
|
-
expect(el.complex_type.sequences.map{|seq| seq.elements}.flatten.map(&:name)).to eq elements_without
|
83
|
-
expect(el.complex_type.all_elements.map(&:name)).to eq elements_with
|
84
|
-
expect(el.complex_type.sequences[0].choices.map{|ch| ch.elements}.flatten.map(&:name)).to eq elements_with - elements_without
|
57
|
+
describe '#complex_type' do
|
58
|
+
it "gives a complex type reader" do
|
59
|
+
expect(element.complex_type.class).to eq XsdReader::ComplexType
|
85
60
|
end
|
61
|
+
end
|
86
62
|
|
63
|
+
describe "#elements" do
|
87
64
|
it "gives child elements in the right order" do
|
88
65
|
expected = [
|
89
66
|
"CommercialModelType",
|
@@ -116,6 +93,109 @@ describe XsdReader::Element do
|
|
116
93
|
|
117
94
|
expect(reader['NewReleaseMessage']['DealList']['ReleaseDeal']['Deal']['DealTerms'].elements.map(&:name)).to eq expected
|
118
95
|
end
|
96
|
+
|
97
|
+
it "includes elements within a choice node" do
|
98
|
+
el = element.elements[3]
|
99
|
+
expect(el.name).to eq 'CatalogTransfer'
|
100
|
+
elements_without = ["CatalogTransferCompleted", "EffectiveTransferDate", "CatalogReleaseReferenceList", "TransferringFrom", "TransferringTo"]
|
101
|
+
elements_with = ["CatalogTransferCompleted", "EffectiveTransferDate", "CatalogReleaseReferenceList", "TerritoryCode", "ExcludedTerritoryCode", "TransferringFrom", "TransferringTo"]
|
102
|
+
expect(el.complex_type.sequences.map{|seq| seq.elements}.flatten.map(&:name)).to eq elements_without
|
103
|
+
expect(el.complex_type.all_elements.map(&:name)).to eq elements_with
|
104
|
+
expect(el.complex_type.sequences[0].choices.map{|ch| ch.elements}.flatten.map(&:name)).to eq elements_with - elements_without
|
105
|
+
end
|
106
|
+
|
107
|
+
it "gives child elements defined within a complex type" do
|
108
|
+
# byebug
|
109
|
+
expect(element.elements.map(&:name)).to eq [
|
110
|
+
"MessageHeader",
|
111
|
+
"UpdateIndicator",
|
112
|
+
"IsBackfill",
|
113
|
+
"CatalogTransfer",
|
114
|
+
"WorkList",
|
115
|
+
"CueSheetList",
|
116
|
+
"ResourceList",
|
117
|
+
"CollectionList",
|
118
|
+
"ReleaseList",
|
119
|
+
"DealList"]
|
120
|
+
end
|
121
|
+
|
122
|
+
it "gives child elements defined in the referenced element" do
|
123
|
+
expect( referencing_reader['Album', 'Tracks'].elements.map(&:name) ).to eq ['Track']
|
124
|
+
expect(referencing_reader['Album', 'Tracks', 'Track'].elements.map(&:name)).to eq [
|
125
|
+
'ISRC',
|
126
|
+
'Artist',
|
127
|
+
'Title',
|
128
|
+
'DiscNumber',
|
129
|
+
'TrackNumber',
|
130
|
+
'Duration',
|
131
|
+
'Label',
|
132
|
+
'Company',
|
133
|
+
'CompanyCountry',
|
134
|
+
'RecordedCountry',
|
135
|
+
'RecordedYear',
|
136
|
+
'ReleaseDate',
|
137
|
+
'Contributors']
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
describe '#attributes' do
|
142
|
+
it "gives attributes defined in a complexType" do
|
143
|
+
expected = [
|
144
|
+
"MessageSchemaVersionId",
|
145
|
+
"BusinessProfileVersionId",
|
146
|
+
"ReleaseProfileVersionId",
|
147
|
+
"LanguageAndScriptCode"]
|
148
|
+
expect(element.attributes.map(&:name)).to eq expected
|
149
|
+
expect(element.complex_type.attributes.map(&:name)).to eq expected
|
150
|
+
end
|
151
|
+
|
152
|
+
it "gives attributes defined in a simpleContent extension" do
|
153
|
+
expect(element['ResourceList']['SoundRecording']['SoundRecordingDetailsByTerritory']['DisplayArtist']['ArtistRole'].attributes.map(&:name)).to eq ["Namespace", "UserDefinedValue"]
|
154
|
+
end
|
155
|
+
|
156
|
+
it "gives attributes defined in the referenced element" do
|
157
|
+
expect(referencing_reader['Album', 'Tracks', 'Track'].attributes).to eq []
|
158
|
+
expect(referencing_reader['Album', 'Tracks', 'Track', 'Contributors', 'Contributor'].attributes.map(&:name)).to eq ['credited']
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
describe "External type definition" do
|
163
|
+
let(:header){
|
164
|
+
element.elements.first
|
165
|
+
}
|
166
|
+
|
167
|
+
it "gives the type name" do
|
168
|
+
expect(header.type_name).to eq 'MessageHeader'
|
169
|
+
end
|
170
|
+
|
171
|
+
it "gives the type namespace" do
|
172
|
+
expect(header.type_namespace).to eq 'ern'
|
173
|
+
end
|
174
|
+
|
175
|
+
it "gives the type string" do
|
176
|
+
expect(header.type).to eq 'ern:MessageHeader'
|
177
|
+
end
|
178
|
+
|
179
|
+
it "gives the remote complex_type, linked by type" do
|
180
|
+
expect(header.complex_type.name).to eq 'MessageHeader'
|
181
|
+
end
|
182
|
+
|
183
|
+
it "includes child elements defined in external the complex type type definitions" do
|
184
|
+
expected = [
|
185
|
+
"MessageThreadId",
|
186
|
+
"MessageId",
|
187
|
+
"MessageFileName",
|
188
|
+
"MessageSender",
|
189
|
+
"SentOnBehalfOf",
|
190
|
+
"MessageRecipient",
|
191
|
+
"MessageCreatedDateTime",
|
192
|
+
"MessageAuditTrail",
|
193
|
+
"Comment",
|
194
|
+
"MessageControlType"]
|
195
|
+
|
196
|
+
expect(header.elements.map(&:name)).to eq expected
|
197
|
+
expect(header.complex_type.all_elements.map(&:name)).to eq expected
|
198
|
+
end
|
119
199
|
end
|
120
200
|
|
121
201
|
# # this is pretty slow...
|
@@ -152,21 +232,4 @@ describe XsdReader::Element do
|
|
152
232
|
# expect(element.family_tree['DealList']['ReleaseDeal']['Deal']['DealTerms']['RightsClaimPolicy']['Condition']['Unit']).to eq 'type:UnitOfConditionValue'
|
153
233
|
# end
|
154
234
|
# end
|
155
|
-
|
156
|
-
describe '#attributes' do
|
157
|
-
it "gives attributes defined in a complexType" do
|
158
|
-
expected = [
|
159
|
-
"MessageSchemaVersionId",
|
160
|
-
"BusinessProfileVersionId",
|
161
|
-
"ReleaseProfileVersionId",
|
162
|
-
"LanguageAndScriptCode"]
|
163
|
-
expect(element.attributes.map(&:name)).to eq expected
|
164
|
-
expect(element.complex_type.attributes.map(&:name)).to eq expected
|
165
|
-
end
|
166
|
-
|
167
|
-
it "gives attributes defined in a simpleContent extension" do
|
168
|
-
expect(element['ResourceList']['SoundRecording']['SoundRecordingDetailsByTerritory']['DisplayArtist']['ArtistRole'].attributes.map(&:name)).to eq ["Namespace", "UserDefinedValue"]
|
169
|
-
end
|
170
|
-
end
|
171
|
-
|
172
235
|
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
2
|
+
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' elementFormDefault='qualified'>
|
3
|
+
<xs:element name='Album'>
|
4
|
+
<xs:complexType>
|
5
|
+
<xs:sequence>
|
6
|
+
<xs:element ref='Source'/>
|
7
|
+
<xs:element ref='Tracks'/>
|
8
|
+
</xs:sequence>
|
9
|
+
</xs:complexType>
|
10
|
+
</xs:element>
|
11
|
+
<xs:element name='Source' type='xs:string'/>
|
12
|
+
<xs:element name='Tracks'>
|
13
|
+
<xs:complexType>
|
14
|
+
<xs:sequence>
|
15
|
+
<xs:element ref='Track'/>
|
16
|
+
</xs:sequence>
|
17
|
+
</xs:complexType>
|
18
|
+
</xs:element>
|
19
|
+
<xs:element name='Track'>
|
20
|
+
<xs:complexType>
|
21
|
+
<xs:sequence>
|
22
|
+
<xs:element ref='ISRC'/>
|
23
|
+
<xs:element ref='Artist'/>
|
24
|
+
<xs:element ref='Title'/>
|
25
|
+
<xs:element ref='DiscNumber'/>
|
26
|
+
<xs:element ref='TrackNumber'/>
|
27
|
+
<xs:element ref='Duration'/>
|
28
|
+
<xs:element ref='Label'/>
|
29
|
+
<xs:element ref='Company'/>
|
30
|
+
<xs:element ref='CompanyCountry'/>
|
31
|
+
<xs:element ref='RecordedCountry'/>
|
32
|
+
<xs:element ref='RecordedYear'/>
|
33
|
+
<xs:element ref='ReleaseDate'/>
|
34
|
+
<xs:element ref='Contributors'/>
|
35
|
+
</xs:sequence>
|
36
|
+
</xs:complexType>
|
37
|
+
</xs:element>
|
38
|
+
<xs:element name='ISRC' type='xs:NCName'/>
|
39
|
+
<xs:element name='DiscNumber' type='xs:integer'/>
|
40
|
+
<xs:element name='TrackNumber' type='xs:integer'/>
|
41
|
+
<xs:element name='Duration' type='xs:integer'/>
|
42
|
+
<xs:element name='RecordedCountry' type='xs:NCName'/>
|
43
|
+
<xs:element name='RecordedYear' type='xs:integer'/>
|
44
|
+
<xs:element name='Contributors'>
|
45
|
+
<xs:complexType>
|
46
|
+
<xs:sequence>
|
47
|
+
<xs:element maxOccurs='unbounded' ref='Contributor'/>
|
48
|
+
</xs:sequence>
|
49
|
+
</xs:complexType>
|
50
|
+
</xs:element>
|
51
|
+
<xs:element name='Contributor'>
|
52
|
+
<xs:complexType>
|
53
|
+
<xs:sequence>
|
54
|
+
<xs:element ref='Name'/>
|
55
|
+
<xs:element ref='Role'/>
|
56
|
+
<xs:element ref='Instrument'/>
|
57
|
+
</xs:sequence>
|
58
|
+
<xs:attribute name="credited" type="xs:boolean" />
|
59
|
+
</xs:complexType>
|
60
|
+
</xs:element>
|
61
|
+
<xs:element name='Name' type='xs:string'/>
|
62
|
+
<xs:element name='Role' type='xs:NCName'/>
|
63
|
+
<xs:element name='Instrument' type='xs:NCName'/>
|
64
|
+
<xs:element name='Title' type='xs:string'/>
|
65
|
+
<xs:element name='Artist' type='xs:string'/>
|
66
|
+
<xs:element name='Label' type='xs:string'/>
|
67
|
+
<xs:element name='Company' type='xs:string'/>
|
68
|
+
<xs:element name='CompanyCountry' type='xs:NCName'/>
|
69
|
+
<xs:element name='ReleaseDate' type='xs:NMTOKEN'/>
|
70
|
+
</xs:schema>
|
data/spec/xsd_reader_spec.rb
CHANGED
@@ -44,7 +44,7 @@ describe XsdReader do
|
|
44
44
|
end
|
45
45
|
|
46
46
|
describe "#all_elements" do
|
47
|
-
it "includes elements from linked complex types
|
47
|
+
it "includes elements from linked complex types from an imported schema" do
|
48
48
|
el = v32['NewReleaseMessage']['CollectionList']['Collection']['Title']
|
49
49
|
expect(el.all_elements.map(&:name)).to eq ['TitleText', 'SubTitle']
|
50
50
|
end
|
@@ -192,4 +192,82 @@ describe XsdReader do
|
|
192
192
|
expect(el.complex_type).to be ct
|
193
193
|
end
|
194
194
|
end
|
195
|
+
|
196
|
+
describe "referenced elements" do
|
197
|
+
let(:reader){
|
198
|
+
XsdReader::XML.new(:xsd_file => File.expand_path('examples/referencing.xsd', File.dirname(__FILE__)))
|
199
|
+
}
|
200
|
+
|
201
|
+
let(:element){
|
202
|
+
reader['Album', 'Tracks', 'Track', 'Contributors', 'Contributor']
|
203
|
+
}
|
204
|
+
|
205
|
+
describe '#referenced_element' do
|
206
|
+
it 'gives the referenced element' do
|
207
|
+
expect(element.referenced_element.class).to eq XsdReader::Element
|
208
|
+
expect(element.referenced_element.name).to eq 'Contributor'
|
209
|
+
expect(element.referenced_element).to_not eq element
|
210
|
+
end
|
211
|
+
end
|
212
|
+
|
213
|
+
describe '#elements' do
|
214
|
+
it "gives alements of the referenced element" do
|
215
|
+
expect(element.elements.map(&:name)).to eq ['Name', 'Role', 'Instrument']
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
describe '#attributes' do
|
220
|
+
it "gives the attributes of the referenced element" do
|
221
|
+
expect(element.attributes.map(&:name)).to eq ['credited']
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
describe '#[]' do
|
226
|
+
it "lets the caller acces elements of the referenced element" do
|
227
|
+
expect(element['Role'].type).to eq 'xs:NCName'
|
228
|
+
end
|
229
|
+
|
230
|
+
it "lets the caller access attributes of the referened element" do
|
231
|
+
expect(element['@credited'].type).to eq 'xs:boolean'
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
describe '#name' do
|
236
|
+
it "gives the name of the referenced element" do
|
237
|
+
expect(element.name).to eq 'Contributor'
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
describe '#type' do
|
242
|
+
it "gives the type of the referenced element" do
|
243
|
+
expect(element.type).to eq nil
|
244
|
+
expect(reader['Album', 'Source'].type).to eq 'xs:string'
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
248
|
+
describe '#complex_type' do
|
249
|
+
it "gives the complex type object of the referenced element" do
|
250
|
+
expect(element.complex_type.sequences.first.elements.map(&:name)).to eq ['Name', 'Role', 'Instrument']
|
251
|
+
end
|
252
|
+
end
|
253
|
+
|
254
|
+
describe '#simple_contents' do
|
255
|
+
it "it includes the referenced element's simple content objects" do
|
256
|
+
skip 'not yet implemented'
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
260
|
+
describe '#complex_contents' do
|
261
|
+
it "it includes the referenced element's complex content objects" do
|
262
|
+
skip 'not yet implemented'
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
describe '#extensions' do
|
267
|
+
it "it includes the referenced element's extension objects" do
|
268
|
+
skip 'not yet implemented'
|
269
|
+
end
|
270
|
+
end
|
271
|
+
|
272
|
+
end
|
195
273
|
end
|
data/xsd-reader.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xsd-reader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mark van de Korput
|
@@ -103,6 +103,7 @@ files:
|
|
103
103
|
- spec/examples/ddex-v32/iso639a2.xsd
|
104
104
|
- spec/examples/ddex-v36/avs.xsd
|
105
105
|
- spec/examples/ddex-v36/ddex-ern-v36.xsd
|
106
|
+
- spec/examples/referencing.xsd
|
106
107
|
- spec/extension_spec.rb
|
107
108
|
- spec/import_spec.rb
|
108
109
|
- spec/schema_spec.rb
|