lutaml-model 0.7.7 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1585) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/dependent-repos.json +9 -0
  3. data/.github/workflows/dependent-tests.yml +4 -0
  4. data/.github/workflows/docs.yml +59 -0
  5. data/.github/workflows/downstream-performance.yml +153 -0
  6. data/.github/workflows/performance.yml +33 -0
  7. data/.github/workflows/rake.yml +13 -0
  8. data/.github/workflows/release.yml +5 -0
  9. data/.gitignore +27 -1
  10. data/.rubocop.yml +14 -2
  11. data/.rubocop_todo.yml +408 -88
  12. data/Gemfile +15 -9
  13. data/README.adoc +13736 -6922
  14. data/RELEASE_NOTES.adoc +51 -0
  15. data/Rakefile +2 -0
  16. data/bench/baselines/.gitkeep +0 -0
  17. data/bench/bench_all.rb +52 -0
  18. data/bench/bench_common.rb +147 -0
  19. data/bench/bench_compare.rb +195 -0
  20. data/bench/bench_mml.rb +53 -0
  21. data/bench/bench_niso.rb +54 -0
  22. data/bench/bench_sts.rb +49 -0
  23. data/bench/bench_unitsml.rb +43 -0
  24. data/bench/bench_xmi.rb +51 -0
  25. data/bench/gate_config.rb +120 -0
  26. data/benchmark/quick_benchmark.rb +297 -0
  27. data/benchmark/serialization_benchmark.rb +619 -0
  28. data/docs/.rubocop.yml +1 -0
  29. data/docs/.rubocop_todo.yml +7 -0
  30. data/docs/Gemfile +13 -0
  31. data/docs/PERFORMANCE_METHODOLOGY.md +645 -0
  32. data/docs/_config.yml +145 -0
  33. data/docs/_guides/advanced-mapping.adoc +564 -0
  34. data/docs/_guides/character-encoding.adoc +342 -0
  35. data/docs/_guides/collection-serialization.adoc +349 -0
  36. data/docs/_guides/creating-xsd.adoc +1221 -0
  37. data/docs/_guides/index.adoc +71 -0
  38. data/docs/_guides/keyvalue-serialization.adoc +1156 -0
  39. data/docs/_guides/liquid-templates.adoc +505 -0
  40. data/docs/_guides/missing-values-handling.adoc +1531 -0
  41. data/docs/_guides/ooxml-examples.adoc +755 -0
  42. data/docs/{schema_generation.adoc → _guides/schema-generation.adoc} +5 -0
  43. data/docs/{schema_import.adoc → _guides/schema-import.adoc} +276 -4
  44. data/docs/_guides/value-transformations.adoc +1388 -0
  45. data/docs/_guides/xml/namespace-presentation.adoc +476 -0
  46. data/docs/_guides/xml/namespace-semantics.adoc +677 -0
  47. data/docs/_guides/xml/reusable-mapping-classes.adoc +181 -0
  48. data/docs/_guides/xml/schema-location.adoc +245 -0
  49. data/docs/_guides/xml/type-namespaces.adoc +1011 -0
  50. data/docs/_guides/xml-mapping.adoc +1847 -0
  51. data/docs/_guides/xml-mappings-guide.adoc +21 -0
  52. data/docs/_guides/xml-namespace-declarations.adoc +662 -0
  53. data/docs/_guides/xml-namespace-qualification.adoc +720 -0
  54. data/docs/_guides/xml-namespaces.adoc +2613 -0
  55. data/docs/_guides/xml_mappings/01_introduction.adoc +65 -0
  56. data/docs/_guides/xml_mappings/02_core_concepts.adoc +177 -0
  57. data/docs/_guides/xml_mappings/03_architecture.adoc +205 -0
  58. data/docs/_guides/xml_mappings/04_xml_namespace_class.adoc +1754 -0
  59. data/docs/_guides/xml_mappings/05_common_patterns.adoc +1803 -0
  60. data/docs/_guides/xml_mappings/06_migration_guide.adoc +523 -0
  61. data/docs/_guides/xml_mappings/07_best_practices.adoc +959 -0
  62. data/docs/_guides/xml_mappings/08_troubleshooting.adoc +934 -0
  63. data/docs/_migrations/0-1-0-migrate-from-shale.adoc +304 -0
  64. data/docs/_migrations/0-8-0-namespace-restructuring.adoc +1572 -0
  65. data/docs/_migrations/0-8-0-xsd-features.adoc +729 -0
  66. data/docs/_migrations/index.adoc +18 -0
  67. data/docs/_migrations/xsd-type-migration.adoc +1294 -0
  68. data/docs/_pages/attributes.adoc +1156 -0
  69. data/docs/_pages/breaking-changes.adoc +154 -0
  70. data/docs/_pages/collections.adoc +1664 -0
  71. data/docs/_pages/comparison-with-shale.adoc +139 -0
  72. data/docs/_pages/configuration.adoc +306 -0
  73. data/docs/_pages/consolidation-mapping.adoc +252 -0
  74. data/docs/_pages/importable_models.adoc +591 -0
  75. data/docs/_pages/index.adoc +46 -0
  76. data/docs/_pages/installation.adoc +35 -0
  77. data/docs/_pages/models.adoc +332 -0
  78. data/docs/_pages/quick-start.adoc +124 -0
  79. data/docs/_pages/serialization_adapters.adoc +319 -0
  80. data/docs/_pages/troubleshooting.adoc +104 -0
  81. data/docs/_pages/validation.adoc +171 -0
  82. data/docs/_pages/value_types.adoc +1514 -0
  83. data/docs/_pages/xml-conformance.adoc +143 -0
  84. data/docs/_references/architecture.adoc +189 -0
  85. data/docs/{custom_adapters.adoc → _references/custom_adapters.adoc} +6 -1
  86. data/docs/_references/custom_registers.adoc +1026 -0
  87. data/docs/_references/data-modeling-in-a-nutshell.adoc +207 -0
  88. data/docs/_references/format-independent-features.adoc +713 -0
  89. data/docs/_references/index.adoc +47 -0
  90. data/docs/_references/instance-serialization.adoc +120 -0
  91. data/docs/_references/lutaml-namespace-planning.md +120 -0
  92. data/docs/_references/parent-root-context.adoc +122 -0
  93. data/docs/_references/reference_type.adoc +302 -0
  94. data/docs/_references/serialization-model-mappings.adoc +102 -0
  95. data/docs/_references/three-phase-namespace-architecture.adoc +470 -0
  96. data/docs/_references/xml-w3c-namespace-qualification.adoc +66 -0
  97. data/docs/_references/xsd-generation-with-namespace-support.adoc +449 -0
  98. data/docs/_references/xsd-schema-parsing.adoc +1260 -0
  99. data/docs/_references/xsd-type-architecture.adoc +534 -0
  100. data/docs/_tutorials/basic-model-definition.adoc +157 -0
  101. data/docs/_tutorials/custom-types-tutorial.adoc +258 -0
  102. data/docs/_tutorials/first-json-serialization.adoc +192 -0
  103. data/docs/_tutorials/first-xml-serialization.adoc +223 -0
  104. data/docs/_tutorials/index.adoc +60 -0
  105. data/docs/_tutorials/lutaml-xml-architecture.adoc +1354 -0
  106. data/docs/_tutorials/polymorphic-models-tutorial.adoc +253 -0
  107. data/docs/_tutorials/schema-compiler-module-namespaces.adoc +497 -0
  108. data/docs/_tutorials/validation-basics.adoc +232 -0
  109. data/docs/_tutorials/working-with-collections.adoc +201 -0
  110. data/docs/_tutorials/xml-element-attribute-namespace-guide.adoc +279 -0
  111. data/docs/_tutorials/xml-namespaces-basics.adoc +315 -0
  112. data/docs/_tutorials/xml-schema-primer-style-guide.adoc +1394 -0
  113. data/docs/architecture.md +424 -0
  114. data/docs/bugreports/BUGREPORT_element_order_render_empty.md +99 -0
  115. data/docs/cli_compare.adoc +249 -0
  116. data/docs/collection_validation.adoc +366 -0
  117. data/docs/index.adoc +108 -0
  118. data/docs/key_value_data_model.adoc +1229 -0
  119. data/docs/model_transforms.adoc +769 -0
  120. data/docs/namespace-management.adoc +1051 -0
  121. data/docs/xml-schema-qualification.md +171 -0
  122. data/docs/yamls_sequence.adoc +335 -0
  123. data/lib/lutaml/{model/hash_adapter → hash_format/adapter}/document.rb +3 -4
  124. data/lib/lutaml/hash_format/adapter/mapping.rb +19 -0
  125. data/lib/lutaml/hash_format/adapter/mapping_rule.rb +9 -0
  126. data/lib/lutaml/{model/hash_adapter → hash_format/adapter}/standard_adapter.rb +3 -3
  127. data/lib/lutaml/hash_format/adapter/transform.rb +9 -0
  128. data/lib/lutaml/hash_format/adapter.rb +13 -0
  129. data/lib/lutaml/hash_format/type/serializers.rb +24 -0
  130. data/lib/lutaml/hash_format.rb +29 -0
  131. data/lib/lutaml/{model/json → json/adapter}/document.rb +3 -3
  132. data/lib/lutaml/json/adapter/mapping.rb +19 -0
  133. data/lib/lutaml/json/adapter/mapping_rule.rb +9 -0
  134. data/lib/lutaml/json/adapter/multi_json_adapter.rb +38 -0
  135. data/lib/lutaml/json/adapter/oj_adapter.rb +38 -0
  136. data/lib/lutaml/json/adapter/standard_adapter.rb +36 -0
  137. data/lib/lutaml/json/adapter/transform.rb +9 -0
  138. data/lib/lutaml/json/adapter.rb +20 -0
  139. data/lib/lutaml/json/schema/json_schema.rb +62 -0
  140. data/lib/lutaml/json/schema.rb +9 -0
  141. data/lib/lutaml/json/type/serializers.rb +72 -0
  142. data/lib/lutaml/json.rb +62 -0
  143. data/lib/lutaml/{model/jsonl → jsonl/adapter}/document.rb +2 -2
  144. data/lib/lutaml/jsonl/adapter/mapping.rb +19 -0
  145. data/lib/lutaml/jsonl/adapter/mapping_rule.rb +9 -0
  146. data/lib/lutaml/{model/jsonl → jsonl/adapter}/standard_adapter.rb +5 -4
  147. data/lib/lutaml/jsonl/adapter/transform.rb +26 -0
  148. data/lib/lutaml/jsonl/adapter.rb +13 -0
  149. data/lib/lutaml/jsonl.rb +21 -0
  150. data/lib/lutaml/key_value/adapter/hash/document.rb +13 -0
  151. data/lib/lutaml/key_value/adapter/hash/mapping.rb +19 -0
  152. data/lib/lutaml/key_value/adapter/hash/mapping_rule.rb +9 -0
  153. data/lib/lutaml/key_value/adapter/hash/standard_adapter.rb +19 -0
  154. data/lib/lutaml/key_value/adapter/hash/transform.rb +10 -0
  155. data/lib/lutaml/key_value/adapter/hash.rb +15 -0
  156. data/lib/lutaml/key_value/adapter/json/document.rb +16 -0
  157. data/lib/lutaml/key_value/adapter/json/mapping.rb +24 -0
  158. data/lib/lutaml/key_value/adapter/json/mapping_rule.rb +14 -0
  159. data/lib/lutaml/key_value/adapter/json/multi_json_adapter.rb +43 -0
  160. data/lib/lutaml/key_value/adapter/json/oj_adapter.rb +43 -0
  161. data/lib/lutaml/key_value/adapter/json/standard_adapter.rb +41 -0
  162. data/lib/lutaml/key_value/adapter/json/transform.rb +14 -0
  163. data/lib/lutaml/key_value/adapter/json.rb +24 -0
  164. data/lib/lutaml/key_value/adapter/jsonl/document.rb +16 -0
  165. data/lib/lutaml/key_value/adapter/jsonl/mapping.rb +19 -0
  166. data/lib/lutaml/key_value/adapter/jsonl/mapping_rule.rb +9 -0
  167. data/lib/lutaml/key_value/adapter/jsonl/standard_adapter.rb +36 -0
  168. data/lib/lutaml/key_value/adapter/jsonl/transform.rb +26 -0
  169. data/lib/lutaml/key_value/adapter/jsonl.rb +17 -0
  170. data/lib/lutaml/key_value/adapter/toml/document.rb +13 -0
  171. data/lib/lutaml/key_value/adapter/toml/mapping.rb +28 -0
  172. data/lib/lutaml/key_value/adapter/toml/mapping_rule.rb +9 -0
  173. data/lib/lutaml/key_value/adapter/toml/toml_rb_adapter.rb +40 -0
  174. data/lib/lutaml/key_value/adapter/toml/tomlib_adapter.rb +46 -0
  175. data/lib/lutaml/key_value/adapter/toml/transform.rb +10 -0
  176. data/lib/lutaml/key_value/adapter/toml.rb +21 -0
  177. data/lib/lutaml/key_value/adapter/yaml/document.rb +12 -0
  178. data/lib/lutaml/key_value/adapter/yaml/mapping.rb +19 -0
  179. data/lib/lutaml/key_value/adapter/yaml/mapping_rule.rb +9 -0
  180. data/lib/lutaml/key_value/adapter/yaml/standard_adapter.rb +41 -0
  181. data/lib/lutaml/key_value/adapter/yaml/transform.rb +10 -0
  182. data/lib/lutaml/key_value/adapter/yaml.rb +17 -0
  183. data/lib/lutaml/key_value/adapter/yamls/document.rb +16 -0
  184. data/lib/lutaml/key_value/adapter/yamls/mapping.rb +19 -0
  185. data/lib/lutaml/key_value/adapter/yamls/mapping_rule.rb +9 -0
  186. data/lib/lutaml/key_value/adapter/yamls/standard_adapter.rb +37 -0
  187. data/lib/lutaml/key_value/adapter/yamls/transform.rb +26 -0
  188. data/lib/lutaml/key_value/adapter/yamls.rb +17 -0
  189. data/lib/lutaml/key_value/adapter.rb +14 -0
  190. data/lib/lutaml/key_value/data_model/element.rb +222 -0
  191. data/lib/lutaml/key_value/data_model.rb +14 -0
  192. data/lib/lutaml/{model/key_value_document.rb → key_value/document.rb} +2 -2
  193. data/lib/lutaml/{model/mapping/key_value_mapping.rb → key_value/mapping.rb} +81 -43
  194. data/lib/lutaml/{model/mapping/key_value_mapping_rule.rb → key_value/mapping_rule.rb} +9 -10
  195. data/lib/lutaml/{model/transform/key_value_transform.rb → key_value/transform.rb} +111 -65
  196. data/lib/lutaml/key_value/transformation/collection_serializer.rb +575 -0
  197. data/lib/lutaml/key_value/transformation/rule_compiler.rb +294 -0
  198. data/lib/lutaml/key_value/transformation/value_serializer.rb +268 -0
  199. data/lib/lutaml/key_value/transformation.rb +1071 -0
  200. data/lib/lutaml/key_value/transformation_builder.rb +30 -0
  201. data/lib/lutaml/key_value.rb +24 -0
  202. data/lib/lutaml/model/adapter_resolver.rb +410 -0
  203. data/lib/lutaml/model/adapter_scope.rb +64 -0
  204. data/lib/lutaml/model/attribute.rb +515 -121
  205. data/lib/lutaml/model/attribute_validator.rb +288 -0
  206. data/lib/lutaml/model/cached_type_resolver/concurrent_map_cache.rb +46 -0
  207. data/lib/lutaml/model/cached_type_resolver/mutex_hash_cache.rb +51 -0
  208. data/lib/lutaml/model/cached_type_resolver.rb +144 -0
  209. data/lib/lutaml/model/choice.rb +230 -13
  210. data/lib/lutaml/model/cli.rb +75 -121
  211. data/lib/lutaml/model/collection.rb +510 -43
  212. data/lib/lutaml/model/collection_handler.rb +106 -0
  213. data/lib/lutaml/model/comparable_model.rb +11 -3
  214. data/lib/lutaml/model/comparable_nil.rb +0 -2
  215. data/lib/lutaml/model/compiled_rule.rb +208 -0
  216. data/lib/lutaml/model/config.rb +111 -80
  217. data/lib/lutaml/model/configuration.rb +91 -0
  218. data/lib/lutaml/model/consolidation/attribute_grouper.rb +44 -0
  219. data/lib/lutaml/model/consolidation/dispatcher.rb +45 -0
  220. data/lib/lutaml/model/consolidation/engine.rb +33 -0
  221. data/lib/lutaml/model/consolidation/pattern_chunker.rb +87 -0
  222. data/lib/lutaml/model/consolidation_map.rb +68 -0
  223. data/lib/lutaml/model/consolidation_rule/dispatch_block.rb +34 -0
  224. data/lib/lutaml/model/consolidation_rule/gather_rule.rb +17 -0
  225. data/lib/lutaml/model/consolidation_rule/pattern_content_rule.rb +15 -0
  226. data/lib/lutaml/model/consolidation_rule/pattern_element_rule.rb +17 -0
  227. data/lib/lutaml/model/consolidation_rule.rb +27 -0
  228. data/lib/lutaml/model/constants.rb +5 -3
  229. data/lib/lutaml/model/context_registry.rb +208 -0
  230. data/lib/lutaml/model/error/element_count_out_of_range_error.rb +13 -7
  231. data/lib/lutaml/model/error/format_adapter_not_specified_error.rb +25 -0
  232. data/lib/lutaml/model/error/invalid_attribute_type_error.rb +98 -0
  233. data/lib/lutaml/model/error/invalid_format_error.rb +11 -0
  234. data/lib/lutaml/model/error/liquid_class_not_found_error.rb +9 -0
  235. data/lib/lutaml/model/error/mapping_already_exists_error.rb +6 -0
  236. data/lib/lutaml/model/error/mapping_attribute_missing_error.rb +6 -0
  237. data/lib/lutaml/model/error/mapping_attribute_type_error.rb +6 -0
  238. data/lib/lutaml/model/error/mixed_content_collection_error.rb +17 -0
  239. data/lib/lutaml/model/error/no_attributes_defined_liquid_error.rb +9 -0
  240. data/lib/lutaml/model/error/no_mapping_found_error.rb +9 -0
  241. data/lib/lutaml/model/error/required_attribute_missing_error.rb +9 -0
  242. data/lib/lutaml/model/error/reverse_transform_block_not_defined_error.rb +6 -0
  243. data/lib/lutaml/model/error/reverse_transformation_declaration_error.rb +6 -0
  244. data/lib/lutaml/model/error/sorting_configuration_conflict_error.rb +9 -0
  245. data/lib/lutaml/model/error/transform_block_not_defined_error.rb +6 -0
  246. data/lib/lutaml/model/error/type.rb +17 -0
  247. data/lib/lutaml/model/error/undefined_attribute_error.rb +9 -0
  248. data/lib/lutaml/model/error/unknown_adapter_type_error.rb +82 -3
  249. data/lib/lutaml/model/error/unknown_type_error.rb +25 -2
  250. data/lib/lutaml/model/error/unresolvable_type_error.rb +27 -0
  251. data/lib/lutaml/model/error.rb +2 -33
  252. data/lib/lutaml/model/errors.rb +4 -2
  253. data/lib/lutaml/model/finalization_cache.rb +51 -0
  254. data/lib/lutaml/model/format_registry.rb +170 -9
  255. data/lib/lutaml/model/global_context.rb +446 -0
  256. data/lib/lutaml/model/global_register.rb +106 -5
  257. data/lib/lutaml/model/hash.rb +15 -0
  258. data/lib/lutaml/model/import_registry.rb +250 -0
  259. data/lib/lutaml/model/instrumentation.rb +304 -0
  260. data/lib/lutaml/model/json.rb +17 -13
  261. data/lib/lutaml/model/jsonl.rb +7 -13
  262. data/lib/lutaml/model/liquefiable.rb +100 -12
  263. data/lib/lutaml/model/liquid/mapping.rb +30 -0
  264. data/lib/lutaml/model/liquid.rb +9 -0
  265. data/lib/lutaml/model/mapping/listener.rb +124 -0
  266. data/lib/lutaml/model/mapping/mapping.rb +99 -1
  267. data/lib/lutaml/model/mapping/mapping_rule.rb +172 -17
  268. data/lib/lutaml/model/mapping/model_mapping.rb +133 -0
  269. data/lib/lutaml/model/mapping/model_mapping_rule.rb +57 -0
  270. data/lib/lutaml/model/mapping_hash.rb +3 -1
  271. data/lib/lutaml/model/model_transformer.rb +101 -0
  272. data/lib/lutaml/model/one_entry_cache.rb +57 -0
  273. data/lib/lutaml/model/organization.rb +29 -0
  274. data/lib/lutaml/model/register/model_tree_importer.rb +88 -0
  275. data/lib/lutaml/model/register/namespace_binding.rb +92 -0
  276. data/lib/lutaml/model/register.rb +500 -35
  277. data/lib/lutaml/model/registrable.rb +2 -0
  278. data/lib/lutaml/model/render_policy.rb +154 -0
  279. data/lib/lutaml/model/runtime_compatibility.rb +95 -0
  280. data/lib/lutaml/model/schema/base_schema.rb +1 -3
  281. data/lib/lutaml/model/schema/decorators/attribute.rb +3 -1
  282. data/lib/lutaml/model/schema/decorators/choices.rb +0 -2
  283. data/lib/lutaml/model/schema/decorators/class_definition.rb +4 -5
  284. data/lib/lutaml/model/schema/decorators/definition_collection.rb +7 -7
  285. data/lib/lutaml/model/schema/decorators.rb +15 -0
  286. data/lib/lutaml/model/schema/generator/definition.rb +4 -3
  287. data/lib/lutaml/model/schema/generator/definitions_collection.rb +4 -3
  288. data/lib/lutaml/model/schema/generator/properties_collection.rb +7 -5
  289. data/lib/lutaml/model/schema/generator/property.rb +5 -1
  290. data/lib/lutaml/model/schema/generator.rb +15 -0
  291. data/lib/lutaml/model/schema/helpers.rb +11 -0
  292. data/lib/lutaml/model/schema/json_schema.rb +9 -53
  293. data/lib/lutaml/model/schema/renderer.rb +19 -17
  294. data/lib/lutaml/model/schema/schema_builder/nokogiri.rb +41 -0
  295. data/lib/lutaml/model/schema/schema_builder/oga.rb +92 -0
  296. data/lib/lutaml/model/schema/shared_methods.rb +2 -2
  297. data/lib/lutaml/model/schema/xml_compiler/attribute.rb +33 -12
  298. data/lib/lutaml/model/schema/xml_compiler/attribute_group.rb +3 -1
  299. data/lib/lutaml/model/schema/xml_compiler/choice.rb +4 -2
  300. data/lib/lutaml/model/schema/xml_compiler/complex_type.rb +73 -36
  301. data/lib/lutaml/model/schema/xml_compiler/element.rb +18 -1
  302. data/lib/lutaml/model/schema/xml_compiler/group.rb +20 -4
  303. data/lib/lutaml/model/schema/xml_compiler/registry_generator.rb +127 -0
  304. data/lib/lutaml/model/schema/xml_compiler/restriction.rb +5 -2
  305. data/lib/lutaml/model/schema/xml_compiler/sequence.rb +6 -2
  306. data/lib/lutaml/model/schema/xml_compiler/simple_content.rb +7 -3
  307. data/lib/lutaml/model/schema/xml_compiler/simple_type.rb +127 -51
  308. data/lib/lutaml/model/schema/xml_compiler/xml_namespace_class.rb +110 -0
  309. data/lib/lutaml/model/schema/xml_compiler.rb +256 -82
  310. data/lib/lutaml/model/schema/yaml_schema.rb +10 -50
  311. data/lib/lutaml/model/schema.rb +49 -14
  312. data/lib/lutaml/model/schema_location.rb +12 -60
  313. data/lib/lutaml/model/sequence.rb +102 -30
  314. data/lib/lutaml/model/serializable.rb +1 -3
  315. data/lib/lutaml/model/serialization_adapter.rb +2 -0
  316. data/lib/lutaml/model/serialize/attribute_definition.rb +229 -0
  317. data/lib/lutaml/model/serialize/builder.rb +169 -0
  318. data/lib/lutaml/model/serialize/enum_handling.rb +124 -0
  319. data/lib/lutaml/model/serialize/format_conversion.rb +337 -0
  320. data/lib/lutaml/model/serialize/initialization.rb +308 -0
  321. data/lib/lutaml/model/serialize/model_import.rb +357 -0
  322. data/lib/lutaml/model/serialize/transformation_builder.rb +127 -0
  323. data/lib/lutaml/model/serialize/value_mapping.rb +200 -0
  324. data/lib/lutaml/model/serialize.rb +175 -578
  325. data/lib/lutaml/model/services/base.rb +2 -2
  326. data/lib/lutaml/model/services/default_value_resolver.rb +60 -0
  327. data/lib/lutaml/model/services/logger.rb +10 -7
  328. data/lib/lutaml/model/services/rule_value_extractor.rb +22 -36
  329. data/lib/lutaml/model/services/transformer.rb +50 -9
  330. data/lib/lutaml/model/services/type/validator/string.rb +3 -2
  331. data/lib/lutaml/model/services/type/validator/symbol.rb +30 -0
  332. data/lib/lutaml/model/services/type/validator.rb +5 -2
  333. data/lib/lutaml/model/services/type.rb +9 -0
  334. data/lib/lutaml/model/services/validator.rb +1 -3
  335. data/lib/lutaml/model/services.rb +12 -5
  336. data/lib/lutaml/model/store.rb +59 -0
  337. data/lib/lutaml/model/toml.rb +24 -18
  338. data/lib/lutaml/model/transform/xml_transform.rb +4 -227
  339. data/lib/lutaml/model/transform.rb +49 -17
  340. data/lib/lutaml/model/transformation.rb +84 -0
  341. data/lib/lutaml/model/transformation_builder.rb +55 -0
  342. data/lib/lutaml/model/transformation_registry.rb +314 -0
  343. data/lib/lutaml/model/type/base64_binary.rb +58 -0
  344. data/lib/lutaml/model/type/boolean.rb +9 -16
  345. data/lib/lutaml/model/type/date.rb +49 -9
  346. data/lib/lutaml/model/type/date_time.rb +30 -18
  347. data/lib/lutaml/model/type/decimal.rb +28 -9
  348. data/lib/lutaml/model/type/duration.rb +82 -0
  349. data/lib/lutaml/model/type/float.rb +12 -13
  350. data/lib/lutaml/model/type/hash.rb +10 -17
  351. data/lib/lutaml/model/type/hex_binary.rb +56 -0
  352. data/lib/lutaml/model/type/integer.rb +19 -1
  353. data/lib/lutaml/model/type/qname.rb +85 -0
  354. data/lib/lutaml/model/type/reference.rb +76 -0
  355. data/lib/lutaml/model/type/string.rb +18 -35
  356. data/lib/lutaml/model/type/symbol.rb +67 -0
  357. data/lib/lutaml/model/type/time.rb +19 -22
  358. data/lib/lutaml/model/type/time_without_date.rb +18 -18
  359. data/lib/lutaml/model/type/uninitialized_class_guard.rb +36 -0
  360. data/lib/lutaml/model/type/uri.rb +51 -0
  361. data/lib/lutaml/model/type/value.rb +52 -5
  362. data/lib/lutaml/model/type.rb +98 -13
  363. data/lib/lutaml/model/type_context.rb +279 -0
  364. data/lib/lutaml/model/type_registry.rb +165 -0
  365. data/lib/lutaml/model/type_resolver.rb +185 -0
  366. data/lib/lutaml/model/type_substitution.rb +117 -0
  367. data/lib/lutaml/model/uninitialized_class.rb +1 -1
  368. data/lib/lutaml/model/utils.rb +110 -9
  369. data/lib/lutaml/model/validation.rb +50 -7
  370. data/lib/lutaml/model/value_transformer.rb +25 -0
  371. data/lib/lutaml/model/version.rb +1 -1
  372. data/lib/lutaml/model/yaml.rb +7 -13
  373. data/lib/lutaml/model/yamls.rb +7 -13
  374. data/lib/lutaml/model.rb +229 -25
  375. data/lib/lutaml/{model/toml → toml/adapter}/document.rb +3 -4
  376. data/lib/lutaml/{model/toml → toml/adapter}/mapping.rb +7 -6
  377. data/lib/lutaml/toml/adapter/mapping_rule.rb +9 -0
  378. data/lib/lutaml/toml/adapter/toml_rb_adapter.rb +38 -0
  379. data/lib/lutaml/toml/adapter/tomlib_adapter.rb +54 -0
  380. data/lib/lutaml/toml/adapter/transform.rb +9 -0
  381. data/lib/lutaml/toml/adapter.rb +19 -0
  382. data/lib/lutaml/toml/type/serializers.rb +71 -0
  383. data/lib/lutaml/toml.rb +48 -0
  384. data/lib/lutaml/xml/adapter/adapter_helpers.rb +149 -0
  385. data/lib/lutaml/xml/adapter/base_adapter.rb +672 -0
  386. data/lib/lutaml/xml/adapter/namespace_data.rb +73 -0
  387. data/lib/lutaml/xml/adapter/nokogiri_adapter.rb +1115 -0
  388. data/lib/lutaml/xml/adapter/oga_adapter.rb +849 -0
  389. data/lib/lutaml/xml/adapter/ox_adapter.rb +891 -0
  390. data/lib/lutaml/xml/adapter/rexml_adapter.rb +869 -0
  391. data/lib/lutaml/xml/adapter/xml_serialization.rb +145 -0
  392. data/lib/lutaml/xml/adapter.rb +20 -0
  393. data/lib/lutaml/xml/adapter_element.rb +185 -0
  394. data/lib/lutaml/xml/adapter_loader.rb +53 -0
  395. data/lib/lutaml/xml/attribute_namespace_resolver.rb +139 -0
  396. data/lib/lutaml/xml/blank_namespace.rb +51 -0
  397. data/lib/lutaml/xml/blank_namespace_handler.rb +50 -0
  398. data/lib/lutaml/xml/builder/base.rb +215 -0
  399. data/lib/lutaml/xml/builder/nokogiri.rb +12 -0
  400. data/lib/lutaml/xml/builder/oga.rb +15 -0
  401. data/lib/lutaml/xml/builder/ox.rb +15 -0
  402. data/lib/lutaml/xml/builder/rexml.rb +15 -0
  403. data/lib/lutaml/xml/builder.rb +16 -0
  404. data/lib/lutaml/xml/configurable.rb +214 -0
  405. data/lib/lutaml/xml/data_model.rb +257 -0
  406. data/lib/lutaml/xml/decisions/decision.rb +103 -0
  407. data/lib/lutaml/xml/decisions/decision_context.rb +225 -0
  408. data/lib/lutaml/xml/decisions/decision_engine.rb +67 -0
  409. data/lib/lutaml/xml/decisions/decision_rule.rb +54 -0
  410. data/lib/lutaml/xml/decisions/element_prefix_resolver.rb +85 -0
  411. data/lib/lutaml/xml/decisions/rules/attribute_usage_rule.rb +37 -0
  412. data/lib/lutaml/xml/decisions/rules/default_preference_rule.rb +62 -0
  413. data/lib/lutaml/xml/decisions/rules/element_form_default_rule.rb +66 -0
  414. data/lib/lutaml/xml/decisions/rules/element_form_default_unqualified_rule.rb +73 -0
  415. data/lib/lutaml/xml/decisions/rules/element_form_option_rule.rb +83 -0
  416. data/lib/lutaml/xml/decisions/rules/explicit_option_rule.rb +57 -0
  417. data/lib/lutaml/xml/decisions/rules/format_preservation_rule.rb +74 -0
  418. data/lib/lutaml/xml/decisions/rules/hoisted_on_parent_rule.rb +60 -0
  419. data/lib/lutaml/xml/decisions/rules/inherit_from_parent_rule.rb +52 -0
  420. data/lib/lutaml/xml/decisions/rules/inherit_parent_prefix_rule.rb +69 -0
  421. data/lib/lutaml/xml/decisions/rules/namespace_scope_rule.rb +54 -0
  422. data/lib/lutaml/xml/decisions/rules/reuse_parent_prefix_rule.rb +78 -0
  423. data/lib/lutaml/xml/decisions/rules/used_prefix_rule.rb +70 -0
  424. data/lib/lutaml/xml/decisions/rules.rb +39 -0
  425. data/lib/lutaml/xml/decisions.rb +15 -0
  426. data/lib/lutaml/xml/declaration_handler.rb +217 -0
  427. data/lib/lutaml/xml/declaration_plan/attribute_node.rb +81 -0
  428. data/lib/lutaml/xml/declaration_plan/element_node.rb +101 -0
  429. data/lib/lutaml/xml/declaration_plan.rb +480 -0
  430. data/lib/lutaml/xml/declaration_plan_query.rb +105 -0
  431. data/lib/lutaml/xml/declaration_planner.rb +1849 -0
  432. data/lib/lutaml/xml/doctype_extractor.rb +51 -0
  433. data/lib/lutaml/xml/document.rb +380 -0
  434. data/lib/lutaml/xml/element.rb +93 -0
  435. data/lib/lutaml/xml/element_prefix_resolver.rb +50 -0
  436. data/lib/lutaml/xml/encoding_normalizer.rb +54 -0
  437. data/lib/lutaml/xml/error/invalid_namespace_error.rb +46 -0
  438. data/lib/lutaml/xml/error/invalid_xsd_type_error.rb +43 -0
  439. data/lib/lutaml/xml/error/namespace_mismatch_error.rb +53 -0
  440. data/lib/lutaml/xml/error/xml_configuration_error.rb +17 -0
  441. data/lib/lutaml/xml/error/xml_error.rb +21 -0
  442. data/lib/lutaml/xml/format_chooser.rb +214 -0
  443. data/lib/lutaml/xml/hoisting_algorithm.rb +234 -0
  444. data/lib/lutaml/xml/listener.rb +33 -0
  445. data/lib/lutaml/xml/mapping.rb +1470 -0
  446. data/lib/lutaml/xml/mapping_rule.rb +565 -0
  447. data/lib/lutaml/xml/model_transform.rb +944 -0
  448. data/lib/lutaml/xml/namespace.rb +435 -0
  449. data/lib/lutaml/xml/namespace_class_registry.rb +144 -0
  450. data/lib/lutaml/xml/namespace_collector.rb +611 -0
  451. data/lib/lutaml/xml/namespace_declaration.rb +202 -0
  452. data/lib/lutaml/xml/namespace_declaration_builder.rb +67 -0
  453. data/lib/lutaml/xml/namespace_declaration_data.rb +182 -0
  454. data/lib/lutaml/xml/namespace_inheritance_resolver.rb +142 -0
  455. data/lib/lutaml/xml/namespace_inheritance_strategy.rb +26 -0
  456. data/lib/lutaml/xml/namespace_needs.rb +213 -0
  457. data/lib/lutaml/xml/namespace_resolution_strategy.rb +230 -0
  458. data/lib/lutaml/xml/namespace_resolver.rb +219 -0
  459. data/lib/lutaml/xml/namespace_scope_config.rb +109 -0
  460. data/lib/lutaml/xml/namespace_type_resolver.rb +135 -0
  461. data/lib/lutaml/xml/namespace_usage.rb +121 -0
  462. data/lib/lutaml/xml/nokogiri/element.rb +34 -0
  463. data/lib/lutaml/xml/nokogiri.rb +10 -0
  464. data/lib/lutaml/xml/oga/element.rb +15 -0
  465. data/lib/lutaml/xml/oga.rb +10 -0
  466. data/lib/lutaml/xml/ox/element.rb +15 -0
  467. data/lib/lutaml/xml/ox.rb +10 -0
  468. data/lib/lutaml/xml/parsed_namespace_declaration.rb +129 -0
  469. data/lib/lutaml/xml/parsed_namespace_set.rb +149 -0
  470. data/lib/lutaml/xml/polymorphic_value_handler.rb +41 -0
  471. data/lib/lutaml/xml/qualified_inheritance_strategy.rb +27 -0
  472. data/lib/lutaml/xml/rexml/element.rb +15 -0
  473. data/lib/lutaml/xml/rexml.rb +10 -0
  474. data/lib/lutaml/xml/schema/builder/nokogiri.rb +41 -0
  475. data/lib/lutaml/xml/schema/builder/oga.rb +92 -0
  476. data/lib/lutaml/xml/schema/builder.rb +59 -0
  477. data/lib/lutaml/xml/schema/builtin_types.rb +112 -0
  478. data/lib/lutaml/{model → xml}/schema/relaxng_schema.rb +9 -4
  479. data/lib/lutaml/xml/schema/xsd/all.rb +31 -0
  480. data/lib/lutaml/xml/schema/xsd/annotation.rb +31 -0
  481. data/lib/lutaml/xml/schema/xsd/any.rb +33 -0
  482. data/lib/lutaml/xml/schema/xsd/any_attribute.rb +29 -0
  483. data/lib/lutaml/xml/schema/xsd/appinfo.rb +25 -0
  484. data/lib/lutaml/xml/schema/xsd/attribute.rb +78 -0
  485. data/lib/lutaml/xml/schema/xsd/attribute_group.rb +89 -0
  486. data/lib/lutaml/xml/schema/xsd/base.rb +267 -0
  487. data/lib/lutaml/xml/schema/xsd/choice.rb +68 -0
  488. data/lib/lutaml/xml/schema/xsd/complex_content.rb +39 -0
  489. data/lib/lutaml/xml/schema/xsd/complex_type.rb +157 -0
  490. data/lib/lutaml/xml/schema/xsd/documentation.rb +26 -0
  491. data/lib/lutaml/xml/schema/xsd/element.rb +117 -0
  492. data/lib/lutaml/xml/schema/xsd/enumeration.rb +25 -0
  493. data/lib/lutaml/xml/schema/xsd/errors/enhanced_error.rb +142 -0
  494. data/lib/lutaml/xml/schema/xsd/errors/error_context.rb +67 -0
  495. data/lib/lutaml/xml/schema/xsd/errors/message_builder.rb +103 -0
  496. data/lib/lutaml/xml/schema/xsd/errors/suggestion.rb +67 -0
  497. data/lib/lutaml/xml/schema/xsd/errors/troubleshooters/namespace_troubleshooter.rb +96 -0
  498. data/lib/lutaml/xml/schema/xsd/errors/troubleshooters/troubleshooting_handler.rb +70 -0
  499. data/lib/lutaml/xml/schema/xsd/errors.rb +148 -0
  500. data/lib/lutaml/xml/schema/xsd/extension_complex_content.rb +63 -0
  501. data/lib/lutaml/xml/schema/xsd/extension_simple_content.rb +48 -0
  502. data/lib/lutaml/xml/schema/xsd/field.rb +25 -0
  503. data/lib/lutaml/xml/schema/xsd/file_validation_result.rb +55 -0
  504. data/lib/lutaml/xml/schema/xsd/fraction_digits.rb +29 -0
  505. data/lib/lutaml/xml/schema/xsd/glob.rb +105 -0
  506. data/lib/lutaml/xml/schema/xsd/group.rb +79 -0
  507. data/lib/lutaml/xml/schema/xsd/import.rb +33 -0
  508. data/lib/lutaml/xml/schema/xsd/include.rb +31 -0
  509. data/lib/lutaml/xml/schema/xsd/key.rb +32 -0
  510. data/lib/lutaml/xml/schema/xsd/keyref.rb +33 -0
  511. data/lib/lutaml/xml/schema/xsd/length.rb +27 -0
  512. data/lib/lutaml/xml/schema/xsd/list.rb +28 -0
  513. data/lib/lutaml/xml/schema/xsd/max_exclusive.rb +25 -0
  514. data/lib/lutaml/xml/schema/xsd/max_inclusive.rb +23 -0
  515. data/lib/lutaml/xml/schema/xsd/max_length.rb +25 -0
  516. data/lib/lutaml/xml/schema/xsd/min_exclusive.rb +25 -0
  517. data/lib/lutaml/xml/schema/xsd/min_inclusive.rb +23 -0
  518. data/lib/lutaml/xml/schema/xsd/min_length.rb +25 -0
  519. data/lib/lutaml/xml/schema/xsd/namespace_mapping.rb +37 -0
  520. data/lib/lutaml/xml/schema/xsd/namespace_uri_remapping.rb +79 -0
  521. data/lib/lutaml/xml/schema/xsd/notation.rb +31 -0
  522. data/lib/lutaml/xml/schema/xsd/pattern.rb +25 -0
  523. data/lib/lutaml/xml/schema/xsd/redefine.rb +35 -0
  524. data/lib/lutaml/xml/schema/xsd/restriction_complex_content.rb +56 -0
  525. data/lib/lutaml/xml/schema/xsd/restriction_simple_content.rb +84 -0
  526. data/lib/lutaml/xml/schema/xsd/restriction_simple_type.rb +64 -0
  527. data/lib/lutaml/xml/schema/xsd/schema.rb +373 -0
  528. data/lib/lutaml/xml/schema/xsd/schema_file_validation_results.rb +55 -0
  529. data/lib/lutaml/xml/schema/xsd/schema_location_mapping.rb +74 -0
  530. data/lib/lutaml/xml/schema/xsd/schema_name_resolver.rb +32 -0
  531. data/lib/lutaml/xml/schema/xsd/schema_path.rb +196 -0
  532. data/lib/lutaml/xml/schema/xsd/schema_validator.rb +256 -0
  533. data/lib/lutaml/xml/schema/xsd/selector.rb +27 -0
  534. data/lib/lutaml/xml/schema/xsd/sequence.rb +68 -0
  535. data/lib/lutaml/xml/schema/xsd/serialized_schema.rb +185 -0
  536. data/lib/lutaml/xml/schema/xsd/simple_content.rb +61 -0
  537. data/lib/lutaml/xml/schema/xsd/simple_type.rb +37 -0
  538. data/lib/lutaml/xml/schema/xsd/total_digits.rb +29 -0
  539. data/lib/lutaml/xml/schema/xsd/type_index_entry.rb +40 -0
  540. data/lib/lutaml/xml/schema/xsd/type_resolution_result.rb +112 -0
  541. data/lib/lutaml/xml/schema/xsd/union.rb +30 -0
  542. data/lib/lutaml/xml/schema/xsd/unique.rb +31 -0
  543. data/lib/lutaml/xml/schema/xsd/validation_error.rb +48 -0
  544. data/lib/lutaml/xml/schema/xsd/validation_result.rb +86 -0
  545. data/lib/lutaml/xml/schema/xsd/version.rb +11 -0
  546. data/lib/lutaml/xml/schema/xsd/white_space.rb +27 -0
  547. data/lib/lutaml/xml/schema/xsd.rb +165 -0
  548. data/lib/lutaml/xml/schema/xsd_namespace.rb +29 -0
  549. data/lib/lutaml/xml/schema/xsd_schema.rb +536 -0
  550. data/lib/lutaml/xml/schema.rb +13 -0
  551. data/lib/lutaml/xml/schema_location.rb +155 -0
  552. data/lib/lutaml/xml/serialization/collection_ext.rb +61 -0
  553. data/lib/lutaml/xml/serialization/format_conversion.rb +402 -0
  554. data/lib/lutaml/xml/serialization/instance_methods.rb +303 -0
  555. data/lib/lutaml/xml/serialization/model_import_ext.rb +40 -0
  556. data/lib/lutaml/xml/serialization.rb +15 -0
  557. data/lib/lutaml/xml/shared_dsl.rb +119 -0
  558. data/lib/lutaml/xml/transform.rb +6 -0
  559. data/lib/lutaml/xml/transformation/custom_method_wrapper.rb +262 -0
  560. data/lib/lutaml/xml/transformation/element_builder.rb +586 -0
  561. data/lib/lutaml/xml/transformation/ordered_applier.rb +329 -0
  562. data/lib/lutaml/xml/transformation/rule_applier.rb +379 -0
  563. data/lib/lutaml/xml/transformation/rule_compiler.rb +543 -0
  564. data/lib/lutaml/xml/transformation/skip_logic.rb +70 -0
  565. data/lib/lutaml/xml/transformation/value_serializer.rb +139 -0
  566. data/lib/lutaml/xml/transformation.rb +340 -0
  567. data/lib/lutaml/xml/transformation_builder.rb +28 -0
  568. data/lib/lutaml/xml/transformation_support.rb +14 -0
  569. data/lib/lutaml/xml/type/configurable.rb +157 -0
  570. data/lib/lutaml/xml/type/serializers.rb +98 -0
  571. data/lib/lutaml/xml/type/value_xml_mapping.rb +94 -0
  572. data/lib/lutaml/xml/type_namespace/collector.rb +101 -0
  573. data/lib/lutaml/xml/type_namespace/declaration.rb +61 -0
  574. data/lib/lutaml/xml/type_namespace/planner.rb +121 -0
  575. data/lib/lutaml/xml/type_namespace/reference.rb +71 -0
  576. data/lib/lutaml/xml/type_namespace/resolver.rb +43 -0
  577. data/lib/lutaml/xml/type_namespace.rb +13 -0
  578. data/lib/lutaml/xml/type_namespace_resolver.rb +76 -0
  579. data/lib/lutaml/xml/unqualified_inheritance_strategy.rb +34 -0
  580. data/lib/lutaml/xml/w3c/registration.rb +66 -0
  581. data/lib/lutaml/xml/w3c.rb +398 -0
  582. data/lib/lutaml/xml/xml_attribute.rb +38 -0
  583. data/lib/lutaml/xml/xml_element.rb +447 -0
  584. data/lib/lutaml/xml/xml_namespace.rb +72 -0
  585. data/lib/lutaml/xml.rb +294 -0
  586. data/lib/lutaml/{model/yaml → yaml/adapter}/document.rb +3 -3
  587. data/lib/lutaml/yaml/adapter/mapping.rb +19 -0
  588. data/lib/lutaml/yaml/adapter/mapping_rule.rb +9 -0
  589. data/lib/lutaml/yaml/adapter/standard_adapter.rb +39 -0
  590. data/lib/lutaml/yaml/adapter/transform.rb +9 -0
  591. data/lib/lutaml/yaml/adapter.rb +13 -0
  592. data/lib/lutaml/yaml/schema/yaml_schema.rb +65 -0
  593. data/lib/lutaml/yaml/schema.rb +9 -0
  594. data/lib/lutaml/yaml/type/serializers.rb +60 -0
  595. data/lib/lutaml/yaml.rb +30 -0
  596. data/lib/lutaml/{model/yamls → yamls/adapter}/document.rb +2 -2
  597. data/lib/lutaml/yamls/adapter/mapping.rb +26 -0
  598. data/lib/lutaml/yamls/adapter/mapping_rule.rb +9 -0
  599. data/lib/lutaml/yamls/adapter/standard_adapter.rb +56 -0
  600. data/lib/lutaml/yamls/adapter/transform.rb +124 -0
  601. data/lib/lutaml/yamls/adapter/yamls_sequence.rb +20 -0
  602. data/lib/lutaml/yamls/adapter/yamls_sequence_rule.rb +48 -0
  603. data/lib/lutaml/yamls/adapter.rb +15 -0
  604. data/lib/lutaml/yamls.rb +21 -0
  605. data/lib/tasks/benchmark_runner.rb +161 -0
  606. data/lib/tasks/memory_profile.rb +176 -0
  607. data/lib/tasks/performance.rake +75 -0
  608. data/lib/tasks/performance_benchmark.rb +499 -0
  609. data/lib/tasks/performance_comparator.rb +114 -0
  610. data/lib/tasks/performance_helpers.rb +149 -0
  611. data/lib/tasks/xml_compiler_benchmark.rb +226 -0
  612. data/lib/tasks/xml_optimization_benchmark.rb +178 -0
  613. data/lutaml-model.gemspec +11 -1
  614. data/reference-docs/XML Entity Definitions for Characters (3rd Edition).html +595 -0
  615. data/scripts-xmi-profile/profile_xmi.rb +192 -0
  616. data/scripts-xmi-profile/profile_xmi_simple.rb +210 -0
  617. data/spec/address_person_spec.rb +436 -0
  618. data/spec/address_spec.rb +20 -18
  619. data/spec/ceramic_spec.rb +25 -7
  620. data/spec/fixtures/address.rb +2 -2
  621. data/spec/fixtures/ceramic.rb +6 -2
  622. data/spec/fixtures/geolexica_v2_concept.rb +136 -0
  623. data/spec/fixtures/geolexica_v2_sample.yaml +36 -0
  624. data/spec/fixtures/geolexica_v2_sample2.yaml +38 -0
  625. data/spec/fixtures/person.rb +14 -13
  626. data/spec/fixtures/sample_model.rb +3 -3
  627. data/spec/fixtures/vase.rb +3 -3
  628. data/spec/fixtures/xml/address_example_260.xsd +8 -4
  629. data/spec/fixtures/xml/examples/nested_categories.xml +45 -51
  630. data/spec/fixtures/xml/examples/valid_catalog.xml +27 -41
  631. data/spec/fixtures/xml/math_document_schema.xsd +7 -5
  632. data/spec/fixtures/xml/product_catalog.xsd +19 -138
  633. data/spec/fixtures/xml/schema/xsd/build_test_package.rb +19 -0
  634. data/spec/fixtures/xml/schema/xsd/citygml/2.0/cityGMLBase.xsd +339 -0
  635. data/spec/fixtures/xml/schema/xsd/citygml/appearance/2.0/appearance.xsd +332 -0
  636. data/spec/fixtures/xml/schema/xsd/citygml/bridge/2.0/bridge.xsd +578 -0
  637. data/spec/fixtures/xml/schema/xsd/citygml/building/2.0/building.xsd +535 -0
  638. data/spec/fixtures/xml/schema/xsd/citygml/cityfurniture/2.0/cityFurniture.xsd +57 -0
  639. data/spec/fixtures/xml/schema/xsd/citygml/cityobjectgroup/2.0/cityObjectGroup.xsd +84 -0
  640. data/spec/fixtures/xml/schema/xsd/citygml/examples/2.0/ade/noise-ade/CityGML-NoiseADE.xsd +174 -0
  641. data/spec/fixtures/xml/schema/xsd/citygml/examples/2.0/ade/robotics-ade/stdOp.xsd +46 -0
  642. data/spec/fixtures/xml/schema/xsd/citygml/examples/2.0/ade/robotics-ade/unr.xsd +46 -0
  643. data/spec/fixtures/xml/schema/xsd/citygml/generics/2.0/generics.xsd +184 -0
  644. data/spec/fixtures/xml/schema/xsd/citygml/landuse/2.0/landUse.xsd +50 -0
  645. data/spec/fixtures/xml/schema/xsd/citygml/profiles/base/2.0/CityGML.xsd +30 -0
  646. data/spec/fixtures/xml/schema/xsd/citygml/relief/2.0/relief.xsd +186 -0
  647. data/spec/fixtures/xml/schema/xsd/citygml/texturedsurface/2.0/texturedSurface.xsd +157 -0
  648. data/spec/fixtures/xml/schema/xsd/citygml/transportation/2.0/transportation.xsd +224 -0
  649. data/spec/fixtures/xml/schema/xsd/citygml/tunnel/2.0/tunnel.xsd +530 -0
  650. data/spec/fixtures/xml/schema/xsd/citygml/vegetation/2.0/vegetation.xsd +108 -0
  651. data/spec/fixtures/xml/schema/xsd/citygml/waterbody/2.0/waterBody.xsd +171 -0
  652. data/spec/fixtures/xml/schema/xsd/citygml/xAL/xAL.xsd +1680 -0
  653. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/basicTypes.xsd +262 -0
  654. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/coordinateOperations.xsd +519 -0
  655. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/coordinateReferenceSystems.xsd +367 -0
  656. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/coordinateSystems.xsd +291 -0
  657. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/coverage.xsd +287 -0
  658. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/datums.xsd +281 -0
  659. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/defaultStyle.xsd +447 -0
  660. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/deprecatedTypes.xsd +1128 -0
  661. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/dictionary.xsd +84 -0
  662. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/direction.xsd +78 -0
  663. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/dynamicFeature.xsd +103 -0
  664. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/feature.xsd +88 -0
  665. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/geometryAggregates.xsd +191 -0
  666. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/geometryBasic0d1d.xsd +271 -0
  667. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/geometryBasic2d.xsd +118 -0
  668. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/geometryComplexes.xsd +89 -0
  669. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/geometryPrimitives.xsd +841 -0
  670. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/gml.xsd +15 -0
  671. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/gmlBase.xsd +179 -0
  672. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/grids.xsd +58 -0
  673. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/measures.xsd +63 -0
  674. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/observation.xsd +90 -0
  675. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/referenceSystems.xsd +64 -0
  676. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/temporal.xsd +263 -0
  677. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/temporalReferenceSystems.xsd +183 -0
  678. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/temporalTopology.xsd +113 -0
  679. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/topology.xsd +380 -0
  680. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/units.xsd +156 -0
  681. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/valueObjects.xsd +199 -0
  682. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gco/basicTypes.xsd +429 -0
  683. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gco/gco.xsd +12 -0
  684. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gco/gcoBase.xsd +61 -0
  685. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/applicationSchema.xsd +42 -0
  686. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/citation.xsd +275 -0
  687. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/constraints.xsd +106 -0
  688. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/content.xsd +188 -0
  689. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/dataQuality.xsd +554 -0
  690. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/distribution.xsd +202 -0
  691. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/extent.xsd +205 -0
  692. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/freeText.xsd +122 -0
  693. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/gmd.xsd +12 -0
  694. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/identification.xsd +348 -0
  695. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/maintenance.xsd +86 -0
  696. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/metadataApplication.xsd +175 -0
  697. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/metadataEntity.xsd +70 -0
  698. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/metadataExtension.xsd +99 -0
  699. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/portrayalCatalogue.xsd +36 -0
  700. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/referenceSystem.xsd +100 -0
  701. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/spatialRepresentation.xsd +237 -0
  702. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmx/catalogues.xsd +112 -0
  703. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmx/codelistItem.xsd +168 -0
  704. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmx/crsItem.xsd +1030 -0
  705. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmx/extendedTypes.xsd +75 -0
  706. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmx/gmx.xsd +2 -0
  707. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmx/gmxUsage.xsd +127 -0
  708. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmx/uomItem.xsd +162 -0
  709. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gsr/gsr.xsd +12 -0
  710. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gsr/spatialReferencing.xsd +24 -0
  711. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gss/geometry.xsd +35 -0
  712. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gss/gss.xsd +12 -0
  713. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gts/gts.xsd +12 -0
  714. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gts/temporalObjects.xsd +34 -0
  715. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/xlink/1.0.0/xlinks.xsd +122 -0
  716. data/spec/fixtures/xml/schema/xsd/i-ur/urbanFunction.xsd +2772 -0
  717. data/spec/fixtures/xml/schema/xsd/i-ur/urbanObject.xsd +3344 -0
  718. data/spec/fixtures/xml/schema/xsd/import-without-location.xsd +9 -0
  719. data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gco/1.2/baseTypes.xsd +775 -0
  720. data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gco/1.2/gco.xsd +17 -0
  721. data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gco/1.2.0/baseTypes.xsd +775 -0
  722. data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gco/1.2.0/gco.xsd +17 -0
  723. data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gcx/1.2/extendedTypes.xsd +151 -0
  724. data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gcx/1.2/gcx.xsd +16 -0
  725. data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gcx/1.2.0/extendedTypes.xsd +151 -0
  726. data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gcx/1.2.0/gcx.xsd +16 -0
  727. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/coordinateGeometry.xsd +1078 -0
  728. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/geometricAggregates.xsd +141 -0
  729. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/geometricComplex.xsd +177 -0
  730. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/geometricPrimative.xsd +526 -0
  731. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/geometry.xsd +9 -0
  732. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/geometryRoot.xsd +59 -0
  733. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/gss.xsd +26 -0
  734. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/topoComplex.xsd +33 -0
  735. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/topoPrimative.xsd +432 -0
  736. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/topoRoot.xsd +9 -0
  737. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/topology.xsd +15 -0
  738. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/coordinates.xsd +15 -0
  739. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/curves.xsd +22 -0
  740. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/geometry.xsd +41 -0
  741. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/gss.xsd +21 -0
  742. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/simplicialGeometry.xsd +63 -0
  743. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/solids.xsd +21 -0
  744. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/surfaces.xsd +15 -0
  745. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/topology.xsd +21 -0
  746. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/fcc/2.1.0/abstract.xsd +47 -0
  747. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/fcc/2.1.0/fcc.xsd +12 -0
  748. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/fcc/2.2/abstract.xsd +45 -0
  749. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/fcc/2.2/fcc.xsd +11 -0
  750. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/fcc/2.2.0/abstract.xsd +45 -0
  751. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/fcc/2.2.0/fcc.xsd +11 -0
  752. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/gfc/1.0/gfc.xsd +497 -0
  753. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/gfc/2.1.0/featureCatalogue.xsd +673 -0
  754. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/gfc/2.1.0/gfc.xsd +19 -0
  755. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/gfc/2.2/featureCatalogue.xsd +798 -0
  756. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/gfc/2.2/gfc.xsd +19 -0
  757. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/gfc/2.2.0/featureCatalogue.xsd +798 -0
  758. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/gfc/2.2.0/gfc.xsd +19 -0
  759. data/spec/fixtures/xml/schema/xsd/isotc211/19110/fcc/1.0/abstract.xsd +49 -0
  760. data/spec/fixtures/xml/schema/xsd/isotc211/19110/fcc/1.0/fcc.xsd +9 -0
  761. data/spec/fixtures/xml/schema/xsd/isotc211/19110/gfc/1.1/featureCatalogue.xsd +671 -0
  762. data/spec/fixtures/xml/schema/xsd/isotc211/19110/gfc/1.1/gfc.xsd +13 -0
  763. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1/rbc.xsd +13 -0
  764. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1/rbcStubs.xsd +195 -0
  765. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.0/rbc.xsd +13 -0
  766. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.0/rbcStubs.xsd +195 -0
  767. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/AbstractCommonClasses.xsd +282 -0
  768. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/commonClasses.xsd +127 -0
  769. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/coordOps.xsd +676 -0
  770. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/coordRefSys.xsd +498 -0
  771. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/coordSys.xsd +844 -0
  772. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/coordinates.xsd +101 -0
  773. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/datum.xsd +474 -0
  774. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/rbc.xsd +18 -0
  775. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/cit/1.3/cit.xsd +12 -0
  776. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/cit/1.3/citation.xsd +445 -0
  777. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/cit/1.3.0/cit.xsd +12 -0
  778. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/cit/1.3.0/citation.xsd +445 -0
  779. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/gex/1.3/extent.xsd +243 -0
  780. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/gex/1.3/gex.xsd +16 -0
  781. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/gex/1.3.0/extent.xsd +243 -0
  782. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/gex/1.3.0/gex.xsd +16 -0
  783. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/gex/1.3.1/extent.xsd +244 -0
  784. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/gex/1.3.1/gex.xsd +15 -0
  785. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/lan/1.3/lan.xsd +13 -0
  786. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/lan/1.3/language.xsd +152 -0
  787. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/lan/1.3.0/lan.xsd +13 -0
  788. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/lan/1.3.0/language.xsd +152 -0
  789. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mas/1.3/applicationSchema.xsd +58 -0
  790. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mas/1.3/mas.xsd +16 -0
  791. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mas/1.3.0/applicationSchema.xsd +58 -0
  792. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mas/1.3.0/mas.xsd +16 -0
  793. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mcc/1.3/AbstractCommonClasses.xsd +378 -0
  794. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mcc/1.3/commonClasses.xsd +205 -0
  795. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mcc/1.3/mcc.xsd +12 -0
  796. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mcc/1.3.0/AbstractCommonClasses.xsd +378 -0
  797. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mcc/1.3.0/commonClasses.xsd +205 -0
  798. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mcc/1.3.0/mcc.xsd +12 -0
  799. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mco/1.3/constraints.xsd +171 -0
  800. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mco/1.3/mco.xsd +14 -0
  801. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mco/1.3.0/constraints.xsd +171 -0
  802. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mco/1.3.0/mco.xsd +14 -0
  803. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mda/1.3/mda.xsd +13 -0
  804. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mda/1.3/metadataApplication.xsd +207 -0
  805. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mda/1.3.0/mda.xsd +13 -0
  806. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mda/1.3.0/metadataApplication.xsd +207 -0
  807. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mda/1.3.1/mda.xsd +13 -0
  808. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mda/1.3.1/metadataApplication.xsd +247 -0
  809. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3/mdb.xsd +11 -0
  810. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3/metadataBase.xsd +117 -0
  811. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3/metadataBaseMDAerror.xsd +116 -0
  812. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3.0/mdb.xsd +11 -0
  813. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3.0/metadataBase.xsd +117 -0
  814. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3.0/metadataBaseMDAerror.xsd +116 -0
  815. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3.1/mdb.xsd +11 -0
  816. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3.1/metadataBase.xsd +144 -0
  817. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mex/1.3/metadataExtension.xsd +138 -0
  818. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mex/1.3/mex.xsd +15 -0
  819. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mex/1.3.0/metadataExtension.xsd +138 -0
  820. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mex/1.3.0/mex.xsd +15 -0
  821. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mmi/1.3/maintenance.xsd +70 -0
  822. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mmi/1.3/mmi.xsd +14 -0
  823. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mmi/1.3.0/maintenance.xsd +70 -0
  824. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mmi/1.3.0/mmi.xsd +14 -0
  825. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mpc/1.3/mpc.xsd +14 -0
  826. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mpc/1.3/portrayalCatalogue.xsd +40 -0
  827. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mpc/1.3.0/mpc.xsd +14 -0
  828. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mpc/1.3.0/portrayalCatalogue.xsd +40 -0
  829. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrc/1.3/content.xsd +368 -0
  830. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrc/1.3/mrc.xsd +19 -0
  831. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrc/1.3.0/content.xsd +368 -0
  832. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrc/1.3.0/mrc.xsd +19 -0
  833. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrc/1.3.1/content.xsd +366 -0
  834. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrc/1.3.1/mrc.xsd +13 -0
  835. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrd/1.3/distribution.xsd +232 -0
  836. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrd/1.3/mrd.xsd +13 -0
  837. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrd/1.3.0/distribution.xsd +232 -0
  838. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrd/1.3.0/mrd.xsd +13 -0
  839. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mri/1.3/identification.xsd +425 -0
  840. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mri/1.3/mri.xsd +16 -0
  841. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mri/1.3.0/identification.xsd +425 -0
  842. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mri/1.3.0/mri.xsd +16 -0
  843. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrl/1.3/lineage.xsd +130 -0
  844. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrl/1.3/mrl.xsd +15 -0
  845. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrl/1.3.0/lineage.xsd +130 -0
  846. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrl/1.3.0/mrl.xsd +15 -0
  847. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrs/1.3/mrs.xsd +16 -0
  848. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrs/1.3/referenceSystem.xsd +67 -0
  849. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrs/1.3.0/mrs.xsd +16 -0
  850. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrs/1.3.0/referenceSystem.xsd +67 -0
  851. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrs/1.3.1/mrs.xsd +16 -0
  852. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrs/1.3.1/referenceSystem.xsd +66 -0
  853. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/msr/1.3/msr.xsd +17 -0
  854. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/msr/1.3/spatialRepresentation.xsd +326 -0
  855. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/msr/1.3.0/msr.xsd +17 -0
  856. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/msr/1.3.0/spatialRepresentation.xsd +326 -0
  857. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/msr/1.3.1/msr.xsd +15 -0
  858. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/msr/1.3.1/spatialRepresentation.xsd +326 -0
  859. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/srv/1.3/serviceInformation.xsd +252 -0
  860. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/srv/1.3/srv.xsd +14 -0
  861. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/srv/1.3.0/serviceInformation.xsd +252 -0
  862. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/srv/1.3.0/srv.xsd +14 -0
  863. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.0/acquisitionInformation.xsd +415 -0
  864. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.0/contentInformation.xsd +147 -0
  865. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.0/dataQualityInformation.xsd +214 -0
  866. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.0/gmi.xsd +23 -0
  867. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.0/metadataEntitySet.xsd +43 -0
  868. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.0/spatialRepresentationInformation.xsd +140 -0
  869. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.1/acquisitionInformation.xsd +415 -0
  870. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.1/contentInformation.xsd +147 -0
  871. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.1/dataQualityInformation.xsd +214 -0
  872. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.1/gmi.xsd +24 -0
  873. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.1/metadataEntitySet.xsd +43 -0
  874. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.1/spatialRepresentationInformation.xsd +142 -0
  875. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mac/2.2/acquisitionInformationImagery.xsd +796 -0
  876. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mac/2.2/mac.xsd +11 -0
  877. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mac/2.2.0/acquisitionInformationImagery.xsd +796 -0
  878. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mac/2.2.0/mac.xsd +11 -0
  879. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mac/2.2.1/acquisitionInformationImagery.xsd +799 -0
  880. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mac/2.2.1/mac.xsd +10 -0
  881. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mrc/2.2/contentInformationImagery.xsd +161 -0
  882. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mrc/2.2.0/contentInformationImagery.xsd +161 -0
  883. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mrc/2.2.1/contentInformationImagery.xsd +159 -0
  884. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mrl/2.2/lineageImagery.xsd +312 -0
  885. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mrl/2.2.0/lineageImagery.xsd +312 -0
  886. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/msr/2.2/spatialRepresentationImagery.xsd +138 -0
  887. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/msr/2.2.0/spatialRepresentationImagery.xsd +138 -0
  888. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/msr/2.2.1/spatialRepresentationImagery.xsd +145 -0
  889. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cat/1.0/cat.xsd +16 -0
  890. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cat/1.0/catalogues.xsd +59 -0
  891. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cat/1.0/codelistItem.xsd +63 -0
  892. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cat/1.0/crsItem.xsd +188 -0
  893. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cat/1.0/uomItem.xsd +45 -0
  894. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cit/1.0/cit.xsd +11 -0
  895. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cit/1.0/citation.xsd +400 -0
  896. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cit/2.0/cit.xsd +11 -0
  897. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cit/2.0/citation.xsd +402 -0
  898. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gco/1.0/baseTypes.xsd +532 -0
  899. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gco/1.0/baseTypes2014.xsd +531 -0
  900. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gco/1.0/gco.xsd +16 -0
  901. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gcx/1.0/extendedTypes.xsd +97 -0
  902. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gcx/1.0/gcx.xsd +11 -0
  903. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gex/1.0/extent.xsd +207 -0
  904. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gex/1.0/gex.xsd +15 -0
  905. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gmw/1.0/gmlWrapperTypes.xsd +147 -0
  906. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gmw/1.0/gmlWrapperTypes2014.xsd +147 -0
  907. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gmw/1.0/gmw.xsd +17 -0
  908. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/lan/1.0/lan.xsd +13 -0
  909. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/lan/1.0/language.xsd +141 -0
  910. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mac/1.0/acquisitionInformationImagery.xsd +424 -0
  911. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mac/1.0/mac.xsd +14 -0
  912. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mac/2.0/acquisitionInformationImagery.xsd +473 -0
  913. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mac/2.0/event.xsd +106 -0
  914. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mac/2.0/mac.xsd +15 -0
  915. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mac/2.0/metadataEntitySet.xsd +46 -0
  916. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mas/1.0/applicationSchema.xsd +53 -0
  917. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mas/1.0/mas.xsd +15 -0
  918. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mcc/1.0/AbstractCommonClasses.xsd +362 -0
  919. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mcc/1.0/commonClasses.xsd +179 -0
  920. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mcc/1.0/mcc.xsd +12 -0
  921. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mco/1.0/constraints.xsd +152 -0
  922. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mco/1.0/mco.xsd +13 -0
  923. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md1/1.0/md1.xsd +19 -0
  924. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md1/1.0/metadataWExtendedType.xsd +10 -0
  925. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md1/2.0/md1.xsd +19 -0
  926. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md1/2.0/metadataWExtendedType.xsd +10 -0
  927. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md2/1.0/md2.xsd +27 -0
  928. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md2/1.0/metadataWithExtensions.xsd +10 -0
  929. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md2/2.0/md2.xsd +27 -0
  930. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md2/2.0/metadataWithExtensions.xsd +10 -0
  931. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mda/1.0/mda.xsd +13 -0
  932. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mda/1.0/metadataApplication.xsd +188 -0
  933. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mda/2.0/mda.xsd +13 -0
  934. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mda/2.0/metadataApplication.xsd +189 -0
  935. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdb/1.0/mdb.xsd +23 -0
  936. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdb/1.0/metadataBase.xsd +97 -0
  937. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdb/2.0/mdb.xsd +23 -0
  938. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdb/2.0/metadataBase.xsd +105 -0
  939. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mds/1.0/mds.xsd +59 -0
  940. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mds/1.0/metadataDataServices.xsd +10 -0
  941. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mds/2.0/mds.xsd +44 -0
  942. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mds/2.0/metadataDataServices.xsd +10 -0
  943. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdt/1.0/mdt.xsd +17 -0
  944. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdt/1.0/metadataTransfer.xsd +121 -0
  945. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdt/2.0/mdt.xsd +17 -0
  946. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdt/2.0/metadataTransfer.xsd +121 -0
  947. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mex/1.0/metadataExtension.xsd +122 -0
  948. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mex/1.0/mex.xsd +13 -0
  949. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mmi/1.0/maintenance.xsd +63 -0
  950. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mmi/1.0/mmi.xsd +13 -0
  951. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mpc/1.0/mpc.xsd +13 -0
  952. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mpc/1.0/portrayalCatalogue.xsd +35 -0
  953. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrc/1.0/content.xsd +330 -0
  954. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrc/1.0/contentInformationImagery.xsd +160 -0
  955. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrc/1.0/mrc.xsd +18 -0
  956. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrc/2.0/content.xsd +334 -0
  957. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrc/2.0/contentInformationImagery.xsd +143 -0
  958. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrc/2.0/mrc.xsd +21 -0
  959. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrd/1.0/distribution.xsd +212 -0
  960. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrd/1.0/mrd.xsd +13 -0
  961. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mri/1.0/identification.xsd +385 -0
  962. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mri/1.0/mri.xsd +15 -0
  963. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrl/1.0/lineage.xsd +117 -0
  964. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrl/1.0/lineageImagery.xsd +168 -0
  965. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrl/1.0/mrl.xsd +14 -0
  966. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrl/2.0/lineage.xsd +118 -0
  967. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrl/2.0/lineageImagery.xsd +250 -0
  968. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrl/2.0/mrl.xsd +14 -0
  969. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrs/1.0/mrs.xsd +13 -0
  970. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrs/1.0/referenceSystem.xsd +47 -0
  971. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/msr/1.0/msr.xsd +16 -0
  972. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/msr/1.0/spatialRepresentation.xsd +288 -0
  973. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/msr/1.0/spatialRepresentationImagery.xsd +113 -0
  974. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/msr/2.0/msr.xsd +16 -0
  975. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/msr/2.0/spatialRepresentation.xsd +296 -0
  976. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/msr/2.0/spatialRepresentationImagery.xsd +114 -0
  977. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/srv/2.0/serviceInformation.xsd +217 -0
  978. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/srv/2.0/srv.xsd +14 -0
  979. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/srv/2.1/serviceInformation.xsd +220 -0
  980. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/srv/2.1/srv.xsd +14 -0
  981. data/spec/fixtures/xml/schema/xsd/isotc211/19119/-/srv/1.0/serviceMetadata.xsd +204 -0
  982. data/spec/fixtures/xml/schema/xsd/isotc211/19119/-/srv/1.0/serviceModel.xsd +230 -0
  983. data/spec/fixtures/xml/schema/xsd/isotc211/19119/-/srv/1.0/srv.xsd +13 -0
  984. data/spec/fixtures/xml/schema/xsd/isotc211/19119/srv/serviceMetadata.xsd +204 -0
  985. data/spec/fixtures/xml/schema/xsd/isotc211/19119/srv/serviceModel.xsd +238 -0
  986. data/spec/fixtures/xml/schema/xsd/isotc211/19119/srv/srv.xsd +13 -0
  987. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/1.1/cis-0.xsd +17 -0
  988. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/1.1/codeLists.xsd +68 -0
  989. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/1.1/gridPoint.xsd +47 -0
  990. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/1.1.0/cis-0.xsd +17 -0
  991. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/1.1.0/codeLists.xsd +68 -0
  992. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/1.1.0/gridPoint.xsd +47 -0
  993. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/3.1.0/codeLists.xsd +68 -0
  994. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/3.1.0/gridPoint.xsd +47 -0
  995. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.0/coverage.xsd +185 -0
  996. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.0/gmlcovAll.xsd +21 -0
  997. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.0/grids.xsd +115 -0
  998. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.1/coverage.xsd +188 -0
  999. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.1/gmlcovAll.xsd +25 -0
  1000. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.1/grids.xsd +119 -0
  1001. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.1.0/coverage.xsd +188 -0
  1002. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.1.0/gmlcovAll.xsd +25 -0
  1003. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.1.0/grids.xsd +119 -0
  1004. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/3.1.0/coverage.xsd +188 -0
  1005. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/3.1.0/gmlcovAll.xsd +23 -0
  1006. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/3.1.0/grids.xsd +119 -0
  1007. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.0/codeList.xsd +134 -0
  1008. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.0/groundControlPoints.xsd +239 -0
  1009. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.0/nonPhysicalSensorModel.xsd +321 -0
  1010. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.0/physicalSensorModel.xsd +62 -0
  1011. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.0/sensorModel.xsd +65 -0
  1012. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.0/sensorParameters.xsd +762 -0
  1013. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.0/spatialElements.xsd +497 -0
  1014. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.1/codeList.xsd +129 -0
  1015. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.1/groundControlPoints.xsd +235 -0
  1016. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.1/nonPhysicalSensorModel.xsd +321 -0
  1017. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.1/physicalSensorModel.xsd +62 -0
  1018. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.1/sensorModel.xsd +65 -0
  1019. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.1/sensorParameters.xsd +762 -0
  1020. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.1/spatialElements.xsd +496 -0
  1021. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.0/codeList.xsd +349 -0
  1022. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.0/sensorModel.xsd +53 -0
  1023. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.0/sensorParameters.xsd +681 -0
  1024. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.0/spatialElements.xsd +902 -0
  1025. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.1/codeList.xsd +344 -0
  1026. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.1/sensorModel.xsd +49 -0
  1027. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.1/sensorParameters.xsd +676 -0
  1028. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.1/spatialElements.xsd +897 -0
  1029. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-3/smi/1.1/smi.xsd +42 -0
  1030. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-3/smi/1.1.0/smi.xsd +42 -0
  1031. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-3/smi/1.1.1/smi.xsd +42 -0
  1032. data/spec/fixtures/xml/schema/xsd/isotc211/19131/-/dps/2.0/dps.xsd +1344 -0
  1033. data/spec/fixtures/xml/schema/xsd/isotc211/19131/-/dps/2.0.0/dps.xsd +1344 -0
  1034. data/spec/fixtures/xml/schema/xsd/isotc211/19131/-/dps/2.2/dps.xsd +1522 -0
  1035. data/spec/fixtures/xml/schema/xsd/isotc211/19131/-/dps/2.2.0/dps.xsd +1522 -0
  1036. data/spec/fixtures/xml/schema/xsd/isotc211/19131/-/dps/2.2.1/dps.xsd +1522 -0
  1037. data/spec/fixtures/xml/schema/xsd/isotc211/19131/-1/dps/2.0/dps.xsd +1339 -0
  1038. data/spec/fixtures/xml/schema/xsd/isotc211/19131/-1/dps/2.2.0/dps.xsd +1540 -0
  1039. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.0/core.xsd +349 -0
  1040. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.0/extended.xsd +1074 -0
  1041. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.0/hierarchy.xsd +57 -0
  1042. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.0/pir.xsd +13 -0
  1043. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1/core.xsd +344 -0
  1044. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1/extended.xsd +1076 -0
  1045. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1/hierarchy.xsd +58 -0
  1046. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1/pir.xsd +15 -0
  1047. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1.0/core.xsd +344 -0
  1048. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1.0/extended.xsd +1076 -0
  1049. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1.0/hierarchy.xsd +58 -0
  1050. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1.0/pir.xsd +15 -0
  1051. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/pre/1.0/abstract.xsd +42 -0
  1052. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/pre/1.0/pre.xsd +4 -0
  1053. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/pre/1.2.0/abstract.xsd +44 -0
  1054. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/pre/1.2.0/pre.xsd +11 -0
  1055. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/reg/1.0/reg.xsd +8 -0
  1056. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/reg/1.0/registration.xsd +562 -0
  1057. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/reg/1.2.0/reg.xsd +22 -0
  1058. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/reg/1.2.0/registration.xsd +590 -0
  1059. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/basicTypes.xsd +275 -0
  1060. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/coordinateOperations.xsd +534 -0
  1061. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/coordinateReferenceSystems.xsd +379 -0
  1062. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/coordinateSystems.xsd +303 -0
  1063. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/coverage.xsd +298 -0
  1064. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/datums.xsd +293 -0
  1065. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/defaultStyle.xsd +462 -0
  1066. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/deprecatedTypes.xsd +1139 -0
  1067. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/dictionary.xsd +95 -0
  1068. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/direction.xsd +90 -0
  1069. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/dynamicFeature.xsd +114 -0
  1070. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/feature.xsd +99 -0
  1071. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/geometryAggregates.xsd +203 -0
  1072. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/geometryBasic0d1d.xsd +283 -0
  1073. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/geometryBasic2d.xsd +130 -0
  1074. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/geometryComplexes.xsd +101 -0
  1075. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/geometryPrimitives.xsd +852 -0
  1076. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/gml.xsd +25 -0
  1077. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/gmlBase.xsd +191 -0
  1078. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/grids.xsd +70 -0
  1079. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/measures.xsd +74 -0
  1080. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/observation.xsd +100 -0
  1081. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/referenceSystems.xsd +78 -0
  1082. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/temporal.xsd +274 -0
  1083. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/temporalReferenceSystems.xsd +194 -0
  1084. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/temporalTopology.xsd +124 -0
  1085. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/topology.xsd +391 -0
  1086. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/units.xsd +168 -0
  1087. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/valueObjects.xsd +210 -0
  1088. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-1/gmw/1.1/gmlWrapperTypes.xsd +160 -0
  1089. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-1/gmw/1.1/gmw.xsd +27 -0
  1090. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-1/gmw/1.1.0/gmlWrapperTypes.xsd +160 -0
  1091. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-1/gmw/1.1.0/gmw.xsd +27 -0
  1092. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2/cat.xsd +18 -0
  1093. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2/catalogues.xsd +63 -0
  1094. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2/codelistItem.xsd +64 -0
  1095. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2/crsItem.xsd +200 -0
  1096. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2/uomItem.xsd +49 -0
  1097. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2.0/cat.xsd +18 -0
  1098. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2.0/catalogues.xsd +63 -0
  1099. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2.0/codelistItem.xsd +64 -0
  1100. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2.0/crsItem.xsd +200 -0
  1101. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2.0/uomItem.xsd +49 -0
  1102. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gco/1.0/basicTypes.xsd +439 -0
  1103. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gco/1.0/gco.xsd +18 -0
  1104. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gco/1.0/gcoBase.xsd +71 -0
  1105. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/applicationSchema.xsd +50 -0
  1106. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/citation.xsd +283 -0
  1107. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/constraints.xsd +114 -0
  1108. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/content.xsd +197 -0
  1109. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/dataQuality.xsd +563 -0
  1110. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/distribution.xsd +210 -0
  1111. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/extent.xsd +216 -0
  1112. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/freeText.xsd +130 -0
  1113. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/gmd.xsd +18 -0
  1114. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/identification.xsd +356 -0
  1115. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/maintenance.xsd +95 -0
  1116. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/metadataApplication.xsd +183 -0
  1117. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/metadataEntity.xsd +78 -0
  1118. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/metadataExtension.xsd +107 -0
  1119. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/portrayalCatalogue.xsd +44 -0
  1120. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/referenceSystem.xsd +108 -0
  1121. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/spatialRepresentation.xsd +246 -0
  1122. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmx/1.0/catalogues.xsd +121 -0
  1123. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmx/1.0/codelistItem.xsd +179 -0
  1124. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmx/1.0/crsItem.xsd +1041 -0
  1125. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmx/1.0/extendedTypes.xsd +83 -0
  1126. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmx/1.0/gmx.xsd +18 -0
  1127. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmx/1.0/gmxUsage.xsd +136 -0
  1128. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmx/1.0/uomItem.xsd +173 -0
  1129. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gsr/1.0/gsr.xsd +18 -0
  1130. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gsr/1.0/spatialReferencing.xsd +34 -0
  1131. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gss/1.0/geometry.xsd +45 -0
  1132. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gss/1.0/gss.xsd +18 -0
  1133. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gts/1.0/gts.xsd +18 -0
  1134. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gts/1.0/temporalObjects.xsd +44 -0
  1135. data/spec/fixtures/xml/schema/xsd/isotc211/19155/gpi/1.0/gpi.xsd +16 -0
  1136. data/spec/fixtures/xml/schema/xsd/isotc211/19155/gpi/1.0/placeIdentifier.xsd +75 -0
  1137. data/spec/fixtures/xml/schema/xsd/isotc211/19155/gpi/1.0/sampleGMLApplicationSchema.xsd +83 -0
  1138. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqc/1.2/abstract.xsd +44 -0
  1139. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqc/1.2/dqc.xsd +16 -0
  1140. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqc/1.2.0/abstract.xsd +44 -0
  1141. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqc/1.2.0/dqc.xsd +16 -0
  1142. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqm/1.2/dqm.xsd +19 -0
  1143. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqm/1.2/qualityMeasures.xsd +332 -0
  1144. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqm/1.2.0/dqm.xsd +19 -0
  1145. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqm/1.2.0/qualityMeasures.xsd +332 -0
  1146. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2/dataQualityElement.xsd +583 -0
  1147. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2/dataQualityEvaluation.xsd +199 -0
  1148. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2/dataQualityImagery.xsd +75 -0
  1149. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2/dataQualityResult.xsd +213 -0
  1150. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2/mdq.xsd +22 -0
  1151. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2/metaquality.xsd +93 -0
  1152. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2.0/dataQualityElement.xsd +583 -0
  1153. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2.0/dataQualityEvaluation.xsd +199 -0
  1154. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2.0/dataQualityImagery.xsd +75 -0
  1155. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2.0/dataQualityResult.xsd +213 -0
  1156. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2.0/mdq.xsd +22 -0
  1157. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2.0/metaquality.xsd +93 -0
  1158. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqc/1.0.0/dataQualityCommon.xsd +33 -0
  1159. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqc/1.0.0/dqc.xsd +14 -0
  1160. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqc/1.0.1/dataQualityCommon.xsd +43 -0
  1161. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqc/1.0.1/dqc.xsd +17 -0
  1162. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqm/1.0.0/dataQualityMeasure.xsd +376 -0
  1163. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqm/1.0.0/dqm.xsd +11 -0
  1164. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqm/1.0.1/dataQualityMeasure.xsd +367 -0
  1165. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqm/1.0.1/dqm.xsd +11 -0
  1166. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.0/dataQuality.xsd +570 -0
  1167. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.0/dataQualityEvaluation.xsd +227 -0
  1168. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.0/dataQualityResult.xsd +191 -0
  1169. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.0/mdq.xsd +14 -0
  1170. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.0/metaquality.xsd +106 -0
  1171. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.1/dataQuality.xsd +581 -0
  1172. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.1/dataQualityEvaluation.xsd +227 -0
  1173. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.1/dataQualityResult.xsd +198 -0
  1174. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.1/mdq.xsd +14 -0
  1175. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.1/metaquality.xsd +102 -0
  1176. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/dqc/1.0/abstract.xsd +43 -0
  1177. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/dqc/1.0/dqc.xsd +15 -0
  1178. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/dqm/1.0/dqm.xsd +15 -0
  1179. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/dqm/1.0/qualityMeasures.xsd +303 -0
  1180. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/mdq/1.0/dataQualityElement.xsd +554 -0
  1181. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/mdq/1.0/dataQualityEvaluation.xsd +182 -0
  1182. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/mdq/1.0/dataQualityImagery.xsd +72 -0
  1183. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/mdq/1.0/dataQualityResult.xsd +140 -0
  1184. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/mdq/1.0/mdq.xsd +21 -0
  1185. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/mdq/1.0/metaquality.xsd +89 -0
  1186. data/spec/fixtures/xml/schema/xsd/isotc211/19160/-4/patdl/2.7.3/PATDL.v.2.7.3.xsd +517 -0
  1187. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1/IE_Imagery.xsd +520 -0
  1188. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1/IE_ImageryAndGriddedData.xsd +222 -0
  1189. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1/IE_ThematicGriddedData.xsd +117 -0
  1190. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1/igd.xsd +14 -0
  1191. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.0/IE_Imagery.xsd +520 -0
  1192. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.0/IE_ImageryAndGriddedData.xsd +222 -0
  1193. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.0/IE_ThematicGriddedData.xsd +117 -0
  1194. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.0/igd.xsd +14 -0
  1195. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.1/IE_Imagery.xsd +518 -0
  1196. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.1/IE_ImageryAndGriddedData.xsd +213 -0
  1197. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.1/IE_ThematicGriddedData.xsd +116 -0
  1198. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.1/igd.xsd +15 -0
  1199. data/spec/fixtures/xml/schema/xsd/isotc211/19165/-1/gpm/1.0.0/geospatialPreservationMetadata.xsd +872 -0
  1200. data/spec/fixtures/xml/schema/xsd/isotc211/19165/-1/gpm/1.0.0/gpm.xsd +11 -0
  1201. data/spec/fixtures/xml/schema/xsd/isotc211/19165/gpm/1.0/geospatialPreservationMetadata.xsd +385 -0
  1202. data/spec/fixtures/xml/schema/xsd/isotc211/19165/gpm/1.0/gpm.xsd +8 -0
  1203. data/spec/fixtures/xml/schema/xsd/metaschema-datatypes.xsd +263 -0
  1204. data/spec/fixtures/xml/schema/xsd/metaschema-markup-line.xsd +9 -0
  1205. data/spec/fixtures/xml/schema/xsd/metaschema-markup-multiline.xsd +135 -0
  1206. data/spec/fixtures/xml/schema/xsd/metaschema-meta-constraints.xsd +39 -0
  1207. data/spec/fixtures/xml/schema/xsd/metaschema-prose-base.xsd +82 -0
  1208. data/spec/fixtures/xml/schema/xsd/metaschema-prose-module.xsd +5 -0
  1209. data/spec/fixtures/xml/schema/xsd/metaschema.xsd +1344 -0
  1210. data/spec/fixtures/xml/schema/xsd/omml_schema.xsd +1528 -0
  1211. data/spec/fixtures/xml/schema/xsd/smil20/rdf.xsd +16 -0
  1212. data/spec/fixtures/xml/schema/xsd/smil20/smil20-AccessKeyTiming.xsd +33 -0
  1213. data/spec/fixtures/xml/schema/xsd/smil20/smil20-AudioLayout.xsd +32 -0
  1214. data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicAnimation.xsd +35 -0
  1215. data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicContentControl.xsd +49 -0
  1216. data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicInlineTiming.xsd +34 -0
  1217. data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicLayout.xsd +34 -0
  1218. data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicLinking.xsd +34 -0
  1219. data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicMedia.xsd +39 -0
  1220. data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicTimeContainers.xsd +37 -0
  1221. data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicTransitions.xsd +36 -0
  1222. data/spec/fixtures/xml/schema/xsd/smil20/smil20-BrushMedia.xsd +32 -0
  1223. data/spec/fixtures/xml/schema/xsd/smil20/smil20-CustomTestAttributes.xsd +33 -0
  1224. data/spec/fixtures/xml/schema/xsd/smil20/smil20-EventTiming.xsd +33 -0
  1225. data/spec/fixtures/xml/schema/xsd/smil20/smil20-ExclTimeContainers.xsd +37 -0
  1226. data/spec/fixtures/xml/schema/xsd/smil20/smil20-FillDefault.xsd +32 -0
  1227. data/spec/fixtures/xml/schema/xsd/smil20/smil20-HierarchicalLayout.xsd +46 -0
  1228. data/spec/fixtures/xml/schema/xsd/smil20/smil20-HostLanguage.xsd +85 -0
  1229. data/spec/fixtures/xml/schema/xsd/smil20/smil20-InlineTransitions.xsd +35 -0
  1230. data/spec/fixtures/xml/schema/xsd/smil20/smil20-IntegrationSet.xsd +72 -0
  1231. data/spec/fixtures/xml/schema/xsd/smil20/smil20-LinkingAttributes.xsd +40 -0
  1232. data/spec/fixtures/xml/schema/xsd/smil20/smil20-MediaAccessibility.xsd +34 -0
  1233. data/spec/fixtures/xml/schema/xsd/smil20/smil20-MediaClipMarkers.xsd +35 -0
  1234. data/spec/fixtures/xml/schema/xsd/smil20/smil20-MediaClipping.xsd +35 -0
  1235. data/spec/fixtures/xml/schema/xsd/smil20/smil20-MediaDescription.xsd +35 -0
  1236. data/spec/fixtures/xml/schema/xsd/smil20/smil20-MediaMarkerTiming.xsd +33 -0
  1237. data/spec/fixtures/xml/schema/xsd/smil20/smil20-MediaParam.xsd +34 -0
  1238. data/spec/fixtures/xml/schema/xsd/smil20/smil20-Metainformation.xsd +33 -0
  1239. data/spec/fixtures/xml/schema/xsd/smil20/smil20-MinMaxTiming.xsd +33 -0
  1240. data/spec/fixtures/xml/schema/xsd/smil20/smil20-MultiArcTiming.xsd +33 -0
  1241. data/spec/fixtures/xml/schema/xsd/smil20/smil20-MultiWindowLayout.xsd +32 -0
  1242. data/spec/fixtures/xml/schema/xsd/smil20/smil20-ObjectLinking.xsd +33 -0
  1243. data/spec/fixtures/xml/schema/xsd/smil20/smil20-PrefetchControl.xsd +31 -0
  1244. data/spec/fixtures/xml/schema/xsd/smil20/smil20-RepeatTiming.xsd +34 -0
  1245. data/spec/fixtures/xml/schema/xsd/smil20/smil20-RepeatValueTiming.xsd +33 -0
  1246. data/spec/fixtures/xml/schema/xsd/smil20/smil20-RestartDefault.xsd +32 -0
  1247. data/spec/fixtures/xml/schema/xsd/smil20/smil20-RestartTiming.xsd +32 -0
  1248. data/spec/fixtures/xml/schema/xsd/smil20/smil20-SkipContentControl.xsd +32 -0
  1249. data/spec/fixtures/xml/schema/xsd/smil20/smil20-SplineAnimation.xsd +34 -0
  1250. data/spec/fixtures/xml/schema/xsd/smil20/smil20-Structure.xsd +34 -0
  1251. data/spec/fixtures/xml/schema/xsd/smil20/smil20-SyncBehavior.xsd +33 -0
  1252. data/spec/fixtures/xml/schema/xsd/smil20/smil20-SyncBehaviorDefault.xsd +33 -0
  1253. data/spec/fixtures/xml/schema/xsd/smil20/smil20-SyncMaster.xsd +32 -0
  1254. data/spec/fixtures/xml/schema/xsd/smil20/smil20-SyncbaseTiming.xsd +33 -0
  1255. data/spec/fixtures/xml/schema/xsd/smil20/smil20-TimeContainerAttributes.xsd +35 -0
  1256. data/spec/fixtures/xml/schema/xsd/smil20/smil20-TimeManipulations.xsd +35 -0
  1257. data/spec/fixtures/xml/schema/xsd/smil20/smil20-TransitionModifiers.xsd +37 -0
  1258. data/spec/fixtures/xml/schema/xsd/smil20/smil20-WallclockTiming.xsd +33 -0
  1259. data/spec/fixtures/xml/schema/xsd/smil20/smil20-animate.xsd +229 -0
  1260. data/spec/fixtures/xml/schema/xsd/smil20/smil20-content.xsd +148 -0
  1261. data/spec/fixtures/xml/schema/xsd/smil20/smil20-language.xsd +834 -0
  1262. data/spec/fixtures/xml/schema/xsd/smil20/smil20-layout.xsd +211 -0
  1263. data/spec/fixtures/xml/schema/xsd/smil20/smil20-linking.xsd +117 -0
  1264. data/spec/fixtures/xml/schema/xsd/smil20/smil20-media.xsd +175 -0
  1265. data/spec/fixtures/xml/schema/xsd/smil20/smil20-meta.xsd +44 -0
  1266. data/spec/fixtures/xml/schema/xsd/smil20/smil20-struct.xsd +47 -0
  1267. data/spec/fixtures/xml/schema/xsd/smil20/smil20-timemanip.xsd +34 -0
  1268. data/spec/fixtures/xml/schema/xsd/smil20/smil20-timing.xsd +344 -0
  1269. data/spec/fixtures/xml/schema/xsd/smil20/smil20-transitions.xsd +138 -0
  1270. data/spec/fixtures/xml/schema/xsd/smil20/smil20-utility.xsd +57 -0
  1271. data/spec/fixtures/xml/schema/xsd/smil20/smil20.xsd +86 -0
  1272. data/spec/fixtures/xml/schema/xsd/smil20/xml-mod.xsd +25 -0
  1273. data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/advanced_encodings.xsd +186 -0
  1274. data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/basic_types.xsd +147 -0
  1275. data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/block_components.xsd +163 -0
  1276. data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/choice_components.xsd +56 -0
  1277. data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/examples/security.xsd +15 -0
  1278. data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/record_components.xsd +95 -0
  1279. data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/simple_components.xsd +536 -0
  1280. data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/simple_encodings.xsd +93 -0
  1281. data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/swe.xsd +14 -0
  1282. data/spec/fixtures/xml/schema/xsd/test_schema.lxr +0 -0
  1283. data/spec/fixtures/xml/schema/xsd/test_schema.xsd +24 -0
  1284. data/spec/fixtures/xml/schema/xsd/unitsml-v1.0-csd03.xsd +1333 -0
  1285. data/spec/fixtures/xml/schema/xsd/unitsml-v1.0-csd04.xsd +1334 -0
  1286. data/spec/fixtures/xml/schema/xsd/validation_config.yml +14 -0
  1287. data/spec/fixtures/xml/special_char.xml +3 -4
  1288. data/spec/fixtures/xml/user.xsd +14 -10
  1289. data/spec/fixtures/yamls_range_concept.rb +139 -0
  1290. data/spec/lutaml/key_value/transformation/collection_serializer_spec.rb +213 -0
  1291. data/spec/lutaml/key_value/transformation/rule_compiler_spec.rb +229 -0
  1292. data/spec/lutaml/key_value/transformation/value_serializer_spec.rb +216 -0
  1293. data/spec/lutaml/key_value/transformation_spec.rb +292 -0
  1294. data/spec/lutaml/model/attribute_collection_spec.rb +9 -6
  1295. data/spec/lutaml/model/attribute_form_default_spec.rb +252 -0
  1296. data/spec/lutaml/model/attribute_spec.rb +328 -38
  1297. data/spec/lutaml/model/cached_type_resolver_spec.rb +362 -0
  1298. data/spec/lutaml/model/cdata_spec.rb +180 -102
  1299. data/spec/lutaml/model/choice_spec.rb +37 -7
  1300. data/spec/lutaml/model/cli_spec.rb +452 -0
  1301. data/spec/lutaml/model/collection_index_spec.rb +347 -0
  1302. data/spec/lutaml/model/collection_mutation_spec.rb +124 -0
  1303. data/spec/lutaml/model/collection_spec.rb +580 -155
  1304. data/spec/lutaml/model/collection_validation_spec.rb +736 -0
  1305. data/spec/lutaml/model/comparable_model_spec.rb +75 -0
  1306. data/spec/lutaml/model/compiled_rule_spec.rb +364 -0
  1307. data/spec/lutaml/model/consolidation_spec.rb +295 -0
  1308. data/spec/lutaml/model/context_registry_spec.rb +269 -0
  1309. data/spec/lutaml/model/custom_bibtex_adapter_spec.rb +21 -7
  1310. data/spec/lutaml/model/custom_collection_spec.rb +321 -27
  1311. data/spec/lutaml/model/custom_model_spec.rb +13 -10
  1312. data/spec/lutaml/model/custom_serialization_spec.rb +12 -14
  1313. data/spec/lutaml/model/custom_vobject_adapter_spec.rb +36 -16
  1314. data/spec/lutaml/model/default_register_spec.rb +852 -0
  1315. data/spec/lutaml/model/defaults_spec.rb +57 -6
  1316. data/spec/lutaml/model/delegation_spec.rb +184 -110
  1317. data/spec/lutaml/model/derived_attribute_serialization_spec.rb +33 -0
  1318. data/spec/lutaml/model/dynamic_attribute_spec.rb +112 -0
  1319. data/spec/lutaml/model/encoding_spec.rb +281 -0
  1320. data/spec/lutaml/model/enum_spec.rb +46 -2
  1321. data/spec/lutaml/model/except_spec.rb +240 -0
  1322. data/spec/lutaml/model/finalization_cache_spec.rb +88 -0
  1323. data/spec/lutaml/model/global_context_spec.rb +421 -0
  1324. data/spec/lutaml/model/global_register_spec.rb +153 -36
  1325. data/spec/lutaml/model/group_spec.rb +193 -54
  1326. data/spec/lutaml/model/hash/adapter_spec.rb +5 -3
  1327. data/spec/lutaml/model/import_registry_spec.rb +295 -0
  1328. data/spec/lutaml/model/included_spec.rb +10 -17
  1329. data/spec/lutaml/model/inheritance_spec.rb +6 -6
  1330. data/spec/lutaml/model/json_adapter_spec.rb +13 -6
  1331. data/spec/lutaml/model/json_spec.rb +33 -0
  1332. data/spec/lutaml/model/key_value_data_model/key_value_element_spec.rb +320 -0
  1333. data/spec/lutaml/model/key_value_mapping_spec.rb +12 -2
  1334. data/spec/lutaml/model/lazy_collection_spec.rb +208 -0
  1335. data/spec/lutaml/model/liquefiable_spec.rb +263 -24
  1336. data/spec/lutaml/model/logger_spec.rb +68 -0
  1337. data/spec/lutaml/model/map_all_spec.rb +36 -11
  1338. data/spec/lutaml/model/map_content_spec.rb +4 -4
  1339. data/spec/lutaml/model/mapping_rule_perf_guard_spec.rb +71 -0
  1340. data/spec/lutaml/model/mixed_content_spec.rb +481 -171
  1341. data/spec/lutaml/model/model_transformer_spec.rb +678 -0
  1342. data/spec/lutaml/model/multiple_mapping_spec.rb +71 -39
  1343. data/spec/lutaml/model/namespace_versioning_spec.rb +390 -0
  1344. data/spec/lutaml/model/one_entry_cache_spec.rb +114 -0
  1345. data/spec/lutaml/model/ordered_content_spec.rb +115 -24
  1346. data/spec/lutaml/model/polymorphic_spec.rb +29 -6
  1347. data/spec/lutaml/model/processing_instruction_spec.rb +375 -0
  1348. data/spec/lutaml/model/{register/key_value_spec.rb → register_key_value_spec.rb} +57 -5
  1349. data/spec/lutaml/model/register_spec.rb +235 -5
  1350. data/spec/lutaml/model/render_empty_spec.rb +143 -6
  1351. data/spec/lutaml/model/render_nil_spec.rb +15 -10
  1352. data/spec/lutaml/model/root_mappings_spec.rb +16 -6
  1353. data/spec/lutaml/model/rule_value_extractor_spec.rb +13 -44
  1354. data/spec/lutaml/model/runtime_compatibility_spec.rb +36 -0
  1355. data/spec/lutaml/model/schema/generator/definitions_collection_spec.rb +4 -0
  1356. data/spec/lutaml/model/schema/json_schema_spec.rb +7 -1
  1357. data/spec/lutaml/model/schema/relaxng_schema_spec.rb +1 -1
  1358. data/spec/lutaml/model/schema/renderer_spec.rb +128 -0
  1359. data/spec/lutaml/model/schema/xsd_schema_spec.rb +1 -1
  1360. data/spec/lutaml/model/sequence_spec.rb +460 -15
  1361. data/spec/lutaml/model/serializable_spec.rb +212 -12
  1362. data/spec/lutaml/model/serializable_validation_spec.rb +3 -2
  1363. data/spec/lutaml/model/serialize_perf_guard_spec.rb +100 -0
  1364. data/spec/lutaml/model/services/default_value_resolver_spec.rb +162 -0
  1365. data/spec/lutaml/model/simple_model_spec.rb +4 -4
  1366. data/spec/lutaml/model/toml_adapter_spec.rb +11 -4
  1367. data/spec/lutaml/model/toml_spec.rb +46 -2
  1368. data/spec/lutaml/model/transformation_builder_spec.rb +283 -0
  1369. data/spec/lutaml/model/transformation_spec.rb +165 -236
  1370. data/spec/lutaml/model/type/base64_binary_spec.rb +202 -0
  1371. data/spec/lutaml/model/type/date_spec.rb +132 -0
  1372. data/spec/lutaml/model/type/date_time_spec.rb +54 -2
  1373. data/spec/lutaml/model/type/decimal_spec.rb +1 -1
  1374. data/spec/lutaml/model/type/duration_spec.rb +185 -0
  1375. data/spec/lutaml/model/type/hex_binary_spec.rb +225 -0
  1376. data/spec/lutaml/model/type/integer_spec.rb +1 -1
  1377. data/spec/lutaml/model/type/qname_spec.rb +246 -0
  1378. data/spec/lutaml/model/type/reference_integration_spec.rb +532 -0
  1379. data/spec/lutaml/model/type/reference_spec.rb +293 -0
  1380. data/spec/lutaml/model/type/symbol_spec.rb +322 -0
  1381. data/spec/lutaml/model/type/time_spec.rb +6 -5
  1382. data/spec/lutaml/model/type/time_without_date_spec.rb +1 -1
  1383. data/spec/lutaml/model/type/uninitialized_class_spec.rb +110 -0
  1384. data/spec/lutaml/model/type/uri_spec.rb +176 -0
  1385. data/spec/lutaml/model/type/value_xml_mapping_spec.rb +162 -0
  1386. data/spec/lutaml/model/type_context_spec.rb +370 -0
  1387. data/spec/lutaml/model/type_registry_spec.rb +313 -0
  1388. data/spec/lutaml/model/type_resolver_spec.rb +278 -0
  1389. data/spec/lutaml/model/type_spec.rb +7 -8
  1390. data/spec/lutaml/model/type_substitution_spec.rb +172 -0
  1391. data/spec/lutaml/model/utils_spec.rb +39 -24
  1392. data/spec/lutaml/model/value_map_spec.rb +2 -2
  1393. data/spec/lutaml/model/value_transformation_comprehensive_spec.rb +676 -0
  1394. data/spec/lutaml/model/with_child_mapping_spec.rb +1 -1
  1395. data/spec/lutaml/model/xml_decoupling_spec.rb +436 -0
  1396. data/spec/lutaml/model/xsd_form_default_patterns_spec.rb +664 -0
  1397. data/spec/lutaml/model/xsd_patterns_spec.rb +278 -0
  1398. data/spec/lutaml/model/xsd_type_spec.rb +345 -0
  1399. data/spec/lutaml/model/xsd_type_validation_spec.rb +442 -0
  1400. data/spec/lutaml/model/yamls/standard_adapter_spec.rb +2 -2
  1401. data/spec/lutaml/model/yamls_range_spec.rb +393 -0
  1402. data/spec/lutaml/model/yamls_sequence_spec.rb +245 -0
  1403. data/spec/lutaml/xml/adapter/nokogiri_adapter_spec.rb +130 -0
  1404. data/spec/lutaml/xml/adapter/oga_adapter_spec.rb +135 -0
  1405. data/spec/lutaml/xml/adapter/ox_adapter_spec.rb +101 -0
  1406. data/spec/lutaml/xml/adapter/rexml_adapter_spec.rb +101 -0
  1407. data/spec/lutaml/xml/adapter/xml_namespace_spec.rb +531 -0
  1408. data/spec/lutaml/xml/builder/builder_spec.rb +216 -0
  1409. data/spec/lutaml/xml/compiled_rule_namespace_spec.rb +405 -0
  1410. data/spec/lutaml/xml/conformance/xml_namespaces_spec.rb +580 -0
  1411. data/spec/lutaml/xml/conformance/xml_schema_instance_spec.rb +266 -0
  1412. data/spec/lutaml/xml/data_model_spec.rb +300 -0
  1413. data/spec/lutaml/xml/decisions/decision_engine_spec.rb +242 -0
  1414. data/spec/lutaml/xml/decisions/decision_spec.rb +217 -0
  1415. data/spec/lutaml/xml/decisions/element_prefix_resolver_spec.rb +198 -0
  1416. data/spec/lutaml/xml/declaration_planner_spec.rb +524 -0
  1417. data/spec/lutaml/xml/default_namespace_spec.rb +190 -0
  1418. data/spec/lutaml/{model/xml → xml}/derived_attributes_spec.rb +2 -2
  1419. data/spec/lutaml/xml/doctype_preservation_spec.rb +323 -0
  1420. data/spec/lutaml/xml/doubly_defined_namespace_spec.rb +415 -0
  1421. data/spec/lutaml/xml/dual_namespace_element_spec.rb +181 -0
  1422. data/spec/lutaml/xml/element_spec.rb +28 -0
  1423. data/spec/lutaml/xml/encoding_normalizer_spec.rb +215 -0
  1424. data/spec/lutaml/xml/enhanced_mapping_spec.rb +692 -0
  1425. data/spec/lutaml/xml/entity_fragmentation_spec.rb +583 -0
  1426. data/spec/lutaml/xml/format_chooser_spec.rb +0 -0
  1427. data/spec/lutaml/xml/fpi_namespace_spec.rb +145 -0
  1428. data/spec/lutaml/{model/xml/namespace_spec.rb → xml/general_namespace_spec.rb} +6 -5
  1429. data/spec/lutaml/xml/mapping_finalization_guard_spec.rb +83 -0
  1430. data/spec/lutaml/xml/mapping_rule_spec.rb +98 -0
  1431. data/spec/lutaml/xml/mapping_spec.rb +1147 -0
  1432. data/spec/lutaml/xml/model_transform_guard_spec.rb +126 -0
  1433. data/spec/lutaml/{model/xml → xml}/namespace/nested_with_explicit_namespace_spec.rb +8 -5
  1434. data/spec/lutaml/xml/namespace/w3c_reserved_warning_spec.rb +152 -0
  1435. data/spec/lutaml/xml/namespace_alias_prefix_root_spec.rb +130 -0
  1436. data/spec/lutaml/xml/namespace_alias_spec.rb +263 -0
  1437. data/spec/lutaml/xml/namespace_aware_parsing_spec.rb +219 -0
  1438. data/spec/lutaml/xml/namespace_backward_compatibility_spec.rb +48 -0
  1439. data/spec/lutaml/xml/namespace_bound_element_roundtrip_spec.rb +433 -0
  1440. data/spec/lutaml/xml/namespace_constant_spec.rb +383 -0
  1441. data/spec/lutaml/xml/namespace_force_prefix_spec.rb +113 -0
  1442. data/spec/lutaml/xml/namespace_format_preservation_spec.rb +49 -0
  1443. data/spec/lutaml/xml/namespace_inheritance_deep_spec.rb +162 -0
  1444. data/spec/lutaml/xml/namespace_inheritance_override_spec.rb +316 -0
  1445. data/spec/lutaml/xml/namespace_inheritance_resolver_spec.rb +0 -0
  1446. data/spec/lutaml/xml/namespace_inheritance_spec.rb +966 -0
  1447. data/spec/lutaml/xml/namespace_integration_spec.rb +277 -0
  1448. data/spec/lutaml/xml/namespace_missing_prefix_spec.rb +178 -0
  1449. data/spec/lutaml/xml/namespace_no_hoisting_spec.rb +172 -0
  1450. data/spec/lutaml/xml/namespace_placement_spec.rb +265 -0
  1451. data/spec/lutaml/xml/namespace_preservation_spec.rb +427 -0
  1452. data/spec/lutaml/xml/namespace_principles_spec.rb +909 -0
  1453. data/spec/lutaml/xml/namespace_resolution_strategy_spec.rb +273 -0
  1454. data/spec/lutaml/xml/namespace_scope_declare_spec.rb +205 -0
  1455. data/spec/lutaml/xml/namespace_scope_spec.rb +389 -0
  1456. data/spec/lutaml/xml/namespace_scope_vcard_spec.rb +616 -0
  1457. data/spec/lutaml/xml/namespace_spec.rb +712 -0
  1458. data/spec/lutaml/xml/namespace_three_phase_spec.rb +310 -0
  1459. data/spec/lutaml/xml/nil_optional_element_namespace_spec.rb +84 -0
  1460. data/spec/lutaml/xml/ooxml_namespace_spec.rb +177 -0
  1461. data/spec/lutaml/xml/ordered_method_spec.rb +109 -0
  1462. data/spec/lutaml/xml/prefix_control_spec.rb +286 -0
  1463. data/spec/lutaml/{model/register/xml_spec.rb → xml/register_spec.rb} +75 -21
  1464. data/spec/lutaml/xml/reusable_mapping_spec.rb +148 -0
  1465. data/spec/lutaml/xml/reused_elements_namespace_spec.rb +85 -0
  1466. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/attribute_group_spec.rb +9 -3
  1467. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/attribute_spec.rb +11 -7
  1468. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/choice_spec.rb +5 -2
  1469. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/complex_content_restriction_spec.rb +7 -2
  1470. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/complex_content_spec.rb +5 -1
  1471. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/complex_type_spec.rb +49 -20
  1472. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/element_spec.rb +9 -4
  1473. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/group_spec.rb +9 -5
  1474. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/restriction_spec.rb +1 -0
  1475. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/sequence_spec.rb +10 -4
  1476. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/simple_content_spec.rb +9 -3
  1477. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/simple_type_spec.rb +10 -7
  1478. data/spec/lutaml/{model/schema/xml_compiler_spec.rb → xml/schema/compiler_spec.rb} +219 -94
  1479. data/spec/lutaml/xml/schema/xsd/errors/error_context_spec.rb +65 -0
  1480. data/spec/lutaml/xml/schema/xsd/errors/suggestion_spec.rb +77 -0
  1481. data/spec/lutaml/xml/schema/xsd/file_validation_result_spec.rb +131 -0
  1482. data/spec/lutaml/xml/schema/xsd/glob_spec.rb +318 -0
  1483. data/spec/lutaml/xml/schema/xsd/liquid_methods/attribute_and_group_spec.rb +76 -0
  1484. data/spec/lutaml/xml/schema/xsd/liquid_methods/complex_type_spec.rb +159 -0
  1485. data/spec/lutaml/xml/schema/xsd/liquid_methods/containers_spec.rb +104 -0
  1486. data/spec/lutaml/xml/schema/xsd/liquid_methods/element_spec.rb +139 -0
  1487. data/spec/lutaml/xml/schema/xsd/liquid_methods/schema_spec.rb +75 -0
  1488. data/spec/lutaml/xml/schema/xsd/liquid_methods/simple_content_spec.rb +79 -0
  1489. data/spec/lutaml/xml/schema/xsd/namespace_uri_remapping_spec.rb +246 -0
  1490. data/spec/lutaml/xml/schema/xsd/schema_helper_methods_spec.rb +237 -0
  1491. data/spec/lutaml/xml/schema/xsd/schema_mapping_spec.rb +742 -0
  1492. data/spec/lutaml/xml/schema/xsd/schema_validator_spec.rb +228 -0
  1493. data/spec/lutaml/xml/schema/xsd/spec_helper.rb +26 -0
  1494. data/spec/lutaml/xml/schema/xsd/validation_error_spec.rb +189 -0
  1495. data/spec/lutaml/xml/schema/xsd/validation_result_spec.rb +276 -0
  1496. data/spec/lutaml/xml/schema/xsd/xsd_spec.rb +51 -0
  1497. data/spec/lutaml/xml/schema_primer_spec.rb +393 -0
  1498. data/spec/lutaml/xml/serializable_namespace_spec.rb +125 -0
  1499. data/spec/lutaml/xml/transformation/custom_method_wrapper_spec.rb +48 -0
  1500. data/spec/lutaml/xml/transformation_spec.rb +439 -0
  1501. data/spec/lutaml/xml/type_namespace/collector_spec.rb +212 -0
  1502. data/spec/lutaml/xml/type_namespace/planner_spec.rb +270 -0
  1503. data/spec/lutaml/xml/type_namespace_examples_spec.rb +521 -0
  1504. data/spec/lutaml/xml/type_namespace_integration_spec.rb +332 -0
  1505. data/spec/lutaml/xml/type_namespace_prefix_spec.rb +370 -0
  1506. data/spec/lutaml/xml/type_namespace_resolver_spec.rb +0 -0
  1507. data/spec/lutaml/xml/type_namespace_roundtrip_spec.rb +580 -0
  1508. data/spec/lutaml/xml/w3c_types_spec.rb +376 -0
  1509. data/spec/lutaml/{model → xml}/xml_adapter_spec.rb +64 -17
  1510. data/spec/lutaml/xml/xml_declaration_spec.rb +568 -0
  1511. data/spec/lutaml/xml/xml_element_guard_spec.rb +138 -0
  1512. data/spec/lutaml/{model/xml → xml}/xml_element_spec.rb +1 -1
  1513. data/spec/lutaml/xml/xml_lang_spec.rb +441 -0
  1514. data/spec/lutaml/xml/xml_space_spec.rb +247 -0
  1515. data/spec/lutaml/xml/xml_space_type_spec.rb +161 -0
  1516. data/spec/lutaml/xml/xml_spec.rb +122 -0
  1517. data/spec/parent_root_spec.rb +63 -0
  1518. data/spec/person_spec.rb +9 -9
  1519. data/spec/spec_helper.rb +69 -6
  1520. data/spec/support/test_adapter_config.rb +101 -0
  1521. data/spec/support/test_namespaces.rb +185 -0
  1522. data/spec/support/trace_helper.rb +0 -0
  1523. data/spec/support/xml/schema_helper.rb +15 -0
  1524. data/spec/support/xml/xsd/code_example_validator.rb +393 -0
  1525. data/spec/support/xml_mapping_namespaces.rb +176 -0
  1526. metadata +1475 -100
  1527. data/docs/custom_registers.adoc +0 -228
  1528. data/lib/lutaml/model/hash_adapter/mapping.rb +0 -19
  1529. data/lib/lutaml/model/hash_adapter/mapping_rule.rb +0 -9
  1530. data/lib/lutaml/model/hash_adapter/transform.rb +0 -8
  1531. data/lib/lutaml/model/hash_adapter.rb +0 -21
  1532. data/lib/lutaml/model/json/mapping.rb +0 -19
  1533. data/lib/lutaml/model/json/mapping_rule.rb +0 -9
  1534. data/lib/lutaml/model/json/multi_json_adapter.rb +0 -18
  1535. data/lib/lutaml/model/json/standard_adapter.rb +0 -25
  1536. data/lib/lutaml/model/json/transform.rb +0 -8
  1537. data/lib/lutaml/model/jsonl/mapping.rb +0 -19
  1538. data/lib/lutaml/model/jsonl/mapping_rule.rb +0 -9
  1539. data/lib/lutaml/model/jsonl/transform.rb +0 -19
  1540. data/lib/lutaml/model/schema/xsd_schema.rb +0 -62
  1541. data/lib/lutaml/model/toml/mapping_rule.rb +0 -9
  1542. data/lib/lutaml/model/toml/toml_rb_adapter.rb +0 -18
  1543. data/lib/lutaml/model/toml/tomlib_adapter.rb +0 -19
  1544. data/lib/lutaml/model/toml/transform.rb +0 -8
  1545. data/lib/lutaml/model/xml/builder/nokogiri.rb +0 -101
  1546. data/lib/lutaml/model/xml/builder/oga.rb +0 -183
  1547. data/lib/lutaml/model/xml/builder/ox.rb +0 -121
  1548. data/lib/lutaml/model/xml/document.rb +0 -477
  1549. data/lib/lutaml/model/xml/element.rb +0 -32
  1550. data/lib/lutaml/model/xml/mapping.rb +0 -471
  1551. data/lib/lutaml/model/xml/mapping_rule.rb +0 -149
  1552. data/lib/lutaml/model/xml/nokogiri_adapter.rb +0 -234
  1553. data/lib/lutaml/model/xml/oga/document.rb +0 -20
  1554. data/lib/lutaml/model/xml/oga/element.rb +0 -123
  1555. data/lib/lutaml/model/xml/oga_adapter.rb +0 -172
  1556. data/lib/lutaml/model/xml/ox_adapter.rb +0 -229
  1557. data/lib/lutaml/model/xml/transform.rb +0 -8
  1558. data/lib/lutaml/model/xml/xml_attribute.rb +0 -37
  1559. data/lib/lutaml/model/xml/xml_element.rb +0 -167
  1560. data/lib/lutaml/model/xml/xml_namespace.rb +0 -49
  1561. data/lib/lutaml/model/xml.rb +0 -31
  1562. data/lib/lutaml/model/xml_adapter/element.rb +0 -18
  1563. data/lib/lutaml/model/xml_adapter/nokogiri_adapter.rb +0 -15
  1564. data/lib/lutaml/model/xml_adapter/oga_adapter.rb +0 -21
  1565. data/lib/lutaml/model/xml_adapter/ox_adapter.rb +0 -18
  1566. data/lib/lutaml/model/xml_adapter.rb +0 -7
  1567. data/lib/lutaml/model/yaml/mapping.rb +0 -19
  1568. data/lib/lutaml/model/yaml/mapping_rule.rb +0 -9
  1569. data/lib/lutaml/model/yaml/standard_adapter.rb +0 -28
  1570. data/lib/lutaml/model/yaml/transform.rb +0 -8
  1571. data/lib/lutaml/model/yamls/mapping.rb +0 -19
  1572. data/lib/lutaml/model/yamls/mapping_rule.rb +0 -9
  1573. data/lib/lutaml/model/yamls/standard_adapter.rb +0 -34
  1574. data/lib/lutaml/model/yamls/transform.rb +0 -19
  1575. data/spec/benchmarks/xml_parsing_benchmark_spec.rb +0 -74
  1576. data/spec/fixtures/xml/advanced_test_schema.xsd +0 -134
  1577. data/spec/lutaml/model/namespace_spec.rb +0 -57
  1578. data/spec/lutaml/model/xml_adapter/nokogiri_adapter_spec.rb +0 -56
  1579. data/spec/lutaml/model/xml_adapter/oga_adapter_spec.rb +0 -60
  1580. data/spec/lutaml/model/xml_adapter/ox_adapter_spec.rb +0 -61
  1581. data/spec/lutaml/model/xml_adapter/xml_namespace_spec.rb +0 -368
  1582. data/spec/lutaml/model/xml_mapping_rule_spec.rb +0 -158
  1583. data/spec/lutaml/model/xml_mapping_spec.rb +0 -1318
  1584. data/spec/lutaml/model/xml_spec.rb +0 -63
  1585. /data/spec/lutaml/{model/xml → xml}/root_mappings/nested_child_mappings_spec.rb +0 -0
