xsd 1.0.0 → 2.1.0

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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -0
  3. data/Gemfile +9 -0
  4. data/README.md +14 -4
  5. data/lib/xsd/base_object.rb +43 -40
  6. data/lib/xsd/generator.rb +7 -7
  7. data/lib/xsd/objects/all.rb +2 -2
  8. data/lib/xsd/objects/annotation.rb +2 -2
  9. data/lib/xsd/objects/any.rb +2 -2
  10. data/lib/xsd/objects/any_attribute.rb +2 -2
  11. data/lib/xsd/objects/appinfo.rb +1 -1
  12. data/lib/xsd/objects/attribute.rb +9 -9
  13. data/lib/xsd/objects/attribute_group.rb +1 -1
  14. data/lib/xsd/objects/choice.rb +4 -4
  15. data/lib/xsd/objects/complex_content.rb +3 -3
  16. data/lib/xsd/objects/complex_type.rb +12 -12
  17. data/lib/xsd/objects/documentation.rb +2 -2
  18. data/lib/xsd/objects/element.rb +19 -19
  19. data/lib/xsd/objects/extension.rb +20 -1
  20. data/lib/xsd/objects/facet.rb +1 -1
  21. data/lib/xsd/objects/field.rb +1 -1
  22. data/lib/xsd/objects/group.rb +4 -4
  23. data/lib/xsd/objects/import.rb +15 -44
  24. data/lib/xsd/objects/include.rb +29 -0
  25. data/lib/xsd/objects/key.rb +3 -3
  26. data/lib/xsd/objects/keyref.rb +4 -4
  27. data/lib/xsd/objects/list.rb +1 -1
  28. data/lib/xsd/objects/restriction.rb +23 -3
  29. data/lib/xsd/objects/schema.rb +43 -37
  30. data/lib/xsd/objects/selector.rb +1 -1
  31. data/lib/xsd/objects/sequence.rb +4 -4
  32. data/lib/xsd/objects/simple_content.rb +2 -2
  33. data/lib/xsd/objects/simple_type.rb +5 -5
  34. data/lib/xsd/objects/union.rb +2 -2
  35. data/lib/xsd/objects/unique.rb +2 -2
  36. data/lib/xsd/shared/attribute_container.rb +2 -2
  37. data/lib/xsd/shared/based.rb +9 -9
  38. data/lib/xsd/shared/complex_typed.rb +7 -7
  39. data/lib/xsd/shared/element_container.rb +1 -1
  40. data/lib/xsd/shared/min_max_occurs.rb +4 -4
  41. data/lib/xsd/shared/referenced.rb +3 -3
  42. data/lib/xsd/shared/simple_typed.rb +1 -1
  43. data/lib/xsd/validator.rb +1 -1
  44. data/lib/xsd/version.rb +1 -1
  45. data/lib/xsd/xml.rb +107 -31
  46. data/lib/xsd.rb +1 -0
  47. data/xsd.gemspec +0 -8
  48. metadata +3 -100
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9808a3d7cd5e73e6646222be452a476e4fc5f27997e3bc17e3016bc27c4ebda1
4
- data.tar.gz: 4a1fd4f0877002b60b1274f5b9c2cde51b5ac8c3c1872964feb8bef5fddd7972
3
+ metadata.gz: d3b12830c536c37e72b109727f470d45de29b6c852e62476cd3aa5578dd3b9c7
4
+ data.tar.gz: 248b65a3794a6c83a6aca695b0d565d55b971991272fd5f7f0a8a841fb8847ec
5
5
  SHA512:
