lutaml-model 0.7.7 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1573) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/dependent-tests.yml +4 -0
  3. data/.github/workflows/docs.yml +59 -0
  4. data/.github/workflows/downstream-performance.yml +156 -0
  5. data/.github/workflows/performance.yml +33 -0
  6. data/.github/workflows/rake.yml +13 -0
  7. data/.github/workflows/release.yml +5 -0
  8. data/.gitignore +27 -1
  9. data/.rubocop.yml +14 -2
  10. data/.rubocop_todo.yml +574 -88
  11. data/Gemfile +15 -9
  12. data/README.adoc +13522 -6905
  13. data/RELEASE_NOTES.adoc +51 -0
  14. data/Rakefile +2 -0
  15. data/bench/baselines/.gitkeep +0 -0
  16. data/bench/bench_all.rb +52 -0
  17. data/bench/bench_common.rb +147 -0
  18. data/bench/bench_compare.rb +195 -0
  19. data/bench/bench_mml.rb +53 -0
  20. data/bench/bench_niso.rb +54 -0
  21. data/bench/bench_sts.rb +49 -0
  22. data/bench/bench_unitsml.rb +43 -0
  23. data/bench/bench_uniword.rb +69 -0
  24. data/bench/bench_xmi.rb +51 -0
  25. data/bench/gate_config.rb +127 -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 +192 -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 +268 -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 +106 -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/lib/lutaml/{model/hash_adapter → hash_format/adapter}/document.rb +3 -4
  123. data/lib/lutaml/hash_format/adapter/mapping.rb +19 -0
  124. data/lib/lutaml/hash_format/adapter/mapping_rule.rb +9 -0
  125. data/lib/lutaml/{model/hash_adapter → hash_format/adapter}/standard_adapter.rb +3 -3
  126. data/lib/lutaml/hash_format/adapter/transform.rb +9 -0
  127. data/lib/lutaml/hash_format/adapter.rb +13 -0
  128. data/lib/lutaml/hash_format/type/serializers.rb +24 -0
  129. data/lib/lutaml/hash_format.rb +25 -0
  130. data/lib/lutaml/{model/json → json/adapter}/document.rb +3 -3
  131. data/lib/lutaml/json/adapter/mapping.rb +19 -0
  132. data/lib/lutaml/json/adapter/mapping_rule.rb +9 -0
  133. data/lib/lutaml/json/adapter/multi_json_adapter.rb +38 -0
  134. data/lib/lutaml/json/adapter/oj_adapter.rb +38 -0
  135. data/lib/lutaml/json/adapter/standard_adapter.rb +36 -0
  136. data/lib/lutaml/json/adapter/transform.rb +9 -0
  137. data/lib/lutaml/json/adapter.rb +20 -0
  138. data/lib/lutaml/json/schema/json_schema.rb +62 -0
  139. data/lib/lutaml/json/schema.rb +9 -0
  140. data/lib/lutaml/json/type/serializers.rb +72 -0
  141. data/lib/lutaml/json.rb +58 -0
  142. data/lib/lutaml/{model/jsonl → jsonl/adapter}/document.rb +2 -2
  143. data/lib/lutaml/jsonl/adapter/mapping.rb +19 -0
  144. data/lib/lutaml/jsonl/adapter/mapping_rule.rb +9 -0
  145. data/lib/lutaml/{model/jsonl → jsonl/adapter}/standard_adapter.rb +5 -4
  146. data/lib/lutaml/jsonl/adapter/transform.rb +26 -0
  147. data/lib/lutaml/jsonl/adapter.rb +13 -0
  148. data/lib/lutaml/jsonl.rb +21 -0
  149. data/lib/lutaml/key_value/adapter/hash/document.rb +13 -0
  150. data/lib/lutaml/key_value/adapter/hash/mapping.rb +19 -0
  151. data/lib/lutaml/key_value/adapter/hash/mapping_rule.rb +9 -0
  152. data/lib/lutaml/key_value/adapter/hash/standard_adapter.rb +19 -0
  153. data/lib/lutaml/key_value/adapter/hash/transform.rb +10 -0
  154. data/lib/lutaml/key_value/adapter/hash.rb +15 -0
  155. data/lib/lutaml/key_value/adapter/json/document.rb +16 -0
  156. data/lib/lutaml/key_value/adapter/json/mapping.rb +24 -0
  157. data/lib/lutaml/key_value/adapter/json/mapping_rule.rb +14 -0
  158. data/lib/lutaml/key_value/adapter/json/multi_json_adapter.rb +43 -0
  159. data/lib/lutaml/key_value/adapter/json/oj_adapter.rb +43 -0
  160. data/lib/lutaml/key_value/adapter/json/standard_adapter.rb +41 -0
  161. data/lib/lutaml/key_value/adapter/json/transform.rb +14 -0
  162. data/lib/lutaml/key_value/adapter/json.rb +24 -0
  163. data/lib/lutaml/key_value/adapter/jsonl/document.rb +16 -0
  164. data/lib/lutaml/key_value/adapter/jsonl/mapping.rb +19 -0
  165. data/lib/lutaml/key_value/adapter/jsonl/mapping_rule.rb +9 -0
  166. data/lib/lutaml/key_value/adapter/jsonl/standard_adapter.rb +36 -0
  167. data/lib/lutaml/key_value/adapter/jsonl/transform.rb +26 -0
  168. data/lib/lutaml/key_value/adapter/jsonl.rb +17 -0
  169. data/lib/lutaml/key_value/adapter/toml/document.rb +13 -0
  170. data/lib/lutaml/key_value/adapter/toml/mapping.rb +28 -0
  171. data/lib/lutaml/key_value/adapter/toml/mapping_rule.rb +9 -0
  172. data/lib/lutaml/key_value/adapter/toml/toml_rb_adapter.rb +40 -0
  173. data/lib/lutaml/key_value/adapter/toml/tomlib_adapter.rb +46 -0
  174. data/lib/lutaml/key_value/adapter/toml/transform.rb +10 -0
  175. data/lib/lutaml/key_value/adapter/toml.rb +21 -0
  176. data/lib/lutaml/key_value/adapter/yaml/document.rb +12 -0
  177. data/lib/lutaml/key_value/adapter/yaml/mapping.rb +19 -0
  178. data/lib/lutaml/key_value/adapter/yaml/mapping_rule.rb +9 -0
  179. data/lib/lutaml/key_value/adapter/yaml/standard_adapter.rb +41 -0
  180. data/lib/lutaml/key_value/adapter/yaml/transform.rb +10 -0
  181. data/lib/lutaml/key_value/adapter/yaml.rb +17 -0
  182. data/lib/lutaml/key_value/adapter/yamls/document.rb +16 -0
  183. data/lib/lutaml/key_value/adapter/yamls/mapping.rb +19 -0
  184. data/lib/lutaml/key_value/adapter/yamls/mapping_rule.rb +9 -0
  185. data/lib/lutaml/key_value/adapter/yamls/standard_adapter.rb +37 -0
  186. data/lib/lutaml/key_value/adapter/yamls/transform.rb +26 -0
  187. data/lib/lutaml/key_value/adapter/yamls.rb +17 -0
  188. data/lib/lutaml/key_value/adapter.rb +14 -0
  189. data/lib/lutaml/key_value/data_model/element.rb +222 -0
  190. data/lib/lutaml/key_value/data_model.rb +14 -0
  191. data/lib/lutaml/{model/key_value_document.rb → key_value/document.rb} +2 -2
  192. data/lib/lutaml/{model/mapping/key_value_mapping.rb → key_value/mapping.rb} +81 -43
  193. data/lib/lutaml/{model/mapping/key_value_mapping_rule.rb → key_value/mapping_rule.rb} +9 -10
  194. data/lib/lutaml/{model/transform/key_value_transform.rb → key_value/transform.rb} +111 -65
  195. data/lib/lutaml/key_value/transformation/collection_serializer.rb +575 -0
  196. data/lib/lutaml/key_value/transformation/rule_compiler.rb +294 -0
  197. data/lib/lutaml/key_value/transformation/value_serializer.rb +268 -0
  198. data/lib/lutaml/key_value/transformation.rb +1071 -0
  199. data/lib/lutaml/key_value/transformation_builder.rb +30 -0
  200. data/lib/lutaml/key_value.rb +24 -0
  201. data/lib/lutaml/model/attribute.rb +515 -121
  202. data/lib/lutaml/model/attribute_validator.rb +288 -0
  203. data/lib/lutaml/model/cached_type_resolver/concurrent_map_cache.rb +46 -0
  204. data/lib/lutaml/model/cached_type_resolver/mutex_hash_cache.rb +51 -0
  205. data/lib/lutaml/model/cached_type_resolver.rb +144 -0
  206. data/lib/lutaml/model/choice.rb +230 -13
  207. data/lib/lutaml/model/cli.rb +75 -121
  208. data/lib/lutaml/model/collection.rb +510 -43
  209. data/lib/lutaml/model/collection_handler.rb +106 -0
  210. data/lib/lutaml/model/comparable_model.rb +11 -3
  211. data/lib/lutaml/model/comparable_nil.rb +0 -2
  212. data/lib/lutaml/model/compiled_rule.rb +208 -0
  213. data/lib/lutaml/model/config.rb +56 -88
  214. data/lib/lutaml/model/configuration.rb +323 -0
  215. data/lib/lutaml/model/consolidation/attribute_grouper.rb +44 -0
  216. data/lib/lutaml/model/consolidation/dispatcher.rb +45 -0
  217. data/lib/lutaml/model/consolidation/engine.rb +33 -0
  218. data/lib/lutaml/model/consolidation/pattern_chunker.rb +87 -0
  219. data/lib/lutaml/model/consolidation_map.rb +68 -0
  220. data/lib/lutaml/model/consolidation_rule/dispatch_block.rb +34 -0
  221. data/lib/lutaml/model/consolidation_rule/gather_rule.rb +17 -0
  222. data/lib/lutaml/model/consolidation_rule/pattern_content_rule.rb +15 -0
  223. data/lib/lutaml/model/consolidation_rule/pattern_element_rule.rb +17 -0
  224. data/lib/lutaml/model/consolidation_rule.rb +27 -0
  225. data/lib/lutaml/model/constants.rb +5 -3
  226. data/lib/lutaml/model/context_registry.rb +208 -0
  227. data/lib/lutaml/model/error/element_count_out_of_range_error.rb +13 -7
  228. data/lib/lutaml/model/error/format_adapter_not_specified_error.rb +25 -0
  229. data/lib/lutaml/model/error/invalid_attribute_type_error.rb +98 -0
  230. data/lib/lutaml/model/error/invalid_format_error.rb +11 -0
  231. data/lib/lutaml/model/error/liquid_class_not_found_error.rb +9 -0
  232. data/lib/lutaml/model/error/mapping_already_exists_error.rb +6 -0
  233. data/lib/lutaml/model/error/mapping_attribute_missing_error.rb +6 -0
  234. data/lib/lutaml/model/error/mapping_attribute_type_error.rb +6 -0
  235. data/lib/lutaml/model/error/mixed_content_collection_error.rb +17 -0
  236. data/lib/lutaml/model/error/no_attributes_defined_liquid_error.rb +9 -0
  237. data/lib/lutaml/model/error/no_mapping_found_error.rb +9 -0
  238. data/lib/lutaml/model/error/required_attribute_missing_error.rb +9 -0
  239. data/lib/lutaml/model/error/reverse_transform_block_not_defined_error.rb +6 -0
  240. data/lib/lutaml/model/error/reverse_transformation_declaration_error.rb +6 -0
  241. data/lib/lutaml/model/error/sorting_configuration_conflict_error.rb +9 -0
  242. data/lib/lutaml/model/error/transform_block_not_defined_error.rb +6 -0
  243. data/lib/lutaml/model/error/type.rb +17 -0
  244. data/lib/lutaml/model/error/undefined_attribute_error.rb +9 -0
  245. data/lib/lutaml/model/error/unknown_adapter_type_error.rb +82 -3
  246. data/lib/lutaml/model/error/unknown_type_error.rb +25 -2
  247. data/lib/lutaml/model/error/unresolvable_type_error.rb +27 -0
  248. data/lib/lutaml/model/error.rb +2 -33
  249. data/lib/lutaml/model/errors.rb +4 -2
  250. data/lib/lutaml/model/finalization_cache.rb +51 -0
  251. data/lib/lutaml/model/format_registry.rb +236 -2
  252. data/lib/lutaml/model/global_context.rb +446 -0
  253. data/lib/lutaml/model/global_register.rb +106 -5
  254. data/lib/lutaml/model/hash.rb +15 -0
  255. data/lib/lutaml/model/import_registry.rb +250 -0
  256. data/lib/lutaml/model/instrumentation.rb +304 -0
  257. data/lib/lutaml/model/json.rb +17 -13
  258. data/lib/lutaml/model/jsonl.rb +7 -13
  259. data/lib/lutaml/model/liquefiable.rb +100 -12
  260. data/lib/lutaml/model/liquid/mapping.rb +30 -0
  261. data/lib/lutaml/model/liquid.rb +9 -0
  262. data/lib/lutaml/model/mapping/listener.rb +124 -0
  263. data/lib/lutaml/model/mapping/mapping.rb +99 -1
  264. data/lib/lutaml/model/mapping/mapping_rule.rb +172 -17
  265. data/lib/lutaml/model/mapping/model_mapping.rb +133 -0
  266. data/lib/lutaml/model/mapping/model_mapping_rule.rb +57 -0
  267. data/lib/lutaml/model/mapping_hash.rb +3 -1
  268. data/lib/lutaml/model/model_transformer.rb +101 -0
  269. data/lib/lutaml/model/one_entry_cache.rb +57 -0
  270. data/lib/lutaml/model/organization.rb +29 -0
  271. data/lib/lutaml/model/register/model_tree_importer.rb +88 -0
  272. data/lib/lutaml/model/register/namespace_binding.rb +92 -0
  273. data/lib/lutaml/model/register.rb +500 -35
  274. data/lib/lutaml/model/registrable.rb +2 -0
  275. data/lib/lutaml/model/render_policy.rb +154 -0
  276. data/lib/lutaml/model/runtime_compatibility.rb +95 -0
  277. data/lib/lutaml/model/schema/base_schema.rb +1 -3
  278. data/lib/lutaml/model/schema/decorators/attribute.rb +3 -1
  279. data/lib/lutaml/model/schema/decorators/choices.rb +0 -2
  280. data/lib/lutaml/model/schema/decorators/class_definition.rb +4 -5
  281. data/lib/lutaml/model/schema/decorators/definition_collection.rb +7 -7
  282. data/lib/lutaml/model/schema/decorators.rb +15 -0
  283. data/lib/lutaml/model/schema/generator/definition.rb +4 -3
  284. data/lib/lutaml/model/schema/generator/definitions_collection.rb +4 -3
  285. data/lib/lutaml/model/schema/generator/properties_collection.rb +7 -5
  286. data/lib/lutaml/model/schema/generator/property.rb +5 -1
  287. data/lib/lutaml/model/schema/generator.rb +15 -0
  288. data/lib/lutaml/model/schema/helpers.rb +11 -0
  289. data/lib/lutaml/model/schema/json_schema.rb +9 -53
  290. data/lib/lutaml/model/schema/renderer.rb +19 -17
  291. data/lib/lutaml/model/schema/schema_builder/nokogiri.rb +41 -0
  292. data/lib/lutaml/model/schema/schema_builder/oga.rb +92 -0
  293. data/lib/lutaml/model/schema/shared_methods.rb +2 -2
  294. data/lib/lutaml/model/schema/xml_compiler/attribute.rb +33 -12
  295. data/lib/lutaml/model/schema/xml_compiler/attribute_group.rb +3 -1
  296. data/lib/lutaml/model/schema/xml_compiler/choice.rb +4 -2
  297. data/lib/lutaml/model/schema/xml_compiler/complex_type.rb +73 -36
  298. data/lib/lutaml/model/schema/xml_compiler/element.rb +18 -1
  299. data/lib/lutaml/model/schema/xml_compiler/group.rb +20 -4
  300. data/lib/lutaml/model/schema/xml_compiler/registry_generator.rb +127 -0
  301. data/lib/lutaml/model/schema/xml_compiler/restriction.rb +5 -2
  302. data/lib/lutaml/model/schema/xml_compiler/sequence.rb +6 -2
  303. data/lib/lutaml/model/schema/xml_compiler/simple_content.rb +7 -3
  304. data/lib/lutaml/model/schema/xml_compiler/simple_type.rb +127 -51
  305. data/lib/lutaml/model/schema/xml_compiler/xml_namespace_class.rb +110 -0
  306. data/lib/lutaml/model/schema/xml_compiler.rb +256 -82
  307. data/lib/lutaml/model/schema/yaml_schema.rb +10 -50
  308. data/lib/lutaml/model/schema.rb +49 -14
  309. data/lib/lutaml/model/schema_location.rb +12 -60
  310. data/lib/lutaml/model/sequence.rb +102 -30
  311. data/lib/lutaml/model/serializable.rb +1 -3
  312. data/lib/lutaml/model/serialization_adapter.rb +2 -0
  313. data/lib/lutaml/model/serialize/attribute_definition.rb +229 -0
  314. data/lib/lutaml/model/serialize/builder.rb +169 -0
  315. data/lib/lutaml/model/serialize/enum_handling.rb +124 -0
  316. data/lib/lutaml/model/serialize/format_conversion.rb +298 -0
  317. data/lib/lutaml/model/serialize/initialization.rb +308 -0
  318. data/lib/lutaml/model/serialize/model_import.rb +357 -0
  319. data/lib/lutaml/model/serialize/transformation_builder.rb +127 -0
  320. data/lib/lutaml/model/serialize/value_mapping.rb +200 -0
  321. data/lib/lutaml/model/serialize.rb +175 -580
  322. data/lib/lutaml/model/services/base.rb +2 -2
  323. data/lib/lutaml/model/services/default_value_resolver.rb +60 -0
  324. data/lib/lutaml/model/services/logger.rb +10 -7
  325. data/lib/lutaml/model/services/rule_value_extractor.rb +22 -36
  326. data/lib/lutaml/model/services/transformer.rb +50 -9
  327. data/lib/lutaml/model/services/type/validator/string.rb +3 -2
  328. data/lib/lutaml/model/services/type/validator/symbol.rb +30 -0
  329. data/lib/lutaml/model/services/type/validator.rb +5 -2
  330. data/lib/lutaml/model/services/type.rb +9 -0
  331. data/lib/lutaml/model/services/validator.rb +1 -3
  332. data/lib/lutaml/model/services.rb +12 -5
  333. data/lib/lutaml/model/store.rb +59 -0
  334. data/lib/lutaml/model/toml.rb +24 -18
  335. data/lib/lutaml/model/transform/xml_transform.rb +4 -227
  336. data/lib/lutaml/model/transform.rb +49 -17
  337. data/lib/lutaml/model/transformation.rb +84 -0
  338. data/lib/lutaml/model/transformation_builder.rb +55 -0
  339. data/lib/lutaml/model/transformation_registry.rb +314 -0
  340. data/lib/lutaml/model/type/base64_binary.rb +58 -0
  341. data/lib/lutaml/model/type/boolean.rb +9 -16
  342. data/lib/lutaml/model/type/date.rb +49 -9
  343. data/lib/lutaml/model/type/date_time.rb +30 -18
  344. data/lib/lutaml/model/type/decimal.rb +28 -9
  345. data/lib/lutaml/model/type/duration.rb +82 -0
  346. data/lib/lutaml/model/type/float.rb +12 -13
  347. data/lib/lutaml/model/type/hash.rb +10 -17
  348. data/lib/lutaml/model/type/hex_binary.rb +56 -0
  349. data/lib/lutaml/model/type/integer.rb +19 -1
  350. data/lib/lutaml/model/type/qname.rb +85 -0
  351. data/lib/lutaml/model/type/reference.rb +76 -0
  352. data/lib/lutaml/model/type/string.rb +18 -35
  353. data/lib/lutaml/model/type/symbol.rb +67 -0
  354. data/lib/lutaml/model/type/time.rb +19 -22
  355. data/lib/lutaml/model/type/time_without_date.rb +18 -18
  356. data/lib/lutaml/model/type/uninitialized_class_guard.rb +36 -0
  357. data/lib/lutaml/model/type/uri.rb +51 -0
  358. data/lib/lutaml/model/type/value.rb +52 -5
  359. data/lib/lutaml/model/type.rb +98 -13
  360. data/lib/lutaml/model/type_context.rb +279 -0
  361. data/lib/lutaml/model/type_registry.rb +165 -0
  362. data/lib/lutaml/model/type_resolver.rb +185 -0
  363. data/lib/lutaml/model/type_substitution.rb +117 -0
  364. data/lib/lutaml/model/uninitialized_class.rb +1 -1
  365. data/lib/lutaml/model/utils.rb +110 -9
  366. data/lib/lutaml/model/validation.rb +50 -7
  367. data/lib/lutaml/model/value_transformer.rb +25 -0
  368. data/lib/lutaml/model/version.rb +1 -1
  369. data/lib/lutaml/model/yaml.rb +7 -13
  370. data/lib/lutaml/model/yamls.rb +7 -13
  371. data/lib/lutaml/model.rb +227 -25
  372. data/lib/lutaml/{model/toml → toml/adapter}/document.rb +3 -4
  373. data/lib/lutaml/{model/toml → toml/adapter}/mapping.rb +7 -6
  374. data/lib/lutaml/toml/adapter/mapping_rule.rb +9 -0
  375. data/lib/lutaml/toml/adapter/toml_rb_adapter.rb +38 -0
  376. data/lib/lutaml/toml/adapter/tomlib_adapter.rb +54 -0
  377. data/lib/lutaml/toml/adapter/transform.rb +9 -0
  378. data/lib/lutaml/toml/adapter.rb +19 -0
  379. data/lib/lutaml/toml/type/serializers.rb +71 -0
  380. data/lib/lutaml/toml.rb +41 -0
  381. data/lib/lutaml/xml/adapter/adapter_helpers.rb +149 -0
  382. data/lib/lutaml/xml/adapter/base_adapter.rb +672 -0
  383. data/lib/lutaml/xml/adapter/namespace_data.rb +73 -0
  384. data/lib/lutaml/xml/adapter/nokogiri_adapter.rb +1115 -0
  385. data/lib/lutaml/xml/adapter/oga_adapter.rb +849 -0
  386. data/lib/lutaml/xml/adapter/ox_adapter.rb +891 -0
  387. data/lib/lutaml/xml/adapter/rexml_adapter.rb +869 -0
  388. data/lib/lutaml/xml/adapter/xml_serialization.rb +145 -0
  389. data/lib/lutaml/xml/adapter.rb +20 -0
  390. data/lib/lutaml/xml/adapter_element.rb +185 -0
  391. data/lib/lutaml/xml/adapter_loader.rb +53 -0
  392. data/lib/lutaml/xml/attribute_namespace_resolver.rb +139 -0
  393. data/lib/lutaml/xml/blank_namespace.rb +51 -0
  394. data/lib/lutaml/xml/blank_namespace_handler.rb +50 -0
  395. data/lib/lutaml/xml/builder/base.rb +215 -0
  396. data/lib/lutaml/xml/builder/nokogiri.rb +12 -0
  397. data/lib/lutaml/xml/builder/oga.rb +15 -0
  398. data/lib/lutaml/xml/builder/ox.rb +15 -0
  399. data/lib/lutaml/xml/builder/rexml.rb +15 -0
  400. data/lib/lutaml/xml/builder.rb +16 -0
  401. data/lib/lutaml/xml/configurable.rb +214 -0
  402. data/lib/lutaml/xml/data_model.rb +257 -0
  403. data/lib/lutaml/xml/decisions/decision.rb +103 -0
  404. data/lib/lutaml/xml/decisions/decision_context.rb +225 -0
  405. data/lib/lutaml/xml/decisions/decision_engine.rb +67 -0
  406. data/lib/lutaml/xml/decisions/decision_rule.rb +54 -0
  407. data/lib/lutaml/xml/decisions/element_prefix_resolver.rb +85 -0
  408. data/lib/lutaml/xml/decisions/rules/attribute_usage_rule.rb +37 -0
  409. data/lib/lutaml/xml/decisions/rules/default_preference_rule.rb +62 -0
  410. data/lib/lutaml/xml/decisions/rules/element_form_default_rule.rb +66 -0
  411. data/lib/lutaml/xml/decisions/rules/element_form_default_unqualified_rule.rb +73 -0
  412. data/lib/lutaml/xml/decisions/rules/element_form_option_rule.rb +83 -0
  413. data/lib/lutaml/xml/decisions/rules/explicit_option_rule.rb +57 -0
  414. data/lib/lutaml/xml/decisions/rules/format_preservation_rule.rb +74 -0
  415. data/lib/lutaml/xml/decisions/rules/hoisted_on_parent_rule.rb +60 -0
  416. data/lib/lutaml/xml/decisions/rules/inherit_from_parent_rule.rb +52 -0
  417. data/lib/lutaml/xml/decisions/rules/inherit_parent_prefix_rule.rb +69 -0
  418. data/lib/lutaml/xml/decisions/rules/namespace_scope_rule.rb +54 -0
  419. data/lib/lutaml/xml/decisions/rules/reuse_parent_prefix_rule.rb +78 -0
  420. data/lib/lutaml/xml/decisions/rules/used_prefix_rule.rb +70 -0
  421. data/lib/lutaml/xml/decisions/rules.rb +39 -0
  422. data/lib/lutaml/xml/decisions.rb +15 -0
  423. data/lib/lutaml/xml/declaration_handler.rb +217 -0
  424. data/lib/lutaml/xml/declaration_plan/attribute_node.rb +81 -0
  425. data/lib/lutaml/xml/declaration_plan/element_node.rb +101 -0
  426. data/lib/lutaml/xml/declaration_plan.rb +480 -0
  427. data/lib/lutaml/xml/declaration_plan_query.rb +105 -0
  428. data/lib/lutaml/xml/declaration_planner.rb +1849 -0
  429. data/lib/lutaml/xml/doctype_extractor.rb +51 -0
  430. data/lib/lutaml/xml/document.rb +380 -0
  431. data/lib/lutaml/xml/element.rb +93 -0
  432. data/lib/lutaml/xml/element_prefix_resolver.rb +50 -0
  433. data/lib/lutaml/xml/encoding_normalizer.rb +54 -0
  434. data/lib/lutaml/xml/error/invalid_namespace_error.rb +46 -0
  435. data/lib/lutaml/xml/error/invalid_xsd_type_error.rb +43 -0
  436. data/lib/lutaml/xml/error/namespace_mismatch_error.rb +53 -0
  437. data/lib/lutaml/xml/error/xml_configuration_error.rb +17 -0
  438. data/lib/lutaml/xml/error/xml_error.rb +21 -0
  439. data/lib/lutaml/xml/format_chooser.rb +214 -0
  440. data/lib/lutaml/xml/hoisting_algorithm.rb +234 -0
  441. data/lib/lutaml/xml/listener.rb +33 -0
  442. data/lib/lutaml/xml/mapping.rb +1470 -0
  443. data/lib/lutaml/xml/mapping_rule.rb +565 -0
  444. data/lib/lutaml/xml/model_transform.rb +944 -0
  445. data/lib/lutaml/xml/namespace.rb +435 -0
  446. data/lib/lutaml/xml/namespace_class_registry.rb +144 -0
  447. data/lib/lutaml/xml/namespace_collector.rb +611 -0
  448. data/lib/lutaml/xml/namespace_declaration.rb +202 -0
  449. data/lib/lutaml/xml/namespace_declaration_builder.rb +67 -0
  450. data/lib/lutaml/xml/namespace_declaration_data.rb +182 -0
  451. data/lib/lutaml/xml/namespace_inheritance_resolver.rb +142 -0
  452. data/lib/lutaml/xml/namespace_inheritance_strategy.rb +26 -0
  453. data/lib/lutaml/xml/namespace_needs.rb +213 -0
  454. data/lib/lutaml/xml/namespace_resolution_strategy.rb +230 -0
  455. data/lib/lutaml/xml/namespace_resolver.rb +219 -0
  456. data/lib/lutaml/xml/namespace_scope_config.rb +109 -0
  457. data/lib/lutaml/xml/namespace_type_resolver.rb +135 -0
  458. data/lib/lutaml/xml/namespace_usage.rb +121 -0
  459. data/lib/lutaml/xml/nokogiri/element.rb +34 -0
  460. data/lib/lutaml/xml/nokogiri.rb +10 -0
  461. data/lib/lutaml/xml/oga/element.rb +15 -0
  462. data/lib/lutaml/xml/oga.rb +10 -0
  463. data/lib/lutaml/xml/ox/element.rb +15 -0
  464. data/lib/lutaml/xml/ox.rb +10 -0
  465. data/lib/lutaml/xml/parsed_namespace_declaration.rb +129 -0
  466. data/lib/lutaml/xml/parsed_namespace_set.rb +149 -0
  467. data/lib/lutaml/xml/polymorphic_value_handler.rb +41 -0
  468. data/lib/lutaml/xml/qualified_inheritance_strategy.rb +27 -0
  469. data/lib/lutaml/xml/rexml/element.rb +15 -0
  470. data/lib/lutaml/xml/rexml.rb +10 -0
  471. data/lib/lutaml/xml/schema/builder/nokogiri.rb +41 -0
  472. data/lib/lutaml/xml/schema/builder/oga.rb +92 -0
  473. data/lib/lutaml/xml/schema/builder.rb +59 -0
  474. data/lib/lutaml/xml/schema/builtin_types.rb +112 -0
  475. data/lib/lutaml/{model → xml}/schema/relaxng_schema.rb +9 -4
  476. data/lib/lutaml/xml/schema/xsd/all.rb +31 -0
  477. data/lib/lutaml/xml/schema/xsd/annotation.rb +31 -0
  478. data/lib/lutaml/xml/schema/xsd/any.rb +33 -0
  479. data/lib/lutaml/xml/schema/xsd/any_attribute.rb +29 -0
  480. data/lib/lutaml/xml/schema/xsd/appinfo.rb +25 -0
  481. data/lib/lutaml/xml/schema/xsd/attribute.rb +78 -0
  482. data/lib/lutaml/xml/schema/xsd/attribute_group.rb +89 -0
  483. data/lib/lutaml/xml/schema/xsd/base.rb +267 -0
  484. data/lib/lutaml/xml/schema/xsd/choice.rb +68 -0
  485. data/lib/lutaml/xml/schema/xsd/complex_content.rb +39 -0
  486. data/lib/lutaml/xml/schema/xsd/complex_type.rb +157 -0
  487. data/lib/lutaml/xml/schema/xsd/documentation.rb +26 -0
  488. data/lib/lutaml/xml/schema/xsd/element.rb +117 -0
  489. data/lib/lutaml/xml/schema/xsd/enumeration.rb +25 -0
  490. data/lib/lutaml/xml/schema/xsd/errors/enhanced_error.rb +142 -0
  491. data/lib/lutaml/xml/schema/xsd/errors/error_context.rb +67 -0
  492. data/lib/lutaml/xml/schema/xsd/errors/message_builder.rb +103 -0
  493. data/lib/lutaml/xml/schema/xsd/errors/suggestion.rb +67 -0
  494. data/lib/lutaml/xml/schema/xsd/errors/troubleshooters/namespace_troubleshooter.rb +96 -0
  495. data/lib/lutaml/xml/schema/xsd/errors/troubleshooters/troubleshooting_handler.rb +70 -0
  496. data/lib/lutaml/xml/schema/xsd/errors.rb +148 -0
  497. data/lib/lutaml/xml/schema/xsd/extension_complex_content.rb +63 -0
  498. data/lib/lutaml/xml/schema/xsd/extension_simple_content.rb +48 -0
  499. data/lib/lutaml/xml/schema/xsd/field.rb +25 -0
  500. data/lib/lutaml/xml/schema/xsd/file_validation_result.rb +55 -0
  501. data/lib/lutaml/xml/schema/xsd/fraction_digits.rb +29 -0
  502. data/lib/lutaml/xml/schema/xsd/glob.rb +105 -0
  503. data/lib/lutaml/xml/schema/xsd/group.rb +79 -0
  504. data/lib/lutaml/xml/schema/xsd/import.rb +33 -0
  505. data/lib/lutaml/xml/schema/xsd/include.rb +31 -0
  506. data/lib/lutaml/xml/schema/xsd/key.rb +32 -0
  507. data/lib/lutaml/xml/schema/xsd/keyref.rb +33 -0
  508. data/lib/lutaml/xml/schema/xsd/length.rb +27 -0
  509. data/lib/lutaml/xml/schema/xsd/list.rb +28 -0
  510. data/lib/lutaml/xml/schema/xsd/max_exclusive.rb +25 -0
  511. data/lib/lutaml/xml/schema/xsd/max_inclusive.rb +23 -0
  512. data/lib/lutaml/xml/schema/xsd/max_length.rb +25 -0
  513. data/lib/lutaml/xml/schema/xsd/min_exclusive.rb +25 -0
  514. data/lib/lutaml/xml/schema/xsd/min_inclusive.rb +23 -0
  515. data/lib/lutaml/xml/schema/xsd/min_length.rb +25 -0
  516. data/lib/lutaml/xml/schema/xsd/namespace_mapping.rb +37 -0
  517. data/lib/lutaml/xml/schema/xsd/namespace_uri_remapping.rb +79 -0
  518. data/lib/lutaml/xml/schema/xsd/notation.rb +31 -0
  519. data/lib/lutaml/xml/schema/xsd/pattern.rb +25 -0
  520. data/lib/lutaml/xml/schema/xsd/redefine.rb +35 -0
  521. data/lib/lutaml/xml/schema/xsd/restriction_complex_content.rb +56 -0
  522. data/lib/lutaml/xml/schema/xsd/restriction_simple_content.rb +84 -0
  523. data/lib/lutaml/xml/schema/xsd/restriction_simple_type.rb +64 -0
  524. data/lib/lutaml/xml/schema/xsd/schema.rb +373 -0
  525. data/lib/lutaml/xml/schema/xsd/schema_file_validation_results.rb +55 -0
  526. data/lib/lutaml/xml/schema/xsd/schema_location_mapping.rb +74 -0
  527. data/lib/lutaml/xml/schema/xsd/schema_name_resolver.rb +32 -0
  528. data/lib/lutaml/xml/schema/xsd/schema_path.rb +196 -0
  529. data/lib/lutaml/xml/schema/xsd/schema_validator.rb +256 -0
  530. data/lib/lutaml/xml/schema/xsd/selector.rb +27 -0
  531. data/lib/lutaml/xml/schema/xsd/sequence.rb +68 -0
  532. data/lib/lutaml/xml/schema/xsd/serialized_schema.rb +185 -0
  533. data/lib/lutaml/xml/schema/xsd/simple_content.rb +61 -0
  534. data/lib/lutaml/xml/schema/xsd/simple_type.rb +37 -0
  535. data/lib/lutaml/xml/schema/xsd/total_digits.rb +29 -0
  536. data/lib/lutaml/xml/schema/xsd/type_index_entry.rb +40 -0
  537. data/lib/lutaml/xml/schema/xsd/type_resolution_result.rb +112 -0
  538. data/lib/lutaml/xml/schema/xsd/union.rb +30 -0
  539. data/lib/lutaml/xml/schema/xsd/unique.rb +31 -0
  540. data/lib/lutaml/xml/schema/xsd/validation_error.rb +48 -0
  541. data/lib/lutaml/xml/schema/xsd/validation_result.rb +86 -0
  542. data/lib/lutaml/xml/schema/xsd/version.rb +11 -0
  543. data/lib/lutaml/xml/schema/xsd/white_space.rb +27 -0
  544. data/lib/lutaml/xml/schema/xsd.rb +165 -0
  545. data/lib/lutaml/xml/schema/xsd_namespace.rb +29 -0
  546. data/lib/lutaml/xml/schema/xsd_schema.rb +536 -0
  547. data/lib/lutaml/xml/schema.rb +13 -0
  548. data/lib/lutaml/xml/schema_location.rb +155 -0
  549. data/lib/lutaml/xml/serialization/collection_ext.rb +61 -0
  550. data/lib/lutaml/xml/serialization/format_conversion.rb +402 -0
  551. data/lib/lutaml/xml/serialization/instance_methods.rb +297 -0
  552. data/lib/lutaml/xml/serialization/model_import_ext.rb +40 -0
  553. data/lib/lutaml/xml/serialization.rb +15 -0
  554. data/lib/lutaml/xml/shared_dsl.rb +119 -0
  555. data/lib/lutaml/xml/transform.rb +6 -0
  556. data/lib/lutaml/xml/transformation/custom_method_wrapper.rb +262 -0
  557. data/lib/lutaml/xml/transformation/element_builder.rb +586 -0
  558. data/lib/lutaml/xml/transformation/ordered_applier.rb +329 -0
  559. data/lib/lutaml/xml/transformation/rule_applier.rb +379 -0
  560. data/lib/lutaml/xml/transformation/rule_compiler.rb +543 -0
  561. data/lib/lutaml/xml/transformation/skip_logic.rb +70 -0
  562. data/lib/lutaml/xml/transformation/value_serializer.rb +139 -0
  563. data/lib/lutaml/xml/transformation.rb +340 -0
  564. data/lib/lutaml/xml/transformation_builder.rb +28 -0
  565. data/lib/lutaml/xml/transformation_support.rb +14 -0
  566. data/lib/lutaml/xml/type/configurable.rb +157 -0
  567. data/lib/lutaml/xml/type/serializers.rb +98 -0
  568. data/lib/lutaml/xml/type/value_xml_mapping.rb +94 -0
  569. data/lib/lutaml/xml/type_namespace/collector.rb +101 -0
  570. data/lib/lutaml/xml/type_namespace/declaration.rb +61 -0
  571. data/lib/lutaml/xml/type_namespace/planner.rb +121 -0
  572. data/lib/lutaml/xml/type_namespace/reference.rb +71 -0
  573. data/lib/lutaml/xml/type_namespace/resolver.rb +43 -0
  574. data/lib/lutaml/xml/type_namespace.rb +13 -0
  575. data/lib/lutaml/xml/type_namespace_resolver.rb +76 -0
  576. data/lib/lutaml/xml/unqualified_inheritance_strategy.rb +34 -0
  577. data/lib/lutaml/xml/w3c/registration.rb +66 -0
  578. data/lib/lutaml/xml/w3c.rb +398 -0
  579. data/lib/lutaml/xml/xml_attribute.rb +38 -0
  580. data/lib/lutaml/xml/xml_element.rb +447 -0
  581. data/lib/lutaml/xml/xml_namespace.rb +72 -0
  582. data/lib/lutaml/xml.rb +295 -0
  583. data/lib/lutaml/{model/yaml → yaml/adapter}/document.rb +3 -3
  584. data/lib/lutaml/yaml/adapter/mapping.rb +19 -0
  585. data/lib/lutaml/yaml/adapter/mapping_rule.rb +9 -0
  586. data/lib/lutaml/yaml/adapter/standard_adapter.rb +39 -0
  587. data/lib/lutaml/yaml/adapter/transform.rb +9 -0
  588. data/lib/lutaml/yaml/adapter.rb +13 -0
  589. data/lib/lutaml/yaml/schema/yaml_schema.rb +65 -0
  590. data/lib/lutaml/yaml/schema.rb +9 -0
  591. data/lib/lutaml/yaml/type/serializers.rb +60 -0
  592. data/lib/lutaml/yaml.rb +26 -0
  593. data/lib/lutaml/{model/yamls → yamls/adapter}/document.rb +2 -2
  594. data/lib/lutaml/yamls/adapter/mapping.rb +19 -0
  595. data/lib/lutaml/yamls/adapter/mapping_rule.rb +9 -0
  596. data/lib/lutaml/{model/yamls → yamls/adapter}/standard_adapter.rb +6 -5
  597. data/lib/lutaml/yamls/adapter/transform.rb +26 -0
  598. data/lib/lutaml/yamls/adapter.rb +13 -0
  599. data/lib/lutaml/yamls.rb +21 -0
  600. data/lib/tasks/benchmark_runner.rb +161 -0
  601. data/lib/tasks/memory_profile.rb +176 -0
  602. data/lib/tasks/performance.rake +75 -0
  603. data/lib/tasks/performance_benchmark.rb +499 -0
  604. data/lib/tasks/performance_comparator.rb +114 -0
  605. data/lib/tasks/performance_helpers.rb +149 -0
  606. data/lib/tasks/xml_compiler_benchmark.rb +226 -0
  607. data/lib/tasks/xml_optimization_benchmark.rb +178 -0
  608. data/lutaml-model.gemspec +11 -1
  609. data/reference-docs/XML Entity Definitions for Characters (3rd Edition).html +595 -0
  610. data/scripts-xmi-profile/profile_xmi.rb +192 -0
  611. data/scripts-xmi-profile/profile_xmi_simple.rb +210 -0
  612. data/spec/address_person_spec.rb +436 -0
  613. data/spec/address_spec.rb +20 -18
  614. data/spec/ceramic_spec.rb +25 -7
  615. data/spec/fixtures/address.rb +2 -2
  616. data/spec/fixtures/ceramic.rb +6 -2
  617. data/spec/fixtures/person.rb +14 -13
  618. data/spec/fixtures/sample_model.rb +3 -3
  619. data/spec/fixtures/vase.rb +3 -3
  620. data/spec/fixtures/xml/address_example_260.xsd +8 -4
  621. data/spec/fixtures/xml/examples/nested_categories.xml +45 -51
  622. data/spec/fixtures/xml/examples/valid_catalog.xml +27 -41
  623. data/spec/fixtures/xml/math_document_schema.xsd +7 -5
  624. data/spec/fixtures/xml/product_catalog.xsd +19 -138
  625. data/spec/fixtures/xml/schema/xsd/build_test_package.rb +19 -0
  626. data/spec/fixtures/xml/schema/xsd/citygml/2.0/cityGMLBase.xsd +339 -0
  627. data/spec/fixtures/xml/schema/xsd/citygml/appearance/2.0/appearance.xsd +332 -0
  628. data/spec/fixtures/xml/schema/xsd/citygml/bridge/2.0/bridge.xsd +578 -0
  629. data/spec/fixtures/xml/schema/xsd/citygml/building/2.0/building.xsd +535 -0
  630. data/spec/fixtures/xml/schema/xsd/citygml/cityfurniture/2.0/cityFurniture.xsd +57 -0
  631. data/spec/fixtures/xml/schema/xsd/citygml/cityobjectgroup/2.0/cityObjectGroup.xsd +84 -0
  632. data/spec/fixtures/xml/schema/xsd/citygml/examples/2.0/ade/noise-ade/CityGML-NoiseADE.xsd +174 -0
  633. data/spec/fixtures/xml/schema/xsd/citygml/examples/2.0/ade/robotics-ade/stdOp.xsd +46 -0
  634. data/spec/fixtures/xml/schema/xsd/citygml/examples/2.0/ade/robotics-ade/unr.xsd +46 -0
  635. data/spec/fixtures/xml/schema/xsd/citygml/generics/2.0/generics.xsd +184 -0
  636. data/spec/fixtures/xml/schema/xsd/citygml/landuse/2.0/landUse.xsd +50 -0
  637. data/spec/fixtures/xml/schema/xsd/citygml/profiles/base/2.0/CityGML.xsd +30 -0
  638. data/spec/fixtures/xml/schema/xsd/citygml/relief/2.0/relief.xsd +186 -0
  639. data/spec/fixtures/xml/schema/xsd/citygml/texturedsurface/2.0/texturedSurface.xsd +157 -0
  640. data/spec/fixtures/xml/schema/xsd/citygml/transportation/2.0/transportation.xsd +224 -0
  641. data/spec/fixtures/xml/schema/xsd/citygml/tunnel/2.0/tunnel.xsd +530 -0
  642. data/spec/fixtures/xml/schema/xsd/citygml/vegetation/2.0/vegetation.xsd +108 -0
  643. data/spec/fixtures/xml/schema/xsd/citygml/waterbody/2.0/waterBody.xsd +171 -0
  644. data/spec/fixtures/xml/schema/xsd/citygml/xAL/xAL.xsd +1680 -0
  645. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/basicTypes.xsd +262 -0
  646. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/coordinateOperations.xsd +519 -0
  647. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/coordinateReferenceSystems.xsd +367 -0
  648. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/coordinateSystems.xsd +291 -0
  649. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/coverage.xsd +287 -0
  650. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/datums.xsd +281 -0
  651. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/defaultStyle.xsd +447 -0
  652. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/deprecatedTypes.xsd +1128 -0
  653. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/dictionary.xsd +84 -0
  654. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/direction.xsd +78 -0
  655. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/dynamicFeature.xsd +103 -0
  656. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/feature.xsd +88 -0
  657. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/geometryAggregates.xsd +191 -0
  658. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/geometryBasic0d1d.xsd +271 -0
  659. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/geometryBasic2d.xsd +118 -0
  660. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/geometryComplexes.xsd +89 -0
  661. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/geometryPrimitives.xsd +841 -0
  662. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/gml.xsd +15 -0
  663. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/gmlBase.xsd +179 -0
  664. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/grids.xsd +58 -0
  665. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/measures.xsd +63 -0
  666. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/observation.xsd +90 -0
  667. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/referenceSystems.xsd +64 -0
  668. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/temporal.xsd +263 -0
  669. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/temporalReferenceSystems.xsd +183 -0
  670. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/temporalTopology.xsd +113 -0
  671. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/topology.xsd +380 -0
  672. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/units.xsd +156 -0
  673. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/valueObjects.xsd +199 -0
  674. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gco/basicTypes.xsd +429 -0
  675. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gco/gco.xsd +12 -0
  676. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gco/gcoBase.xsd +61 -0
  677. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/applicationSchema.xsd +42 -0
  678. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/citation.xsd +275 -0
  679. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/constraints.xsd +106 -0
  680. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/content.xsd +188 -0
  681. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/dataQuality.xsd +554 -0
  682. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/distribution.xsd +202 -0
  683. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/extent.xsd +205 -0
  684. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/freeText.xsd +122 -0
  685. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/gmd.xsd +12 -0
  686. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/identification.xsd +348 -0
  687. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/maintenance.xsd +86 -0
  688. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/metadataApplication.xsd +175 -0
  689. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/metadataEntity.xsd +70 -0
  690. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/metadataExtension.xsd +99 -0
  691. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/portrayalCatalogue.xsd +36 -0
  692. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/referenceSystem.xsd +100 -0
  693. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/spatialRepresentation.xsd +237 -0
  694. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmx/catalogues.xsd +112 -0
  695. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmx/codelistItem.xsd +168 -0
  696. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmx/crsItem.xsd +1030 -0
  697. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmx/extendedTypes.xsd +75 -0
  698. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmx/gmx.xsd +2 -0
  699. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmx/gmxUsage.xsd +127 -0
  700. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmx/uomItem.xsd +162 -0
  701. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gsr/gsr.xsd +12 -0
  702. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gsr/spatialReferencing.xsd +24 -0
  703. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gss/geometry.xsd +35 -0
  704. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gss/gss.xsd +12 -0
  705. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gts/gts.xsd +12 -0
  706. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gts/temporalObjects.xsd +34 -0
  707. data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/xlink/1.0.0/xlinks.xsd +122 -0
  708. data/spec/fixtures/xml/schema/xsd/i-ur/urbanFunction.xsd +2772 -0
  709. data/spec/fixtures/xml/schema/xsd/i-ur/urbanObject.xsd +3344 -0
  710. data/spec/fixtures/xml/schema/xsd/import-without-location.xsd +9 -0
  711. data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gco/1.2/baseTypes.xsd +775 -0
  712. data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gco/1.2/gco.xsd +17 -0
  713. data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gco/1.2.0/baseTypes.xsd +775 -0
  714. data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gco/1.2.0/gco.xsd +17 -0
  715. data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gcx/1.2/extendedTypes.xsd +151 -0
  716. data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gcx/1.2/gcx.xsd +16 -0
  717. data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gcx/1.2.0/extendedTypes.xsd +151 -0
  718. data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gcx/1.2.0/gcx.xsd +16 -0
  719. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/coordinateGeometry.xsd +1078 -0
  720. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/geometricAggregates.xsd +141 -0
  721. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/geometricComplex.xsd +177 -0
  722. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/geometricPrimative.xsd +526 -0
  723. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/geometry.xsd +9 -0
  724. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/geometryRoot.xsd +59 -0
  725. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/gss.xsd +26 -0
  726. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/topoComplex.xsd +33 -0
  727. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/topoPrimative.xsd +432 -0
  728. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/topoRoot.xsd +9 -0
  729. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/topology.xsd +15 -0
  730. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/coordinates.xsd +15 -0
  731. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/curves.xsd +22 -0
  732. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/geometry.xsd +41 -0
  733. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/gss.xsd +21 -0
  734. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/simplicialGeometry.xsd +63 -0
  735. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/solids.xsd +21 -0
  736. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/surfaces.xsd +15 -0
  737. data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/topology.xsd +21 -0
  738. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/fcc/2.1.0/abstract.xsd +47 -0
  739. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/fcc/2.1.0/fcc.xsd +12 -0
  740. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/fcc/2.2/abstract.xsd +45 -0
  741. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/fcc/2.2/fcc.xsd +11 -0
  742. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/fcc/2.2.0/abstract.xsd +45 -0
  743. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/fcc/2.2.0/fcc.xsd +11 -0
  744. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/gfc/1.0/gfc.xsd +497 -0
  745. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/gfc/2.1.0/featureCatalogue.xsd +673 -0
  746. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/gfc/2.1.0/gfc.xsd +19 -0
  747. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/gfc/2.2/featureCatalogue.xsd +798 -0
  748. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/gfc/2.2/gfc.xsd +19 -0
  749. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/gfc/2.2.0/featureCatalogue.xsd +798 -0
  750. data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/gfc/2.2.0/gfc.xsd +19 -0
  751. data/spec/fixtures/xml/schema/xsd/isotc211/19110/fcc/1.0/abstract.xsd +49 -0
  752. data/spec/fixtures/xml/schema/xsd/isotc211/19110/fcc/1.0/fcc.xsd +9 -0
  753. data/spec/fixtures/xml/schema/xsd/isotc211/19110/gfc/1.1/featureCatalogue.xsd +671 -0
  754. data/spec/fixtures/xml/schema/xsd/isotc211/19110/gfc/1.1/gfc.xsd +13 -0
  755. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1/rbc.xsd +13 -0
  756. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1/rbcStubs.xsd +195 -0
  757. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.0/rbc.xsd +13 -0
  758. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.0/rbcStubs.xsd +195 -0
  759. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/AbstractCommonClasses.xsd +282 -0
  760. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/commonClasses.xsd +127 -0
  761. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/coordOps.xsd +676 -0
  762. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/coordRefSys.xsd +498 -0
  763. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/coordSys.xsd +844 -0
  764. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/coordinates.xsd +101 -0
  765. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/datum.xsd +474 -0
  766. data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/rbc.xsd +18 -0
  767. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/cit/1.3/cit.xsd +12 -0
  768. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/cit/1.3/citation.xsd +445 -0
  769. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/cit/1.3.0/cit.xsd +12 -0
  770. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/cit/1.3.0/citation.xsd +445 -0
  771. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/gex/1.3/extent.xsd +243 -0
  772. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/gex/1.3/gex.xsd +16 -0
  773. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/gex/1.3.0/extent.xsd +243 -0
  774. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/gex/1.3.0/gex.xsd +16 -0
  775. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/gex/1.3.1/extent.xsd +244 -0
  776. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/gex/1.3.1/gex.xsd +15 -0
  777. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/lan/1.3/lan.xsd +13 -0
  778. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/lan/1.3/language.xsd +152 -0
  779. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/lan/1.3.0/lan.xsd +13 -0
  780. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/lan/1.3.0/language.xsd +152 -0
  781. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mas/1.3/applicationSchema.xsd +58 -0
  782. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mas/1.3/mas.xsd +16 -0
  783. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mas/1.3.0/applicationSchema.xsd +58 -0
  784. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mas/1.3.0/mas.xsd +16 -0
  785. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mcc/1.3/AbstractCommonClasses.xsd +378 -0
  786. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mcc/1.3/commonClasses.xsd +205 -0
  787. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mcc/1.3/mcc.xsd +12 -0
  788. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mcc/1.3.0/AbstractCommonClasses.xsd +378 -0
  789. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mcc/1.3.0/commonClasses.xsd +205 -0
  790. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mcc/1.3.0/mcc.xsd +12 -0
  791. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mco/1.3/constraints.xsd +171 -0
  792. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mco/1.3/mco.xsd +14 -0
  793. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mco/1.3.0/constraints.xsd +171 -0
  794. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mco/1.3.0/mco.xsd +14 -0
  795. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mda/1.3/mda.xsd +13 -0
  796. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mda/1.3/metadataApplication.xsd +207 -0
  797. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mda/1.3.0/mda.xsd +13 -0
  798. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mda/1.3.0/metadataApplication.xsd +207 -0
  799. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mda/1.3.1/mda.xsd +13 -0
  800. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mda/1.3.1/metadataApplication.xsd +247 -0
  801. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3/mdb.xsd +11 -0
  802. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3/metadataBase.xsd +117 -0
  803. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3/metadataBaseMDAerror.xsd +116 -0
  804. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3.0/mdb.xsd +11 -0
  805. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3.0/metadataBase.xsd +117 -0
  806. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3.0/metadataBaseMDAerror.xsd +116 -0
  807. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3.1/mdb.xsd +11 -0
  808. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3.1/metadataBase.xsd +144 -0
  809. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mex/1.3/metadataExtension.xsd +138 -0
  810. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mex/1.3/mex.xsd +15 -0
  811. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mex/1.3.0/metadataExtension.xsd +138 -0
  812. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mex/1.3.0/mex.xsd +15 -0
  813. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mmi/1.3/maintenance.xsd +70 -0
  814. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mmi/1.3/mmi.xsd +14 -0
  815. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mmi/1.3.0/maintenance.xsd +70 -0
  816. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mmi/1.3.0/mmi.xsd +14 -0
  817. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mpc/1.3/mpc.xsd +14 -0
  818. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mpc/1.3/portrayalCatalogue.xsd +40 -0
  819. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mpc/1.3.0/mpc.xsd +14 -0
  820. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mpc/1.3.0/portrayalCatalogue.xsd +40 -0
  821. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrc/1.3/content.xsd +368 -0
  822. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrc/1.3/mrc.xsd +19 -0
  823. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrc/1.3.0/content.xsd +368 -0
  824. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrc/1.3.0/mrc.xsd +19 -0
  825. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrc/1.3.1/content.xsd +366 -0
  826. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrc/1.3.1/mrc.xsd +13 -0
  827. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrd/1.3/distribution.xsd +232 -0
  828. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrd/1.3/mrd.xsd +13 -0
  829. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrd/1.3.0/distribution.xsd +232 -0
  830. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrd/1.3.0/mrd.xsd +13 -0
  831. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mri/1.3/identification.xsd +425 -0
  832. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mri/1.3/mri.xsd +16 -0
  833. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mri/1.3.0/identification.xsd +425 -0
  834. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mri/1.3.0/mri.xsd +16 -0
  835. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrl/1.3/lineage.xsd +130 -0
  836. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrl/1.3/mrl.xsd +15 -0
  837. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrl/1.3.0/lineage.xsd +130 -0
  838. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrl/1.3.0/mrl.xsd +15 -0
  839. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrs/1.3/mrs.xsd +16 -0
  840. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrs/1.3/referenceSystem.xsd +67 -0
  841. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrs/1.3.0/mrs.xsd +16 -0
  842. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrs/1.3.0/referenceSystem.xsd +67 -0
  843. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrs/1.3.1/mrs.xsd +16 -0
  844. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrs/1.3.1/referenceSystem.xsd +66 -0
  845. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/msr/1.3/msr.xsd +17 -0
  846. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/msr/1.3/spatialRepresentation.xsd +326 -0
  847. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/msr/1.3.0/msr.xsd +17 -0
  848. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/msr/1.3.0/spatialRepresentation.xsd +326 -0
  849. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/msr/1.3.1/msr.xsd +15 -0
  850. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/msr/1.3.1/spatialRepresentation.xsd +326 -0
  851. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/srv/1.3/serviceInformation.xsd +252 -0
  852. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/srv/1.3/srv.xsd +14 -0
  853. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/srv/1.3.0/serviceInformation.xsd +252 -0
  854. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/srv/1.3.0/srv.xsd +14 -0
  855. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.0/acquisitionInformation.xsd +415 -0
  856. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.0/contentInformation.xsd +147 -0
  857. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.0/dataQualityInformation.xsd +214 -0
  858. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.0/gmi.xsd +23 -0
  859. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.0/metadataEntitySet.xsd +43 -0
  860. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.0/spatialRepresentationInformation.xsd +140 -0
  861. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.1/acquisitionInformation.xsd +415 -0
  862. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.1/contentInformation.xsd +147 -0
  863. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.1/dataQualityInformation.xsd +214 -0
  864. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.1/gmi.xsd +24 -0
  865. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.1/metadataEntitySet.xsd +43 -0
  866. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.1/spatialRepresentationInformation.xsd +142 -0
  867. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mac/2.2/acquisitionInformationImagery.xsd +796 -0
  868. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mac/2.2/mac.xsd +11 -0
  869. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mac/2.2.0/acquisitionInformationImagery.xsd +796 -0
  870. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mac/2.2.0/mac.xsd +11 -0
  871. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mac/2.2.1/acquisitionInformationImagery.xsd +799 -0
  872. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mac/2.2.1/mac.xsd +10 -0
  873. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mrc/2.2/contentInformationImagery.xsd +161 -0
  874. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mrc/2.2.0/contentInformationImagery.xsd +161 -0
  875. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mrc/2.2.1/contentInformationImagery.xsd +159 -0
  876. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mrl/2.2/lineageImagery.xsd +312 -0
  877. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mrl/2.2.0/lineageImagery.xsd +312 -0
  878. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/msr/2.2/spatialRepresentationImagery.xsd +138 -0
  879. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/msr/2.2.0/spatialRepresentationImagery.xsd +138 -0
  880. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/msr/2.2.1/spatialRepresentationImagery.xsd +145 -0
  881. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cat/1.0/cat.xsd +16 -0
  882. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cat/1.0/catalogues.xsd +59 -0
  883. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cat/1.0/codelistItem.xsd +63 -0
  884. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cat/1.0/crsItem.xsd +188 -0
  885. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cat/1.0/uomItem.xsd +45 -0
  886. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cit/1.0/cit.xsd +11 -0
  887. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cit/1.0/citation.xsd +400 -0
  888. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cit/2.0/cit.xsd +11 -0
  889. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cit/2.0/citation.xsd +402 -0
  890. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gco/1.0/baseTypes.xsd +532 -0
  891. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gco/1.0/baseTypes2014.xsd +531 -0
  892. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gco/1.0/gco.xsd +16 -0
  893. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gcx/1.0/extendedTypes.xsd +97 -0
  894. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gcx/1.0/gcx.xsd +11 -0
  895. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gex/1.0/extent.xsd +207 -0
  896. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gex/1.0/gex.xsd +15 -0
  897. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gmw/1.0/gmlWrapperTypes.xsd +147 -0
  898. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gmw/1.0/gmlWrapperTypes2014.xsd +147 -0
  899. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gmw/1.0/gmw.xsd +17 -0
  900. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/lan/1.0/lan.xsd +13 -0
  901. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/lan/1.0/language.xsd +141 -0
  902. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mac/1.0/acquisitionInformationImagery.xsd +424 -0
  903. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mac/1.0/mac.xsd +14 -0
  904. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mac/2.0/acquisitionInformationImagery.xsd +473 -0
  905. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mac/2.0/event.xsd +106 -0
  906. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mac/2.0/mac.xsd +15 -0
  907. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mac/2.0/metadataEntitySet.xsd +46 -0
  908. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mas/1.0/applicationSchema.xsd +53 -0
  909. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mas/1.0/mas.xsd +15 -0
  910. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mcc/1.0/AbstractCommonClasses.xsd +362 -0
  911. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mcc/1.0/commonClasses.xsd +179 -0
  912. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mcc/1.0/mcc.xsd +12 -0
  913. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mco/1.0/constraints.xsd +152 -0
  914. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mco/1.0/mco.xsd +13 -0
  915. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md1/1.0/md1.xsd +19 -0
  916. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md1/1.0/metadataWExtendedType.xsd +10 -0
  917. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md1/2.0/md1.xsd +19 -0
  918. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md1/2.0/metadataWExtendedType.xsd +10 -0
  919. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md2/1.0/md2.xsd +27 -0
  920. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md2/1.0/metadataWithExtensions.xsd +10 -0
  921. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md2/2.0/md2.xsd +27 -0
  922. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md2/2.0/metadataWithExtensions.xsd +10 -0
  923. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mda/1.0/mda.xsd +13 -0
  924. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mda/1.0/metadataApplication.xsd +188 -0
  925. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mda/2.0/mda.xsd +13 -0
  926. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mda/2.0/metadataApplication.xsd +189 -0
  927. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdb/1.0/mdb.xsd +23 -0
  928. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdb/1.0/metadataBase.xsd +97 -0
  929. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdb/2.0/mdb.xsd +23 -0
  930. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdb/2.0/metadataBase.xsd +105 -0
  931. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mds/1.0/mds.xsd +59 -0
  932. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mds/1.0/metadataDataServices.xsd +10 -0
  933. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mds/2.0/mds.xsd +44 -0
  934. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mds/2.0/metadataDataServices.xsd +10 -0
  935. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdt/1.0/mdt.xsd +17 -0
  936. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdt/1.0/metadataTransfer.xsd +121 -0
  937. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdt/2.0/mdt.xsd +17 -0
  938. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdt/2.0/metadataTransfer.xsd +121 -0
  939. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mex/1.0/metadataExtension.xsd +122 -0
  940. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mex/1.0/mex.xsd +13 -0
  941. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mmi/1.0/maintenance.xsd +63 -0
  942. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mmi/1.0/mmi.xsd +13 -0
  943. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mpc/1.0/mpc.xsd +13 -0
  944. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mpc/1.0/portrayalCatalogue.xsd +35 -0
  945. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrc/1.0/content.xsd +330 -0
  946. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrc/1.0/contentInformationImagery.xsd +160 -0
  947. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrc/1.0/mrc.xsd +18 -0
  948. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrc/2.0/content.xsd +334 -0
  949. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrc/2.0/contentInformationImagery.xsd +143 -0
  950. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrc/2.0/mrc.xsd +21 -0
  951. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrd/1.0/distribution.xsd +212 -0
  952. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrd/1.0/mrd.xsd +13 -0
  953. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mri/1.0/identification.xsd +385 -0
  954. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mri/1.0/mri.xsd +15 -0
  955. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrl/1.0/lineage.xsd +117 -0
  956. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrl/1.0/lineageImagery.xsd +168 -0
  957. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrl/1.0/mrl.xsd +14 -0
  958. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrl/2.0/lineage.xsd +118 -0
  959. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrl/2.0/lineageImagery.xsd +250 -0
  960. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrl/2.0/mrl.xsd +14 -0
  961. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrs/1.0/mrs.xsd +13 -0
  962. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrs/1.0/referenceSystem.xsd +47 -0
  963. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/msr/1.0/msr.xsd +16 -0
  964. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/msr/1.0/spatialRepresentation.xsd +288 -0
  965. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/msr/1.0/spatialRepresentationImagery.xsd +113 -0
  966. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/msr/2.0/msr.xsd +16 -0
  967. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/msr/2.0/spatialRepresentation.xsd +296 -0
  968. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/msr/2.0/spatialRepresentationImagery.xsd +114 -0
  969. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/srv/2.0/serviceInformation.xsd +217 -0
  970. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/srv/2.0/srv.xsd +14 -0
  971. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/srv/2.1/serviceInformation.xsd +220 -0
  972. data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/srv/2.1/srv.xsd +14 -0
  973. data/spec/fixtures/xml/schema/xsd/isotc211/19119/-/srv/1.0/serviceMetadata.xsd +204 -0
  974. data/spec/fixtures/xml/schema/xsd/isotc211/19119/-/srv/1.0/serviceModel.xsd +230 -0
  975. data/spec/fixtures/xml/schema/xsd/isotc211/19119/-/srv/1.0/srv.xsd +13 -0
  976. data/spec/fixtures/xml/schema/xsd/isotc211/19119/srv/serviceMetadata.xsd +204 -0
  977. data/spec/fixtures/xml/schema/xsd/isotc211/19119/srv/serviceModel.xsd +238 -0
  978. data/spec/fixtures/xml/schema/xsd/isotc211/19119/srv/srv.xsd +13 -0
  979. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/1.1/cis-0.xsd +17 -0
  980. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/1.1/codeLists.xsd +68 -0
  981. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/1.1/gridPoint.xsd +47 -0
  982. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/1.1.0/cis-0.xsd +17 -0
  983. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/1.1.0/codeLists.xsd +68 -0
  984. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/1.1.0/gridPoint.xsd +47 -0
  985. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/3.1.0/codeLists.xsd +68 -0
  986. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/3.1.0/gridPoint.xsd +47 -0
  987. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.0/coverage.xsd +185 -0
  988. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.0/gmlcovAll.xsd +21 -0
  989. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.0/grids.xsd +115 -0
  990. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.1/coverage.xsd +188 -0
  991. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.1/gmlcovAll.xsd +25 -0
  992. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.1/grids.xsd +119 -0
  993. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.1.0/coverage.xsd +188 -0
  994. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.1.0/gmlcovAll.xsd +25 -0
  995. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.1.0/grids.xsd +119 -0
  996. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/3.1.0/coverage.xsd +188 -0
  997. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/3.1.0/gmlcovAll.xsd +23 -0
  998. data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/3.1.0/grids.xsd +119 -0
  999. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.0/codeList.xsd +134 -0
  1000. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.0/groundControlPoints.xsd +239 -0
  1001. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.0/nonPhysicalSensorModel.xsd +321 -0
  1002. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.0/physicalSensorModel.xsd +62 -0
  1003. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.0/sensorModel.xsd +65 -0
  1004. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.0/sensorParameters.xsd +762 -0
  1005. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.0/spatialElements.xsd +497 -0
  1006. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.1/codeList.xsd +129 -0
  1007. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.1/groundControlPoints.xsd +235 -0
  1008. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.1/nonPhysicalSensorModel.xsd +321 -0
  1009. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.1/physicalSensorModel.xsd +62 -0
  1010. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.1/sensorModel.xsd +65 -0
  1011. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.1/sensorParameters.xsd +762 -0
  1012. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.1/spatialElements.xsd +496 -0
  1013. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.0/codeList.xsd +349 -0
  1014. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.0/sensorModel.xsd +53 -0
  1015. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.0/sensorParameters.xsd +681 -0
  1016. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.0/spatialElements.xsd +902 -0
  1017. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.1/codeList.xsd +344 -0
  1018. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.1/sensorModel.xsd +49 -0
  1019. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.1/sensorParameters.xsd +676 -0
  1020. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.1/spatialElements.xsd +897 -0
  1021. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-3/smi/1.1/smi.xsd +42 -0
  1022. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-3/smi/1.1.0/smi.xsd +42 -0
  1023. data/spec/fixtures/xml/schema/xsd/isotc211/19130/-3/smi/1.1.1/smi.xsd +42 -0
  1024. data/spec/fixtures/xml/schema/xsd/isotc211/19131/-/dps/2.0/dps.xsd +1344 -0
  1025. data/spec/fixtures/xml/schema/xsd/isotc211/19131/-/dps/2.0.0/dps.xsd +1344 -0
  1026. data/spec/fixtures/xml/schema/xsd/isotc211/19131/-/dps/2.2/dps.xsd +1522 -0
  1027. data/spec/fixtures/xml/schema/xsd/isotc211/19131/-/dps/2.2.0/dps.xsd +1522 -0
  1028. data/spec/fixtures/xml/schema/xsd/isotc211/19131/-/dps/2.2.1/dps.xsd +1522 -0
  1029. data/spec/fixtures/xml/schema/xsd/isotc211/19131/-1/dps/2.0/dps.xsd +1339 -0
  1030. data/spec/fixtures/xml/schema/xsd/isotc211/19131/-1/dps/2.2.0/dps.xsd +1540 -0
  1031. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.0/core.xsd +349 -0
  1032. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.0/extended.xsd +1074 -0
  1033. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.0/hierarchy.xsd +57 -0
  1034. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.0/pir.xsd +13 -0
  1035. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1/core.xsd +344 -0
  1036. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1/extended.xsd +1076 -0
  1037. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1/hierarchy.xsd +58 -0
  1038. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1/pir.xsd +15 -0
  1039. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1.0/core.xsd +344 -0
  1040. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1.0/extended.xsd +1076 -0
  1041. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1.0/hierarchy.xsd +58 -0
  1042. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1.0/pir.xsd +15 -0
  1043. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/pre/1.0/abstract.xsd +42 -0
  1044. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/pre/1.0/pre.xsd +4 -0
  1045. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/pre/1.2.0/abstract.xsd +44 -0
  1046. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/pre/1.2.0/pre.xsd +11 -0
  1047. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/reg/1.0/reg.xsd +8 -0
  1048. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/reg/1.0/registration.xsd +562 -0
  1049. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/reg/1.2.0/reg.xsd +22 -0
  1050. data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/reg/1.2.0/registration.xsd +590 -0
  1051. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/basicTypes.xsd +275 -0
  1052. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/coordinateOperations.xsd +534 -0
  1053. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/coordinateReferenceSystems.xsd +379 -0
  1054. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/coordinateSystems.xsd +303 -0
  1055. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/coverage.xsd +298 -0
  1056. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/datums.xsd +293 -0
  1057. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/defaultStyle.xsd +462 -0
  1058. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/deprecatedTypes.xsd +1139 -0
  1059. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/dictionary.xsd +95 -0
  1060. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/direction.xsd +90 -0
  1061. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/dynamicFeature.xsd +114 -0
  1062. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/feature.xsd +99 -0
  1063. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/geometryAggregates.xsd +203 -0
  1064. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/geometryBasic0d1d.xsd +283 -0
  1065. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/geometryBasic2d.xsd +130 -0
  1066. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/geometryComplexes.xsd +101 -0
  1067. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/geometryPrimitives.xsd +852 -0
  1068. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/gml.xsd +25 -0
  1069. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/gmlBase.xsd +191 -0
  1070. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/grids.xsd +70 -0
  1071. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/measures.xsd +74 -0
  1072. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/observation.xsd +100 -0
  1073. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/referenceSystems.xsd +78 -0
  1074. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/temporal.xsd +274 -0
  1075. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/temporalReferenceSystems.xsd +194 -0
  1076. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/temporalTopology.xsd +124 -0
  1077. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/topology.xsd +391 -0
  1078. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/units.xsd +168 -0
  1079. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/valueObjects.xsd +210 -0
  1080. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-1/gmw/1.1/gmlWrapperTypes.xsd +160 -0
  1081. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-1/gmw/1.1/gmw.xsd +27 -0
  1082. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-1/gmw/1.1.0/gmlWrapperTypes.xsd +160 -0
  1083. data/spec/fixtures/xml/schema/xsd/isotc211/19136/-1/gmw/1.1.0/gmw.xsd +27 -0
  1084. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2/cat.xsd +18 -0
  1085. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2/catalogues.xsd +63 -0
  1086. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2/codelistItem.xsd +64 -0
  1087. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2/crsItem.xsd +200 -0
  1088. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2/uomItem.xsd +49 -0
  1089. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2.0/cat.xsd +18 -0
  1090. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2.0/catalogues.xsd +63 -0
  1091. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2.0/codelistItem.xsd +64 -0
  1092. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2.0/crsItem.xsd +200 -0
  1093. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2.0/uomItem.xsd +49 -0
  1094. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gco/1.0/basicTypes.xsd +439 -0
  1095. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gco/1.0/gco.xsd +18 -0
  1096. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gco/1.0/gcoBase.xsd +71 -0
  1097. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/applicationSchema.xsd +50 -0
  1098. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/citation.xsd +283 -0
  1099. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/constraints.xsd +114 -0
  1100. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/content.xsd +197 -0
  1101. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/dataQuality.xsd +563 -0
  1102. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/distribution.xsd +210 -0
  1103. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/extent.xsd +216 -0
  1104. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/freeText.xsd +130 -0
  1105. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/gmd.xsd +18 -0
  1106. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/identification.xsd +356 -0
  1107. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/maintenance.xsd +95 -0
  1108. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/metadataApplication.xsd +183 -0
  1109. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/metadataEntity.xsd +78 -0
  1110. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/metadataExtension.xsd +107 -0
  1111. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/portrayalCatalogue.xsd +44 -0
  1112. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/referenceSystem.xsd +108 -0
  1113. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/spatialRepresentation.xsd +246 -0
  1114. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmx/1.0/catalogues.xsd +121 -0
  1115. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmx/1.0/codelistItem.xsd +179 -0
  1116. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmx/1.0/crsItem.xsd +1041 -0
  1117. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmx/1.0/extendedTypes.xsd +83 -0
  1118. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmx/1.0/gmx.xsd +18 -0
  1119. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmx/1.0/gmxUsage.xsd +136 -0
  1120. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmx/1.0/uomItem.xsd +173 -0
  1121. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gsr/1.0/gsr.xsd +18 -0
  1122. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gsr/1.0/spatialReferencing.xsd +34 -0
  1123. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gss/1.0/geometry.xsd +45 -0
  1124. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gss/1.0/gss.xsd +18 -0
  1125. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gts/1.0/gts.xsd +18 -0
  1126. data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gts/1.0/temporalObjects.xsd +44 -0
  1127. data/spec/fixtures/xml/schema/xsd/isotc211/19155/gpi/1.0/gpi.xsd +16 -0
  1128. data/spec/fixtures/xml/schema/xsd/isotc211/19155/gpi/1.0/placeIdentifier.xsd +75 -0
  1129. data/spec/fixtures/xml/schema/xsd/isotc211/19155/gpi/1.0/sampleGMLApplicationSchema.xsd +83 -0
  1130. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqc/1.2/abstract.xsd +44 -0
  1131. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqc/1.2/dqc.xsd +16 -0
  1132. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqc/1.2.0/abstract.xsd +44 -0
  1133. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqc/1.2.0/dqc.xsd +16 -0
  1134. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqm/1.2/dqm.xsd +19 -0
  1135. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqm/1.2/qualityMeasures.xsd +332 -0
  1136. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqm/1.2.0/dqm.xsd +19 -0
  1137. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqm/1.2.0/qualityMeasures.xsd +332 -0
  1138. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2/dataQualityElement.xsd +583 -0
  1139. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2/dataQualityEvaluation.xsd +199 -0
  1140. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2/dataQualityImagery.xsd +75 -0
  1141. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2/dataQualityResult.xsd +213 -0
  1142. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2/mdq.xsd +22 -0
  1143. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2/metaquality.xsd +93 -0
  1144. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2.0/dataQualityElement.xsd +583 -0
  1145. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2.0/dataQualityEvaluation.xsd +199 -0
  1146. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2.0/dataQualityImagery.xsd +75 -0
  1147. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2.0/dataQualityResult.xsd +213 -0
  1148. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2.0/mdq.xsd +22 -0
  1149. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2.0/metaquality.xsd +93 -0
  1150. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqc/1.0.0/dataQualityCommon.xsd +33 -0
  1151. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqc/1.0.0/dqc.xsd +14 -0
  1152. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqc/1.0.1/dataQualityCommon.xsd +43 -0
  1153. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqc/1.0.1/dqc.xsd +17 -0
  1154. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqm/1.0.0/dataQualityMeasure.xsd +376 -0
  1155. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqm/1.0.0/dqm.xsd +11 -0
  1156. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqm/1.0.1/dataQualityMeasure.xsd +367 -0
  1157. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqm/1.0.1/dqm.xsd +11 -0
  1158. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.0/dataQuality.xsd +570 -0
  1159. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.0/dataQualityEvaluation.xsd +227 -0
  1160. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.0/dataQualityResult.xsd +191 -0
  1161. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.0/mdq.xsd +14 -0
  1162. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.0/metaquality.xsd +106 -0
  1163. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.1/dataQuality.xsd +581 -0
  1164. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.1/dataQualityEvaluation.xsd +227 -0
  1165. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.1/dataQualityResult.xsd +198 -0
  1166. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.1/mdq.xsd +14 -0
  1167. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.1/metaquality.xsd +102 -0
  1168. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/dqc/1.0/abstract.xsd +43 -0
  1169. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/dqc/1.0/dqc.xsd +15 -0
  1170. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/dqm/1.0/dqm.xsd +15 -0
  1171. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/dqm/1.0/qualityMeasures.xsd +303 -0
  1172. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/mdq/1.0/dataQualityElement.xsd +554 -0
  1173. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/mdq/1.0/dataQualityEvaluation.xsd +182 -0
  1174. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/mdq/1.0/dataQualityImagery.xsd +72 -0
  1175. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/mdq/1.0/dataQualityResult.xsd +140 -0
  1176. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/mdq/1.0/mdq.xsd +21 -0
  1177. data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/mdq/1.0/metaquality.xsd +89 -0
  1178. data/spec/fixtures/xml/schema/xsd/isotc211/19160/-4/patdl/2.7.3/PATDL.v.2.7.3.xsd +517 -0
  1179. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1/IE_Imagery.xsd +520 -0
  1180. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1/IE_ImageryAndGriddedData.xsd +222 -0
  1181. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1/IE_ThematicGriddedData.xsd +117 -0
  1182. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1/igd.xsd +14 -0
  1183. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.0/IE_Imagery.xsd +520 -0
  1184. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.0/IE_ImageryAndGriddedData.xsd +222 -0
  1185. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.0/IE_ThematicGriddedData.xsd +117 -0
  1186. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.0/igd.xsd +14 -0
  1187. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.1/IE_Imagery.xsd +518 -0
  1188. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.1/IE_ImageryAndGriddedData.xsd +213 -0
  1189. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.1/IE_ThematicGriddedData.xsd +116 -0
  1190. data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.1/igd.xsd +15 -0
  1191. data/spec/fixtures/xml/schema/xsd/isotc211/19165/-1/gpm/1.0.0/geospatialPreservationMetadata.xsd +872 -0
  1192. data/spec/fixtures/xml/schema/xsd/isotc211/19165/-1/gpm/1.0.0/gpm.xsd +11 -0
  1193. data/spec/fixtures/xml/schema/xsd/isotc211/19165/gpm/1.0/geospatialPreservationMetadata.xsd +385 -0
  1194. data/spec/fixtures/xml/schema/xsd/isotc211/19165/gpm/1.0/gpm.xsd +8 -0
  1195. data/spec/fixtures/xml/schema/xsd/metaschema-datatypes.xsd +263 -0
  1196. data/spec/fixtures/xml/schema/xsd/metaschema-markup-line.xsd +9 -0
  1197. data/spec/fixtures/xml/schema/xsd/metaschema-markup-multiline.xsd +135 -0
  1198. data/spec/fixtures/xml/schema/xsd/metaschema-meta-constraints.xsd +39 -0
  1199. data/spec/fixtures/xml/schema/xsd/metaschema-prose-base.xsd +82 -0
  1200. data/spec/fixtures/xml/schema/xsd/metaschema-prose-module.xsd +5 -0
  1201. data/spec/fixtures/xml/schema/xsd/metaschema.xsd +1344 -0
  1202. data/spec/fixtures/xml/schema/xsd/omml_schema.xsd +1528 -0
  1203. data/spec/fixtures/xml/schema/xsd/smil20/rdf.xsd +16 -0
  1204. data/spec/fixtures/xml/schema/xsd/smil20/smil20-AccessKeyTiming.xsd +33 -0
  1205. data/spec/fixtures/xml/schema/xsd/smil20/smil20-AudioLayout.xsd +32 -0
  1206. data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicAnimation.xsd +35 -0
  1207. data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicContentControl.xsd +49 -0
  1208. data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicInlineTiming.xsd +34 -0
  1209. data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicLayout.xsd +34 -0
  1210. data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicLinking.xsd +34 -0
  1211. data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicMedia.xsd +39 -0
  1212. data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicTimeContainers.xsd +37 -0
  1213. data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicTransitions.xsd +36 -0
  1214. data/spec/fixtures/xml/schema/xsd/smil20/smil20-BrushMedia.xsd +32 -0
  1215. data/spec/fixtures/xml/schema/xsd/smil20/smil20-CustomTestAttributes.xsd +33 -0
  1216. data/spec/fixtures/xml/schema/xsd/smil20/smil20-EventTiming.xsd +33 -0
  1217. data/spec/fixtures/xml/schema/xsd/smil20/smil20-ExclTimeContainers.xsd +37 -0
  1218. data/spec/fixtures/xml/schema/xsd/smil20/smil20-FillDefault.xsd +32 -0
  1219. data/spec/fixtures/xml/schema/xsd/smil20/smil20-HierarchicalLayout.xsd +46 -0
  1220. data/spec/fixtures/xml/schema/xsd/smil20/smil20-HostLanguage.xsd +85 -0
  1221. data/spec/fixtures/xml/schema/xsd/smil20/smil20-InlineTransitions.xsd +35 -0
  1222. data/spec/fixtures/xml/schema/xsd/smil20/smil20-IntegrationSet.xsd +72 -0
  1223. data/spec/fixtures/xml/schema/xsd/smil20/smil20-LinkingAttributes.xsd +40 -0
  1224. data/spec/fixtures/xml/schema/xsd/smil20/smil20-MediaAccessibility.xsd +34 -0
  1225. data/spec/fixtures/xml/schema/xsd/smil20/smil20-MediaClipMarkers.xsd +35 -0
  1226. data/spec/fixtures/xml/schema/xsd/smil20/smil20-MediaClipping.xsd +35 -0
  1227. data/spec/fixtures/xml/schema/xsd/smil20/smil20-MediaDescription.xsd +35 -0
  1228. data/spec/fixtures/xml/schema/xsd/smil20/smil20-MediaMarkerTiming.xsd +33 -0
  1229. data/spec/fixtures/xml/schema/xsd/smil20/smil20-MediaParam.xsd +34 -0
  1230. data/spec/fixtures/xml/schema/xsd/smil20/smil20-Metainformation.xsd +33 -0
  1231. data/spec/fixtures/xml/schema/xsd/smil20/smil20-MinMaxTiming.xsd +33 -0
  1232. data/spec/fixtures/xml/schema/xsd/smil20/smil20-MultiArcTiming.xsd +33 -0
  1233. data/spec/fixtures/xml/schema/xsd/smil20/smil20-MultiWindowLayout.xsd +32 -0
  1234. data/spec/fixtures/xml/schema/xsd/smil20/smil20-ObjectLinking.xsd +33 -0
  1235. data/spec/fixtures/xml/schema/xsd/smil20/smil20-PrefetchControl.xsd +31 -0
  1236. data/spec/fixtures/xml/schema/xsd/smil20/smil20-RepeatTiming.xsd +34 -0
  1237. data/spec/fixtures/xml/schema/xsd/smil20/smil20-RepeatValueTiming.xsd +33 -0
  1238. data/spec/fixtures/xml/schema/xsd/smil20/smil20-RestartDefault.xsd +32 -0
  1239. data/spec/fixtures/xml/schema/xsd/smil20/smil20-RestartTiming.xsd +32 -0
  1240. data/spec/fixtures/xml/schema/xsd/smil20/smil20-SkipContentControl.xsd +32 -0
  1241. data/spec/fixtures/xml/schema/xsd/smil20/smil20-SplineAnimation.xsd +34 -0
  1242. data/spec/fixtures/xml/schema/xsd/smil20/smil20-Structure.xsd +34 -0
  1243. data/spec/fixtures/xml/schema/xsd/smil20/smil20-SyncBehavior.xsd +33 -0
  1244. data/spec/fixtures/xml/schema/xsd/smil20/smil20-SyncBehaviorDefault.xsd +33 -0
  1245. data/spec/fixtures/xml/schema/xsd/smil20/smil20-SyncMaster.xsd +32 -0
  1246. data/spec/fixtures/xml/schema/xsd/smil20/smil20-SyncbaseTiming.xsd +33 -0
  1247. data/spec/fixtures/xml/schema/xsd/smil20/smil20-TimeContainerAttributes.xsd +35 -0
  1248. data/spec/fixtures/xml/schema/xsd/smil20/smil20-TimeManipulations.xsd +35 -0
  1249. data/spec/fixtures/xml/schema/xsd/smil20/smil20-TransitionModifiers.xsd +37 -0
  1250. data/spec/fixtures/xml/schema/xsd/smil20/smil20-WallclockTiming.xsd +33 -0
  1251. data/spec/fixtures/xml/schema/xsd/smil20/smil20-animate.xsd +229 -0
  1252. data/spec/fixtures/xml/schema/xsd/smil20/smil20-content.xsd +148 -0
  1253. data/spec/fixtures/xml/schema/xsd/smil20/smil20-language.xsd +834 -0
  1254. data/spec/fixtures/xml/schema/xsd/smil20/smil20-layout.xsd +211 -0
  1255. data/spec/fixtures/xml/schema/xsd/smil20/smil20-linking.xsd +117 -0
  1256. data/spec/fixtures/xml/schema/xsd/smil20/smil20-media.xsd +175 -0
  1257. data/spec/fixtures/xml/schema/xsd/smil20/smil20-meta.xsd +44 -0
  1258. data/spec/fixtures/xml/schema/xsd/smil20/smil20-struct.xsd +47 -0
  1259. data/spec/fixtures/xml/schema/xsd/smil20/smil20-timemanip.xsd +34 -0
  1260. data/spec/fixtures/xml/schema/xsd/smil20/smil20-timing.xsd +344 -0
  1261. data/spec/fixtures/xml/schema/xsd/smil20/smil20-transitions.xsd +138 -0
  1262. data/spec/fixtures/xml/schema/xsd/smil20/smil20-utility.xsd +57 -0
  1263. data/spec/fixtures/xml/schema/xsd/smil20/smil20.xsd +86 -0
  1264. data/spec/fixtures/xml/schema/xsd/smil20/xml-mod.xsd +25 -0
  1265. data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/advanced_encodings.xsd +186 -0
  1266. data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/basic_types.xsd +147 -0
  1267. data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/block_components.xsd +163 -0
  1268. data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/choice_components.xsd +56 -0
  1269. data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/examples/security.xsd +15 -0
  1270. data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/record_components.xsd +95 -0
  1271. data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/simple_components.xsd +536 -0
  1272. data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/simple_encodings.xsd +93 -0
  1273. data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/swe.xsd +14 -0
  1274. data/spec/fixtures/xml/schema/xsd/test_schema.lxr +0 -0
  1275. data/spec/fixtures/xml/schema/xsd/test_schema.xsd +24 -0
  1276. data/spec/fixtures/xml/schema/xsd/unitsml-v1.0-csd03.xsd +1333 -0
  1277. data/spec/fixtures/xml/schema/xsd/unitsml-v1.0-csd04.xsd +1334 -0
  1278. data/spec/fixtures/xml/schema/xsd/validation_config.yml +14 -0
  1279. data/spec/fixtures/xml/special_char.xml +3 -4
  1280. data/spec/fixtures/xml/user.xsd +14 -10
  1281. data/spec/lutaml/key_value/transformation/collection_serializer_spec.rb +213 -0
  1282. data/spec/lutaml/key_value/transformation/rule_compiler_spec.rb +229 -0
  1283. data/spec/lutaml/key_value/transformation/value_serializer_spec.rb +216 -0
  1284. data/spec/lutaml/key_value/transformation_spec.rb +292 -0
  1285. data/spec/lutaml/model/attribute_collection_spec.rb +9 -6
  1286. data/spec/lutaml/model/attribute_form_default_spec.rb +252 -0
  1287. data/spec/lutaml/model/attribute_spec.rb +328 -38
  1288. data/spec/lutaml/model/cached_type_resolver_spec.rb +362 -0
  1289. data/spec/lutaml/model/cdata_spec.rb +180 -102
  1290. data/spec/lutaml/model/choice_spec.rb +37 -7
  1291. data/spec/lutaml/model/cli_spec.rb +452 -0
  1292. data/spec/lutaml/model/collection_index_spec.rb +347 -0
  1293. data/spec/lutaml/model/collection_mutation_spec.rb +124 -0
  1294. data/spec/lutaml/model/collection_spec.rb +580 -155
  1295. data/spec/lutaml/model/collection_validation_spec.rb +736 -0
  1296. data/spec/lutaml/model/comparable_model_spec.rb +75 -0
  1297. data/spec/lutaml/model/compiled_rule_spec.rb +364 -0
  1298. data/spec/lutaml/model/consolidation_spec.rb +295 -0
  1299. data/spec/lutaml/model/context_registry_spec.rb +269 -0
  1300. data/spec/lutaml/model/custom_bibtex_adapter_spec.rb +21 -7
  1301. data/spec/lutaml/model/custom_collection_spec.rb +321 -27
  1302. data/spec/lutaml/model/custom_model_spec.rb +13 -10
  1303. data/spec/lutaml/model/custom_serialization_spec.rb +12 -14
  1304. data/spec/lutaml/model/custom_vobject_adapter_spec.rb +36 -16
  1305. data/spec/lutaml/model/default_register_spec.rb +852 -0
  1306. data/spec/lutaml/model/defaults_spec.rb +57 -6
  1307. data/spec/lutaml/model/delegation_spec.rb +184 -110
  1308. data/spec/lutaml/model/derived_attribute_serialization_spec.rb +33 -0
  1309. data/spec/lutaml/model/dynamic_attribute_spec.rb +112 -0
  1310. data/spec/lutaml/model/encoding_spec.rb +281 -0
  1311. data/spec/lutaml/model/enum_spec.rb +46 -2
  1312. data/spec/lutaml/model/except_spec.rb +240 -0
  1313. data/spec/lutaml/model/finalization_cache_spec.rb +88 -0
  1314. data/spec/lutaml/model/global_context_spec.rb +421 -0
  1315. data/spec/lutaml/model/global_register_spec.rb +153 -36
  1316. data/spec/lutaml/model/group_spec.rb +193 -54
  1317. data/spec/lutaml/model/hash/adapter_spec.rb +5 -3
  1318. data/spec/lutaml/model/import_registry_spec.rb +295 -0
  1319. data/spec/lutaml/model/included_spec.rb +10 -17
  1320. data/spec/lutaml/model/inheritance_spec.rb +6 -6
  1321. data/spec/lutaml/model/json_adapter_spec.rb +13 -6
  1322. data/spec/lutaml/model/json_spec.rb +33 -0
  1323. data/spec/lutaml/model/key_value_data_model/key_value_element_spec.rb +320 -0
  1324. data/spec/lutaml/model/key_value_mapping_spec.rb +12 -2
  1325. data/spec/lutaml/model/lazy_collection_spec.rb +208 -0
  1326. data/spec/lutaml/model/liquefiable_spec.rb +263 -24
  1327. data/spec/lutaml/model/logger_spec.rb +68 -0
  1328. data/spec/lutaml/model/map_all_spec.rb +36 -11
  1329. data/spec/lutaml/model/map_content_spec.rb +4 -4
  1330. data/spec/lutaml/model/mapping_rule_perf_guard_spec.rb +71 -0
  1331. data/spec/lutaml/model/mixed_content_spec.rb +481 -171
  1332. data/spec/lutaml/model/model_transformer_spec.rb +678 -0
  1333. data/spec/lutaml/model/multiple_mapping_spec.rb +71 -39
  1334. data/spec/lutaml/model/namespace_versioning_spec.rb +390 -0
  1335. data/spec/lutaml/model/one_entry_cache_spec.rb +114 -0
  1336. data/spec/lutaml/model/ordered_content_spec.rb +115 -24
  1337. data/spec/lutaml/model/polymorphic_spec.rb +29 -6
  1338. data/spec/lutaml/model/processing_instruction_spec.rb +375 -0
  1339. data/spec/lutaml/model/{register/key_value_spec.rb → register_key_value_spec.rb} +57 -5
  1340. data/spec/lutaml/model/register_spec.rb +235 -5
  1341. data/spec/lutaml/model/render_empty_spec.rb +143 -6
  1342. data/spec/lutaml/model/render_nil_spec.rb +15 -10
  1343. data/spec/lutaml/model/root_mappings_spec.rb +16 -6
  1344. data/spec/lutaml/model/rule_value_extractor_spec.rb +13 -44
  1345. data/spec/lutaml/model/runtime_compatibility_spec.rb +36 -0
  1346. data/spec/lutaml/model/schema/generator/definitions_collection_spec.rb +4 -0
  1347. data/spec/lutaml/model/schema/json_schema_spec.rb +7 -1
  1348. data/spec/lutaml/model/schema/relaxng_schema_spec.rb +1 -1
  1349. data/spec/lutaml/model/schema/renderer_spec.rb +128 -0
  1350. data/spec/lutaml/model/schema/xsd_schema_spec.rb +1 -1
  1351. data/spec/lutaml/model/sequence_spec.rb +460 -15
  1352. data/spec/lutaml/model/serializable_spec.rb +212 -12
  1353. data/spec/lutaml/model/serializable_validation_spec.rb +3 -2
  1354. data/spec/lutaml/model/serialize_perf_guard_spec.rb +100 -0
  1355. data/spec/lutaml/model/services/default_value_resolver_spec.rb +162 -0
  1356. data/spec/lutaml/model/simple_model_spec.rb +4 -4
  1357. data/spec/lutaml/model/toml_adapter_spec.rb +11 -4
  1358. data/spec/lutaml/model/toml_spec.rb +46 -2
  1359. data/spec/lutaml/model/transformation_builder_spec.rb +283 -0
  1360. data/spec/lutaml/model/transformation_spec.rb +165 -236
  1361. data/spec/lutaml/model/type/base64_binary_spec.rb +202 -0
  1362. data/spec/lutaml/model/type/date_spec.rb +132 -0
  1363. data/spec/lutaml/model/type/date_time_spec.rb +54 -2
  1364. data/spec/lutaml/model/type/decimal_spec.rb +1 -1
  1365. data/spec/lutaml/model/type/duration_spec.rb +185 -0
  1366. data/spec/lutaml/model/type/hex_binary_spec.rb +225 -0
  1367. data/spec/lutaml/model/type/integer_spec.rb +1 -1
  1368. data/spec/lutaml/model/type/qname_spec.rb +246 -0
  1369. data/spec/lutaml/model/type/reference_integration_spec.rb +532 -0
  1370. data/spec/lutaml/model/type/reference_spec.rb +293 -0
  1371. data/spec/lutaml/model/type/symbol_spec.rb +322 -0
  1372. data/spec/lutaml/model/type/time_spec.rb +6 -5
  1373. data/spec/lutaml/model/type/time_without_date_spec.rb +1 -1
  1374. data/spec/lutaml/model/type/uninitialized_class_spec.rb +110 -0
  1375. data/spec/lutaml/model/type/uri_spec.rb +176 -0
  1376. data/spec/lutaml/model/type/value_xml_mapping_spec.rb +162 -0
  1377. data/spec/lutaml/model/type_context_spec.rb +370 -0
  1378. data/spec/lutaml/model/type_registry_spec.rb +313 -0
  1379. data/spec/lutaml/model/type_resolver_spec.rb +278 -0
  1380. data/spec/lutaml/model/type_spec.rb +7 -8
  1381. data/spec/lutaml/model/type_substitution_spec.rb +172 -0
  1382. data/spec/lutaml/model/utils_spec.rb +39 -24
  1383. data/spec/lutaml/model/value_map_spec.rb +2 -2
  1384. data/spec/lutaml/model/value_transformation_comprehensive_spec.rb +676 -0
  1385. data/spec/lutaml/model/with_child_mapping_spec.rb +1 -1
  1386. data/spec/lutaml/model/xml_decoupling_spec.rb +435 -0
  1387. data/spec/lutaml/model/xsd_form_default_patterns_spec.rb +664 -0
  1388. data/spec/lutaml/model/xsd_patterns_spec.rb +278 -0
  1389. data/spec/lutaml/model/xsd_type_spec.rb +345 -0
  1390. data/spec/lutaml/model/xsd_type_validation_spec.rb +442 -0
  1391. data/spec/lutaml/model/yamls/standard_adapter_spec.rb +2 -2
  1392. data/spec/lutaml/xml/adapter/nokogiri_adapter_spec.rb +130 -0
  1393. data/spec/lutaml/xml/adapter/oga_adapter_spec.rb +135 -0
  1394. data/spec/lutaml/xml/adapter/ox_adapter_spec.rb +101 -0
  1395. data/spec/lutaml/xml/adapter/rexml_adapter_spec.rb +101 -0
  1396. data/spec/lutaml/xml/adapter/xml_namespace_spec.rb +531 -0
  1397. data/spec/lutaml/xml/builder/builder_spec.rb +216 -0
  1398. data/spec/lutaml/xml/compiled_rule_namespace_spec.rb +405 -0
  1399. data/spec/lutaml/xml/conformance/xml_namespaces_spec.rb +580 -0
  1400. data/spec/lutaml/xml/conformance/xml_schema_instance_spec.rb +266 -0
  1401. data/spec/lutaml/xml/data_model_spec.rb +300 -0
  1402. data/spec/lutaml/xml/decisions/decision_engine_spec.rb +242 -0
  1403. data/spec/lutaml/xml/decisions/decision_spec.rb +217 -0
  1404. data/spec/lutaml/xml/decisions/element_prefix_resolver_spec.rb +198 -0
  1405. data/spec/lutaml/xml/declaration_planner_spec.rb +524 -0
  1406. data/spec/lutaml/xml/default_namespace_spec.rb +190 -0
  1407. data/spec/lutaml/{model/xml → xml}/derived_attributes_spec.rb +2 -2
  1408. data/spec/lutaml/xml/doctype_preservation_spec.rb +323 -0
  1409. data/spec/lutaml/xml/doubly_defined_namespace_spec.rb +415 -0
  1410. data/spec/lutaml/xml/dual_namespace_element_spec.rb +181 -0
  1411. data/spec/lutaml/xml/element_spec.rb +28 -0
  1412. data/spec/lutaml/xml/encoding_normalizer_spec.rb +215 -0
  1413. data/spec/lutaml/xml/enhanced_mapping_spec.rb +692 -0
  1414. data/spec/lutaml/xml/entity_fragmentation_spec.rb +583 -0
  1415. data/spec/lutaml/xml/format_chooser_spec.rb +0 -0
  1416. data/spec/lutaml/xml/fpi_namespace_spec.rb +145 -0
  1417. data/spec/lutaml/{model/xml/namespace_spec.rb → xml/general_namespace_spec.rb} +6 -5
  1418. data/spec/lutaml/xml/mapping_finalization_guard_spec.rb +83 -0
  1419. data/spec/lutaml/xml/mapping_rule_spec.rb +98 -0
  1420. data/spec/lutaml/xml/mapping_spec.rb +1147 -0
  1421. data/spec/lutaml/xml/model_transform_guard_spec.rb +126 -0
  1422. data/spec/lutaml/{model/xml → xml}/namespace/nested_with_explicit_namespace_spec.rb +8 -5
  1423. data/spec/lutaml/xml/namespace/w3c_reserved_warning_spec.rb +152 -0
  1424. data/spec/lutaml/xml/namespace_alias_prefix_root_spec.rb +130 -0
  1425. data/spec/lutaml/xml/namespace_alias_spec.rb +263 -0
  1426. data/spec/lutaml/xml/namespace_aware_parsing_spec.rb +219 -0
  1427. data/spec/lutaml/xml/namespace_backward_compatibility_spec.rb +48 -0
  1428. data/spec/lutaml/xml/namespace_bound_element_roundtrip_spec.rb +433 -0
  1429. data/spec/lutaml/xml/namespace_constant_spec.rb +383 -0
  1430. data/spec/lutaml/xml/namespace_force_prefix_spec.rb +113 -0
  1431. data/spec/lutaml/xml/namespace_format_preservation_spec.rb +49 -0
  1432. data/spec/lutaml/xml/namespace_inheritance_deep_spec.rb +162 -0
  1433. data/spec/lutaml/xml/namespace_inheritance_override_spec.rb +316 -0
  1434. data/spec/lutaml/xml/namespace_inheritance_resolver_spec.rb +0 -0
  1435. data/spec/lutaml/xml/namespace_inheritance_spec.rb +966 -0
  1436. data/spec/lutaml/xml/namespace_integration_spec.rb +277 -0
  1437. data/spec/lutaml/xml/namespace_missing_prefix_spec.rb +178 -0
  1438. data/spec/lutaml/xml/namespace_no_hoisting_spec.rb +172 -0
  1439. data/spec/lutaml/xml/namespace_placement_spec.rb +265 -0
  1440. data/spec/lutaml/xml/namespace_preservation_spec.rb +427 -0
  1441. data/spec/lutaml/xml/namespace_principles_spec.rb +909 -0
  1442. data/spec/lutaml/xml/namespace_resolution_strategy_spec.rb +273 -0
  1443. data/spec/lutaml/xml/namespace_scope_declare_spec.rb +205 -0
  1444. data/spec/lutaml/xml/namespace_scope_spec.rb +389 -0
  1445. data/spec/lutaml/xml/namespace_scope_vcard_spec.rb +616 -0
  1446. data/spec/lutaml/xml/namespace_spec.rb +712 -0
  1447. data/spec/lutaml/xml/namespace_three_phase_spec.rb +310 -0
  1448. data/spec/lutaml/xml/nil_optional_element_namespace_spec.rb +84 -0
  1449. data/spec/lutaml/xml/ooxml_namespace_spec.rb +177 -0
  1450. data/spec/lutaml/xml/ordered_method_spec.rb +109 -0
  1451. data/spec/lutaml/xml/prefix_control_spec.rb +286 -0
  1452. data/spec/lutaml/{model/register/xml_spec.rb → xml/register_spec.rb} +75 -21
  1453. data/spec/lutaml/xml/reusable_mapping_spec.rb +148 -0
  1454. data/spec/lutaml/xml/reused_elements_namespace_spec.rb +85 -0
  1455. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/attribute_group_spec.rb +9 -3
  1456. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/attribute_spec.rb +11 -7
  1457. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/choice_spec.rb +5 -2
  1458. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/complex_content_restriction_spec.rb +7 -2
  1459. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/complex_content_spec.rb +5 -1
  1460. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/complex_type_spec.rb +49 -20
  1461. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/element_spec.rb +9 -4
  1462. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/group_spec.rb +9 -5
  1463. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/restriction_spec.rb +1 -0
  1464. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/sequence_spec.rb +10 -4
  1465. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/simple_content_spec.rb +9 -3
  1466. data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/simple_type_spec.rb +10 -7
  1467. data/spec/lutaml/{model/schema/xml_compiler_spec.rb → xml/schema/compiler_spec.rb} +219 -94
  1468. data/spec/lutaml/xml/schema/xsd/errors/error_context_spec.rb +65 -0
  1469. data/spec/lutaml/xml/schema/xsd/errors/suggestion_spec.rb +77 -0
  1470. data/spec/lutaml/xml/schema/xsd/file_validation_result_spec.rb +131 -0
  1471. data/spec/lutaml/xml/schema/xsd/glob_spec.rb +318 -0
  1472. data/spec/lutaml/xml/schema/xsd/liquid_methods/attribute_and_group_spec.rb +76 -0
  1473. data/spec/lutaml/xml/schema/xsd/liquid_methods/complex_type_spec.rb +159 -0
  1474. data/spec/lutaml/xml/schema/xsd/liquid_methods/containers_spec.rb +104 -0
  1475. data/spec/lutaml/xml/schema/xsd/liquid_methods/element_spec.rb +139 -0
  1476. data/spec/lutaml/xml/schema/xsd/liquid_methods/schema_spec.rb +75 -0
  1477. data/spec/lutaml/xml/schema/xsd/liquid_methods/simple_content_spec.rb +79 -0
  1478. data/spec/lutaml/xml/schema/xsd/namespace_uri_remapping_spec.rb +246 -0
  1479. data/spec/lutaml/xml/schema/xsd/schema_helper_methods_spec.rb +237 -0
  1480. data/spec/lutaml/xml/schema/xsd/schema_mapping_spec.rb +742 -0
  1481. data/spec/lutaml/xml/schema/xsd/schema_validator_spec.rb +228 -0
  1482. data/spec/lutaml/xml/schema/xsd/spec_helper.rb +26 -0
  1483. data/spec/lutaml/xml/schema/xsd/validation_error_spec.rb +189 -0
  1484. data/spec/lutaml/xml/schema/xsd/validation_result_spec.rb +276 -0
  1485. data/spec/lutaml/xml/schema/xsd/xsd_spec.rb +51 -0
  1486. data/spec/lutaml/xml/schema_primer_spec.rb +393 -0
  1487. data/spec/lutaml/xml/serializable_namespace_spec.rb +125 -0
  1488. data/spec/lutaml/xml/transformation/custom_method_wrapper_spec.rb +48 -0
  1489. data/spec/lutaml/xml/transformation_spec.rb +439 -0
  1490. data/spec/lutaml/xml/type_namespace/collector_spec.rb +212 -0
  1491. data/spec/lutaml/xml/type_namespace/planner_spec.rb +270 -0
  1492. data/spec/lutaml/xml/type_namespace_examples_spec.rb +521 -0
  1493. data/spec/lutaml/xml/type_namespace_integration_spec.rb +332 -0
  1494. data/spec/lutaml/xml/type_namespace_prefix_spec.rb +370 -0
  1495. data/spec/lutaml/xml/type_namespace_resolver_spec.rb +0 -0
  1496. data/spec/lutaml/xml/type_namespace_roundtrip_spec.rb +580 -0
  1497. data/spec/lutaml/xml/w3c_types_spec.rb +376 -0
  1498. data/spec/lutaml/{model → xml}/xml_adapter_spec.rb +64 -17
  1499. data/spec/lutaml/xml/xml_declaration_spec.rb +568 -0
  1500. data/spec/lutaml/xml/xml_element_guard_spec.rb +138 -0
  1501. data/spec/lutaml/{model/xml → xml}/xml_element_spec.rb +1 -1
  1502. data/spec/lutaml/xml/xml_lang_spec.rb +441 -0
  1503. data/spec/lutaml/xml/xml_space_spec.rb +247 -0
  1504. data/spec/lutaml/xml/xml_space_type_spec.rb +161 -0
  1505. data/spec/lutaml/xml/xml_spec.rb +122 -0
  1506. data/spec/parent_root_spec.rb +63 -0
  1507. data/spec/person_spec.rb +9 -9
  1508. data/spec/spec_helper.rb +64 -6
  1509. data/spec/support/test_adapter_config.rb +101 -0
  1510. data/spec/support/test_namespaces.rb +185 -0
  1511. data/spec/support/trace_helper.rb +0 -0
  1512. data/spec/support/xml/schema_helper.rb +15 -0
  1513. data/spec/support/xml/xsd/code_example_validator.rb +393 -0
  1514. data/spec/support/xml_mapping_namespaces.rb +176 -0
  1515. metadata +1465 -100
  1516. data/docs/custom_registers.adoc +0 -228
  1517. data/lib/lutaml/model/hash_adapter/mapping.rb +0 -19
  1518. data/lib/lutaml/model/hash_adapter/mapping_rule.rb +0 -9
  1519. data/lib/lutaml/model/hash_adapter/transform.rb +0 -8
  1520. data/lib/lutaml/model/hash_adapter.rb +0 -21
  1521. data/lib/lutaml/model/json/mapping.rb +0 -19
  1522. data/lib/lutaml/model/json/mapping_rule.rb +0 -9
  1523. data/lib/lutaml/model/json/multi_json_adapter.rb +0 -18
  1524. data/lib/lutaml/model/json/standard_adapter.rb +0 -25
  1525. data/lib/lutaml/model/json/transform.rb +0 -8
  1526. data/lib/lutaml/model/jsonl/mapping.rb +0 -19
  1527. data/lib/lutaml/model/jsonl/mapping_rule.rb +0 -9
  1528. data/lib/lutaml/model/jsonl/transform.rb +0 -19
  1529. data/lib/lutaml/model/schema/xsd_schema.rb +0 -62
  1530. data/lib/lutaml/model/toml/mapping_rule.rb +0 -9
  1531. data/lib/lutaml/model/toml/toml_rb_adapter.rb +0 -18
  1532. data/lib/lutaml/model/toml/tomlib_adapter.rb +0 -19
  1533. data/lib/lutaml/model/toml/transform.rb +0 -8
  1534. data/lib/lutaml/model/xml/builder/nokogiri.rb +0 -101
  1535. data/lib/lutaml/model/xml/builder/oga.rb +0 -183
  1536. data/lib/lutaml/model/xml/builder/ox.rb +0 -121
  1537. data/lib/lutaml/model/xml/document.rb +0 -477
  1538. data/lib/lutaml/model/xml/element.rb +0 -32
  1539. data/lib/lutaml/model/xml/mapping.rb +0 -471
  1540. data/lib/lutaml/model/xml/mapping_rule.rb +0 -149
  1541. data/lib/lutaml/model/xml/nokogiri_adapter.rb +0 -234
  1542. data/lib/lutaml/model/xml/oga/document.rb +0 -20
  1543. data/lib/lutaml/model/xml/oga/element.rb +0 -123
  1544. data/lib/lutaml/model/xml/oga_adapter.rb +0 -172
  1545. data/lib/lutaml/model/xml/ox_adapter.rb +0 -229
  1546. data/lib/lutaml/model/xml/transform.rb +0 -8
  1547. data/lib/lutaml/model/xml/xml_attribute.rb +0 -37
  1548. data/lib/lutaml/model/xml/xml_element.rb +0 -167
  1549. data/lib/lutaml/model/xml/xml_namespace.rb +0 -49
  1550. data/lib/lutaml/model/xml.rb +0 -31
  1551. data/lib/lutaml/model/xml_adapter/element.rb +0 -18
  1552. data/lib/lutaml/model/xml_adapter/nokogiri_adapter.rb +0 -15
  1553. data/lib/lutaml/model/xml_adapter/oga_adapter.rb +0 -21
  1554. data/lib/lutaml/model/xml_adapter/ox_adapter.rb +0 -18
  1555. data/lib/lutaml/model/xml_adapter.rb +0 -7
  1556. data/lib/lutaml/model/yaml/mapping.rb +0 -19
  1557. data/lib/lutaml/model/yaml/mapping_rule.rb +0 -9
  1558. data/lib/lutaml/model/yaml/standard_adapter.rb +0 -28
  1559. data/lib/lutaml/model/yaml/transform.rb +0 -8
  1560. data/lib/lutaml/model/yamls/mapping.rb +0 -19
  1561. data/lib/lutaml/model/yamls/mapping_rule.rb +0 -9
  1562. data/lib/lutaml/model/yamls/transform.rb +0 -19
  1563. data/spec/benchmarks/xml_parsing_benchmark_spec.rb +0 -74
  1564. data/spec/fixtures/xml/advanced_test_schema.xsd +0 -134
  1565. data/spec/lutaml/model/namespace_spec.rb +0 -57
  1566. data/spec/lutaml/model/xml_adapter/nokogiri_adapter_spec.rb +0 -56
  1567. data/spec/lutaml/model/xml_adapter/oga_adapter_spec.rb +0 -60
  1568. data/spec/lutaml/model/xml_adapter/ox_adapter_spec.rb +0 -61
  1569. data/spec/lutaml/model/xml_adapter/xml_namespace_spec.rb +0 -368
  1570. data/spec/lutaml/model/xml_mapping_rule_spec.rb +0 -158
  1571. data/spec/lutaml/model/xml_mapping_spec.rb +0 -1318
  1572. data/spec/lutaml/model/xml_spec.rb +0 -63
  1573. /data/spec/lutaml/{model/xml → xml}/root_mappings/nested_child_mappings_spec.rb +0 -0