@@ -1,1318 +0,0 @@
1
- require "spec_helper"
2
-
3
- require "lutaml/model/xml/ox_adapter"
4
- require "lutaml/model/xml/oga_adapter"
5
-
6
- # Define a sample class for testing map_content
7
- class Italic < Lutaml::Model::Serializable
8
- attribute :text, Lutaml::Model::Type::String, collection: true
9
-
10
- xml do
11
- root "i"
12
- map_content to: :text
13
- end
14
- end
15
-
16
- # Define a sample class for testing p tag
17
- class Paragraph < Lutaml::Model::Serializable
18
- attribute :text, Lutaml::Model::Type::String
19
- attribute :paragraph, Paragraph
20
-
21
- xml do
22
- root "p"
23
-
24
- map_content to: :text
25
- map_element "p", to: :paragraph
26
- end
27
- end
28
-
29
- module XmlMapping
30
- class ChildNamespaceNil < Lutaml::Model::Serializable
31
- attribute :element_default_namespace, :string
32
- attribute :element_nil_namespace, :string
33
- attribute :element_new_namespace, :string
34
-
35
- xml do
36
- root "ChildNamespaceNil"
37
- namespace "http://www.omg.org/spec/XMI/20131001", "xmi"
38
-
39
- # this will inherit the namespace from the parent i.e <xmi:ElementDefaultNamespace>
40
- map_element "ElementDefaultNamespace", to: :element_default_namespace
41
-
42
- # this will have nil namesapce applied i.e <ElementNilNamespace>
43
- map_element "ElementNilNamespace", to: :element_nil_namespace,
44
- prefix: nil,
45
- namespace: nil
46
-
47
- # this will have new namespace i.e <new:ElementNewNamespace>
48
- map_element "ElementNewNamespace", to: :element_new_namespace,
49
- prefix: "new",
50
- namespace: "http://www.omg.org/spec/XMI/20161001"
51
- end
52
- end
53
-
54
- class Address < Lutaml::Model::Serializable
55
- attribute :street, ::Lutaml::Model::Type::String, raw: true
56
- attribute :city, :string, raw: true
57
- attribute :text, :string
58
- attribute :address, Address
59
-
60
- xml do
61
- root "address"
62
-
63
- map_element "street", to: :street
64
- map_element "city", to: :city
65
- map_element "text", to: :text
66
- end
67
- end
68
-
69
- class Person < Lutaml::Model::Serializable
70
- attribute :name, Lutaml::Model::Type::String
71
- attribute :address, XmlMapping::Address
72
- end
73
-
74
- class Mfenced < Lutaml::Model::Serializable
75
- attribute :open, :string
76
-
77
- xml do
78
- root "mfenced"
79
- map_attribute "open", to: :open
80
- end
81
- end
82
-
83
- class MmlMath < Lutaml::Model::Serializable
84
- attribute :mfenced, Mfenced
85
-
86
- xml do
87
- root "math"
88
- namespace "http://www.w3.org/1998/Math/MathML"
89
- map_element :mfenced, to: :mfenced
90
- end
91
- end
92
-
93
- class AttributeNamespace < Lutaml::Model::Serializable
94
- attribute :alpha, :string
95
- attribute :beta, :string
96
-
97
- xml do
98
- root "example"
99
- namespace "http://www.check.com", "ns1"
100
-
101
- map_attribute "alpha", to: :alpha,
102
- namespace: "http://www.example.com",
103
- prefix: "ex1"
104
-
105
- map_attribute "beta", to: :beta
106
- end
107
- end
108
-
109
- class SameNameDifferentNamespace < Lutaml::Model::Serializable
110
- attribute :gml_application_schema, :string
111
- attribute :citygml_application_schema, :string
112
- attribute :application_schema, :string
113
- attribute :app, :string
114
-
115
- xml do
116
- root "SameElementName"
117
- namespace "http://www.omg.org/spec/XMI/20131001", nil
118
-
119
- map_element "ApplicationSchema", to: :gml_application_schema,
120
- namespace: "http://www.sparxsystems.com/profiles/GML/1.0",
121
- prefix: "GML"
122
-
123
- map_element "ApplicationSchema", to: :citygml_application_schema,
124
- namespace: "http://www.sparxsystems.com/profiles/CityGML/1.0",
125
- prefix: "CityGML"
126
-
127
- map_element "ApplicationSchema", to: :application_schema
128
-
129
- map_attribute "App", to: :app
130
- end
131
- end
132
-
133
- class AnnotatedElement < Lutaml::Model::Serializable
134
- attribute :idref, :string
135
-
136
- xml do
137
- root "annotatedElement"
138
- map_attribute "idref", to: :idref, namespace: "http://www.omg.org/spec/XMI/20131001", prefix: "xmi"
139
- end
140
- end
141
-
142
- class OwnedComment < Lutaml::Model::Serializable
143
- attribute :annotated_attribute, :string
144
- attribute :annotated_element, AnnotatedElement
145
-
146
- xml do
147
- root "ownedComment"
148
- map_attribute "annotatedElement", to: :annotated_attribute
149
- map_element "annotatedElement", to: :annotated_element, prefix: nil, namespace: nil
150
- end
151
- end
152
-
153
- class Date < Lutaml::Model::Serializable
154
- attribute :type, :string
155
- attribute :text, :string
156
- attribute :content, :string
157
- attribute :from, :string
158
- attribute :to, :string
159
- attribute :on, :string
160
-
161
- xml do
162
- root "date", mixed: true
163
- map_attribute "type", to: :type
164
- map_attribute "text", to: :text
165
- map_content to: :content
166
- map_element "from", to: :from
167
- map_element "to", to: :to
168
- map_element "on", to: :on
169
- end
170
- end
171
-
172
- class OverrideDefaultNamespacePrefix < Lutaml::Model::Serializable
173
- attribute :same_element_name, SameNameDifferentNamespace
174
-
175
- xml do
176
- root "OverrideDefaultNamespacePrefix"
177
- map_element :SameElementName, to: :same_element_name,
178
- namespace: "http://www.omg.org/spec/XMI/20131001",
179
- prefix: "abc"
180
- end
181
- end
182
-
183
- class SchemaLocationOrdered < Lutaml::Model::Serializable
184
- attribute :content, :string
185
- attribute :second, SchemaLocationOrdered
186
-
187
- xml do
188
- root "schemaLocationOrdered", mixed: true
189
-
190
- map_content to: :content
191
- map_element "schemaLocationOrdered", to: :second
192
- end
193
- end
194
-
195
- class ToBeDuplicated < Lutaml::Model::Serializable
196
- attribute :content, :string
197
- attribute :element, :string
198
- attribute :attribute, :string
199
-
200
- xml do
201
- root "ToBeDuplicated"
202
- namespace "https://testing-duplicate", "td"
203
-
204
- map_content to: :content
205
- map_attribute "attribute", to: :attribute
206
- map_element "element", to: :element,
207
- namespace: "https://test-element",
208
- prefix: "te"
209
- end
210
- end
211
-
212
- class SpecialCharContentWithMapAll < Lutaml::Model::Serializable
213
- attribute :all_content, :string
214
-
215
- xml do
216
- root "SpecialCharContentWithMapAll"
217
-
218
- map_all to: :all_content
219
- end
220
- end
221
-
222
- class MapAllWithCustomMethod < Lutaml::Model::Serializable
223
- attribute :all_content, :string
224
-
225
- xml do
226
- root "MapAllWithCustomMethod"
227
-
228
- map_all_content to: :all_content,
229
- with: { to: :content_to_xml, from: :content_from_xml }
230
- end
231
-
232
- def content_to_xml(model, parent, doc)
233
- content = model.all_content.sub(/^<div>/, "").sub(/<\/div>$/, "")
234
- doc.add_xml_fragment(parent, content)
235
- end
236
-
237
- def content_from_xml(model, value)
238
- model.all_content = "<div>#{value}</div>"
239
- end
240
- end
241
-
242
- class WithMapAll < Lutaml::Model::Serializable
243
- attribute :all_content, :string
244
- attribute :attr, :string
245
-
246
- xml do
247
- root "WithMapAll"
248
-
249
- map_all to: :all_content
250
- end
251
- end
252
-
253
- class WithoutMapAll < Lutaml::Model::Serializable
254
- attribute :content, :string
255
-
256
- xml do
257
- root "WithoutMapAll"
258
-
259
- map_content to: :content
260
- end
261
- end
262
-
263
- class WithNestedMapAll < Lutaml::Model::Serializable
264
- attribute :age, :integer
265
- attribute :name, :string
266
- attribute :description, WithMapAll
267
-
268
- xml do
269
- root "WithNestedMapAll"
270
-
271
- map_attribute :age, to: :age
272
- map_element :name, to: :name
273
- map_element :description, to: :description
274
- end
275
- end
276
-
277
- class WithChildExplicitNamespace < Lutaml::Model::Serializable
278
- attribute :with_default_namespace, :string
279
- attribute :with_namespace, :string
280
- attribute :without_namespace, :string
281
-
282
- xml do
283
- root "WithChildExplicitNamespaceNil"
284
- namespace "http://parent-namespace", "pn"
285
-
286
- map_element "DefaultNamespace", to: :with_default_namespace
287
-
288
- map_element "WithNamespace", to: :with_namespace,
289
- namespace: "http://child-namespace",
290
- prefix: "cn"
291
-
292
- map_element "WithoutNamespace", to: :without_namespace,
293
- namespace: nil,
294
- prefix: nil
295
- end
296
- end
297
-
298
- class Documentation < Lutaml::Model::Serializable
299
- attribute :content, :string
300
-
301
- xml do
302
- root "documentation", mixed: true
303
- namespace "http://www.w3.org/2001/XMLSchema", "xsd"
304
-
305
- map_content to: :content
306
- end
307
- end
308
-
309
- class Schema < Lutaml::Model::Serializable
310
- attribute :documentation, Documentation, collection: true
311
-
312
- xml do
313
- root "schema"
314
- namespace "http://www.w3.org/2001/XMLSchema", "xsd"
315
-
316
- map_element :documentation, to: :documentation,
317
- namespace: "http://www.w3.org/2001/XMLSchema",
318
- prefix: "xsd"
319
- end
320
- end
321
- end
322
-
323
- RSpec.describe Lutaml::Model::Xml::Mapping do
324
- shared_examples "having XML Mappings" do |adapter_class|
325
- around do |example|
326
- old_adapter = Lutaml::Model::Config.xml_adapter
327
- Lutaml::Model::Config.xml_adapter = adapter_class
328
-
329
- example.run
330
- ensure
331
- Lutaml::Model::Config.xml_adapter = old_adapter
332
- end
333
-
334
- let(:mapping) { Lutaml::Model::Xml::Mapping.new }
335
-
336
- context "with attribute having namespace" do
337
- input_xml = <<~XML
338
- <ns1:example ex1:alpha="hello"
339
- beta="bye"
340
- xmlns:ns1="http://www.check.com"
341
- xmlns:ex1="http://www.example.com">
342
- </ns1:example>
343
- XML
344
-
345
- it "checks the attribute with and without namespace" do
346
- parsed = XmlMapping::AttributeNamespace.from_xml(input_xml)
347
-
348
- expect(parsed.alpha).to eq("hello")
349
- expect(parsed.beta).to eq("bye")
350
- expect(parsed.to_xml).to be_equivalent_to(input_xml)
351
- end
352
- end
353
-
354
- context "with explicit namespace" do
355
- mml = <<~XML
356
- <math xmlns="http://www.w3.org/1998/Math/MathML">
357
- <mfenced open="("></mfenced>
358
- </math>
359
- XML
360
-
361
- it "nil namespace" do
362
- parsed = XmlMapping::MmlMath.from_xml(mml)
363
- expect(parsed.to_xml).to be_equivalent_to(mml)
364
- end
365
- end
366
-
367
- # Skipping for OX because it does not handle namespaces
368
- context "when overriding child namespace prefix", skip: adapter_class == Lutaml::Model::Xml::OxAdapter do
369
- let(:input_xml) do
370
- <<~XML
371
- <OverrideDefaultNamespacePrefix
372
- xmlns:abc="http://www.omg.org/spec/XMI/20131001"
373
- xmlns:GML="http://www.sparxsystems.com/profiles/GML/1.0"
374
- xmlns:CityGML="http://www.sparxsystems.com/profiles/CityGML/1.0">
375
-
376
- <abc:SameElementName App="hello">
377
- <GML:ApplicationSchema>GML App</GML:ApplicationSchema>
378
- <CityGML:ApplicationSchema>CityGML App</CityGML:ApplicationSchema>
379
- <abc:ApplicationSchema>App</abc:ApplicationSchema>
380
- </abc:SameElementName>
381
- </OverrideDefaultNamespacePrefix>
382
- XML
383
- end
384
-
385
- let(:oga_expected_xml) do
386
- "<OverrideDefaultNamespacePrefix xmlns:abc=\"http://www.omg.org/spec/XMI/20131001\">" \
387
- "<abc:SameElementName App=\"hello\" xmlns:GML=\"http://www.sparxsystems.com/profiles/GML/1.0\" xmlns:CityGML=\"http://www.sparxsystems.com/profiles/CityGML/1.0\">" \
388
- "<GML:ApplicationSchema>GML App</GML:ApplicationSchema>" \
389
- "<CityGML:ApplicationSchema>CityGML App</CityGML:ApplicationSchema>" \
390
- "<abc:ApplicationSchema>App</abc:ApplicationSchema>" \
391
- "</abc:SameElementName>" \
392
- "</OverrideDefaultNamespacePrefix>"
393
- end
394
-
395
- it "expect to round-trips" do
396
- parsed = XmlMapping::OverrideDefaultNamespacePrefix.from_xml(input_xml)
397
- expected_xml = adapter_class.type == "oga" ? oga_expected_xml : input_xml
398
- expect(parsed.to_xml).to be_equivalent_to(expected_xml)
399
- end
400
- end
401
-
402
- context "with same element and attribute name" do
403
- let(:xml_with_element) do
404
- <<~XML
405
- <ownedComment xmlns:xmi="http://www.omg.org/spec/XMI/20131001">
406
- <annotatedElement xmi:idref="ABC"/>
407
- </ownedComment>
408
- XML
409
- end
410
-
411
- let(:xml_with_attribute) do
412
- <<~XML
413
- <ownedComment annotatedElement="test2">
414
- </ownedComment>
415
- XML
416
- end
417
-
418
- let(:xml_with_same_name_attribute_and_element) do
419
- <<~XML
420
- <ownedComment xmlns:xmi="http://www.omg.org/spec/XMI/20131001" annotatedElement="test2">
421
- <annotatedElement xmi:idref="ABC"/>
422
- </ownedComment>
423
- XML
424
- end
425
-
426
- let(:xml) do
427
- <<~XML
428
- <date type="published">
429
- End of December
430
- <on>2020-01</on>
431
- Start of January
432
- </date>
433
- XML
434
- end
435
-
436
- it "parse and serializes the input xml correctly # lutaml/issues/217" do
437
- parsed = XmlMapping::OwnedComment.from_xml(xml_with_element)
438
- serialized = parsed.to_xml
439
-
440
- expect(serialized).to be_equivalent_to(xml_with_element.strip)
441
- end
442
-
443
- it "parse and serialize model correctly" do
444
- parsed = XmlMapping::OwnedComment.from_xml(xml_with_attribute)
445
-
446
- serialized = parsed.to_xml
447
-
448
- expect(serialized).to be_equivalent_to(xml_with_attribute)
449
- end
450
-
451
- it "parse and serialize model correctly with both attribute and element" do
452
- parsed = XmlMapping::OwnedComment.from_xml(xml_with_same_name_attribute_and_element)
453
- serialized = parsed.to_xml
454
-
455
- expect(serialized).to be_equivalent_to(xml_with_same_name_attribute_and_element)
456
- end
457
-
458
- it "testing parse element" do
459
- parsed = XmlMapping::Date.from_xml(xml)
460
- serialized = parsed.to_xml
461
-
462
- expect(serialized).to be_equivalent_to(xml)
463
- end
464
- end
465
-
466
- context "with same name elements" do
467
- let(:input_xml) do
468
- <<~XML
469
- <SameElementName App="hello"
470
- xmlns="http://www.omg.org/spec/XMI/20131001"
471
- xmlns:GML="http://www.sparxsystems.com/profiles/GML/1.0"
472
- xmlns:CityGML="http://www.sparxsystems.com/profiles/CityGML/1.0">
473
-
474
- <GML:ApplicationSchema>GML App</GML:ApplicationSchema>
475
- <CityGML:ApplicationSchema>CityGML App</CityGML:ApplicationSchema>
476
- <ApplicationSchema>App</ApplicationSchema>
477
- </SameElementName>
478
- XML
479
- end
480
-
481
- let(:expected_order) do
482
- nokogiri_pattern = create_pattern_mapping([
483
- ["Text", "text"],
484
- ["Element", "ApplicationSchema"],
485
- ["Text", "text"],
486
- ["Element", "ApplicationSchema"],
487
- ["Text", "text"],
488
- ["Element", "ApplicationSchema"],
489
- ["Text", "text"],
490
- ])
491
-
492
- oga_ox_pattern = create_pattern_mapping([
493
- ["Element", "ApplicationSchema"],
494
- ["Element", "ApplicationSchema"],
495
- ["Element", "ApplicationSchema"],
496
- ])
497
-
498
- {
499
- Lutaml::Model::Xml::NokogiriAdapter => nokogiri_pattern,
500
- Lutaml::Model::Xml::OxAdapter => oga_ox_pattern,
501
- Lutaml::Model::Xml::OgaAdapter => oga_ox_pattern,
502
- }
503
- end
504
-
505
- let(:parsed) do
506
- XmlMapping::SameNameDifferentNamespace.from_xml(input_xml)
507
- end
508
-
509
- def create_pattern_mapping(array)
510
- array.map do |type, text|
511
- Lutaml::Model::Xml::Element.new(type, text)
512
- end
513
- end
514
-
515
- it "citygml_application_schema should be correct" do
516
- expect(parsed.citygml_application_schema).to eq("CityGML App")
517
- end
518
-
519
- it "gml_application_schema should be correct" do
520
- expect(parsed.gml_application_schema).to eq("GML App")
521
- end
522
-
523
- it "application_schema should be correct" do
524
- expect(parsed.application_schema).to eq("App")
525
- end
526
-
527
- it "app should be correct" do
528
- expect(parsed.app).to eq("hello")
529
- end
530
-
531
- it "element_order should be correct" do
532
- expect(parsed.element_order).to eq(expected_order[adapter_class])
533
- end
534
-
535
- it "to_xml should be correct" do
536
- expect(parsed.to_xml).to be_equivalent_to(input_xml)
537
- end
538
- end
539
-
540
- context "with elements have different prefixed namespaces" do
541
- before do
542
- mapping.root("XMI")
543
- mapping.namespace("http://www.omg.org/spec/XMI/20131001")
544
- mapping.map_element(
545
- "ApplicationSchema",
546
- to: :gml_application_schema,
547
- namespace: "http://www.sparxsystems.com/profiles/GML/1.0",
548
- prefix: "GML",
549
- )
550
- mapping.map_element(
551
- "ApplicationSchema",
552
- to: :citygml_application_schema,
553
- namespace: "http://www.sparxsystems.com/profiles/CityGML/1.0",
554
- prefix: "CityGML",
555
- )
556
- mapping.map_element(
557
- "ApplicationSchema",
558
- to: :citygml_application_schema,
559
- namespace: "http://www.sparxsystems.com/profiles/CGML/1.0",
560
- prefix: "CGML",
561
- )
562
- end
563
-
564
- it "maps elements correctly" do
565
- expect(mapping.elements[0].namespace).to eq("http://www.sparxsystems.com/profiles/GML/1.0")
566
- expect(mapping.elements[1].namespace).to eq("http://www.sparxsystems.com/profiles/CityGML/1.0")
567
- expect(mapping.elements[2].namespace).to eq("http://www.sparxsystems.com/profiles/CGML/1.0")
568
- expect(mapping.elements.size).to eq(3)
569
- end
570
- end
571
-
572
- context "with child having explicit namespaces" do
573
- let(:xml) do
574
- <<~XML.strip
575
- <pn:WithChildExplicitNamespaceNil xmlns:pn="http://parent-namespace" xmlns:cn="http://child-namespace">
576
- <pn:DefaultNamespace>default namespace text</pn:DefaultNamespace>
577
- <cn:WithNamespace>explicit namespace text</cn:WithNamespace>
578
- <WithoutNamespace>without namespace text</WithoutNamespace>
579
- </pn:WithChildExplicitNamespaceNil>
580
- XML
581
- end
582
-
583
- let(:parsed) do
584
- XmlMapping::WithChildExplicitNamespace.from_xml(xml)
585
- end
586
-
587
- it "reads element with default namespace" do
588
- expect(parsed.with_default_namespace).to eq("default namespace text")
589
- end
590
-
591
- it "reads element with explicit namespace" do
592
- expect(parsed.with_namespace).to eq("explicit namespace text")
593
- end
594
-
595
- it "reads element without namespace" do
596
- expect(parsed.without_namespace).to eq("without namespace text")
597
- end
598
-
599
- it "round-trips xml with child explicit namespace" do
600
- expect(parsed.to_xml).to be_equivalent_to(xml)
601
- end
602
- end
603
-
604
- context "with default namespace" do
605
- before do
606
- mapping.root("ceramic")
607
- mapping.namespace("https://example.com/ceramic/1.2")
608
- mapping.map_element("type", to: :type)
609
- mapping.map_element("color", to: :color, delegate: :glaze)
610
- mapping.map_element("finish", to: :finish, delegate: :glaze)
611
- end
612
-
613
- it "sets the default namespace for the root element" do
614
- expect(mapping.namespace_uri).to eq("https://example.com/ceramic/1.2")
615
- expect(mapping.namespace_prefix).to be_nil
616
- end
617
-
618
- it "maps elements correctly" do
619
- expect(mapping.elements.size).to eq(3)
620
- expect(mapping.elements[0].name).to eq("type")
621
- expect(mapping.elements[1].delegate).to eq(:glaze)
622
- end
623
- end
624
-
625
- context "with prefixed namespace" do
626
- before do
627
- mapping.root("ceramic")
628
- mapping.namespace("https://example.com/ceramic/1.2", "cera")
629
- mapping.map_element("type", to: :type)
630
- mapping.map_element("color", to: :color, delegate: :glaze)
631
- mapping.map_element("finish", to: :finish, delegate: :glaze)
632
- end
633
-
634
- it "sets the namespace with prefix for the root element" do
635
- expect(mapping.namespace_uri).to eq("https://example.com/ceramic/1.2")
636
- expect(mapping.namespace_prefix).to eq("cera")
637
- end
638
-
639
- it "maps elements correctly" do
640
- expect(mapping.elements.size).to eq(3)
641
- expect(mapping.elements[0].name).to eq("type")
642
- expect(mapping.elements[1].delegate).to eq(:glaze)
643
- end
644
- end
645
-
646
- context "with element-level namespace" do
647
- before do
648
- mapping.root("ceramic")
649
- mapping.map_element(
650
- "type",
651
- to: :type,
652
- namespace: "https://example.com/ceramic/1.2",
653
- prefix: "cera",
654
- )
655
- mapping.map_element("color", to: :color, delegate: :glaze)
656
- mapping.map_element("finish", to: :finish, delegate: :glaze)
657
- end
658
-
659
- it "sets the namespace for individual elements" do
660
- expect(mapping.elements.size).to eq(3)
661
- expect(mapping.elements[0].namespace)
662
- .to eq("https://example.com/ceramic/1.2")
663
- expect(mapping.elements[0].prefix).to eq("cera")
664
- expect(mapping.elements[1].delegate).to eq(:glaze)
665
- end
666
- end
667
-
668
- context "with attribute-level namespace" do
669
- before do
670
- mapping.root("ceramic")
671
- mapping.map_attribute(
672
- "date",
673
- to: :date,
674
- namespace: "https://example.com/ceramic/1.2",
675
- prefix: "cera",
676
- )
677
- mapping.map_element("type", to: :type)
678
- mapping.map_element("color", to: :color, delegate: :glaze)
679
- mapping.map_element("finish", to: :finish, delegate: :glaze)
680
- end
681
-
682
- it "sets the namespace for individual attributes" do
683
- expect(mapping.attributes.size).to eq(1)
684
- expect(mapping.attributes[0].namespace)
685
- .to eq("https://example.com/ceramic/1.2")
686
- expect(mapping.attributes[0].prefix).to eq("cera")
687
- end
688
- end
689
-
690
- context "with nil element-level namespace" do
691
- let(:expected_xml) do
692
- <<~XML
693
- <xmi:ChildNamespaceNil xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:new="http://www.omg.org/spec/XMI/20161001">
694
- <xmi:ElementDefaultNamespace>Default namespace</xmi:ElementDefaultNamespace>
695
- <ElementNilNamespace>No namespace</ElementNilNamespace>
696
- <new:ElementNewNamespace>New namespace</new:ElementNewNamespace>
697
- </xmi:ChildNamespaceNil>
698
- XML
699
- end
700
-
701
- let(:model) do
702
- XmlMapping::ChildNamespaceNil.new(
703
- {
704
- element_default_namespace: "Default namespace",
705
- element_nil_namespace: "No namespace",
706
- element_new_namespace: "New namespace",
707
- },
708
- )
709
- end
710
-
711
- it "expect to apply correct namespaces" do
712
- expect(model.to_xml).to be_equivalent_to(expected_xml)
713
- end
714
- end
715
-
716
- context "with schemaLocation" do
717
- context "when mixed: false" do
718
- let(:xml) do
719
- <<~XML
720
- <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
721
- xsi:schemaLocation="http://www.opengis.net/gml/3.2 http://schemas.opengis.net/gml/3.2.1/gml.xsd">
722
- <p xmlns:xsi="http://another-instance"
723
- xsi:schemaLocation="http://www.opengis.net/gml/3.7">
724
- Some text inside paragraph
725
- </p>
726
- </p>
727
- XML
728
- end
729
-
730
- it "contain schemaLocation attributes" do
731
- expect(Paragraph.from_xml(xml).to_xml).to be_equivalent_to(xml)
732
- end
733
-
734
- it "prints warning if defined explicitly in class" do
735
- error_regex = /\[Lutaml::Model\] WARN: `schemaLocation` is handled by default\. No need to explicitly define at `xml_mapping_spec.rb:\d+`/
736
-
737
- expect do
738
- mapping.map_attribute("schemaLocation", to: :schema_location)
739
- end.to output(error_regex).to_stderr
740
- end
741
- end
742
-
743
- context "when mixed: true" do
744
- let(:xml) do
745
- <<~XML
746
- <schemaLocationOrdered xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
747
- xsi:schemaLocation="http://www.opengis.net/gml/3.2 http://schemas.opengis.net/gml/3.2.1/gml.xsd">
748
- <schemaLocationOrdered xmlns:xsi="http://another-instance"
749
- xsi:schemaLocation="http://www.opengis.net/gml/3.7">
750
- Some text inside paragraph
751
- </schemaLocationOrdered>
752
- </schemaLocationOrdered>
753
- XML
754
- end
755
-
756
- let(:generated_xml) do
757
- XmlMapping::SchemaLocationOrdered.from_xml(xml).to_xml
758
- end
759
-
760
- it "contain schemaLocation attributes" do
761
- expect(generated_xml).to be_equivalent_to(xml)
762
- end
763
- end
764
- end
765
-
766
- context "with multiple schemaLocations" do
767
- let(:nested_schema_location) do
768
- Lutaml::Model::SchemaLocation.new(
769
- schema_location: "http://www.opengis.net/gml/3.7 http://schemas.opengis.net/gml/3.7.1/gml.xsd http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20070417/gmd/gmd.xsd",
770
- prefix: "xsi",
771
- namespace: "http://another-instance",
772
- )
773
- end
774
-
775
- let(:schema_location) do
776
- Lutaml::Model::SchemaLocation.new(
777
- schema_location: "http://www.opengis.net/gml/3.2 http://schemas.opengis.net/gml/3.2.1/gml.xsd http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd",
778
- prefix: "xsi",
779
- )
780
- end
781
-
782
- let(:xml) do
783
- <<~XML
784
- <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
785
- xsi:schemaLocation="http://www.opengis.net/gml/3.2 http://schemas.opengis.net/gml/3.2.1/gml.xsd http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd">
786
- <p xmlns:xsi="http://another-instance"
787
- xsi:schemaLocation="http://www.opengis.net/gml/3.7 http://schemas.opengis.net/gml/3.7.1/gml.xsd http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20070417/gmd/gmd.xsd">
788
- Some text inside paragraph
789
- </p>
790
- </p>
791
- XML
792
- end
793
-
794
- context "when deserializing" do
795
- let(:parsed) { Paragraph.from_xml(xml) }
796
-
797
- it "parses correctly" do
798
- expect(parsed.schema_location.size).to eq(2)
799
- expect(parsed.schema_location[0]).to eq(schema_location[0])
800
- expect(parsed.schema_location[1]).to eq(schema_location[1])
801
- end
802
-
803
- it "parses nested correctly" do
804
- nested_p = parsed.paragraph
805
-
806
- expect(nested_p.schema_location.size).to eq(2)
807
- expect(nested_p.schema_location[0]).to eq(nested_schema_location[0])
808
- expect(nested_p.schema_location[1]).to eq(nested_schema_location[1])
809
- end
810
- end
811
-
812
- context "when serializing" do
813
- let(:paragraph) do
814
- Paragraph.new(
815
- schema_location: schema_location,
816
- paragraph: Paragraph.new(
817
- schema_location: nested_schema_location,
818
- text: ["Some text inside paragraph"],
819
- ),
820
- )
821
- end
822
-
823
- it "creates XML with multiple schemaLocations" do
824
- serialized = paragraph.to_xml
825
- expect(serialized).to be_equivalent_to(xml)
826
- end
827
- end
828
- end
829
-
830
- context "with raw mapping" do
831
- let(:input_xml) do
832
- <<~XML
833
- <person>
834
- <name>John Doe</name>
835
- <address>
836
- <street>
837
- <a>N</a>
838
- <p>adf</p>
839
- </street>
840
- <city><a>M</a></city>
841
- <text>Building near ABC</text>
842
- </address>
843
- </person>
844
- XML
845
- end
846
-
847
- let(:expected_street) do
848
- if Lutaml::Model::Config.xml_adapter == Lutaml::Model::Xml::NokogiriAdapter
849
- "\n <a>N</a>\n <p>adf</p>\n "
850
- else
851
- "<a>N</a><p>adf</p>"
852
- end
853
- end
854
-
855
- let(:model) { XmlMapping::Person.from_xml(input_xml) }
856
-
857
- it "expect to contain raw xml" do
858
- expect(model.address.street).to eq(expected_street)
859
- expect(model.address.city.strip).to eq("<a>M</a>")
860
- end
861
- end
862
-
863
- context "with element named `text`" do
864
- let(:input_xml) do
865
- <<~XML
866
- <address>
867
- <street>
868
- <a>N</a>
869
- <p>adf</p>
870
- </street>
871
- <city><a>M</a></city>
872
- <text>Building near ABC</text>
873
- </address>
874
- XML
875
- end
876
-
877
- let(:model) { XmlMapping::Address.from_xml(input_xml) }
878
-
879
- it "expect to contain raw xml" do
880
- expect(model.text).to eq("Building near ABC")
881
- end
882
- end
883
-
884
- context "with content mapping" do
885
- let(:xml_data) { "<i>my text <b>bold</b> is in italics</i>" }
886
- let(:italic) { Italic.from_xml(xml_data) }
887
-
888
- it "parses the textual content of an XML element" do
889
- expect(italic.text).to eq(["my text ", " is in italics"])
890
- end
891
- end
892
-
893
- context "with p object" do
894
- describe "convert from xml containing p tag" do
895
- let(:xml_data) { "<p>my text for paragraph</p>" }
896
- let(:paragraph) { Paragraph.from_xml(xml_data) }
897
-
898
- it "parses the textual content of an XML element" do
899
- expect(paragraph.text).to eq("my text for paragraph")
900
- end
901
- end
902
-
903
- describe "generate xml with p tag" do
904
- let(:paragraph) { Paragraph.new(text: "my text for paragraph") }
905
- let(:expected_xml) { "<p>my text for paragraph</p>" }
906
-
907
- it "converts to xml correctly" do
908
- expect(paragraph.to_xml.chomp).to eq(expected_xml)
909
- end
910
- end
911
- end
912
-
913
- describe "#deep_dup" do
914
- let(:orig_mappings) do
915
- XmlMapping::ToBeDuplicated.mappings_for(:xml)
916
- end
917
-
918
- let(:dup_mappings) do
919
- orig_mappings.deep_dup
920
- end
921
-
922
- XmlMapping::WithMapAll.mappings_for(:xml).instance_variables.each do |var|
923
- it "duplicates #{var} correctly" do
924
- orig_mapping = XmlMapping::WithMapAll.mappings_for(:xml)
925
- dup_mappings = orig_mapping.deep_dup
926
-
927
- expect(orig_mapping.instance_variable_get(var))
928
- .to eq(dup_mappings.instance_variable_get(var))
929
- end
930
- end
931
-
932
- it "duplicates root_element" do
933
- orig_root = orig_mappings.root_element
934
- dup_root = dup_mappings.root_element
935
-
936
- expect(orig_root).to eq(dup_root)
937
- expect(orig_root.object_id).not_to eq(dup_root.object_id)
938
- end
939
-
940
- it "duplicates namespace_uri" do
941
- orig_namespace_uri = orig_mappings.namespace_uri
942
- dup_namespace_uri = dup_mappings.namespace_uri
943
-
944
- expect(orig_namespace_uri).to eq(dup_namespace_uri)
945
- expect(orig_namespace_uri.object_id)
946
- .not_to eq(dup_namespace_uri.object_id)
947
- end
948
-
949
- it "duplicates namespace_prefix" do
950
- orig_namespace_prefix = orig_mappings.namespace_prefix
951
- dup_namespace_prefix = dup_mappings.namespace_prefix
952
-
953
- expect(orig_namespace_prefix).to eq(dup_namespace_prefix)
954
- expect(orig_namespace_prefix.object_id)
955
- .not_to eq(dup_namespace_prefix.object_id)
956
- end
957
-
958
- context "when duplicating mapping" do
959
- let(:orig_mapping) { orig_mappings.mappings[0] }
960
- let(:dup_mapping) { dup_mappings.mappings[0] }
961
-
962
- it "duplicates custom_methods" do
963
- orig_custom_methods = orig_mapping.custom_methods
964
- dup_custom_methods = dup_mapping.custom_methods
965
-
966
- expect(orig_custom_methods).to eq(dup_custom_methods)
967
- expect(orig_custom_methods.object_id)
968
- .not_to eq(dup_custom_methods.object_id)
969
- end
970
-
971
- it "duplicates default_namespace" do
972
- orig_default_namespace = orig_mapping.default_namespace
973
- dup_default_namespace = dup_mapping.default_namespace
974
-
975
- expect(orig_default_namespace).to eq(dup_default_namespace)
976
- expect(orig_default_namespace.object_id)
977
- .not_to eq(dup_default_namespace.object_id)
978
- end
979
-
980
- it "duplicates delegate" do
981
- # `delegate` is symbol which are constant so object_id will be same
982
- expect(orig_mapping.delegate).to eq(dup_mapping.delegate)
983
- end
984
-
985
- it "duplicates mixed_content" do
986
- # boolean value is constant so object_id will be same
987
- expect(orig_mapping.mixed_content).to eq(dup_mapping.mixed_content)
988
- end
989
-
990
- it "duplicates name" do
991
- orig_name = orig_mapping.name
992
- dup_name = dup_mapping.name
993
-
994
- expect(orig_name).to eq(dup_name)
995
- expect(orig_name.object_id).not_to eq(dup_name.object_id)
996
- end
997
-
998
- it "duplicates namespace" do
999
- orig_namespace = orig_mapping.namespace
1000
- dup_namespace = dup_mapping.namespace
1001
-
1002
- expect(orig_namespace).to eq(dup_namespace)
1003
- expect(orig_namespace.object_id).not_to eq(dup_namespace.object_id)
1004
- end
1005
-
1006
- it "duplicates namespace_set" do
1007
- # boolean value is constant so object_id will be same
1008
- expect(orig_mapping.namespace_set?).to eq(dup_mapping.namespace_set?)
1009
- end
1010
-
1011
- it "duplicates prefix" do
1012
- orig_prefix = orig_mapping.prefix
1013
- dup_prefix = dup_mapping.prefix
1014
-
1015
- expect(orig_prefix).to eq(dup_prefix)
1016
- expect(orig_prefix.object_id).not_to eq(dup_prefix.object_id)
1017
- end
1018
-
1019
- it "duplicates prefix_set" do
1020
- # boolean value is constant so object_id will be same
1021
- expect(orig_mapping.prefix_set?).to eq(dup_mapping.prefix_set?)
1022
- end
1023
-
1024
- it "duplicates render_nil" do
1025
- # boolean value is constant so object_id will be same
1026
- expect(orig_mapping.render_nil?).to eq(dup_mapping.render_nil?)
1027
- end
1028
-
1029
- it "duplicates to" do
1030
- # `to` is symbol which are constant so object_id will be same
1031
- expect(orig_mapping.to).to eq(dup_mapping.to)
1032
- end
1033
-
1034
- it "duplicates attribute" do
1035
- # boolean value is constant so object_id will be same
1036
- expect(orig_mappings.attributes.first.attribute?).to eq(dup_mappings.attributes.first.attribute?)
1037
- end
1038
- end
1039
- end
1040
-
1041
- describe "#map_all" do
1042
- context "when map_all is defined before any other mapping" do
1043
- it "raise error when for map_element with map_all" do
1044
- expect do
1045
- XmlMapping::WithMapAll.xml do
1046
- map_element "ele", to: :ele
1047
- end
1048
- end.to raise_error(
1049
- StandardError,
1050
- "map_element is not allowed, only map_attribute is allowed with map_all",
1051
- )
1052
- end
1053
-
1054
- it "raise error when for map_content with map_all" do
1055
- expect do
1056
- XmlMapping::WithMapAll.xml do
1057
- map_content to: :text
1058
- end
1059
- end.to raise_error(
1060
- StandardError,
1061
- "map_content is not allowed, only map_attribute is allowed with map_all",
1062
- )
1063
- end
1064
-
1065
- it "does not raise error for map_attribute with map_all" do
1066
- expect do
1067
- XmlMapping::WithMapAll.xml do
1068
- map_attribute "attr", to: :attr
1069
- end
1070
- end.not_to raise_error
1071
- end
1072
- end
1073
-
1074
- context "when map_all is defined after other mappings" do
1075
- let(:error_message) { "map_all is not allowed with other mappings" }
1076
-
1077
- it "raise error when for map_element with map_all" do
1078
- expect do
1079
- XmlMapping::WithoutMapAll.xml do
1080
- map_all to: :all_content
1081
- end
1082
- end.to raise_error(StandardError, error_message)
1083
- end
1084
- end
1085
-
1086
- context "with custom methods" do
1087
- let(:inner_xml) do
1088
- "Str<sub>2</sub>text<sup>1</sup>123"
1089
- end
1090
-
1091
- let(:xml) do
1092
- "<MapAllWithCustomMethod>#{inner_xml}</MapAllWithCustomMethod>"
1093
- end
1094
-
1095
- let(:parsed) do
1096
- XmlMapping::MapAllWithCustomMethod.from_xml(xml)
1097
- end
1098
-
1099
- it "uses custom method when parsing XML" do
1100
- expect(parsed.all_content).to eq("<div>#{inner_xml}</div>")
1101
- end
1102
-
1103
- it "generates correct XML" do
1104
- expect(parsed.to_xml.chomp).to be_equivalent_to(xml)
1105
- end
1106
- end
1107
-
1108
- context "without custom methods" do
1109
- let(:inner_xml) do
1110
- if adapter_class.type == "ox"
1111
- "Str<sub>2</sub> text<sup>1</sup> 123"
1112
- else
1113
- "Str<sub>2</sub>text<sup>1</sup>123"
1114
- end
1115
- end
1116
-
1117
- let(:xml) do
1118
- "<WithMapAll>#{inner_xml}</WithMapAll>"
1119
- end
1120
-
1121
- let(:parsed) do
1122
- XmlMapping::WithMapAll.from_xml(xml)
1123
- end
1124
-
1125
- it "maps all the content including tags" do
1126
- expect(parsed.all_content).to eq(inner_xml)
1127
- end
1128
-
1129
- it "round-trips xml" do
1130
- expect(parsed.to_xml.chomp).to eq(xml)
1131
- end
1132
- end
1133
-
1134
- context "when nested content has map_all" do
1135
- let(:description) do
1136
- <<~DESCRIPTION
1137
- I'm a <b>web developer</b> with <strong>years</strong> of <i>experience</i> in many programing languages.
1138
- DESCRIPTION
1139
- end
1140
-
1141
- let(:xml) do
1142
- <<~XML
1143
- <WithNestedMapAll age="23">
1144
- <name>John Doe</name>
1145
- <description>
1146
- #{description}
1147
- </description>
1148
- </WithNestedMapAll>
1149
- XML
1150
- end
1151
-
1152
- let(:parsed) do
1153
- XmlMapping::WithNestedMapAll.from_xml(xml)
1154
- end
1155
-
1156
- it "maps description correctly" do
1157
- expect(parsed.description.all_content.strip).to eq(description.strip)
1158
- end
1159
-
1160
- it "maps name correctly" do
1161
- expect(parsed.name).to eq("John Doe")
1162
- end
1163
-
1164
- it "maps age correctly" do
1165
- expect(parsed.age).to eq(23)
1166
- end
1167
-
1168
- it "round-trips xml" do
1169
- expect(parsed.to_xml).to be_equivalent_to(xml)
1170
- end
1171
- end
1172
-
1173
- context "when special char used in content with map all" do
1174
- let(:xml) do
1175
- <<~XML
1176
- <SpecialCharContentWithMapAll>
1177
- B <p>R&#x0026;C</p>
1178
- C <p>J&#8212;C</p>
1179
- O <p>A &amp; B </p>
1180
- F <p>Z &#x00A9; </p>
1181
- </SpecialCharContentWithMapAll>
1182
- XML
1183
- end
1184
-
1185
- let(:expected_nokogiri_xml) do
1186
- <<~XML.strip
1187
- <SpecialCharContentWithMapAll>
1188
- B <p>R&amp;C</p>
1189
- C <p>J—C</p>
1190
- O <p>A &amp; B </p>
1191
- F <p>Z © </p>
1192
- </SpecialCharContentWithMapAll>
1193
- XML
1194
- end
1195
-
1196
- let(:expected_oga_xml) do
1197
- <<~XML.strip
1198
- <SpecialCharContentWithMapAll>
1199
- B <p>R&amp;C</p>
1200
- C <p>J—C</p>
1201
- O <p>A &amp; B </p>
1202
- F <p>Z © </p></SpecialCharContentWithMapAll>
1203
- XML
1204
- end
1205
-
1206
- let(:expected_ox_xml) do
1207
- "<SpecialCharContentWithMapAll> " \
1208
- "B <p>R&amp;C</p> " \
1209
- "C <p>J—C</p> " \
1210
- "O <p>A &amp; B </p> " \
1211
- "F <p>Z © </p>" \
1212
- "</SpecialCharContentWithMapAll>\n"
1213
- end
1214
-
1215
- let(:expected_xml) do
1216
- if adapter_class.type == "ox"
1217
- expected_ox_xml
1218
- elsif adapter_class.type == "oga"
1219
- expected_oga_xml
1220
- else
1221
- expected_nokogiri_xml
1222
- end
1223
- end
1224
-
1225
- it "round-trips xml" do
1226
- parsed = XmlMapping::SpecialCharContentWithMapAll.from_xml(xml)
1227
- expect(parsed.to_xml).to eq(expected_xml)
1228
- end
1229
- end
1230
-
1231
- context "when mixed content is true and child is content_mapping" do
1232
- let(:xml) do
1233
- <<~XML
1234
- <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
1235
- <xsd:documentation>asdf</xsd:documentation>
1236
- </xsd:schema>
1237
- XML
1238
- end
1239
-
1240
- let(:generated_xml) do
1241
- XmlMapping::Schema.from_xml(xml).to_xml
1242
- end
1243
-
1244
- it "round-trips xml" do
1245
- expect(generated_xml).to be_equivalent_to(xml)
1246
- end
1247
- end
1248
- end
1249
-
1250
- describe "validation errors" do
1251
- let(:mapping) { Lutaml::Model::Xml::Mapping.new }
1252
-
1253
- it "raises error when neither :to nor :with provided" do
1254
- expect do
1255
- mapping.map_element("test")
1256
- end.to raise_error(
1257
- Lutaml::Model::IncorrectMappingArgumentsError,
1258
- ":to or :with argument is required for mapping 'test'",
1259
- )
1260
- end
1261
-
1262
- it "raises error when :with is missing :to or :from keys" do
1263
- expect do
1264
- mapping.map_element("test", with: { to: "value" })
1265
- end.to raise_error(
1266
- Lutaml::Model::IncorrectMappingArgumentsError,
1267
- ":with argument for mapping 'test' requires :to and :from keys",
1268
- )
1269
- end
1270
-
1271
- it "does not raise error when :to is provided" do
1272
- expect do
1273
- mapping.map_element("test", to: :test, with: { from: "value" })
1274
- end.not_to raise_error
1275
- end
1276
-
1277
- describe "map_attribute validations" do
1278
- it "raises error for invalid :with argument" do
1279
- expect do
1280
- mapping.map_attribute("test", with: { from: "value" })
1281
- end.to raise_error(
1282
- Lutaml::Model::IncorrectMappingArgumentsError,
1283
- ":with argument for mapping 'test' requires :to and :from keys",
1284
- )
1285
- end
1286
-
1287
- it "does not raise error if to is provided" do
1288
- expect do
1289
- mapping.map_attribute("test", to: :test, with: { from: "value" })
1290
- end.not_to raise_error
1291
- end
1292
- end
1293
-
1294
- describe "map_content validations" do
1295
- it "raises error when no :to provided" do
1296
- expect do
1297
- mapping.map_content
1298
- end.to raise_error(
1299
- Lutaml::Model::IncorrectMappingArgumentsError,
1300
- ":to or :with argument is required for mapping 'content'",
1301
- )
1302
- end
1303
- end
1304
- end
1305
- end
1306
-
1307
- describe Lutaml::Model::Xml::NokogiriAdapter do
1308
- it_behaves_like "having XML Mappings", described_class
1309
- end
1310
-
1311
- describe Lutaml::Model::Xml::OxAdapter do
1312
- it_behaves_like "having XML Mappings", described_class
1313
- end
1314
-
1315
- describe Lutaml::Model::Xml::OgaAdapter do
1316
- it_behaves_like "having XML Mappings", described_class
1317
- end
1318
- end