rng 0.1.1 → 0.3.3

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 (192) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/docs.yml +63 -0
  3. data/.github/workflows/release.yml +8 -3
  4. data/.gitignore +11 -0
  5. data/.rubocop.yml +11 -6
  6. data/.rubocop_todo.yml +270 -0
  7. data/CHANGELOG.md +317 -0
  8. data/CLAUDE.md +139 -0
  9. data/CODE_OF_CONDUCT.md +132 -0
  10. data/Gemfile +11 -10
  11. data/README.adoc +1929 -0
  12. data/Rakefile +11 -3
  13. data/docs/Gemfile +8 -0
  14. data/docs/_config.yml +23 -0
  15. data/docs/getting-started/index.adoc +75 -0
  16. data/docs/guides/error-handling.adoc +137 -0
  17. data/docs/guides/external-references.adoc +128 -0
  18. data/docs/guides/index.adoc +24 -0
  19. data/docs/guides/parsing-rnc.adoc +141 -0
  20. data/docs/guides/parsing-rng-xml.adoc +81 -0
  21. data/docs/guides/rng-to-rnc.adoc +101 -0
  22. data/docs/guides/validation.adoc +85 -0
  23. data/docs/index.adoc +52 -0
  24. data/docs/reference/api.adoc +126 -0
  25. data/docs/reference/cli.adoc +182 -0
  26. data/docs/understanding/architecture.adoc +58 -0
  27. data/docs/understanding/rng-vs-rnc.adoc +118 -0
  28. data/exe/rng +5 -0
  29. data/lib/rng/any_name.rb +28 -0
  30. data/lib/rng/attribute.rb +61 -5
  31. data/lib/rng/choice.rb +60 -0
  32. data/lib/rng/cli.rb +607 -0
  33. data/lib/rng/data.rb +32 -0
  34. data/lib/rng/datatype_declaration.rb +26 -0
  35. data/lib/rng/define.rb +56 -5
  36. data/lib/rng/div.rb +36 -0
  37. data/lib/rng/documentation.rb +9 -0
  38. data/lib/rng/element.rb +66 -18
  39. data/lib/rng/empty.rb +23 -0
  40. data/lib/rng/except.rb +62 -0
  41. data/lib/rng/external_ref.rb +28 -0
  42. data/lib/rng/external_ref_resolver.rb +582 -0
  43. data/lib/rng/foreign_attribute.rb +26 -0
  44. data/lib/rng/foreign_element.rb +33 -0
  45. data/lib/rng/grammar.rb +38 -0
  46. data/lib/rng/group.rb +62 -0
  47. data/lib/rng/include.rb +23 -0
  48. data/lib/rng/include_processor.rb +461 -0
  49. data/lib/rng/interleave.rb +58 -0
  50. data/lib/rng/list.rb +56 -0
  51. data/lib/rng/mixed.rb +58 -0
  52. data/lib/rng/name.rb +28 -0
  53. data/lib/rng/namespace_declaration.rb +47 -0
  54. data/lib/rng/namespaces.rb +15 -0
  55. data/lib/rng/not_allowed.rb +23 -0
  56. data/lib/rng/ns_name.rb +31 -0
  57. data/lib/rng/one_or_more.rb +58 -0
  58. data/lib/rng/optional.rb +58 -0
  59. data/lib/rng/param.rb +30 -0
  60. data/lib/rng/parent_ref.rb +28 -0
  61. data/lib/rng/parse_rnc.rb +26 -0
  62. data/lib/rng/parse_tree_processor.rb +695 -0
  63. data/lib/rng/pattern.rb +24 -0
  64. data/lib/rng/ref.rb +28 -0
  65. data/lib/rng/rnc_builder.rb +927 -0
  66. data/lib/rng/rnc_parser.rb +672 -115
  67. data/lib/rng/rnc_to_rng_converter.rb +1408 -0
  68. data/lib/rng/schema_preamble.rb +73 -0
  69. data/lib/rng/schema_validator.rb +1622 -0
  70. data/lib/rng/start.rb +57 -6
  71. data/lib/rng/test_suite_parser.rb +168 -0
  72. data/lib/rng/text.rb +29 -0
  73. data/lib/rng/to_rnc.rb +24 -0
  74. data/lib/rng/value.rb +28 -0
  75. data/lib/rng/version.rb +1 -1
  76. data/lib/rng/zero_or_more.rb +58 -0
  77. data/lib/rng.rb +80 -5
  78. data/rng.gemspec +19 -19
  79. data/scripts/extract_spectest_resources.rb +96 -0
  80. data/spec/fixtures/compacttest.xml +2511 -0
  81. data/spec/fixtures/external/circular_a.rng +7 -0
  82. data/spec/fixtures/external/circular_b.rng +7 -0
  83. data/spec/fixtures/external/circular_main.rng +7 -0
  84. data/spec/fixtures/external/external_ref_lib.rng +7 -0
  85. data/spec/fixtures/external/external_ref_main.rng +7 -0
  86. data/spec/fixtures/external/include_lib.rng +7 -0
  87. data/spec/fixtures/external/include_main.rng +3 -0
  88. data/spec/fixtures/external/nested_chain.rng +6 -0
  89. data/spec/fixtures/external/nested_leaf.rng +7 -0
  90. data/spec/fixtures/external/nested_mid.rng +8 -0
  91. data/spec/fixtures/metanorma/3gpp.rnc +35 -0
  92. data/spec/fixtures/metanorma/3gpp.rng +105 -0
  93. data/spec/fixtures/metanorma/basicdoc.rnc +11 -0
  94. data/spec/fixtures/metanorma/bipm.rnc +148 -0
  95. data/spec/fixtures/metanorma/bipm.rng +376 -0
  96. data/spec/fixtures/metanorma/bsi.rnc +104 -0
  97. data/spec/fixtures/metanorma/bsi.rng +332 -0
  98. data/spec/fixtures/metanorma/csa.rnc +45 -0
  99. data/spec/fixtures/metanorma/csa.rng +131 -0
  100. data/spec/fixtures/metanorma/csd.rnc +43 -0
  101. data/spec/fixtures/metanorma/csd.rng +132 -0
  102. data/spec/fixtures/metanorma/gbstandard.rnc +99 -0
  103. data/spec/fixtures/metanorma/gbstandard.rng +316 -0
  104. data/spec/fixtures/metanorma/iec.rnc +49 -0
  105. data/spec/fixtures/metanorma/iec.rng +193 -0
  106. data/spec/fixtures/metanorma/ietf.rnc +275 -0
  107. data/spec/fixtures/metanorma/ietf.rng +925 -0
  108. data/spec/fixtures/metanorma/iho.rnc +58 -0
  109. data/spec/fixtures/metanorma/iho.rng +179 -0
  110. data/spec/fixtures/metanorma/isodoc.rnc +873 -0
  111. data/spec/fixtures/metanorma/isodoc.rng +2704 -0
  112. data/spec/fixtures/metanorma/isostandard-amd.rnc +43 -0
  113. data/spec/fixtures/metanorma/isostandard-amd.rng +108 -0
  114. data/spec/fixtures/metanorma/isostandard.rnc +166 -0
  115. data/spec/fixtures/metanorma/isostandard.rng +494 -0
  116. data/spec/fixtures/metanorma/itu.rnc +122 -0
  117. data/spec/fixtures/metanorma/itu.rng +377 -0
  118. data/spec/fixtures/metanorma/m3d.rnc +41 -0
  119. data/spec/fixtures/metanorma/m3d.rng +122 -0
  120. data/spec/fixtures/metanorma/mpfd.rnc +36 -0
  121. data/spec/fixtures/metanorma/mpfd.rng +95 -0
  122. data/spec/fixtures/metanorma/nist.rnc +77 -0
  123. data/spec/fixtures/metanorma/nist.rng +216 -0
  124. data/spec/fixtures/metanorma/ogc.rnc +51 -0
  125. data/spec/fixtures/metanorma/ogc.rng +151 -0
  126. data/spec/fixtures/metanorma/reqt.rnc +6 -0
  127. data/spec/fixtures/metanorma/rsd.rnc +36 -0
  128. data/spec/fixtures/metanorma/rsd.rng +95 -0
  129. data/spec/fixtures/metanorma/un.rnc +103 -0
  130. data/spec/fixtures/metanorma/un.rng +367 -0
  131. data/spec/fixtures/rnc/address_book.rnc +10 -0
  132. data/spec/fixtures/rnc/base.rnc +4 -0
  133. data/spec/fixtures/rnc/complex_example.rnc +61 -0
  134. data/spec/fixtures/rnc/grammar_with_trailing.rnc +8 -0
  135. data/spec/fixtures/rnc/main_include_trailing.rnc +3 -0
  136. data/spec/fixtures/rnc/main_with_include.rnc +5 -0
  137. data/spec/fixtures/rnc/test_augment.rnc +10 -0
  138. data/spec/fixtures/rnc/test_isodoc_simple.rnc +9 -0
  139. data/spec/fixtures/rnc/top_level_include.rnc +8 -0
  140. data/spec/fixtures/rng/address_book.rng +20 -0
  141. data/spec/fixtures/rng/relaxng.rng +335 -0
  142. data/spec/fixtures/rng/testSuite.rng +163 -0
  143. data/spec/fixtures/spectest.xml +6845 -0
  144. data/spec/fixtures/spectest_external/case_10_4.7/x +3 -0
  145. data/spec/fixtures/spectest_external/case_10_4.7/y +7 -0
  146. data/spec/fixtures/spectest_external/case_11_4.7/x +3 -0
  147. data/spec/fixtures/spectest_external/case_12_4.7/x +3 -0
  148. data/spec/fixtures/spectest_external/case_13_4.7/x +3 -0
  149. data/spec/fixtures/spectest_external/case_13_4.7/y +3 -0
  150. data/spec/fixtures/spectest_external/case_14_4.7/x +7 -0
  151. data/spec/fixtures/spectest_external/case_15_4.7/x +7 -0
  152. data/spec/fixtures/spectest_external/case_16_4.7/x +5 -0
  153. data/spec/fixtures/spectest_external/case_17_4.7/x +5 -0
  154. data/spec/fixtures/spectest_external/case_18_4.7/x +7 -0
  155. data/spec/fixtures/spectest_external/case_19_4.7/level1.rng +9 -0
  156. data/spec/fixtures/spectest_external/case_19_4.7/level2.rng +7 -0
  157. data/spec/fixtures/spectest_external/case_1_4.5/sub1/x +3 -0
  158. data/spec/fixtures/spectest_external/case_1_4.5/sub3/x +3 -0
  159. data/spec/fixtures/spectest_external/case_1_4.5/x +3 -0
  160. data/spec/fixtures/spectest_external/case_20_4.6/x +3 -0
  161. data/spec/fixtures/spectest_external/case_2_4.5/x +3 -0
  162. data/spec/fixtures/spectest_external/case_3_4.6/x +3 -0
  163. data/spec/fixtures/spectest_external/case_4_4.6/x +3 -0
  164. data/spec/fixtures/spectest_external/case_5_4.6/x +1 -0
  165. data/spec/fixtures/spectest_external/case_6_4.6/x +5 -0
  166. data/spec/fixtures/spectest_external/case_7_4.6/x +1 -0
  167. data/spec/fixtures/spectest_external/case_7_4.6/y +1 -0
  168. data/spec/fixtures/spectest_external/case_8_4.7/x +7 -0
  169. data/spec/fixtures/spectest_external/case_9_4.7/x +7 -0
  170. data/spec/fixtures/spectest_external/resources.json +149 -0
  171. data/spec/rng/advanced_rnc_spec.rb +101 -0
  172. data/spec/rng/compacttest_spec.rb +197 -0
  173. data/spec/rng/datatype_declaration_spec.rb +28 -0
  174. data/spec/rng/div_spec.rb +207 -0
  175. data/spec/rng/external_ref_resolver_spec.rb +122 -0
  176. data/spec/rng/metanorma_conversion_spec.rb +159 -0
  177. data/spec/rng/namespace_declaration_spec.rb +60 -0
  178. data/spec/rng/namespace_support_spec.rb +199 -0
  179. data/spec/rng/rnc_parser_spec.rb +501 -23
  180. data/spec/rng/rnc_roundtrip_spec.rb +135 -0
  181. data/spec/rng/rng_generation_spec.rb +288 -0
  182. data/spec/rng/roundtrip_spec.rb +342 -0
  183. data/spec/rng/schema_preamble_spec.rb +145 -0
  184. data/spec/rng/schema_spec.rb +125 -172
  185. data/spec/rng/spectest_spec.rb +273 -0
  186. data/spec/rng_spec.rb +2 -2
  187. data/spec/spec_helper.rb +7 -9
  188. metadata +188 -8
  189. data/lib/rng/builder.rb +0 -158
  190. data/lib/rng/rng_parser.rb +0 -107
  191. data/lib/rng/schema.rb +0 -18
  192. data/spec/rng/rng_parser_spec.rb +0 -102