@@ -1,18 +1,20 @@
1
1
  # spec/lutaml/model/mixed_content_spec.rb
2
2
 
3
3
  require "spec_helper"
4
- require "lutaml/model"
5
- require "lutaml/model/xml/nokogiri_adapter"
6
- require "lutaml/model/xml/ox_adapter"
7
- require "lutaml/model/xml/oga_adapter"
4
+ require_relative "../../../lib/lutaml/model"
5
+ require "lutaml/xml/adapter/nokogiri_adapter"
6
+ require "lutaml/xml/adapter/ox_adapter"
7
+ require "lutaml/xml/adapter/oga_adapter"
8
+ require "lutaml/xml/adapter/rexml_adapter"
8
9
  require_relative "../../fixtures/sample_model"
10
+ require_relative "../../support/xml_mapping_namespaces"
9
11
 
10
12
  module MixedContentSpec
11
13
  class PlanetaryBody < Lutaml::Model::Serializable
12
14
  attribute :name, :string
13
15
  attribute :distance_from_earth, :integer
14
16
  xml do
15
- root "PlanetaryBody"
17
+ element "PlanetaryBody"
16
18
  map_element "Name", to: :name
17
19
  map_element "DistanceFromEarth", to: :distance_from_earth
18
20
  end
@@ -22,7 +24,7 @@ module MixedContentSpec
22
24
  attribute :content, :string