6
- metadata.gz: '02650138ed60e27ad29e606b0a39fd7e7443de91f249486e178d39c40f7e59da556448fc8af5e52696a353345744ecc98639163a8a01cb48a54ff416f01a92a4'
7
- data.tar.gz: 8d246d14bdcba114e6d72b878f187c89480a8571b8e6ea57753a06507d37a6526a9c9aeb000669bfb78b248cad1cbea1c74a6dd8cacab8aa4fbb20c18786ed93
6
+ metadata.gz: ac15d2c2c163bd70f007fd76b5c007fbc786ed09d5609a2d6dba5aa8836144917a5159a32c1b7f47aa250bd18034d8339f445180fc4cd330745138ec60283e32
7
+ data.tar.gz: 7db0b9ac2ba0c97aab16d84db5145b4a8a18c901f3c24c8fd13a73b96a1998083a41cff38c3b0f7098dc53457b693e0ee5d3d941ceb1712f38a54924d32ce544
data/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [2.1.0] - 2023-07-10
4
+
5
+ - Add support for <xs:include> element
6
+ - Changed method "schema_for_namespace(namespace) -> XSD::Schema" signature to "schemas_for_namespace(namespace) -> Array<XSD::Schema>"
7
+
8
+ ## [2.0.0] - 2023-07-07
9
+
10
+ - Change XSD::XML.new(file, **options) -> XSD::XML.open(file, **options)
11
+ - Add ability to construct empty reader (reader = XSD::XML.new(**options)) and manually add schemas to it (reader.add_schema_xml(xml))
12
+ - Add ability to configure import resources resolver via options
13
+
3
14
  ## [1.0.0] - 2023-04-25
4
15
 
5
16
  - Initial release
data/Gemfile CHANGED
@@ -4,3 +4,12 @@ source 'https://rubygems.org'
4
4
 
5
5
  # Specify your gem's dependencies in xsd_to_json.gemspec
6
6
  gemspec
7
+
8
+ group :development do
9
+ gem 'logger', '~> 1.5'
10
+ gem 'rspec', '~> 3.12'
11
+ gem 'rubocop', '~> 1.50'
12
+ gem 'rubocop-performance', '~> 1.17'
13
+ gem 'rubocop-rake', '~> 0.6'
14
+ gem 'rubocop-rspec', '~> 2.10'
15
+ end
data/README.md CHANGED
@@ -1,7 +1,8 @@
1
1
  # XSD