data/lib/rng/define.rb CHANGED
@@ -1,14 +1,65 @@
1
- require "lutaml/model"
2
- require_relative "element"
1
+ # frozen_string_literal: true
3
2
 
4
3
  module Rng
5
4
  class Define < Lutaml::Model::Serializable
6
5
  attribute :name, :string
7
- attribute :elements, Element, collection: true
6
+ attribute :combine, :string
7
+ attribute :id, :string
8
+ attribute :ns, :string
9
+ attribute :datatypeLibrary, :string
10
+ attribute :ref, Ref, collection: true
11
+ attribute :element, Element, collection: true
12
+ attribute :choice, Choice, collection: true
13
+ attribute :group, Group, collection: true
14
+ attribute :interleave, Interleave, collection: true
15
+ attribute :mixed, Mixed, collection: true
16
+ attribute :optional, Optional, collection: true
17
+ attribute :zeroOrMore, ZeroOrMore, collection: true
18
+ attribute :oneOrMore, OneOrMore, collection: true
19
+ attribute :text, Text, collection: true
20
+ attribute :empty, Empty, collection: true
21
+ attribute :value, Value, collection: true
22
+ attribute :data, Data, collection: true
23
+ attribute :list, List, collection: true
24
+ attribute :notAllowed, NotAllowed, collection: true
25
+ attribute :attribute, Attribute, collection: true
26
+ attribute :grammar, Grammar, collection: true
27
+ attribute :documentation, Documentation, collection: true
8
28
 