23
25
 
24
26
  xml do
25
- root "source"
27
+ element "source"
26
28
  map_content to: :content
27
29
  end
28
30
  end
@@ -31,7 +33,7 @@ module MixedContentSpec
31
33
  attribute :source, Source
32
34
 
33
35
  xml do
34
- root "element-citation"
36
+ element "element-citation"
35
37
  map_element "source", to: :source
36
38
  end
37
39
  end
@@ -40,7 +42,7 @@ module MixedContentSpec
40
42
  attribute :element_citation, ElementCitation
41
43
 
42
44
  xml do
43
- root "ref"
45
+ element "ref"
44
46
  map_element "element-citation", to: :element_citation
45
47
  end
46
48
  end
@@ -49,7 +51,7 @@ module MixedContentSpec
49
51
  attribute :ref, Ref
50
52
 
51
53
  xml do
52
- root "ref-list"
54
+ element "ref-list"
53
55
  map_element "ref", to: :ref
54
56
  end
55
57
  end
@@ -58,7 +60,7 @@ module MixedContentSpec
58
60
  attribute :ref_list, RefList
59
61
 
60
62
  xml do
61
- root "back"
63
+ element "back"
62
64
  map_element "ref-list", to: :ref_list
63
65
  end
64
66
  end
@@ -67,7 +69,7 @@ module MixedContentSpec
67
69
  attribute :back, Back
