lutaml-xsd 0.1.0 → 1.0.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/Gemfile +6 -0
- data/LICENSE.md +33 -0
- data/README.adoc +141 -0
- data/lib/lutaml/xsd/all.rb +24 -0
- data/lib/lutaml/xsd/annotation.rb +20 -0
- data/lib/lutaml/xsd/any.rb +26 -0
- data/lib/lutaml/xsd/any_attribute.rb +22 -0
- data/lib/lutaml/xsd/appinfo.rb +18 -0
- data/lib/lutaml/xsd/attribute.rb +34 -0
- data/lib/lutaml/xsd/attribute_group.rb +28 -0
- data/lib/lutaml/xsd/choice.rb +35 -0
- data/lib/lutaml/xsd/complex_content.rb +26 -0
- data/lib/lutaml/xsd/complex_type.rb +44 -0
- data/lib/lutaml/xsd/documentation.rb +20 -0
- data/lib/lutaml/xsd/element.rb +54 -0
- data/lib/lutaml/xsd/enumeration.rb +18 -0
- data/lib/lutaml/xsd/extension_complex_content.rb +34 -0
- data/lib/lutaml/xsd/extension_simple_content.rb +26 -0
- data/lib/lutaml/xsd/field.rb +18 -0
- data/lib/lutaml/xsd/fraction_digits.rb +22 -0
- data/lib/lutaml/xsd/glob.rb +63 -0
- data/lib/lutaml/xsd/group.rb +35 -0
- data/lib/lutaml/xsd/import.rb +26 -0
- data/lib/lutaml/xsd/include.rb +24 -0
- data/lib/lutaml/xsd/key.rb +25 -0
- data/lib/lutaml/xsd/keyref.rb +26 -0
- data/lib/lutaml/xsd/length.rb +20 -0
- data/lib/lutaml/xsd/list.rb +21 -0
- data/lib/lutaml/xsd/max_exclusive.rb +18 -0
- data/lib/lutaml/xsd/max_inclusive.rb +16 -0
- data/lib/lutaml/xsd/max_length.rb +18 -0
- data/lib/lutaml/xsd/min_exclusive.rb +18 -0
- data/lib/lutaml/xsd/min_inclusive.rb +16 -0
- data/lib/lutaml/xsd/min_length.rb +18 -0
- data/lib/lutaml/xsd/notation.rb +24 -0
- data/lib/lutaml/xsd/pattern.rb +18 -0
- data/lib/lutaml/xsd/redefine.rb +28 -0
- data/lib/lutaml/xsd/restriction_complex_content.rb +34 -0
- data/lib/lutaml/xsd/restriction_simple_content.rb +52 -0
- data/lib/lutaml/xsd/restriction_simple_type.rb +46 -0
- data/lib/lutaml/xsd/schema.rb +176 -0
- data/lib/lutaml/xsd/selector.rb +20 -0
- data/lib/lutaml/xsd/sequence.rb +34 -0
- data/lib/lutaml/xsd/simple_content.rb +24 -0
- data/lib/lutaml/xsd/simple_type.rb +28 -0
- data/lib/lutaml/xsd/total_digits.rb +22 -0
- data/lib/lutaml/xsd/union.rb +22 -0
- data/lib/lutaml/xsd/unique.rb +24 -0
- data/lib/lutaml/xsd/version.rb +1 -1
- data/lib/lutaml/xsd/white_space.rb +20 -0
- data/lib/lutaml/xsd/xsd.rb +16 -0
- data/lib/lutaml/xsd.rb +9 -7
- data/lutaml-xsd.gemspec +3 -0
- metadata +84 -9
- data/LICENSE.txt +0 -21
- data/README.md +0 -43
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a4296cdc53ac951e9dabd94e87350ea4d82e7691fcd879e5ea38d9ac619c620e
|
4
|
+
data.tar.gz: a9e1191c508dabc0bc942e86b210f06d4c27815ab10cf5fbdc322bbde0b59f68
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d69274700a75e1756c82103c095a0bf3b5b56fb0c9d9c35da98112afcbca422e37cfed00d46579f0969fec4392ae04b993f57e58f1aaea35e513d6ae39577ff
|
7
|
+
data.tar.gz: 7ffa3d40825726c740a29cac23685e32aff7f4295603634361524305b7579bbf4b02194582b78f12da42c6923657c682b7182d863b08bbd9267ce3190bef6149
|
data/.rubocop.yml
CHANGED
data/Gemfile
CHANGED
data/LICENSE.md
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
Licenses & Copyright
|
2
|
+
====================
|
3
|
+
|
4
|
+
This license file adheres to the formatting guidelines of
|
5
|
+
[readable-licenses](https://github.com/nevir/readable-licenses).
|
6
|
+
|
7
|
+
|
8
|
+
Ribose's BSD 2-Clause License
|
9
|
+
-----------------------------
|
10
|
+
|
11
|
+
Copyright (c) 2024, [Ribose Inc](https://www.ribose.com).
|
12
|
+
All rights reserved.
|
13
|
+
|
14
|
+
Redistribution and use in source and binary forms, with or without modification,
|
15
|
+
are permitted provided that the following conditions are met:
|
16
|
+
|
17
|
+
1. Redistributions of source code must retain the above copyright notice,
|
18
|
+
this list of conditions and the following disclaimer.
|
19
|
+
|
20
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
21
|
+
this list of conditions and the following disclaimer in the documentation
|
22
|
+
and/or other materials provided with the distribution.
|
23
|
+
|
24
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
25
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
26
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
27
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
28
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
29
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
30
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
31
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
32
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
33
|
+
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
data/README.adoc
ADDED
@@ -0,0 +1,141 @@
|
|
1
|
+
= Lutaml::Xsd
|
2
|
+
|
3
|
+
== Overview
|
4
|
+
|
5
|
+
**Lutaml::Xsd** is a *Ruby* gem designed to parse and build *XML Schema Definition (XSD)* objects. It provides a robust framework for handling *XSD* *elements*, *attributes*, and *complex types*, allowing users to manipulate and generate *XSD* objects programmatically.
|
6
|
+
|
7
|
+
== Installation
|
8
|
+
|
9
|
+
To install *Lutaml::Xsd*, add this line to your application's Gemfile:
|
10
|
+
|
11
|
+
[source,ruby]
|
12
|
+
----
|
13
|
+
gem 'lutaml-xsd'
|
14
|
+
----
|
15
|
+
|
16
|
+
And then execute:
|
17
|
+
|
18
|
+
[source,bash]
|
19
|
+
----
|
20
|
+
bundle install
|
21
|
+
----
|
22
|
+
|
23
|
+
Or install it by running:
|
24
|
+
|
25
|
+
[source,bash]
|
26
|
+
----
|
27
|
+
gem install lutaml-xsd
|
28
|
+
----
|
29
|
+
|
30
|
+
== Usage
|
31
|
+
|
32
|
+
=== Parsing XSD Files
|
33
|
+
|
34
|
+
To parse an *XSD* file, you can use the `Lutaml::Xsd.parse` method. This method takes the content of an *XSD* file as a string and optional parameters such as the location of the *XSD* file for resolving relative paths.
|
35
|
+
|
36
|
+
[source,ruby]
|
37
|
+
----
|
38
|
+
require 'lutaml/xsd'
|
39
|
+
|
40
|
+
xsd_content = File.read('path/to/your/schema.xsd')
|
41
|
+
parsed_schema = Lutaml::Xsd.parse(xsd_content, location: 'path/to/your/')
|
42
|
+
----
|
43
|
+
|
44
|
+
=== Working with Parsed Data
|
45
|
+
|
46
|
+
Once parsed, the data is represented as instances of various classes such as `Lutaml::Xsd::Schema`, `Lutaml::Xsd::Element`, and others. These objects reflect the structure of the *XSD* and can be manipulated or inspected in *Ruby*.
|
47
|
+
|
48
|
+
[source,ruby]
|
49
|
+
----
|
50
|
+
schema = <<~SCHEMA
|
51
|
+
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
52
|
+
<xsd:element name="root">
|
53
|
+
...
|
54
|
+
</xsd:element>
|
55
|
+
<xsd:element name="root1">
|
56
|
+
...
|
57
|
+
</xsd:element>
|
58
|
+
</xsd:schema>
|
59
|
+
SCHEMA
|
60
|
+
|
61
|
+
parsed_schema = Lutaml::Xsd.parse(schema, location: 'http://example.com/')
|
62
|
+
|
63
|
+
# Accessing elements of the schema
|
64
|
+
elements = parsed_schema.element
|
65
|
+
elements.each do |element|
|
66
|
+
puts "Element Name: #{element.name}"
|
67
|
+
end
|
68
|
+
# the output will be:
|
69
|
+
> Element Name: root
|
70
|
+
> Element Name: root1
|
71
|
+
----
|
72
|
+
|
73
|
+
=== Serialization
|
74
|
+
|
75
|
+
The gem supports serializing the schema back to *XML*. Each class like `Lutaml::Xsd::Schema` has a method `to_xml` that generates the *XML* representation of the object.
|
76
|
+
|
77
|
+
[source,ruby]
|
78
|
+
----
|
79
|
+
xml_output = parsed_schema.to_xml
|
80
|
+
puts xml_output
|
81
|
+
----
|
82
|
+
|
83
|
+
== Key Components
|
84
|
+
|
85
|
+
=== Schema Representation
|
86
|
+
|
87
|
+
The *Lutaml::Xsd::Schema* class represents an *XSD* schema. It includes attributes for various schema properties like target namespace, element form default, and others.
|
88
|
+
|
89
|
+
- **Attributes and Elements**: The schema object contains collections of elements, complex types, simple types, etc., which are all accessible via attributes on the `Schema` object.
|
90
|
+
|
91
|
+
=== Include and Import Handling
|
92
|
+
|
93
|
+
The path provided in `location` via `Lutaml::Xsd.parse(schema, location: 'path/to/your/directory/')` is used for resolving relative paths provided in *include* and *import* element's *schemaLocation* attribute.
|
94
|
+
|
95
|
+
Make sure to provide the directory *path*/*URL* in `location` parameter, as it will be used as base path for resolving relative paths.
|
96
|
+
|
97
|
+
For example, if *URL* is provided:
|
98
|
+
|
99
|
+
[source,ruby]
|
100
|
+
----
|
101
|
+
Lutaml::Xsd.parse(xsd_content, location: 'http://example.com/directory/')
|
102
|
+
----
|
103
|
+
|
104
|
+
If local path is provided:
|
105
|
+
|
106
|
+
[source,ruby]
|
107
|
+
----
|
108
|
+
Lutaml::Xsd.parse(xsd_content, location: 'path/to/your/directory/')
|
109
|
+
----
|
110
|
+
|
111
|
+
[source, xml]
|
112
|
+
----
|
113
|
+
<xs:include schemaLocation="<location>/directory2/metaschema.xsd"/>
|
114
|
+
<!-- AND/OR -->
|
115
|
+
<xs:import schemaLocation="<location>/metaschema.xsd"/>
|
116
|
+
----
|
117
|
+
|
118
|
+
All schemas specified in the *include* and/or *import* elements will be fetched from their *schemaLocation*, parsed and added to their parent *Lutaml::Xsd::Schema* object.
|
119
|
+
|
120
|
+
== Development
|
121
|
+
|
122
|
+
- **Dependencies**: The gem depends on other gems like `zeitwerk` for autoloading and `lutaml-model` for model serialization. See the `Gemfile` and `lutaml-xsd.gemspec` for details on dependencies.
|
123
|
+
|
124
|
+
- **Testing**: Tests are written using RSpec. Test files and fixtures are located in the `spec` directory.
|
125
|
+
|
126
|
+
== About LutaML
|
127
|
+
|
128
|
+
The name "LutaML" is pronounced as "Looh-tah-mel".
|
129
|
+
|
130
|
+
The name "LutaML" comes from the Latin word for clay, "Lutum", and "ML"
|
131
|
+
for "Markup Language". Just as clay can be molded and modeled into beautiful and
|
132
|
+
practical end products, the Lutaml::Model gem is used for data modeling,
|
133
|
+
allowing you to shape and structure your data into useful forms.
|
134
|
+
|
135
|
+
|
136
|
+
== License and Copyright
|
137
|
+
|
138
|
+
This project is licensed under the BSD 2-clause License.
|
139
|
+
See the link:LICENSE.md[] file for details.
|
140
|
+
|
141
|
+
Copyright Ribose.
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lutaml
|
4
|
+
module Xsd
|
5
|
+
class All < Model::Serializable
|
6
|
+
attribute :id, :string
|
7
|
+
attribute :max_occurs, :string
|
8
|
+
attribute :min_occurs, :string
|
9
|
+
attribute :annotation, Annotation
|
10
|
+
attribute :element, Element, collection: true
|
11
|
+
|
12
|
+
xml do
|
13
|
+
root "all", mixed: true
|
14
|
+
namespace "http://www.w3.org/2001/XMLSchema", "xsd"
|
15
|
+
|
16
|
+
map_attribute :id, to: :id
|
17
|
+
map_attribute :max_occurs, to: :max_occurs
|
18
|
+
map_attribute :min_occurs, to: :min_occurs
|
19
|
+
map_element :annotation, to: :annotation
|
20
|
+
map_element :element, to: :element
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lutaml
|
4
|
+
module Xsd
|
5
|
+
class Annotation < Model::Serializable
|
6
|
+
attribute :id, :string
|
7
|
+
attribute :documentation, Documentation, collection: true
|
8
|
+
attribute :appinfo, Appinfo, collection: true
|
9
|
+
|
10
|
+
xml do
|
11
|
+
root "annotation", mixed: true
|
12
|
+
namespace "http://www.w3.org/2001/XMLSchema", "xsd"
|
13
|
+
|
14
|
+
map_attribute :id, to: :id
|
15
|
+
map_element :documentation, to: :documentation
|
16
|
+
map_element :appinfo, to: :appinfo
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lutaml
|
4
|
+
module Xsd
|
5
|
+
class Any < Model::Serializable
|
6
|
+
attribute :id, :string
|
7
|
+
attribute :min_occurs, :string
|
8
|
+
attribute :max_occurs, :string
|
9
|
+
attribute :namespace, :string
|
10
|
+
attribute :process_contents, :string
|
11
|
+
attribute :annotation, Annotation
|
12
|
+
|
13
|
+
xml do
|
14
|
+
root "any", mixed: true
|
15
|
+
namespace "http://www.w3.org/2001/XMLSchema", "xsd"
|
16
|
+
|
17
|
+
map_attribute :id, to: :id
|
18
|
+
map_attribute :namespace, to: :namespace
|
19
|
+
map_attribute :minOccurs, to: :min_occurs
|
20
|
+
map_attribute :maxOccurs, to: :max_occurs
|
21
|
+
map_attribute :processContents, to: :process_contents
|
22
|
+
map_element :annotation, to: :annotation
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lutaml
|
4
|
+
module Xsd
|
5
|
+
class AnyAttribute < Model::Serializable
|
6
|
+
attribute :id, :string
|
7
|
+
attribute :namespace, :string
|
8
|
+
attribute :process_contents, :string
|
9
|
+
attribute :annotation, Annotation
|
10
|
+
|
11
|
+
xml do
|
12
|
+
root "anyAttribute", mixed: true
|
13
|
+
namespace "http://www.w3.org/2001/XMLSchema", "xsd"
|
14
|
+
|
15
|
+
map_attribute :id, to: :id
|
16
|
+
map_attribute :namespace, to: :namespace
|
17
|
+
map_attribute :processContents, to: :process_contents
|
18
|
+
map_element :annotation, to: :annotation
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lutaml
|
4
|
+
module Xsd
|
5
|
+
class Appinfo < Model::Serializable
|
6
|
+
attribute :source, :string
|
7
|
+
attribute :text, :string
|
8
|
+
|
9
|
+
xml do
|
10
|
+
root "appinfo", mixed: true
|
11
|
+
namespace "http://www.w3.org/2001/XMLSchema", "xsd"
|
12
|
+
|
13
|
+
map_content to: :text
|
14
|
+
map_attribute :source, to: :source
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lutaml
|
4
|
+
module Xsd
|
5
|
+
class Attribute < Model::Serializable
|
6
|
+
attribute :id, :string
|
7
|
+
attribute :use, :string, values: %w[required prohibited optional], default: -> { "optional" }
|
8
|
+
attribute :ref, :string
|
9
|
+
attribute :name, :string
|
10
|
+
attribute :type, :string
|
11
|
+
attribute :form, :string
|
12
|
+
attribute :fixed, :string
|
13
|
+
attribute :default, :string
|
14
|
+
attribute :annotation, Annotation
|
15
|
+
attribute :simple_type, SimpleType
|
16
|
+
|
17
|
+
xml do
|
18
|
+
root "attribute", mixed: true
|
19
|
+
namespace "http://www.w3.org/2001/XMLSchema", "xsd"
|
20
|
+
|
21
|
+
map_attribute :id, to: :id
|
22
|
+
map_attribute :use, to: :use
|
23
|
+
map_attribute :ref, to: :ref
|
24
|
+
map_attribute :name, to: :name
|
25
|
+
map_attribute :type, to: :type
|
26
|
+
map_attribute :form, to: :form
|
27
|
+
map_attribute :fixed, to: :fixed
|
28
|
+
map_attribute :default, to: :default
|
29
|
+
map_element :annotation, to: :annotation
|
30
|
+
map_element :simpleType, to: :simple_type
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lutaml
|
4
|
+
module Xsd
|
5
|
+
class AttributeGroup < Model::Serializable
|
6
|
+
attribute :id, :string
|
7
|
+
attribute :name, :string
|
8
|
+
attribute :ref, :string
|
9
|
+
attribute :annotation, Annotation
|
10
|
+
attribute :any_attribute, AnyAttribute
|
11
|
+
attribute :attribute, Attribute, collection: true
|
12
|
+
attribute :attribute_group, AttributeGroup, collection: true
|
13
|
+
|
14
|
+
xml do
|
15
|
+
root "attributeGroup", mixed: true
|
16
|
+
namespace "http://www.w3.org/2001/XMLSchema", "xsd"
|
17
|
+
|
18
|
+
map_attribute :id, to: :id
|
19
|
+
map_attribute :ref, to: :ref
|
20
|
+
map_attribute :name, to: :name
|
21
|
+
map_element :attribute, to: :attribute
|
22
|
+
map_element :annotation, to: :annotation
|
23
|
+
map_element :anyAttribute, to: :any_attribute
|
24
|
+
map_element :attributeGroup, to: :attribute_group
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lutaml
|
4
|
+
module Xsd
|
5
|
+
class Sequence < Model::Serializable; end
|
6
|
+
class Group < Model::Serializable; end
|
7
|
+
|
8
|
+
class Choice < Model::Serializable
|
9
|
+
attribute :id, :string
|
10
|
+
attribute :min_occurs, :string
|
11
|
+
attribute :max_occurs, :string
|
12
|
+
attribute :annotation, Annotation
|
13
|
+
attribute :any, Any, collection: true
|
14
|
+
attribute :group, Group, collection: true
|
15
|
+
attribute :choice, Choice, collection: true
|
16
|
+
attribute :element, Element, collection: true
|
17
|
+
attribute :sequence, Sequence, collection: true
|
18
|
+
|
19
|
+
xml do
|
20
|
+
root "choice", mixed: true
|
21
|
+
namespace "http://www.w3.org/2001/XMLSchema", "xsd"
|
22
|
+
|
23
|
+
map_attribute :id, to: :id
|
24
|
+
map_attribute :minOccurs, to: :min_occurs
|
25
|
+
map_attribute :maxOccurs, to: :max_occurs
|
26
|
+
map_element :annotation, to: :annotation
|
27
|
+
map_element :sequence, to: :sequence
|
28
|
+
map_element :element, to: :element
|
29
|
+
map_element :choice, to: :choice
|
30
|
+
map_element :group, to: :group
|
31
|
+
map_element :any, to: :any
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lutaml
|
4
|
+
module Xsd
|
5
|
+
class ExtensionComplexContent < Model::Serializable; end
|
6
|
+
|
7
|
+
class ComplexContent < Model::Serializable
|
8
|
+
attribute :id, :string
|
9
|
+
attribute :mixed, :boolean
|
10
|
+
attribute :extension, ExtensionComplexContent
|
11
|
+
attribute :annotation, Annotation
|
12
|
+
attribute :restriction, RestrictionComplexContent
|
13
|
+
|
14
|
+
xml do
|
15
|
+
root "complexContent", mixed: true
|
16
|
+
namespace "http://www.w3.org/2001/XMLSchema", "xsd"
|
17
|
+
|
18
|
+
map_attribute :id, to: :id
|
19
|
+
map_attribute :mixed, to: :mixed
|
20
|
+
map_element :extension, to: :extension
|
21
|
+
map_element :annotation, to: :annotation
|
22
|
+
map_element :restriction, to: :restriction
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lutaml
|
4
|
+
module Xsd
|
5
|
+
class ComplexType < Model::Serializable
|
6
|
+
attribute :id, :string
|
7
|
+
attribute :name, :string
|
8
|
+
attribute :final, :string
|
9
|
+
attribute :block, :string
|
10
|
+
attribute :mixed, :boolean, default: -> { false }
|
11
|
+
attribute :abstract, :boolean, default: -> { false }
|
12
|
+
attribute :all, All
|
13
|
+
attribute :group, Group
|
14
|
+
attribute :choice, Choice
|
15
|
+
attribute :sequence, Sequence
|
16
|
+
attribute :annotation, Annotation
|
17
|
+
attribute :simple_content, SimpleContent
|
18
|
+
attribute :complex_content, ComplexContent
|
19
|
+
attribute :attribute, Attribute, collection: true
|
20
|
+
attribute :attribute_group, AttributeGroup, collection: true
|
21
|
+
|
22
|
+
xml do
|
23
|
+
root "complexType", mixed: true
|
24
|
+
namespace "http://www.w3.org/2001/XMLSchema", "xsd"
|
25
|
+
|
26
|
+
map_attribute :id, to: :id
|
27
|
+
map_attribute :name, to: :name
|
28
|
+
map_attribute :final, to: :final
|
29
|
+
map_attribute :block, to: :block
|
30
|
+
map_attribute :mixed, to: :mixed
|
31
|
+
map_attribute :abstract, to: :abstract
|
32
|
+
map_element :all, to: :all
|
33
|
+
map_element :group, to: :group
|
34
|
+
map_element :choice, to: :choice
|
35
|
+
map_element :sequence, to: :sequence
|
36
|
+
map_element :attribute, to: :attribute
|
37
|
+
map_element :annotation, to: :annotation
|
38
|
+
map_element :attributeGroup, to: :attribute_group
|
39
|
+
map_element :simpleContent, to: :simple_content
|
40
|
+
map_element :complexContent, to: :complex_content
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lutaml
|
4
|
+
module Xsd
|
5
|
+
class Documentation < Model::Serializable
|
6
|
+
attribute :lang, :string
|
7
|
+
attribute :source, :string
|
8
|
+
attribute :content, :string
|
9
|
+
|
10
|
+
xml do
|
11
|
+
root "documentation"
|
12
|
+
namespace "http://www.w3.org/2001/XMLSchema", "xsd"
|
13
|
+
|
14
|
+
map_all to: :content
|
15
|
+
map_attribute :lang, to: :lang
|
16
|
+
map_attribute :source, to: :source
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lutaml
|
4
|
+
module Xsd
|
5
|
+
class Element < Model::Serializable
|
6
|
+
attribute :id, :string
|
7
|
+
attribute :ref, :string
|
8
|
+
attribute :name, :string
|
9
|
+
attribute :type, :string
|
10
|
+
attribute :form, :string
|
11
|
+
attribute :block, :string
|
12
|
+
attribute :final, :string
|
13
|
+
attribute :fixed, :string
|
14
|
+
attribute :default, :string
|
15
|
+
attribute :nillable, :string
|
16
|
+
attribute :abstract, :boolean, default: -> { false }
|
17
|
+
attribute :min_occurs, :string
|
18
|
+
attribute :max_occurs, :string
|
19
|
+
attribute :substitution_group, :string
|
20
|
+
attribute :annotation, Annotation
|
21
|
+
attribute :simple_type, SimpleType
|
22
|
+
attribute :complex_type, ComplexType
|
23
|
+
attribute :key, Key, collection: true
|
24
|
+
attribute :keyref, Keyref, collection: true
|
25
|
+
attribute :unique, Unique, collection: true
|
26
|
+
|
27
|
+
xml do
|
28
|
+
root "element", mixed: true
|
29
|
+
namespace "http://www.w3.org/2001/XMLSchema", "xsd"
|
30
|
+
|
31
|
+
map_attribute :id, to: :id
|
32
|
+
map_attribute :ref, to: :ref
|
33
|
+
map_attribute :name, to: :name
|
34
|
+
map_attribute :type, to: :type
|
35
|
+
map_attribute :form, to: :form
|
36
|
+
map_attribute :block, to: :block
|
37
|
+
map_attribute :final, to: :final
|
38
|
+
map_attribute :fixed, to: :fixed
|
39
|
+
map_attribute :default, to: :default
|
40
|
+
map_attribute :nillable, to: :nillable
|
41
|
+
map_attribute :abstract, to: :abstract
|
42
|
+
map_attribute :minOccurs, to: :min_occurs
|
43
|
+
map_attribute :maxOccurs, to: :max_occurs
|
44
|
+
map_attribute :substitutionGroup, to: :substitution_group
|
45
|
+
map_element :complexType, to: :complex_type
|
46
|
+
map_element :simpleType, to: :simple_type
|
47
|
+
map_element :annotation, to: :annotation
|
48
|
+
map_element :keyref, to: :keyref
|
49
|
+
map_element :unique, to: :unique
|
50
|
+
map_element :key, to: :key
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lutaml
|
4
|
+
module Xsd
|
5
|
+
class Enumeration < Model::Serializable
|
6
|
+
attribute :value, :string
|
7
|
+
attribute :annotation, Annotation
|
8
|
+
|
9
|
+
xml do
|
10
|
+
root "enumeration", mixed: true
|
11
|
+
namespace "http://www.w3.org/2001/XMLSchema", "xsd"
|
12
|
+
|
13
|
+
map_attribute :value, to: :value
|
14
|
+
map_element :annotation, to: :annotation
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lutaml
|
4
|
+
module Xsd
|
5
|
+
class ExtensionComplexContent < Model::Serializable
|
6
|
+
attribute :id, :string
|
7
|
+
attribute :base, :string
|
8
|
+
attribute :all, All
|
9
|
+
attribute :group, Group
|
10
|
+
attribute :choice, Choice
|
11
|
+
attribute :sequence, Sequence
|
12
|
+
attribute :annotation, Annotation
|
13
|
+
attribute :any_attribute, AnyAttribute
|
14
|
+
attribute :attribute, Attribute, collection: true
|
15
|
+
attribute :attribute_group, AttributeGroup, collection: true
|
16
|
+
|
17
|
+
xml do
|
18
|
+
root "extension", mixed: true
|
19
|
+
namespace "http://www.w3.org/2001/XMLSchema", "xsd"
|
20
|
+
|
21
|
+
map_attribute :id, to: :id
|
22
|
+
map_attribute :base, to: :base
|
23
|
+
map_element :all, to: :all
|
24
|
+
map_element :group, to: :group
|
25
|
+
map_element :choice, to: :choice
|
26
|
+
map_element :sequence, to: :sequence
|
27
|
+
map_element :attribute, to: :attribute
|
28
|
+
map_element :annotation, to: :annotation
|
29
|
+
map_element :any_attribute, to: :any_attribute
|
30
|
+
map_element :attributeGroup, to: :attribute_group
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lutaml
|
4
|
+
module Xsd
|
5
|
+
class ExtensionSimpleContent < Model::Serializable
|
6
|
+
attribute :id, :string
|
7
|
+
attribute :base, :string
|
8
|
+
attribute :annotation, Annotation
|
9
|
+
attribute :any_attribute, AnyAttribute
|
10
|
+
attribute :attribute, Attribute, collection: true
|
11
|
+
attribute :attribute_group, AttributeGroup, collection: true
|
12
|
+
|
13
|
+
xml do
|
14
|
+
root "extension", mixed: true
|
15
|
+
namespace "http://www.w3.org/2001/XMLSchema", "xsd"
|
16
|
+
|
17
|
+
map_attribute :id, to: :id
|
18
|
+
map_attribute :base, to: :base
|
19
|
+
map_element :attribute, to: :attribute
|
20
|
+
map_element :annotation, to: :annotation
|
21
|
+
map_element :any_attribute, to: :any_attribute
|
22
|
+
map_element :attributeGroup, to: :attribute_group
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lutaml
|
4
|
+
module Xsd
|
5
|
+
class Field < Model::Serializable
|
6
|
+
attribute :id, :string
|
7
|
+
attribute :xpath, :string
|
8
|
+
|
9
|
+
xml do
|
10
|
+
root "field", mixed: true
|
11
|
+
namespace "http://www.w3.org/2001/XMLSchema", "xsd"
|
12
|
+
|
13
|
+
map_attribute :id, to: :id
|
14
|
+
map_attribute :xpath, to: :xpath
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|