9
29
  xml do
10
- map_attribute "name", to: :name
11
- map_element "element", to: :elements
30
+ element 'define'
31
+ namespace ::Rng::Namespaces::RngNamespace
32
+ ordered
33
+
34
+ map_attribute 'name', to: :name
35
+ map_attribute 'combine', to: :combine
36
+ map_attribute 'id', to: :id
37
+ map_attribute 'ns', to: :ns, value_map: {
38
+ from: { empty: :empty, omitted: :omitted, nil: :nil },
39
+ to: { empty: :empty, omitted: :omitted, nil: :nil }
40
+ }
41
+ map_attribute 'datatypeLibrary', to: :datatypeLibrary, value_map: {
42
+ from: { empty: :empty, omitted: :omitted, nil: :nil },
43
+ to: { empty: :empty, omitted: :omitted, nil: :nil }
44
+ }
45
+ map_element 'ref', to: :ref
46
+ map_element 'element', to: :element
47
+ map_element 'choice', to: :choice
48
+ map_element 'group', to: :group
49
+ map_element 'interleave', to: :interleave
50
+ map_element 'mixed', to: :mixed
51
+ map_element 'optional', to: :optional
52
+ map_element 'zeroOrMore', to: :zeroOrMore
53
+ map_element 'oneOrMore', to: :oneOrMore
54
+ map_element 'text', to: :text
55
+ map_element 'empty', to: :empty
56
+ map_element 'value', to: :value
57
+ map_element 'data', to: :data
58
+ map_element 'list', to: :list
59
+ map_element 'notAllowed', to: :notAllowed
60
+ map_element 'attribute', to: :attribute
61
+ map_element 'grammar', to: :grammar
62
+ map_element 'documentation', to: :documentation
12
63
  end