68
70
 
69
71
  xml do
70
- root "article"
72
+ element "article"
71
73
  map_element "back", to: :back
72
74
  end
73
75
  end
@@ -78,7 +80,7 @@ module MixedContentSpec
78
80
  attribute :heading, :string
79
81
 
80
82
  xml do
81
- root "note"
83
+ element "note"
82
84
  map_element "to", to: :the
83
85
  map_element "from", to: :from
84
86
  map_element "heading", to: :heading
@@ -89,16 +91,17 @@ module MixedContentSpec
89
91
  attribute :field, :string, collection: true
90
92
 
91
93
  xml do
92
- root "root"
94
+ element "root"
93
95
  map_element "FieldName", to: :field
94
96
  end
95
97
  end
96
98
 
97
99
  class SpecialCharContentWithMixedTrue < Lutaml::Model::Serializable
98
- attribute :content, :string
100
+ attribute :content, :string, collection: true
99
101
 
100
102
  xml do
101
- root "SpecialCharContentWithMixedTrue", mixed: true
103
+ element "SpecialCharContentWithMixedTrue"
104
+ mixed_content
102
105
  map_content to: :content
103
106
  end
104
107
  end
@@ -107,7 +110,8 @@ module MixedContentSpec
107
110
  attribute :special, :string, raw: true