2
-
2
+ [![Gem Version](https://badge.fury.io/rb/xsd.svg)][gem]
3
3
  [![Ruby](https://github.com/ekzo-dev/ruby-xsd/actions/workflows/main.yml/badge.svg)][githubactions]
4
4
 
5
+ [gem]: https://badge.fury.io/rb/xsd
5
6
  [githubactions]: https://github.com/omniauth/omniauth/actions/workflows/main.yml
6
7
 
7
8
  The Ruby XSD library is an [XML Schema](https://www.w3.org/2001/XMLSchema) implementation for Ruby. Provides easy and
@@ -25,22 +26,31 @@ gem 'xsd'
25
26
  require 'xsd'
26
27
 
27
28
  # Load ruby-xsd
28
- reader = XSD::XML.new(:xsd_file => 'some.xsd')
29
+ reader = XSD::XML.open('some.xsd')
30
+
31
+ # Get elements and their child elements
32
+ element = reader['NewReleaseMessage']
33
+ element.collect_elements.map(&:name) # => ['MessageHeader', 'UpdateIndicator', 'IsBackfill', 'CatalogTransfer', 'WorkList', 'CueSheetList', 'ResourceList', 'CollectionList', 'ReleaseList', 'DealList']
29
34
 
30
35
  # Get attributes
31
36
  attribute = reader['NewReleaseMessage']['@MessageSchemaVersionId']
32
37
 
33
- # Get atrribute information
38
+ # Get attribute information
34
39
  attribute.name # => 'MessageSchemaVersionId'
35
40
  attribute.type # => 'xs:string'
36
41
  attribute.required? # => true
42
+ attribute.optional? # => false
43
+ attribute.prohibited? # => true
37
44
 
38
45
  # Get element information
39
- element = reader['NewReleaseMessage']['ResourceList']['SoundRecording']
46
+ element = reader['NewReleaseMessage']['ResourceList']['SoundRecording'] # => XSD::Element
40
47
  element.min_occurs # => 0
41
48
  element.max_occurs # => :unbounded
42
49
  element.type # => 'ern:SoundRecording'
43
50
  element.complex_type # => XSD::ComplexType
51
+ element.complex? # => true
52
+ element.multiple_allowed? # => true
53
+ element.required? # => false
44
54
  ```
45
55
 
46
56
  ## Development
@@ -34,7 +34,7 @@ module XSD
34
34
 
35
35
  # Optional. Specifies a unique ID for the element
36
36
  # @!attribute id
37
- # @return [String]
37
+ # @return String
38
38
  # property :id, :string
39
39
  def id
40
40
  node['id']
@@ -48,39 +48,39 @@ module XSD
48
48
  end
49
49
 
50
50
  # Get current XML node
51
- # @return [Nokogiri::XML::Node]
51
+ # @return Nokogiri::XML::Node
52
52
  def node
53
53
  options[:node]
54
54
  end
55
55
 
56
56
  # Get current namespaces
57
- # @return [Hash]
57
+ # @return Hash
58
58
  def namespaces
59
59
  node.namespaces || {}
60
60
  end
61
61
 
62
62
  # Get child nodes
63
63
  # @param [Symbol] name
64
- # @return [Nokogiri::XML::NodeSet]
64
+ # @return Nokogiri::XML::NodeSet
65
65
  def nodes(name = :*)
66
66
  node.xpath("./xs:#{name}", { 'xs' => XML_SCHEMA })
67
67
  end
68
68
 
69
- # Get schema object for specified namespace prefix
70
- # @param [String] prefix
71
- # @return [Schema]
72
- def schema_for_namespace(prefix)
73
- if schema.targets_namespace?(prefix)
74
- schema
75
- elsif (import = schema.import_by_namespace(prefix))
76
- import.imported_reader.schema
69
+ # Get schema by namespace or namespace prefix
70
+ # @param [String, nil] namespace
71
+ # @return Array<Schema>
72
+ def schemas_for_namespace(namespace)
73
+ if schema.targets_namespace?(namespace)
74
+ [schema, *schema.includes.map(&:imported_schema)]
75
+ elsif (import = schema.import_by_namespace(namespace))
76
+ [import.imported_schema]
77
77
  else
78
- raise Error, "Schema not found for namespace '#{prefix}' in '#{schema.id || schema.target_namespace}'"
78
+ raise Error, "Schema not found for namespace '#{namespace}' in '#{schema.id || schema.target_namespace}'"
79
79
  end
80
80
  end
81
81
 
82
82
  # Get element or attribute by path
83
- # @return [Element, Attribute, nil]
83
+ # @return Element, Attribute, nil
84
84
  def [](*args)
85
85
  result = self
86
86
 
@@ -90,9 +90,9 @@ module XSD
90
90
  curname = curname.to_s
91
91
 
92
92
  if curname[0] == '@'
93
- result = result.all_attributes.find { |attr| attr.name == curname[1..-1] }
93
+ result = result.collect_attributes.find { |attr| attr.name == curname[1..-1] }
94
94
  else
95
- result = result.all_elements.find { |elem| elem.name == curname }
95
+ result = result.collect_elements.find { |elem| elem.name == curname }
96
96
  end
97
97
  end
98
98
 
@@ -102,7 +102,7 @@ module XSD
102
102
  # Search node by name in all available schemas and return its object
103
103
  # @param [Symbol] node_name
104
104
  # @param [String] name
105
- # @return [BaseObject, nil]
105
+ # @return BaseObject, nil
106
106
  def object_by_name(node_name, name)
107
107
  # get prefix and local name
108
108
  name_prefix = get_prefix(name)
@@ -112,17 +112,20 @@ module XSD
112
112
  return nil if schema.namespace_prefix == name_prefix
113
113
 
114
114
  # determine schema for namespace
115
- search_schema = schema_for_namespace(name_prefix)
115
+ search_schemas = schemas_for_namespace(name_prefix)
116
116
 
117
117
  # find element in target schema
118
- result = search_schema.node.xpath("./xs:#{node_name}[@name=\"#{name_local}\"]", { 'xs' => XML_SCHEMA }).first
118
+ search_schemas.each do |s|
119
+ node = s.node.xpath("./xs:#{node_name}[@name=\"#{name_local}\"]", { 'xs' => XML_SCHEMA }).first
120
+ return s.node_to_object(node) if node
121
+ end
119
122
 
120
- result ? search_schema.node_to_object(result) : nil
123
+ nil
121
124
  end
122
125
 
123
126
  # Get reader object for node
124
127
  # @param [Nokogiri::XML::Node]
125
- # @return [BaseObject]
128
+ # @return BaseObject
126
129
  def node_to_object(node)
127
130
  # check object in cache first
128
131
  # TODO: проверить работу!
@@ -135,66 +138,66 @@ module XSD
135
138
  end
136
139
 
137
140
  # Get xml parent object
138
- # @return [BaseObject, nil]
141
+ # @return BaseObject, nil
139
142
  def parent
140
143
  node.respond_to?(:parent) && node.parent ? node_to_object(node.parent) : nil
141
144
  end
142
145
 
143
146
  # Get current schema object
144
- # @return [Schema]
147
+ # @return Schema
145
148
  def schema
146
149
  options[:schema]
147
150
  end
148
151
 
149
152
  # Get child objects
150
153
  # @param [Symbol] name
151
- # @return [Array<BaseObject>]
154
+ # @return Array<BaseObject>
152
155
  def map_children(name)
153
156
  nodes(name).map { |node| node_to_object(node) }
154
157
  end
155
158
 
156
159
  # Get child object
157
160
  # @param [Symbol] name
158
- # @return [BaseObject, nil]
161
+ # @return BaseObject, nil
159
162
  def map_child(name)
160
163
  map_children(name).first
161
164
  end
162
165
 
163
166
  # Strip namespace prefix from node name
164
167
  # @param [String, nil] name Name to strip from
165
- # @return [String, nil]
168
+ # @return String, nil
166
169
  def strip_prefix(name)
167
170
  name&.include?(':') ? name.split(':').last : name
168
171
  end
169
172
 
170
173
  # Get namespace prefix from node name
171
174
  # @param [String, nil] name Name to strip from
172
- # @return [String]
175
+ # @return String, nil
173
176
  def get_prefix(name)
174
- name&.include?(':') ? name.split(':').first : ''
177
+ name&.include?(':') ? name.split(':').first : nil
175
178
  end
176
179
 
177
180
  # Return element documentation
178
- # @return [Array<String>]
181
+ # @return Array<String>
179
182
  def documentation
180
183
  documentation_for(node)
181
184
  end
182
185
 
183
186
  # Return documentation for specified node
184
187
  # @param [Nokogiri::XML::Node] node
185
- # @return [Array<String>]
188
+ # @return Array<String>
186
189
  def documentation_for(node)
187
190
  node.xpath('./xs:annotation/xs:documentation/text()', { 'xs' => XML_SCHEMA }).map(&:to_s).map(&:strip)
188
191
  end
189
192
 
190
193
  # Get all available elements on the current stack level
191
- # @return [Array<Element>]
192
- def all_elements(*)
194
+ # @return Array<Element>
195
+ def collect_elements(*)
193
196
  # exclude element that can not have elements
194
197
  return [] if NO_ELEMENTS_CONTAINER.include?(self.class.mapped_name)
195
198
 
196
199
  if is_a?(Referenced) && ref
197
- reference.all_elements
200
+ reference.collect_elements
198
201
  else
199
202
  # map children recursive
200
203
  map_children(:*).map do |obj|
@@ -202,20 +205,20 @@ module XSD
202
205
  obj
203
206
  else
204
207
  # get elements considering references
205
- (obj.is_a?(Referenced) && obj.ref ? obj.reference : obj).all_elements
208
+ (obj.is_a?(Referenced) && obj.ref ? obj.reference : obj).collect_elements
206
209
  end
207
210
  end.flatten
208
211
  end
209
212
  end
210
213
 
211
214
  # Get all available attributes on the current stack level
212
- # @return [Array<Attribute>]
213
- def all_attributes(*)
215
+ # @return Array<Attribute>
216
+ def collect_attributes(*)
214
217
  # exclude element that can not have elements
215
218
  return [] if NO_ATTRIBUTES_CONTAINER.include?(self.class.mapped_name)
216
219
 
217
220
  if is_a?(Referenced) && ref
218
- reference.all_attributes
221
+ reference.collect_attributes
219
222
  else
220
223
  # map children recursive
221
224
  map_children(:*).map do |obj|
@@ -223,14 +226,14 @@ module XSD
223
226
  obj
224
227
  else
225
228
  # get attributes considering references
226
- (obj.is_a?(Referenced) && obj.ref ? obj.reference : obj).all_attributes
229
+ (obj.is_a?(Referenced) && obj.ref ? obj.reference : obj).collect_attributes
227
230
  end
228
231
  end.flatten
229
232
  end
230
233
  end
231
234
 
232
235
  # Get reader instance
233
- # @return [XML]
236
+ # @return XML
234
237
  def reader
235
238
  options[:reader]
236
239
  end
@@ -334,7 +337,7 @@ module XSD
334
337
  end
335
338
 
336
339
  # Get mapped element name
337
- # @return [Symbol]
340
+ # @return Symbol
338
341
  def self.mapped_name
339
342
  # @mapped_name ||= XML::CLASS_MAP.each { |k, v| return k.to_sym if v == self }
340
343
  @mapped_name ||= begin
data/lib/xsd/generator.rb CHANGED
@@ -8,7 +8,7 @@ module XSD
8
8
  # @param [Hash] data
9
9
  # @param [String, Array<String>] element
10
10
  # @param [Builder::XmlMarkup] builder
11
- # @return [Builder::XmlMarkup]
11
+ # @return Builder::XmlMarkup
12
12
  def generate(data, element = nil, builder = nil)
13
13
  # find root element
14
14
  root = find_root_element(element)
@@ -59,13 +59,13 @@ module XSD
59
59
  # configure namespaces
60
60
  # TODO: попытаться использовать collect_namespaces?
61
61
  attributes = {}
62
- all_attributes = element.all_attributes
62
+ collect_attributes = element.collect_attributes
63
63
  if element.complex?
64
- all_elements = element.all_elements
64
+ collect_elements = element.collect_elements
65
65
 
66
66
  # get namespaces for current element and it's children
67
67
  prefix = nil
68
- [*all_elements, element].each do |elem|
68
+ [*collect_elements, element].each do |elem|
69
69
  prefix = get_namespace_prefix(elem, attributes, namespaces)
70
70
  end
71
71
  else
@@ -75,7 +75,7 @@ module XSD
75
75
  # iterate through each item
76
76
  data.each do |item|
77
77
  # prepare attributes
78
- all_attributes.each do |attribute|
78
+ collect_attributes.each do |attribute|
79
79
  value = item["@#{attribute.name}"]
80
80
  if value
81
81
  attributes[attribute.name] = value
@@ -88,7 +88,7 @@ module XSD
88
88
  if element.complex?
89
89
  # generate tag recursively
90
90
  xml.tag!("#{prefix}:#{element.name}", attributes) do
91
- all_elements.each do |elem|
91
+ collect_elements.each do |elem|
92
92
  build_element(xml, elem, item, namespaces.dup)
93
93
  end
94
94
  end
@@ -103,7 +103,7 @@ module XSD
103
103
  # @param [Element] element
104
104
  # @param [Hash] attributes
105
105
  # @param [Hash] namespaces
106
- # @return [String]
106
+ # @return String
107
107
  def get_namespace_prefix(element, attributes, namespaces)
108
108
  namespace = (element.referenced? ? element.reference : element).target_namespace
109
109
  prefix = namespaces.key(namespace)
@@ -11,12 +11,12 @@ module XSD
11
11
 
12
12
  # Optional. Specifies the minimum number of times the element can occur. The value can be 0 or 1. Default value is 1
13
13
  # @!attribute min_occurs
14
- # @return [Integer]
14
+ # @return Integer
15
15
  property :minOccurs, :integer, default: 1
16
16
 
17
17
  # Optional. Specifies the maximum number of times the element can occur. The value must be 1.
18
18
  # @!attribute max_occurs
19
- # @return [Integer]
19
+ # @return Integer
20
20
  property :maxOccurs, :integer, default: 1
21
21
  end
22
22
  end
@@ -8,12 +8,12 @@ module XSD
8
8
  class Annotation < BaseObject
9
9
  # Nested appinfos
10
10
  # @!attribute appinfos
11
- # @return [Array<Appinfo>]
11
+ # @return Array<Appinfo>
12
12
  child :appinfos, [:appinfo]
13
13
 
14
14
  # Nested documentations
15
15
  # @!attribute documentations
16
- # @return [Array<Documentation>]
16
+ # @return Array<Documentation>
17
17
  child :documentations, [:documentation]
18
18
  end
19
19
  end
@@ -15,7 +15,7 @@ module XSD
15
15
  # List of {URI references of namespaces, ##targetNamespace, ##local} - elements from a space-delimited list of
16
16
  # the namespaces can be present
17
17
  # @!attribute namespace
18
- # @return [String]
18
+ # @return String
19
19
  property :namespace, :string, default: '##any'
20
20
 
21
21
  # Optional. Specifies how the XML processor should handle validation against the elements specified by this any
@@ -25,7 +25,7 @@ module XSD
25
25
  # lax - same as strict but; if the schema cannot be obtained, no errors will occur
26
26
  # skip - The XML processor does not attempt to validate any elements from the specified namespaces
27
27
  # @!attribute process_contents
28
- # @return [String, nil]
28
+ # @return String, nil
29
29
  property :processContents, :string, default: 'strict'
30
30
  end
31
31
  end
@@ -14,7 +14,7 @@ module XSD
14
14
  # List of {URI references of namespaces, ##targetNamespace, ##local} - attributes from a space-delimited list
15
15
  # of the namespaces can be present
16
16
  # @!attribute namespace
17
- # @return [String]
17
+ # @return String
18
18
  property :namespace, :string, default: '##any'
19
19
 
20
20
  # Optional. Specifies how the XML processor should handle validation against the elements specified by this any
@@ -24,7 +24,7 @@ module XSD
24
24
  # lax - same as strict but; if the schema cannot be obtained, no errors will occur
25
25
  # skip - The XML processor does not attempt to validate any elements from the specified namespaces
26
26
  # @!attribute process_contents
27
- # @return [String, nil]
27
+ # @return String, nil
28
28
  property :processContents, :string, default: 'strict'
29
29
  end
30
30
  end
@@ -7,7 +7,7 @@ module XSD
7
7
  class Appinfo < BaseObject
8
8
  # Optional. A URI reference that specifies the source of the application information
9
9
  # @!attribute source
10
- # @return [String]
10
+ # @return String
11
11
  property :source, :string
12
12
  end
13
13
  end
@@ -13,17 +13,17 @@ module XSD
13
13
 
14
14
  # Optional. Specifies the name of the attribute. Name and ref attributes cannot both be present
15
15
  # @!attribute name
16
- # @return [String]
16
+ # @return String
17
17
  property :name, :string
18
18
 
19
19
  # Optional. Specifies a default value for the attribute. Default and fixed attributes cannot both be present
20
20
  # @!attribute default
21
- # @return [String, nil]
21
+ # @return String, nil
22
22
  property :default, :string
23
23
 
24
24
  # Optional. Specifies a fixed value for the attribute. Default and fixed attributes cannot both be present
25
25
  # @!attribute fixed
26
- # @return [String, nil]
26
+ # @return String, nil
27
27
  property :fixed, :string
28
28
 
29
29
  # Optional. Specifies the form for the attribute. The default value is the value of the attributeFormDefault
@@ -33,14 +33,14 @@ module XSD
33
33
  # unqualified - indicates that this attribute is not required to be qualified with the namespace prefix and is
34
34
  # matched against the (NCName) of the attribute
35
35
  # @!attribute form
36
- # @return [String, nil]
36
+ # @return String, nil
37
37
  # TODO: поддержка default значения с вычислением родителя
38
38
  property :form, :string
39
39
 
40
40
  # Optional. Specifies a built-in data type or a simple type. The type attribute can only be present when the
41
41
  # content does not contain a simpleType element
42
42
  # @!attribute type
43
- # @return [String, nil]
43
+ # @return String, nil
44
44
  property :type, :string
45
45
 
46
46
  # Optional. Specifies how the attribute is used. Can be one of the following values:
@@ -48,23 +48,23 @@ module XSD
48
48
  # prohibited - the attribute cannot be used
49
49
  # required - the attribute is required
50
50
  # @!attribute use
51
- # @return [String]
51
+ # @return String
52
52
  property :use, :string, default: 'optional'
53
53
 
54
54
  # Determine if attribute is required
55
- # @return [Boolean]
55
+ # @return Boolean
56
56
  def required?
57
57
  use == 'required'
58
58
  end
59
59
 
60
60
  # Determine if attribute is optional
61
- # @return [Boolean]
61
+ # @return Boolean
62
62
  def optional?
63
63
  use == 'optional'
64
64
  end
65
65
 
66
66
  # Determine if attribute is prohibited
67
- # @return [Boolean]
67
+ # @return Boolean
68
68
  def prohibited?
69
69
  use == 'prohibited'
70
70
  end
@@ -12,7 +12,7 @@ module XSD
12
12
 
13
13
  # Optional. Specifies the name of the attribute. Name and ref attributes cannot both be present
14
14
  # @!attribute name
15
- # @return [String]
15
+ # @return String
16
16
  property :name, :string
17
17
  end
18
18
  end
@@ -12,22 +12,22 @@ module XSD
12
12
 
13
13
  # Nested groups
14
14
  # @!attribute groups
15
- # @return [Array<Group>]
15
+ # @return Array<Group>
16
16
  child :groups, [:group]
17
17
 
18
18
  # Nested choices
19
19
  # @!attribute choices
20
- # @return [Array<Choice>]
20
+ # @return Array<Choice>
21
21
  child :choices, [:choice]
22
22
 
23
23
  # Nested sequences
24
24
  # @!attribute sequences
25
- # @return [Array<Sequence>]
25
+ # @return Array<Sequence>
26
26
  child :sequences, [:sequence]
27
27
 
28
28
  # Nested anys
29
29
  # @!attribute anys
30
- # @return [Array<Any>]
30
+ # @return Array<Any>
31
31
  child :anys, [:any]
32
32
  end
33
33
  end
@@ -9,17 +9,17 @@ module XSD
9
9
  # Optional. Specifies whether character data is allowed to appear between the child elements of this complexType
10
10
  # element. Default is false
11
11
  # @!attribute mixed
12
- # @return [Boolean]
12
+ # @return Boolean
13
13
  property :mixed, :boolean, default: false
14
14
 
15
15
  # Get nested extension
16
16
  # @!attribute extension
17
- # @return [Extension, nil]
17
+ # @return Extension, nil
18
18
  child :extension, :extension
19
19
 
20
20
  # Get nested restriction
21
21
  # @!attribute restriction
22
- # @return [Restriction, nil]
22
+ # @return Restriction, nil
23
23
  child :restriction, :restriction
24
24
  end
25
25
  end
@@ -10,19 +10,19 @@ module XSD
10
10
 
11
11
  # Optional. Specifies the name of the attribute. Name and ref attributes cannot both be present
12
12
  # @!attribute name
13
- # @return [String]
13
+ # @return String
14
14
  property :name, :string
15
15
 
16
16
  # Optional. Specifies whether the complex type can be used in an instance document. True indicates that an element
17
17
  # cannot use this complex type directly but must use a complex type derived from this complex type. Default is false
18
18
  # @!attribute abstract
19
- # @return [Boolean]
19
+ # @return Boolean
20
20
  property :abstract, :boolean, default: false
21
21
 
22
22
  # Optional. Specifies whether character data is allowed to appear between the child elements of this complexType
23
23
  # element. Default is false. If a simpleContent element is a child element, the mixed attribute is not allowed!
24
24
  # @!attribute mixed
25
- # @return [Boolean]
25
+ # @return Boolean
26
26
  property :mixed, :boolean, default: false
27
27
 
28
28
  # Optional. Prevents a complex type that has a specified type of derivation from being used in place of this
@@ -31,7 +31,7 @@ module XSD
31
31
  # restriction - prevents complex types derived by restriction
32
32
  # #all - prevents all derived complex types
33
33
  # @!attribute block
34
- # @return [String, nil]
34
+ # @return String, nil
35
35
  property :block, :string
36
36
 
37
37
  # Optional. Prevents a specified type of derivation of this complex type element. Can contain #all or a list
@@ -40,41 +40,41 @@ module XSD
40
40
  # restriction - prevents derivation by restriction
41
41
  # #all - prevents all derivation
42
42
  # @!attribute final
43
- # @return [String, nil]
43
+ # @return String, nil
44
44
  property :final, :string
45
45
 
46
46
  # Simple content object
47
47
  # @!attribute simple_content
48
- # @return [SimpleContent]
48
+ # @return SimpleContent
49
49
  child :simple_content, :simpleContent
50
50
 
51
51
  # Complex content object
52
52
  # @!attribute complex_content
53
- # @return [ComplexContent]
53
+ # @return ComplexContent
54
54
  child :complex_content, :complexContent
55
55
 
56
56
  # Nested group
57
57
  # @!attribute group
58
- # @return [Group]
58
+ # @return Group
59
59
  child :group, :group
60
60
 
61
61
  # Nested all
62
62
  # @!attribute all
63
- # @return [All]
63
+ # @return All
64
64
  child :all, :all
65
65
 
66
66
  # Nested choice
67
67
  # @!attribute choice
68
- # @return [Choice]
68
+ # @return Choice
69
69
  child :choice, :choice
70
70
 
71
71
  # Nested sequence
72
72
  # @!attribute sequence
73
- # @return [Sequence]
73
+ # @return Sequence
74
74
  child :sequence, :sequence
75
75
 
76
76
  # Determine if this is a linked type
77
- # @return [Boolean]
77
+ # @return Boolean
78
78
  def linked?
79
79
  !name.nil?
80
80
  end