13
64
  end
14
65
  end
data/lib/rng/div.rb ADDED
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rng
4
+ # Div element for documentation and grouping in RELAX NG schemas
5
+ class Div < Lutaml::Model::Serializable
6
+ attribute :id, :string
7
+ attribute :ns, :string
8
+ attribute :datatypeLibrary, :string
9
+ attribute :start, Start, collection: true, initialize_empty: true
10
+ attribute :define, Define, collection: true, initialize_empty: true
11
+ attribute :div, Div, collection: true, initialize_empty: true
12
+ attribute :include, Include, collection: true, initialize_empty: true
13
+
14
+ xml do
15
+ element 'div'
16
+ ordered
17
+
18
+ namespace ::Rng::Namespaces::RngNamespace
19
+
20
+ map_attribute 'id', to: :id
21
+ map_attribute 'ns', to: :ns, value_map: {
22
+ from: { empty: :empty, omitted: :omitted, nil: :nil },
23
+ to: { empty: :empty, omitted: :omitted, nil: :nil }
24
+ }
25
+ map_attribute 'datatypeLibrary', to: :datatypeLibrary, value_map: {
26
+ from: { empty: :empty, omitted: :omitted, nil: :nil },
27
+ to: { empty: :empty, omitted: :omitted, nil: :nil }
28
+ }
29
+
30
+ map_element 'start', to: :start
31
+ map_element 'define', to: :define
32
+ map_element 'div', to: :div
33
+ map_element 'include', to: :include
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rng
4
+ class Documentation < Lutaml::Model::Type::String
5
+ xml do
6
+ namespace ::Rng::Namespaces::AnnotationNamespace
7
+ end
8
+ end
9
+ end
data/lib/rng/element.rb CHANGED
@@ -1,26 +1,74 @@
1
- require "lutaml/model"
2
- require_relative "attribute"
1
+ # frozen_string_literal: true
3
2
 