108
111
 
109
112
  xml do
110
- root "SpecialCharContentWithRawOptionAndMixedOption", mixed: true
113
+ element "SpecialCharContentWithRawOptionAndMixedOption"
114
+ mixed_content
111
115
  map_element :special, to: :special
112
116
  end
113
117
  end
@@ -117,10 +121,11 @@ module MixedContentSpec
117
121
  attribute :bold, :string, collection: true
118
122
  attribute :italic, :string, collection: true
119
123
  attribute :underline, :string
120
- attribute :content, :string
124
+ attribute :content, :string, collection: true
121
125
 
122
126
  xml do
123
- root "RootMixedContent", mixed: true
127
+ element "RootMixedContent"
128
+ mixed_content
124
129
  map_attribute :id, to: :id
125
130
  map_element :bold, to: :bold
126
131
  map_element :italic, to: :italic
@@ -135,10 +140,11 @@ module MixedContentSpec
135
140
  attribute :italic, :string, collection: true
136
141
  attribute :underline, :string
137
142
  attribute :planetary_body, PlanetaryBody
138
- attribute :content, :string
143
+ attribute :content, :string, collection: true
139
144
 
140
145
  xml do
141
- root "RootMixedContentWithModel", mixed: true
146
+ element "RootMixedContentWithModel"
147
+ mixed_content
142
148
  map_content to: :content
143
149
  map_attribute :id, to: :id
144
150
  map_element :bold, to: :bold
@@ -150,13 +156,14 @@ module MixedContentSpec
150
156
 
151
157
  class RootMixedContentNested < Lutaml::Model::Serializable
152
158
  attribute :id, :string
153
- attribute :text, :string
159
+ attribute :text, :string, collection: true
154
160
  attribute :content, RootMixedContent
155
161
  attribute :sup, :string, collection: true
156
162
  attribute :sub, :string, collection: true
157
163
 
158
164
  xml do
159
- root "RootMixedContentNested", mixed: true
165
+ element "RootMixedContentNested"
166
+ mixed_content
160
167
  map_content to: :text
161
168
  map_attribute :id, to: :id
162
169
  map_element :sup, to: :sup
@@ -167,13 +174,14 @@ module MixedContentSpec
167
174
 
168
175
  class RootMixedContentNestedWithModel < Lutaml::Model::Serializable
169
176
  attribute :id, :string
170
- attribute :text, :string
177
+ attribute :text, :string, collection: true
171
178
  attribute :content, RootMixedContentWithModel
172
179
  attribute :sup, :string, collection: true
173
180
  attribute :sub, :string, collection: true
174
181
 
175
182
  xml do
176
- root "RootMixedContentNestedWithModel", mixed: true
183
+ element "RootMixedContentNestedWithModel"
184
+ mixed_content
177
185
 
178
186
  map_content to: :text
179
187
  map_attribute :id, to: :id
@@ -187,7 +195,7 @@ module MixedContentSpec
187
195
  attribute :value, :string
188
196
 
189
197
  xml do
190
- root "TextualSupport"
198
+ element "TextualSupport"
191
199
 
192
200
  map_element :value, to: :value
193
201
  end
@@ -197,10 +205,76 @@ module MixedContentSpec
197
205
  attribute :content, :string
198
206
 
199
207
  xml do
200
- root "HexCode"
208
+ element "HexCode"
201
209
  map_content to: :content
202
210
  end
203
211
  end
212
+
213
+ module PrefixedElements
214
+ class Annotation < Lutaml::Model::Serializable
215
+ attribute :content, :string
216
+
217
+ xml do
218
+ element "annotation"
219
+ namespace ExampleSchemaNamespace
220
+
221
+ map_content to: :content
222
+ end
223
+ end
224
+
225
+ class Element < Lutaml::Model::Serializable
226
+ attribute :name, :string
227
+ attribute :status, :string
228
+ attribute :annotation, Annotation
229
+
230
+ xml do
231
+ element "element"
232
+ mixed_content
233
+
234
+ namespace ExampleSchemaNamespace
235
+
236
+ map_attribute :name, to: :name
237
+ map_attribute :status, to: :status
238
+ map_element :annotation, to: :annotation
239
+ end
240
+ end
241
+
242
+ class Schema < Lutaml::Model::Serializable
243
+ attribute :element, Element, collection: true
244
+
245
+ xml do
246
+ element "schema"
247
+ namespace ExampleSchemaNamespace
248
+
249
+ map_element :element, to: :element
250
+ end
251
+ end
252
+ end
253
+
254
+ # Models for mutation-after-deserialization tests (issue #630)
255
+ class MiElement < Lutaml::Model::Serializable
256
+ attribute :value, :string, collection: true
257
+ attribute :mathvariant, :string
258
+
259
+ xml do
260
+ root "mi"
261
+ mixed_content
262
+ map_content to: :value
263
+ map_attribute "mathvariant", to: :mathvariant
264
+ end
265
+ end
266
+
267
+ class ParaMixedContent < Lutaml::Model::Serializable
268
+ attribute :content, :string, collection: true
269
+ attribute :bold, :string
270
+
271
+ xml do
272
+ root "p"
273
+ mixed_content
274
+ map_content to: :content
275
+ map_element "b", to: :bold
276
+ end
277
+ end
204
278
  end