4
3
  module Rng
5
4
  class Element < Lutaml::Model::Serializable
6
- attribute :name, :string
7
- attribute :attributes, Attribute, collection: true
8
- attribute :elements, Element, collection: true
9
- attribute :text, :boolean
10
- attribute :zero_or_more, Element, collection: true
11
- attribute :one_or_more, Element, collection: true
12
- attribute :optional, Element, collection: true
13
- attribute :choice, Element, collection: true
5
+ attribute :attr_name, :string
6
+ attribute :name, Name
7
+ attribute :ns, :string
8
+ attribute :ns_name, NsName
9
+ attribute :datatypeLibrary, :string
10
+ attribute :id, :string
11
+ attribute :attribute, Attribute, collection: true
12
+ attribute :ref, Ref, collection: true
13
+ attribute :choice, Choice, collection: true, initialize_empty: true
14
+ attribute :group, Group, collection: true, initialize_empty: true
15
+ attribute :interleave, Interleave, collection: true, initialize_empty: true
16
+ attribute :mixed, Mixed, collection: true, initialize_empty: true
17
+ attribute :optional, Optional, collection: true, initialize_empty: true
18
+ attribute :zeroOrMore, ZeroOrMore, collection: true, initialize_empty: true
19
+ attribute :oneOrMore, OneOrMore, collection: true
20
+ attribute :anyName, AnyName
21
+ attribute :text, Text
22
+ attribute :empty, Empty
23
+ attribute :value, Value
24
+ attribute :data, Data
25
+ attribute :list, List
26
+ attribute :notAllowed, NotAllowed
27
+ attribute :element, Element, collection: true
28
+ attribute :grammar, Grammar
29
+ attribute :parent_ref, ParentRef
30
+ attribute :external_ref, ExternalRef
31
+ attribute :documentation, Documentation
14
32
 