205
279
 
206
280
  RSpec.describe "MixedContent" do
@@ -246,7 +320,7 @@ RSpec.describe "MixedContent" do
246
320
 
247
321
  # due to the difference in capturing
248
322
  # newlines in ox and nokogiri adapters
249
- if adapter_class == Lutaml::Model::Xml::OxAdapter
323
+ if adapter_class == Lutaml::Xml::Adapter::OxAdapter
250
324
  expected_output = expected_output.gsub(/\n\s*/, " ")
251
325
  end
252
326
 
@@ -254,7 +328,17 @@ RSpec.describe "MixedContent" do
254
328
  end
255
329
 
256
330
  serialized = parsed.to_xml
257
- expect(serialized).to be_equivalent_to(xml)
331
+
332
+ # Ox normalizes whitespace in mixed content per XML spec (semantically equivalent)
333
+ # Canon can't compare whitespace-normalized XML, so we normalize both sides for Ox
334
+ if adapter_class == Lutaml::Xml::Adapter::OxAdapter
335
+ normalize = ->(str) {
336
+ str.gsub(/\s+/, " ").gsub(/\s*</, "<").gsub(/>\s*/, ">").strip
337
+ }
338
+ expect(normalize.call(serialized)).to eq(normalize.call(xml))
339
+ else
340
+ expect(serialized).to be_xml_equivalent_to(xml)
341
+ end
258
342
  end
259
343
  end
260
344
 
@@ -297,7 +381,7 @@ RSpec.describe "MixedContent" do
297
381
 
298
382
  # due to the difference in capturing
299
383
  # newlines in ox and nokogiri adapters
300
- if adapter_class == Lutaml::Model::Xml::OxAdapter
384
+ if adapter_class == Lutaml::Xml::Adapter::OxAdapter
301
385
  expected_output = expected_output.gsub(/\n\s*/, " ")
302
386
  end
303
387
 
@@ -308,7 +392,17 @@ RSpec.describe "MixedContent" do
308
392
  expect(parsed.planetary_body.distance_from_earth).to eq(384400)
309
393
 
310
394
  serialized = parsed.to_xml
311
- expect(serialized).to be_equivalent_to(xml)
395
+
396
+ # Ox normalizes whitespace in mixed content per XML spec (semantically equivalent)
397
+ # Canon can't compare whitespace-normalized XML, so we normalize both sides for Ox
398
+ if adapter_class == Lutaml::Xml::Adapter::OxAdapter
399
+ normalize = ->(str) {
400
+ str.gsub(/\s+/, " ").gsub(/\s*</, "<").gsub(/>\s*/, ">").strip
401
+ }
402
+ expect(normalize.call(serialized)).to eq(normalize.call(xml))
403
+ else
404
+ expect(serialized).to be_xml_equivalent_to(xml)
405
+ end
312
406
  end
313
407
  end
314
408
 
@@ -339,6 +433,12 @@ RSpec.describe "MixedContent" do
339
433
  ".\n Ain't that ",
340
434
  "?\n ",
341
435
  ]
436
+ expected_nokogiri_content = [
437
+ "\n The Earth's Moon rings like a bell when struck by\n",
438
+ " meteroids. Distanced from the Earth by 384,400 km,\n",
439
+ " its surface is covered in craters.\n",
440
+ " Ain't that cool?\n ",
441
+ ].join
342
442
 
343
443
  expect(parsed.id).to eq("outer123")
344
444
  expect(parsed.sup).to eq(["1", "2"])
@@ -348,20 +448,33 @@ RSpec.describe "MixedContent" do
348
448
  expect(parsed.content.italic).to eq(["384,400 km"])
349
449
  expect(parsed.content.underline).to eq("craters")
350
450
 
351
- parsed.content.content.each_with_index do |content, index|
352
- expected_output = expected_content[index]
451
+ if parsed.content.content.is_a?(Array)
452
+ parsed.content.content.each_with_index do |content, index|
453
+ expected_output = expected_content[index]
353
454
 
354
- # due to the difference in capturing
355
- # newlines in ox and nokogiri adapters
356
- if adapter_class == Lutaml::Model::Xml::OxAdapter
357
- expected_output = expected_output.gsub(/\n\s*/, " ")
358
- end
455
+ # due to the difference in capturing
456
+ # newlines in ox and nokogiri adapters
457
+ if adapter_class == Lutaml::Xml::Adapter::OxAdapter
458
+ expected_output = expected_output.gsub(/\n\s*/, " ")
459
+ end
359
460
 
360
- expect(content).to eq(expected_output)
461
+ expect(content).to eq(expected_output)
462
+ end
463
+ else
464
+ expect(parsed.content.content).to eq(expected_nokogiri_content)
361
465
  end
362
-
363
466
  serialized = parsed.to_xml
364
- expect(serialized).to be_equivalent_to(xml)
467
+
468
+ # Ox normalizes whitespace in mixed content per XML spec (semantically equivalent)
469
+ # Canon can't compare whitespace-normalized XML, so we normalize both sides for Ox
470
+ if adapter_class == Lutaml::Xml::Adapter::OxAdapter
471
+ normalize = ->(str) {
472
+ str.gsub(/\s+/, " ").gsub(/\s*</, "<").gsub(/>\s*/, ">").strip
473
+ }
474
+ expect(normalize.call(serialized)).to eq(normalize.call(xml))
475
+ else
476
+ expect(serialized).to be_xml_equivalent_to(xml)
477
+ end
365
478
  end
366
479
  end
367
480
 
@@ -398,6 +511,17 @@ RSpec.describe "MixedContent" do
398
511
  "?\n ",
399
512
  "\n NOTE: The above model content is to be formatted as a table.\n ",
400
513
  ]
514
+ expected_nokogiri_content = [
515
+ "\n The Earth's Moon rings like a bell when struck by\n",
516
+ " meteroids. Distanced from the Earth by 384,400 km,\n",
517
+ " its surface is covered in craters.\n",
518
+ " Ain't that cool?\n",
519
+ " \n",
520
+ " Moon\n",
521
+ " 384400\n",
522
+ " \n",
523
+ " NOTE: The above model content is to be formatted as a table.\n ",
524
+ ].join
401
525
 
402
526
  expect(parsed.id).to eq("outer123")
403
527
  expect(parsed.sup).to eq(["1", "2"])
@@ -407,23 +531,37 @@ RSpec.describe "MixedContent" do
407
531
  expect(parsed.content.italic).to eq(["384,400 km"])
408
532
  expect(parsed.content.underline).to eq("craters")
409
533
 
410
- parsed.content.content.each_with_index do |content, index|
411
- expected_output = expected_content[index]
534
+ if parsed.content.content.is_a?(Array)
535
+ parsed.content.content.each_with_index do |content, index|
536
+ expected_output = expected_content[index]
412
537
 
413
- # due to the difference in capturing
414
- # newlines in ox and nokogiri adapters
415
- if adapter_class == Lutaml::Model::Xml::OxAdapter
416
- expected_output = expected_output.gsub(/\n\s*/, " ")
417
- end
538
+ # due to the difference in capturing
539
+ # newlines in ox and nokogiri adapters
540
+ if adapter_class == Lutaml::Xml::Adapter::OxAdapter
541
+ expected_output = expected_output.gsub(/\n\s*/, " ")
542
+ end
418
543
 
419
- expect(content).to eq(expected_output)
544
+ expect(content).to eq(expected_output)
545
+ end
546
+ else
547
+ expect(parsed.content.content).to eq(expected_nokogiri_content)
420
548
  end
421
549
 
422
550
  expect(parsed.content.planetary_body.name).to eq("Moon")
423
551
  expect(parsed.content.planetary_body.distance_from_earth).to eq(384400)
424
552
 
425
553
  serialized = parsed.to_xml
426
- expect(serialized).to be_equivalent_to(xml)
554
+
555
+ # Ox normalizes whitespace in mixed content per XML spec (semantically equivalent)
556
+ # Canon can't compare whitespace-normalized XML, so we normalize both sides for Ox
557
+ if adapter_class == Lutaml::Xml::Adapter::OxAdapter
558
+ normalize = ->(str) {
559
+ str.gsub(/\s+/, " ").gsub(/\s*</, "<").gsub(/>\s*/, ">").strip
560
+ }
561
+ expect(normalize.call(serialized)).to eq(normalize.call(xml))
562
+ else
563
+ expect(serialized).to be_xml_equivalent_to(xml)
564
+ end
427
565
  end
428
566
  end
429
567
 
@@ -434,7 +572,7 @@ RSpec.describe "MixedContent" do
434
572
  attribute :id, :string
435
573
 
436
574
  xml do
437
- root "Invalid"
575
+ element "Invalid"
438
576
  map_element :id, to: :id, mixed: true
439
577
  end
440
578
  end
@@ -449,7 +587,7 @@ RSpec.describe "MixedContent" do
449
587
  attribute :id, :string
450
588
 
451
589
  xml do
452
- root "Invalid"
590
+ element "Invalid"
453
591
  map_attribute :id, to: :id, mixed: true
454
592
  end
455
593
  end
@@ -473,7 +611,7 @@ RSpec.describe "MixedContent" do
473
611
 
474
612
  it "deserializes special char mixed content correctly" do
475
613
  parsed = MixedContentSpec::SpecialCharContentWithMixedTrue.from_xml(xml)
476
- expect(parsed.content.strip).to eq(expected_content)
614
+ expect(parsed.content.join.strip).to eq(expected_content)
477
615
  end
478
616
  end
479
617
 
@@ -527,7 +665,11 @@ RSpec.describe "MixedContent" do
527
665
 
528
666
  describe ".from_xml" do
529
667
  let(:expected_nokogiri_content) do
530
- "B <p>R&amp;C</p>\n C <p>J&#x2014;C</p>\n O <p>A &amp; B </p>\n F <p>Z &#xA9;S</p>"
668
+ # Moxml resolves numeric character references (&#x2014;, &#xA9;) to
669
+ # their Unicode characters, matching Oga/Rexml behavior. Raw Nokogiri
670
+ # preserved numeric refs via native serialization, but the resolved
671
+ # form is semantically identical.
672
+ "B <p>R&amp;C</p>\n C <p>J\u{2014}C</p>\n O <p>A &amp; B </p>\n F <p>Z \u{A9}S</p>"
531
673
  end
532
674
  let(:expected_ox_content) do
533
675
  "B <p>R&amp;C</p> C <p>J—C</p> O <p>A &amp; B </p> F <p>Z ©S</p>"
@@ -535,11 +677,14 @@ RSpec.describe "MixedContent" do
535
677
  let(:expected_oga_content) do
536
678
  "B <p>R&amp;C</p>\n C <p>J—C</p>\n O <p>A &amp; B </p>\n F <p>Z ©S</p>"
537
679
  end
680
+ let(:expected_rexml_content) do
681
+ "B <p>R&amp;C</p>\n C <p>J—C</p>\n O <p>A &amp; B </p>\n F <p>Z ©S</p>"
682
+ end
538
683
 
539
684
  it "deserializes special char mixed content correctly" do
540
685
  parsed = MixedContentSpec::SpecialCharContentWithRawAndMixedOption.from_xml(xml)
541
686
  expected_content = public_send(:"expected_#{adapter_class.type}_content")
542
- parsed.special.force_encoding("UTF-8") unless adapter_class == Lutaml::Model::Xml::NokogiriAdapter
687
+ parsed.special.force_encoding("UTF-8") unless adapter_class == Lutaml::Xml::Adapter::NokogiriAdapter
543
688
 
544
689
  expect(parsed.special.strip).to eq(expected_content)
545
690
  end
@@ -550,7 +695,7 @@ RSpec.describe "MixedContent" do
550
695
  <<~XML
551
696
  <SpecialCharContentWithRawOptionAndMixedOption><special>
552
697
  B <p>R&amp;C</p>
553
- C <p>JC</p>
698
+ C <p>J&#x2014;C</p>
554
699
  O <p>A &amp; B </p>
555
700
  F <p>Z ©S</p>
556
701
  </special></SpecialCharContentWithRawOptionAndMixedOption>
@@ -581,11 +726,34 @@ RSpec.describe "MixedContent" do
581
726
  XML
582
727
  end
583
728
 
729
+ let(:expected_rexml_xml) do
730
+ <<~XML
731
+ <SpecialCharContentWithRawOptionAndMixedOption>
732
+ <special> B <p>R&amp;C</p>
733
+ C <p>J—C</p>
734
+ O <p>A &amp; B </p>
735
+ F <p>Z ©S</p>
736
+ </special>
737
+ </SpecialCharContentWithRawOptionAndMixedOption>
738
+ XML
739
+ end
740
+
584
741
  it "serializes special char mixed content correctly" do
585
742
  parsed = MixedContentSpec::SpecialCharContentWithRawAndMixedOption.from_xml(xml)
586
743
  serialized = parsed.to_xml
587
744
 
588
- expect(serialized).to be_equivalent_to(send(:"expected_#{adapter_class.type}_xml"))
745
+ expected_xml = send(:"expected_#{adapter_class.type}_xml")
746
+
747
+ # Ox and Oga normalize whitespace in mixed content per XML spec (semantically equivalent)
748
+ # Canon can't compare whitespace-normalized XML, so we normalize both sides
749
+ if [Lutaml::Xml::Adapter::OxAdapter, Lutaml::Xml::Adapter::OgaAdapter].include?(adapter_class)
750
+ normalize = ->(str) {
751
+ str.gsub(/\s+/, " ").gsub(/\s*</, "<").gsub(/>\s*/, ">").strip
752
+ }
753
+ expect(normalize.call(serialized)).to eq(normalize.call(expected_xml))
754
+ else
755
+ expect(serialized).to be_xml_equivalent_to(expected_xml)
756
+ end
589
757
  end
590
758
  end
591
759
  end
@@ -595,28 +763,29 @@ RSpec.describe "MixedContent" do
595
763
  <<~XML
596
764
  <SpecialCharContentWithRawAndMixedOption>
597
765
  <special>
598
- B <p>R&C</p>
766
+ B <p>R&amp;C</p>
599
767
  </special>
600
768
  </SpecialCharContentWithRawAndMixedOption>
601
769
  XML
602
770
  end
603
771
 
604
772
  describe ".from_xml" do
605
- let(:expected_nokogiri_content) { "B <p>R</p>" }
773
+ let(:expected_nokogiri_content) { "B <p>R&amp;C</p>" }
606
774
  let(:expected_ox_content) { "B <p>R&amp;C</p>" }
607
775
 
608
776
  it "deserializes special char mixed content correctly" do
609
777
  parsed = MixedContentSpec::SpecialCharContentWithRawAndMixedOption.from_xml(xml)
610
778
 
611
- expected_output = adapter_class == Lutaml::Model::Xml::NokogiriAdapter ? expected_nokogiri_content : expected_ox_content
779
+ expected_output = adapter_class == Lutaml::Xml::Adapter::NokogiriAdapter ? expected_nokogiri_content : expected_ox_content
612
780
  expect(parsed.special.strip).to eq(expected_output)
613
781
  end
614
782
  end
615
783
 
616
784
  describe ".to_xml" do
617
- let(:expected_nokogiri_xml) { "B <p>R</p>" }
618
- let(:expected_oga_xml) { "B <p>R&amp;C</p>" }
785
+ let(:expected_nokogiri_xml) { "B <p>R&amp;C</p>" }
619
786
  let(:expected_ox_xml) { "B <p>R&amp;C</p>" }
787
+ let(:expected_oga_xml) { "B <p>R&amp;C</p>" }
788
+ let(:expected_rexml_xml) { "B <p>R&amp;C</p>" }
620
789
 
621
790
  it "serializes special char mixed content correctly" do
622
791
  parsed = MixedContentSpec::SpecialCharContentWithRawAndMixedOption.from_xml(xml)
@@ -659,8 +828,7 @@ RSpec.describe "MixedContent" do
659
828
  it "serializes special char mixed content correctly" do
660
829
  parsed = MixedContentSpec::TextualSupport.from_xml(xml)
661
830
  serialized = parsed.to_xml
662
- expected = adapter_class.type == "oga" ? expected_oga_xml : expected_xml
663
- expect(serialized.strip).to include(expected)
831
+ expect(serialized.strip).to be_xml_equivalent_to(expected_xml.strip)
664
832
  end
665
833
  end
666
834
  end
@@ -702,7 +870,9 @@ RSpec.describe "MixedContent" do
702
870
 
703
871
  context "when encoding: nil xml" do
704
872
  let(:expected_encoding_nil_nokogiri_xml) do
705
- "&#x2211;computer security&#x220F; type of &#x200B; operation specified &#xB5; by an access right"
873
+ # Moxml resolves numeric character references to Unicode,
874
+ # matching Oga/Rexml behavior (see expected_encoding_nil_oga_xml).
875
+ "\u{2211}computer security\u{220F} type of \u{200B} operation specified \u{B5} by an access right"
706
876
  end
707
877
  let(:expected_encoding_nil_ox_xml) do
708
878
  "<HexCode> \xE2\x88\x91computer security\xE2\x88\x8F type of \xE2\x80\x8B operation specified \xC2\xB5 by an access right </HexCode>\n".force_encoding("ASCII-8BIT")
@@ -715,9 +885,9 @@ RSpec.describe "MixedContent" do
715
885
  parsed = MixedContentSpec::HexCode.from_xml(xml, encoding: nil)
716
886
  serialized = parsed.to_xml(encoding: nil)
717
887
 
718
- expected_output = if adapter_class == Lutaml::Model::Xml::NokogiriAdapter
888
+ expected_output = if adapter_class == Lutaml::Xml::Adapter::NokogiriAdapter
719
889
  expected_encoding_nil_nokogiri_xml
720
- elsif adapter_class == Lutaml::Model::Xml::OxAdapter
890
+ elsif adapter_class == Lutaml::Xml::Adapter::OxAdapter
721
891
  expected_encoding_nil_ox_xml
722
892
  else
723
893
  expected_encoding_nil_oga_xml
@@ -726,7 +896,7 @@ RSpec.describe "MixedContent" do
726
896
  expect(parsed.encoding).to be_nil
727
897
  expect(serialized.strip).to include(expected_output.strip)
728
898
 
729
- if adapter_class == Lutaml::Model::Xml::OxAdapter
899
+ if adapter_class == Lutaml::Xml::Adapter::OxAdapter
730
900
  expect(serialized.encoding.to_s).to eq("ASCII-8BIT")
731
901
  else
732
902
  expect(serialized.encoding.to_s).to eq("UTF-8")
@@ -748,13 +918,10 @@ RSpec.describe "MixedContent" do
748
918
  end
749
919
 
750
920
  it "deserializes SHIFT encoded content correctly with explicit encoding option" do
751
- parsed = MixedContentSpec::Shift.from_xml(fixture, encoding: "Shift_JIS")
921
+ parsed = MixedContentSpec::Shift.from_xml(fixture,
922
+ encoding: "Shift_JIS")
752
923
 
753
- expected_content = if adapter_class == Lutaml::Model::Xml::NokogiriAdapter
754
- "手書き英字1"
755
- else
756
- "\x8E\xE8\x8F\x91\x82\xAB\x89p\x8E\x9A\x82P".force_encoding("Shift_JIS")
757
- end
924
+ expected_content = "手書き英字1"
758
925
 
759
926
  expect(parsed.field).to include(expected_content)
760
927
  end
@@ -762,11 +929,7 @@ RSpec.describe "MixedContent" do
762
929
  it "deserializes SHIFT encoded content incorrectly without explicit encoding option" do
763
930
  parsed = MixedContentSpec::Shift.from_xml(fixture)
764
931
 
765
- expected_content = if adapter_class == Lutaml::Model::Xml::NokogiriAdapter
766
- "手書き英字1"
767
- else
768
- "\x8E\xE8\x8F\x91\x82\xAB\x89p\x8E\x9A\x82P".force_encoding("Shift_JIS")
769
- end
932
+ expected_content = "手書き英字1"
770
933
 
771
934
  expect(parsed.encoding).to eq("Shift_JIS")
772
935
  expect(parsed.field).to include(expected_content)
@@ -775,90 +938,54 @@ RSpec.describe "MixedContent" do
775
938
 
776
939
  describe ".to_xml" do
777
940
  it "serializes SHIFT-JIS encoding content correctly reading from file" do
778
- parsed = MixedContentSpec::Shift.from_xml(fixture, encoding: "Shift_JIS")
941
+ parsed = MixedContentSpec::Shift.from_xml(fixture,
942
+ encoding: "Shift_JIS")
779
943
  serialized = parsed.to_xml
780
- expected = adapter_class.type == "oga" ? fixture.gsub(/\s+/, "") : fixture.strip
944
+ expected = if adapter_class.type == "oga"
945
+ fixture.gsub(/\s+/, "")
946
+ else
947
+ fixture.strip
948
+ end
781
949
  expect(serialized.strip).to eq(expected)
782
950
  end
783
951
 
784
- it "serializes SHIFT encoded content correctly with explicit encoding option both in parsing and deserializing" do
785
- parsed = MixedContentSpec::Shift.from_xml(fixture, encoding: "Shift_JIS")
786
- serialized = parsed.to_xml(encoding: "UTF-8")
787
-
788
- parsed_xml = if adapter_class == Lutaml::Model::Xml::NokogiriAdapter
789
- "手書き英字1"
790
- else
791
- "\x8E\xE8\x8F\x91\x82\xAB\x89p\x8E\x9A\x82P".force_encoding("Shift_JIS")
792
- end
793
-
794
- expect(parsed.field).to include(parsed_xml)
795
- expect(parsed.encoding).to eq("Shift_JIS")
796
-
797
- expect(serialized).to include("手書き英字1")
798
- expect(serialized.encoding.to_s).to eq("UTF-8")
799
- end
800
-
801
- it "serializes SHIFT encoded content correctly with explicit encoding option" do
802
- parsed = MixedContentSpec::Shift.from_xml(fixture, encoding: "Shift_JIS")
952
+ it "serializes SHIFT-JIS encoding content correctly reading from string" do
953
+ xml = "<root><FieldName>手書き英字1</FieldName><FieldName>123456</FieldName></root>".encode("Shift_JIS")
954
+ parsed = MixedContentSpec::Shift.from_xml(xml,
955
+ encoding: "Shift_JIS")
803
956
  serialized = parsed.to_xml(encoding: "Shift_JIS")
804
957
 
805
- expected_xml = if adapter_class == Lutaml::Model::Xml::NokogiriAdapter
806
- "手書き英字1"
807
- else
808
- "\x8E\xE8\x8F\x91\x82\xAB\x89p\x8E\x9A\x82P".force_encoding("Shift_JIS")
809
- end
810
-
811
- expect(parsed.field).to include(expected_xml)
812
- expect(parsed.encoding).to eq("Shift_JIS")
813
-
814
- expect(serialized).to include("\x8E\xE8\x8F\x91\x82\xAB\x89p\x8E\x9A\x82P".force_encoding("Shift_JIS"))
815
- expect(serialized.encoding.to_s).to eq("Shift_JIS")
816
- end
817
-
818
- it "serializes SHIFT encoded content correctly with declaration: true" do
819
- parsed = MixedContentSpec::Shift.from_xml(fixture, encoding: "Shift_JIS")
820
- serialized = parsed.to_xml(declaration: true, encoding: "Shift_JIS")
821
-
822
- expected_xml = "<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>\n<root>\n <FieldName>\x8E\xE8\x8F\x91\x82\xAB\x89p\x8E\x9A\x82P</FieldName>\n <FieldName>123456</FieldName>\n</root>"
823
-
824
- expect(serialized).to be_equivalent_to(expected_xml)
825
- expect(serialized.encoding.to_s).to eq("Shift_JIS")
958
+ # Strip XML declaration that declares Shift_JIS encoding before transcoding
959
+ serialized_no_decl = serialized.sub(/^<\?xml.*?\?>\s*/, "")
960
+ xml_no_decl = xml.sub(/^<\?xml.*?\?>\s*/, "")
961
+ expect(serialized_no_decl.encode("UTF-8")).to be_xml_equivalent_to(xml_no_decl.encode("UTF-8"))
826
962
  end
827
963
 
828
964
  it "serializes SHIFT-JIS content correctly bcz xml.encoding used during parsing" do
829
965
  parsed = MixedContentSpec::Shift.from_xml(fixture)
830
966
  serialized = parsed.to_xml(encoding: "Shift_JIS")
831
967
 
832
- expected_content = if adapter_class == Lutaml::Model::Xml::NokogiriAdapter
833
- "<root>\n <FieldName>手書き英字1</FieldName>\n <FieldName>123456</FieldName>\n</root>".encode("Shift_JIS")
834
- elsif adapter_class == Lutaml::Model::Xml::OxAdapter
835
- "<root>\n <FieldName>手書き英字1</FieldName>\n <FieldName>123456</FieldName>\n</root>\n".encode("Shift_JIS")
968
+ expected_content = if adapter_class == Lutaml::Xml::Adapter::NokogiriAdapter
969
+ "<root>\n <FieldName>手書き英字1</FieldName>\n <FieldName>123456</FieldName>\n</root>"
970
+ elsif adapter_class == Lutaml::Xml::Adapter::OxAdapter
971
+ "<root>\n <FieldName>手書き英字1</FieldName>\n <FieldName>123456</FieldName>\n</root>"
836
972
  else
837
- "<root><FieldName>手書き英字1</FieldName><FieldName>123456</FieldName></root>".encode("Shift_JIS")
973
+ "<root><FieldName>手書き英字1</FieldName><FieldName>123456</FieldName></root>"
838
974
  end
839
975
 
840
- expect(serialized).to eq(expected_content)
841
- end
842
-
843
- it "serializes SHIFT-JIS encoding content correctly reading from string" do
844
- xml = "<root><FieldName>手書き英字1</FieldName><FieldName>123456</FieldName></root>".encode("Shift_JIS")
845
- parsed = MixedContentSpec::Shift.from_xml(xml, encoding: "Shift_JIS")
846
- serialized = parsed.to_xml(encoding: "Shift_JIS")
847
-
848
- expect(serialized).to be_equivalent_to(xml)
849
- end
850
-
851
- it "serializes SHIFT-JIS encoding content correctly" do
852
- parsed = MixedContentSpec::Shift.from_xml(fixture, encoding: "Shift_JIS")
853
- serialized = parsed.to_xml(encoding: "Shift_JIS")
854
-
855
- expect(serialized).to be_equivalent_to(fixture)
976
+ # Strip XML declaration before transcoding
977
+ serialized_no_decl = serialized.sub(/^<\?xml.*?\?>\s*/, "")
978
+ expected_no_decl = expected_content.sub(/^<\?xml.*?\?> */, "")
979
+ expect(serialized_no_decl.encode("UTF-8")).to be_xml_equivalent_to(expected_no_decl.encode("UTF-8"))
856
980
  end
857
981
  end
858
982
  end
859
983
 
860
- context "when use LATIN (ISO-8859-1) encoding" do
861
- let(:fixture) { File.read(fixture_path("xml/latin_encoding.xml"), encoding: "ISO-8859-1") }
984
+ context "when use latin (ISO-8859-1) encoding" do
985
+ let(:fixture) do
986
+ File.read(fixture_path("xml/latin_encoding.xml"),
987
+ encoding: "ISO-8859-1")
988
+ end
862
989
 
863
990
  describe ".from_xml" do
864
991
  it "verifies the encoding of file read" do
@@ -866,65 +993,248 @@ RSpec.describe "MixedContent" do
866
993
  end
867
994
 
868
995
  it "deserializes latin encoded content correctly" do
869
- parsed = MixedContentSpec::Latin.from_xml(fixture, encoding: "ISO-8859-1")
870
-
871
- expected_content = if adapter_class == Lutaml::Model::Xml::NokogiriAdapter
872
- ["Müller", "José"]
873
- else
874
- ["M\xFCller".force_encoding("ISO-8859-1"), "Jos\xE9".force_encoding("ISO-8859-1")]
875
- end
996
+ parsed = MixedContentSpec::Latin.from_xml(fixture,
997
+ encoding: "ISO-8859-1")
876
998
 
877
999
  expect(parsed.encoding).to eq("ISO-8859-1")
878
- expect(parsed.from).to eq(expected_content[0])
879
- expect(parsed.the).to eq(expected_content[1])
1000
+ expect(parsed.the).to eq("José")
1001
+ expect(parsed.from).to eq("Müller")
1002
+ expect(parsed.heading).to eq("Reminder")
880
1003
  end
881
1004
 
882
1005
  it "deserializes latin encoded content correctly, bcz xml.encoding used for parsing" do
883
1006
  parsed = MixedContentSpec::Latin.from_xml(fixture)
884
1007
 
885
- expected_content = if adapter_class == Lutaml::Model::Xml::NokogiriAdapter
886
- ["Müller", "José"]
887
- else
888
- ["M\xFCller".force_encoding("ISO-8859-1"), "Jos\xE9".force_encoding("ISO-8859-1")]
889
- end
890
-
891
1008
  expect(parsed.encoding).to eq("ISO-8859-1")
892
- expect(parsed.from).to eq(expected_content[0])
893
- expect(parsed.the).to eq(expected_content[1])
1009
+
1010
+ expect(parsed.the).to eq("José")
1011
+ expect(parsed.from).to eq("Müller")
1012
+ expect(parsed.heading).to eq("Reminder")
894
1013
  end
895
1014
  end
896
1015
 
897
1016
  describe ".to_xml" do
898
1017
  it "serializes latin encoded content correctly" do
899
- parsed = MixedContentSpec::Latin.from_xml(fixture, encoding: "ISO-8859-1")
1018
+ parsed = MixedContentSpec::Latin.from_xml(fixture,
1019
+ encoding: "ISO-8859-1")
900
1020
  serialized = parsed.to_xml
901
- expected_xml = if adapter_class == Lutaml::Model::Xml::OgaAdapter
902
- "<note><to>Jos\xE9</to><from>M\xFCller</from><heading>Reminder</heading></note>"
1021
+ expected_xml = if adapter_class == Lutaml::Xml::Adapter::OgaAdapter
1022
+ "<note><to>José</to><from>Müller</from><heading>Reminder</heading></note>"
903
1023
  else
904
- "<note>\n <to>Jos\xE9</to>\n <from>M\xFCller</from>\n <heading>Reminder</heading>\n</note>"
1024
+ "<note>\n <to>José</to>\n <from>Müller</from>\n <heading>Reminder</heading>\n</note>"
905
1025
  end
906
- expect(serialized.strip).to eq(expected_xml.force_encoding("ISO-8859-1"))
1026
+ expect(serialized.encode("UTF-8").strip).to be_xml_equivalent_to(expected_xml.encode("UTF-8"))
907
1027
  end
908
1028
  end
909
1029
  end
910
1030
  end
1031
+
1032
+ context "when mixed: true is set for prefixed elements" do
1033
+ let(:xml) do
1034
+ <<~XML
1035
+ <examplecom:schema xmlns:examplecom="http://example.com/schema">
1036
+ <examplecom:element>
1037
+ <examplecom:annotation>Testing annotation examplecom</examplecom:annotation>
1038
+ </examplecom:element>
1039
+ </examplecom:schema>
1040
+ XML
1041
+ end
1042
+
1043
+ it "deserializes and serializes mixed prefixed elements correctly for round-trip elements" do
1044
+ serialized = MixedContentSpec::PrefixedElements::Schema.from_xml(xml,
1045
+ import_declaration_plan: :eager).to_xml
1046
+ expected_xml = xml
1047
+ # Format preservation: Output maintains prefix format from input
1048
+
1049
+ expect(serialized).to be_xml_equivalent_to(expected_xml)
1050
+ end
1051
+
1052
+ it "deserializes and serializes mixed prefixed elements correctly when asked to have default prefix" do
1053
+ serialized = MixedContentSpec::PrefixedElements::Schema.from_xml(xml).to_xml(prefix: true)
1054
+ # `prefix: true` uses namespace's prefix_default value as prefix
1055
+ expected_xml = <<~XML
1056
+ <xsd:schema xmlns:xsd="http://example.com/schema">
1057
+ <xsd:element>
1058
+ <xsd:annotation>Testing annotation examplecom</xsd:annotation>
1059
+ </xsd:element>
1060
+ </xsd:schema>
1061
+ XML
1062
+
1063
+ expect(serialized).to be_xml_equivalent_to(expected_xml)
1064
+ end
1065
+
1066
+ it "deserializes and serializes mixed prefixed elements correctly when asked to have no prefix" do
1067
+ serialized = MixedContentSpec::PrefixedElements::Schema.from_xml(xml).to_xml(prefix: nil)
1068
+ # `prefix: nil` gives uses default namespace instead of prefix
1069
+ expected_xml = <<~XML
1070
+ <schema xmlns="http://example.com/schema">
1071
+ <element>
1072
+ <annotation>Testing annotation examplecom</annotation>
1073
+ </element>
1074
+ </schema>
1075
+ XML
1076
+
1077
+ expect(serialized).to be_xml_equivalent_to(expected_xml)
1078
+ end
1079
+ end
1080
+
1081
+ describe "each_mixed_content" do
1082
+ let(:xml) do
1083
+ <<~XML
1084
+ <RootMixedContent id="123">
1085
+ Hello <bold>world</bold> and <italic>others</italic>!
1086
+ </RootMixedContent>
1087
+ XML
1088
+ end
1089
+
1090
+ it "yields text and model objects in document order" do
1091
+ parsed = MixedContentSpec::RootMixedContent.from_xml(xml)
1092
+
1093
+ results = []
1094
+ parsed.each_mixed_content { |node| results << node }
1095
+
1096
+ # Should yield text and string values in order
1097
+ # Note: RootMixedContent stores bold/italic as strings, not model objects
1098
+ text_results = results.grep(String)
1099
+ expect(text_results.length).to eq(5)
1100
+ expect(text_results[0]).to include("Hello")
1101
+ expect(text_results[1]).to eq("world")
1102
+ expect(text_results[2]).to include("and")
1103
+ expect(text_results[3]).to eq("others")
1104
+ expect(text_results[4]).to include("!")
1105
+ end
1106
+
1107
+ it "returns enumerator when called without block" do
1108
+ parsed = MixedContentSpec::RootMixedContent.from_xml(xml)
1109
+ enum = parsed.each_mixed_content
1110
+
1111
+ expect(enum).to be_a(Enumerator)
1112
+ end
1113
+
1114
+ it "skips whitespace-only text nodes" do
1115
+ parsed = MixedContentSpec::RootMixedContent.from_xml(xml)
1116
+
1117
+ results = []
1118
+ parsed.each_mixed_content do |node|
1119
+ results << node if node.is_a?(String) && node.strip.empty?
1120
+ end
1121
+
1122
+ expect(results).to eq([])
1123
+ end
1124
+
1125
+ context "with ordered-only content (no mixed)" do
1126
+ # Test that ordered content (elements only, no text) works
1127
+ let(:xml) do
1128
+ <<~XML
1129
+ <RootMixedContentNested id="outer">
1130
+ <MixedContent id="inner">
1131
+ <bold>first</bold><italic>second</italic>
1132
+ </MixedContent>
1133
+ </RootMixedContentNested>
1134
+ XML
1135
+ end
1136
+
1137
+ it "yields element objects in document order" do
1138
+ parsed = MixedContentSpec::RootMixedContentNested.from_xml(xml)
1139
+
1140
+ results = []
1141
+ parsed.content.each_mixed_content { |node| results << node }
1142
+
1143
+ # Should yield element objects in order (bold, italic strings)
1144
+ string_results = results.grep(String)
1145
+ expect(string_results.length).to eq(2)
1146
+ end
1147
+ end
1148
+
1149
+ context "with plain content (no mixed, no ordered)" do
1150
+ it "returns empty enumerator" do
1151
+ parsed = MixedContentSpec::Source.from_xml("<source>plain text</source>")
1152
+ expect(parsed.each_mixed_content.to_a).to eq([])
1153
+ end
1154
+ end
1155
+ end
1156
+
1157
+ # Issue #630: Mutation after deserialization should update serialization output
1158
+ context "when content-mapped attribute is mutated after deserialization" do
1159
+ context "with collection content attribute" do
1160
+ it "reflects updated value in to_xml" do
1161
+ mi = MixedContentSpec::MiElement.from_xml('<mi mathvariant="normal">m</mi>')
1162
+ expect(mi.value).to eq(["m"])
1163
+
1164
+ mi.value = ["mm"]
1165
+ xml = mi.to_xml
1166
+ expect(xml).to include(">mm<")
1167
+ expect(xml).not_to include(">m<")
1168
+ end
1169
+
1170
+ it "preserves attributes in mutated output" do
1171
+ mi = MixedContentSpec::MiElement.from_xml('<mi mathvariant="normal">m</mi>')
1172
+ mi.mathvariant = "bold"
1173
+ mi.value = ["x"]
1174
+ xml = mi.to_xml
1175
+ expect(xml).to include('mathvariant="bold"')
1176
+ expect(xml).to include(">x<")
1177
+ end
1178
+
1179
+ it "preserves round-trip when not mutated" do
1180
+ mi = MixedContentSpec::MiElement.from_xml('<mi mathvariant="normal">m</mi>')
1181
+ xml = mi.to_xml
1182
+ expect(xml).to include('mathvariant="normal"')
1183
+ expect(xml).to include(">m<")
1184
+ end
1185
+ end
1186
+
1187
+ context "with collection content attribute" do
1188
+ it "reflects updated collection values in to_xml" do
1189
+ para = MixedContentSpec::ParaMixedContent.from_xml("<p>Hello <b>world</b> there</p>")
1190
+ expect(para.content).to eq(["Hello ", " there"])
1191
+
1192
+ para.content = ["Goodbye", "everyone"]
1193
+ xml = para.to_xml
1194
+ expect(xml).to include("Goodbye")
1195
+ expect(xml).to include("everyone")
1196
+ expect(xml).to include("<b>world</b>")
1197
+ end
1198
+
1199
+ it "preserves round-trip when not mutated" do
1200
+ xml = "<p>Hello <b>world</b> there</p>"
1201
+ para = MixedContentSpec::ParaMixedContent.from_xml(xml)
1202
+ expect(para.to_xml).to eq(xml)
1203
+ end
1204
+ end
1205
+ end
911
1206
  end
912
1207
 
913
- describe Lutaml::Model::Xml::NokogiriAdapter do
1208
+ describe Lutaml::Xml::Adapter::NokogiriAdapter do
914
1209
  it_behaves_like "mixed content behavior", described_class
915
1210
 
916
1211
  it "raises error when serializes special char content with false encoding: 'ABC'" do
917
1212
  parsed = MixedContentSpec::HexCode.from_xml("<HexCode>&#x2211;computer security</HexCode>")
918
1213
 
919
- expect { parsed.to_xml(encoding: "ABC") }.to raise_error(StandardError, "unknown encoding name - ABC")
1214
+ expect do
1215
+ parsed.to_xml(encoding: "ABC")
1216
+ end.to raise_error(StandardError, /ABC/)
920
1217
  end
921
1218
  end
922
1219
 
923
- describe Lutaml::Model::Xml::OxAdapter do
924
- it_behaves_like "mixed content behavior", described_class
1220
+ describe Lutaml::Xml::Adapter::OxAdapter do
1221
+ if TestAdapterConfig.adapter_enabled?(:ox)
1222
+ it_behaves_like "mixed content behavior",
1223
+ described_class
1224
+ end
925
1225
  end
926
1226
 
927
- describe Lutaml::Model::Xml::OgaAdapter do
928
- it_behaves_like "mixed content behavior", described_class
1227
+ describe Lutaml::Xml::Adapter::OgaAdapter do
1228
+ if TestAdapterConfig.adapter_enabled?(:oga)
1229
+ it_behaves_like "mixed content behavior",
1230
+ described_class
1231
+ end
1232
+ end
1233
+
1234
+ describe Lutaml::Xml::Adapter::RexmlAdapter do
1235
+ if TestAdapterConfig.adapter_enabled?(:rexml)
1236
+ it_behaves_like "mixed content behavior",
1237
+ described_class
1238
+ end
929
1239
  end
930
1240
  end