15
33
  xml do
16
- map_attribute "name", to: :name
17
- map_element "attribute", to: :attributes
18
- map_element "element", to: :elements
19
- map_element "text", to: :text
20
- map_element "zeroOrMore", to: :zero_or_more
21
- map_element "oneOrMore", to: :one_or_more
22
- map_element "optional", to: :optional
23
- map_element "choice", to: :choice
34
+ element 'element'
35
+ ordered
36
+
37
+ namespace ::Rng::Namespaces::RngNamespace
38
+
39
+ map_attribute 'name', to: :attr_name
40
+ map_attribute 'ns', to: :ns, value_map: {
41
+ from: { empty: :empty, omitted: :omitted, nil: :nil },
42
+ to: { empty: :empty, omitted: :omitted, nil: :nil }
43
+ }
44
+ map_attribute 'datatypeLibrary', to: :datatypeLibrary, value_map: {
45
+ from: { empty: :empty, omitted: :omitted, nil: :nil },
46
+ to: { empty: :empty, omitted: :omitted, nil: :nil }
47
+ }
48
+ map_attribute 'id', to: :id
49
+ map_element 'name', to: :name
50
+ map_element 'nsName', to: :ns_name
51
+ map_element 'attribute', to: :attribute
52
+ map_element 'ref', to: :ref
53
+ map_element 'choice', to: :choice
54
+ map_element 'group', to: :group
55
+ map_element 'interleave', to: :interleave
56
+ map_element 'mixed', to: :mixed
57
+ map_element 'optional', to: :optional
58
+ map_element 'zeroOrMore', to: :zeroOrMore
59
+ map_element 'oneOrMore', to: :oneOrMore
60
+ map_element 'anyName', to: :anyName
61
+ map_element 'text', to: :text
62
+ map_element 'empty', to: :empty
63
+ map_element 'value', to: :value
64
+ map_element 'data', to: :data
65
+ map_element 'list', to: :list
66
+ map_element 'notAllowed', to: :notAllowed
67
+ map_element 'element', to: :element
68
+ map_element 'grammar', to: :grammar
69
+ map_element 'parentRef', to: :parent_ref
70
+ map_element 'externalRef', to: :external_ref
71
+ map_element 'documentation', to: :documentation
24
72
  end
25
73
  end
26
74
  end
data/lib/rng/empty.rb ADDED
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rng
4
+ class Empty < Lutaml::Model::Serializable
5
+ attribute :id, :string
6
+ attribute :ns, :string
7
+ attribute :datatypeLibrary, :string
8
+
9
+ xml do
10
+ element 'empty'
11
+ ordered
12
+
13
+ namespace ::Rng::Namespaces::RngNamespace
14
+
15
+ map_attribute 'id', to: :id
16
+ map_attribute 'ns', to: :ns, value_map: {
17
+ from: { empty: :empty, omitted: :omitted, nil: :nil },
18
+ to: { empty: :empty, omitted: :omitted, nil: :nil }
19
+ }
20
+ map_attribute 'datatypeLibrary', to: :datatypeLibrary
21
+ end
22
+ end
23
+ end
data/lib/rng/except.rb ADDED
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rng
4
+ class Except < Lutaml::Model::Serializable
5
+ attribute :id, :string
6
+ attribute :ns, :string
7
+ attribute :ns_name, NsName, collection: true
8
+ attribute :datatypeLibrary, :string
9
+ attribute :name, Name, collection: true
10
+ attribute :element, Element, collection: true, initialize_empty: true
11
+ attribute :attribute, Attribute, collection: true, initialize_empty: true
12
+ attribute :ref, Ref, collection: true, initialize_empty: true
13
+ attribute :choice, Choice, collection: true, initialize_empty: true
14
+ attribute :group, Group, collection: true, initialize_empty: true
15
+ attribute :interleave, Interleave, collection: true, initialize_empty: true
16
+ attribute :mixed, Mixed, collection: true, initialize_empty: true
17
+ attribute :optional, Optional, collection: true, initialize_empty: true
18
+ attribute :zeroOrMore, ZeroOrMore, collection: true, initialize_empty: true
19
+ attribute :oneOrMore, OneOrMore, collection: true, initialize_empty: true
20
+ attribute :text, Text, collection: true, initialize_empty: true
21
+ attribute :empty, Empty, collection: true, initialize_empty: true
22
+ attribute :value, Value, collection: true, initialize_empty: true
23
+ attribute :data, Data, collection: true, initialize_empty: true
24
+ attribute :list, List, collection: true, initialize_empty: true
25
+ attribute :notAllowed, NotAllowed, collection: true, initialize_empty: true
26
+
27
+ xml do
28
+ element 'except'
29
+ ordered
30
+
31
+ namespace ::Rng::Namespaces::RngNamespace
32
+
33
+ map_attribute 'id', to: :id
34
+ map_attribute 'ns', to: :ns, value_map: {
35
+ from: { empty: :empty, omitted: :omitted, nil: :nil },
36
+ to: { empty: :empty, omitted: :omitted, nil: :nil }
37
+ }
38
+ map_attribute 'datatypeLibrary', to: :datatypeLibrary, value_map: {
39
+ from: { empty: :empty, omitted: :omitted, nil: :nil },
40
+ to: { empty: :empty, omitted: :omitted, nil: :nil }
41
+ }
42
+ map_element 'name', to: :name
43
+ map_element 'element', to: :element
44
+ map_element 'attribute', to: :attribute
45
+ map_element 'ref', to: :ref
46
+ map_element 'choice', to: :choice
47
+ map_element 'group', to: :group
48
+ map_element 'interleave', to: :interleave
49
+ map_element 'mixed', to: :mixed
50
+ map_element 'optional', to: :optional
51
+ map_element 'zeroOrMore', to: :zeroOrMore
52
+ map_element 'oneOrMore', to: :oneOrMore
53
+ map_element 'text', to: :text
54
+ map_element 'empty', to: :empty
55
+ map_element 'value', to: :value
56
+ map_element 'data', to: :data
57
+ map_element 'list', to: :list
58
+ map_element 'notAllowed', to: :notAllowed
59
+ map_element 'nsName', to: :ns_name
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rng
4
+ class ExternalRef < Lutaml::Model::Serializable
5
+ attribute :id, :string
6
+ attribute :ns, :string
7
+ attribute :datatypeLibrary, :string
8
+ attribute :href, :string
9
+ attribute :base, Lutaml::Xml::W3c::XmlBaseType
10
+
11
+ xml do
12
+ element 'externalRef'
13
+ namespace ::Rng::Namespaces::RngNamespace
14
+
15
+ map_attribute 'id', to: :id
16
+ map_attribute 'ns', to: :ns, value_map: {
17
+ from: { empty: :empty, omitted: :omitted, nil: :nil },
18
+ to: { empty: :empty, omitted: :omitted, nil: :nil }
19
+ }
20
+ map_attribute 'datatypeLibrary', to: :datatypeLibrary, value_map: {
21
+ from: { empty: :empty, omitted: :omitted, nil: :nil },
22
+ to: { empty: :empty, omitted: :omitted, nil: :nil }
23
+ }
24
+ map_attribute 'href', to: :href
25
+ w3c_attributes :base
26
+ end
27
+ end
28
+ end