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.
- checksums.yaml +4 -4
- data/.github/workflows/dependent-tests.yml +4 -0
- data/.github/workflows/docs.yml +59 -0
- data/.github/workflows/downstream-performance.yml +156 -0
- data/.github/workflows/performance.yml +33 -0
- data/.github/workflows/rake.yml +13 -0
- data/.github/workflows/release.yml +5 -0
- data/.gitignore +27 -1
- data/.rubocop.yml +14 -2
- data/.rubocop_todo.yml +574 -88
- data/Gemfile +15 -9
- data/README.adoc +13522 -6905
- data/RELEASE_NOTES.adoc +51 -0
- data/Rakefile +2 -0
- data/bench/baselines/.gitkeep +0 -0
- data/bench/bench_all.rb +52 -0
- data/bench/bench_common.rb +147 -0
- data/bench/bench_compare.rb +195 -0
- data/bench/bench_mml.rb +53 -0
- data/bench/bench_niso.rb +54 -0
- data/bench/bench_sts.rb +49 -0
- data/bench/bench_unitsml.rb +43 -0
- data/bench/bench_uniword.rb +69 -0
- data/bench/bench_xmi.rb +51 -0
- data/bench/gate_config.rb +127 -0
- data/benchmark/quick_benchmark.rb +297 -0
- data/benchmark/serialization_benchmark.rb +619 -0
- data/docs/.rubocop.yml +1 -0
- data/docs/.rubocop_todo.yml +7 -0
- data/docs/Gemfile +13 -0
- data/docs/PERFORMANCE_METHODOLOGY.md +645 -0
- data/docs/_config.yml +145 -0
- data/docs/_guides/advanced-mapping.adoc +564 -0
- data/docs/_guides/character-encoding.adoc +342 -0
- data/docs/_guides/collection-serialization.adoc +349 -0
- data/docs/_guides/creating-xsd.adoc +1221 -0
- data/docs/_guides/index.adoc +71 -0
- data/docs/_guides/keyvalue-serialization.adoc +1156 -0
- data/docs/_guides/liquid-templates.adoc +505 -0
- data/docs/_guides/missing-values-handling.adoc +1531 -0
- data/docs/_guides/ooxml-examples.adoc +755 -0
- data/docs/{schema_generation.adoc → _guides/schema-generation.adoc} +5 -0
- data/docs/{schema_import.adoc → _guides/schema-import.adoc} +276 -4
- data/docs/_guides/value-transformations.adoc +1388 -0
- data/docs/_guides/xml/namespace-presentation.adoc +476 -0
- data/docs/_guides/xml/namespace-semantics.adoc +677 -0
- data/docs/_guides/xml/reusable-mapping-classes.adoc +181 -0
- data/docs/_guides/xml/schema-location.adoc +245 -0
- data/docs/_guides/xml/type-namespaces.adoc +1011 -0
- data/docs/_guides/xml-mapping.adoc +1847 -0
- data/docs/_guides/xml-mappings-guide.adoc +21 -0
- data/docs/_guides/xml-namespace-declarations.adoc +662 -0
- data/docs/_guides/xml-namespace-qualification.adoc +720 -0
- data/docs/_guides/xml-namespaces.adoc +2613 -0
- data/docs/_guides/xml_mappings/01_introduction.adoc +65 -0
- data/docs/_guides/xml_mappings/02_core_concepts.adoc +177 -0
- data/docs/_guides/xml_mappings/03_architecture.adoc +205 -0
- data/docs/_guides/xml_mappings/04_xml_namespace_class.adoc +1754 -0
- data/docs/_guides/xml_mappings/05_common_patterns.adoc +1803 -0
- data/docs/_guides/xml_mappings/06_migration_guide.adoc +523 -0
- data/docs/_guides/xml_mappings/07_best_practices.adoc +959 -0
- data/docs/_guides/xml_mappings/08_troubleshooting.adoc +934 -0
- data/docs/_migrations/0-1-0-migrate-from-shale.adoc +304 -0
- data/docs/_migrations/0-8-0-namespace-restructuring.adoc +1572 -0
- data/docs/_migrations/0-8-0-xsd-features.adoc +729 -0
- data/docs/_migrations/index.adoc +18 -0
- data/docs/_migrations/xsd-type-migration.adoc +1294 -0
- data/docs/_pages/attributes.adoc +1156 -0
- data/docs/_pages/breaking-changes.adoc +154 -0
- data/docs/_pages/collections.adoc +1664 -0
- data/docs/_pages/comparison-with-shale.adoc +139 -0
- data/docs/_pages/configuration.adoc +192 -0
- data/docs/_pages/consolidation-mapping.adoc +252 -0
- data/docs/_pages/importable_models.adoc +591 -0
- data/docs/_pages/index.adoc +46 -0
- data/docs/_pages/installation.adoc +35 -0
- data/docs/_pages/models.adoc +332 -0
- data/docs/_pages/quick-start.adoc +124 -0
- data/docs/_pages/serialization_adapters.adoc +268 -0
- data/docs/_pages/troubleshooting.adoc +104 -0
- data/docs/_pages/validation.adoc +171 -0
- data/docs/_pages/value_types.adoc +1514 -0
- data/docs/_pages/xml-conformance.adoc +143 -0
- data/docs/_references/architecture.adoc +189 -0
- data/docs/{custom_adapters.adoc → _references/custom_adapters.adoc} +6 -1
- data/docs/_references/custom_registers.adoc +1026 -0
- data/docs/_references/data-modeling-in-a-nutshell.adoc +207 -0
- data/docs/_references/format-independent-features.adoc +713 -0
- data/docs/_references/index.adoc +47 -0
- data/docs/_references/instance-serialization.adoc +120 -0
- data/docs/_references/lutaml-namespace-planning.md +120 -0
- data/docs/_references/parent-root-context.adoc +122 -0
- data/docs/_references/reference_type.adoc +302 -0
- data/docs/_references/serialization-model-mappings.adoc +102 -0
- data/docs/_references/three-phase-namespace-architecture.adoc +470 -0
- data/docs/_references/xml-w3c-namespace-qualification.adoc +66 -0
- data/docs/_references/xsd-generation-with-namespace-support.adoc +449 -0
- data/docs/_references/xsd-schema-parsing.adoc +1260 -0
- data/docs/_references/xsd-type-architecture.adoc +534 -0
- data/docs/_tutorials/basic-model-definition.adoc +157 -0
- data/docs/_tutorials/custom-types-tutorial.adoc +258 -0
- data/docs/_tutorials/first-json-serialization.adoc +192 -0
- data/docs/_tutorials/first-xml-serialization.adoc +223 -0
- data/docs/_tutorials/index.adoc +60 -0
- data/docs/_tutorials/lutaml-xml-architecture.adoc +1354 -0
- data/docs/_tutorials/polymorphic-models-tutorial.adoc +253 -0
- data/docs/_tutorials/schema-compiler-module-namespaces.adoc +497 -0
- data/docs/_tutorials/validation-basics.adoc +232 -0
- data/docs/_tutorials/working-with-collections.adoc +201 -0
- data/docs/_tutorials/xml-element-attribute-namespace-guide.adoc +279 -0
- data/docs/_tutorials/xml-namespaces-basics.adoc +315 -0
- data/docs/_tutorials/xml-schema-primer-style-guide.adoc +1394 -0
- data/docs/architecture.md +424 -0
- data/docs/bugreports/BUGREPORT_element_order_render_empty.md +99 -0
- data/docs/cli_compare.adoc +249 -0
- data/docs/collection_validation.adoc +366 -0
- data/docs/index.adoc +106 -0
- data/docs/key_value_data_model.adoc +1229 -0
- data/docs/model_transforms.adoc +769 -0
- data/docs/namespace-management.adoc +1051 -0
- data/docs/xml-schema-qualification.md +171 -0
- data/lib/lutaml/{model/hash_adapter → hash_format/adapter}/document.rb +3 -4
- data/lib/lutaml/hash_format/adapter/mapping.rb +19 -0
- data/lib/lutaml/hash_format/adapter/mapping_rule.rb +9 -0
- data/lib/lutaml/{model/hash_adapter → hash_format/adapter}/standard_adapter.rb +3 -3
- data/lib/lutaml/hash_format/adapter/transform.rb +9 -0
- data/lib/lutaml/hash_format/adapter.rb +13 -0
- data/lib/lutaml/hash_format/type/serializers.rb +24 -0
- data/lib/lutaml/hash_format.rb +25 -0
- data/lib/lutaml/{model/json → json/adapter}/document.rb +3 -3
- data/lib/lutaml/json/adapter/mapping.rb +19 -0
- data/lib/lutaml/json/adapter/mapping_rule.rb +9 -0
- data/lib/lutaml/json/adapter/multi_json_adapter.rb +38 -0
- data/lib/lutaml/json/adapter/oj_adapter.rb +38 -0
- data/lib/lutaml/json/adapter/standard_adapter.rb +36 -0
- data/lib/lutaml/json/adapter/transform.rb +9 -0
- data/lib/lutaml/json/adapter.rb +20 -0
- data/lib/lutaml/json/schema/json_schema.rb +62 -0
- data/lib/lutaml/json/schema.rb +9 -0
- data/lib/lutaml/json/type/serializers.rb +72 -0
- data/lib/lutaml/json.rb +58 -0
- data/lib/lutaml/{model/jsonl → jsonl/adapter}/document.rb +2 -2
- data/lib/lutaml/jsonl/adapter/mapping.rb +19 -0
- data/lib/lutaml/jsonl/adapter/mapping_rule.rb +9 -0
- data/lib/lutaml/{model/jsonl → jsonl/adapter}/standard_adapter.rb +5 -4
- data/lib/lutaml/jsonl/adapter/transform.rb +26 -0
- data/lib/lutaml/jsonl/adapter.rb +13 -0
- data/lib/lutaml/jsonl.rb +21 -0
- data/lib/lutaml/key_value/adapter/hash/document.rb +13 -0
- data/lib/lutaml/key_value/adapter/hash/mapping.rb +19 -0
- data/lib/lutaml/key_value/adapter/hash/mapping_rule.rb +9 -0
- data/lib/lutaml/key_value/adapter/hash/standard_adapter.rb +19 -0
- data/lib/lutaml/key_value/adapter/hash/transform.rb +10 -0
- data/lib/lutaml/key_value/adapter/hash.rb +15 -0
- data/lib/lutaml/key_value/adapter/json/document.rb +16 -0
- data/lib/lutaml/key_value/adapter/json/mapping.rb +24 -0
- data/lib/lutaml/key_value/adapter/json/mapping_rule.rb +14 -0
- data/lib/lutaml/key_value/adapter/json/multi_json_adapter.rb +43 -0
- data/lib/lutaml/key_value/adapter/json/oj_adapter.rb +43 -0
- data/lib/lutaml/key_value/adapter/json/standard_adapter.rb +41 -0
- data/lib/lutaml/key_value/adapter/json/transform.rb +14 -0
- data/lib/lutaml/key_value/adapter/json.rb +24 -0
- data/lib/lutaml/key_value/adapter/jsonl/document.rb +16 -0
- data/lib/lutaml/key_value/adapter/jsonl/mapping.rb +19 -0
- data/lib/lutaml/key_value/adapter/jsonl/mapping_rule.rb +9 -0
- data/lib/lutaml/key_value/adapter/jsonl/standard_adapter.rb +36 -0
- data/lib/lutaml/key_value/adapter/jsonl/transform.rb +26 -0
- data/lib/lutaml/key_value/adapter/jsonl.rb +17 -0
- data/lib/lutaml/key_value/adapter/toml/document.rb +13 -0
- data/lib/lutaml/key_value/adapter/toml/mapping.rb +28 -0
- data/lib/lutaml/key_value/adapter/toml/mapping_rule.rb +9 -0
- data/lib/lutaml/key_value/adapter/toml/toml_rb_adapter.rb +40 -0
- data/lib/lutaml/key_value/adapter/toml/tomlib_adapter.rb +46 -0
- data/lib/lutaml/key_value/adapter/toml/transform.rb +10 -0
- data/lib/lutaml/key_value/adapter/toml.rb +21 -0
- data/lib/lutaml/key_value/adapter/yaml/document.rb +12 -0
- data/lib/lutaml/key_value/adapter/yaml/mapping.rb +19 -0
- data/lib/lutaml/key_value/adapter/yaml/mapping_rule.rb +9 -0
- data/lib/lutaml/key_value/adapter/yaml/standard_adapter.rb +41 -0
- data/lib/lutaml/key_value/adapter/yaml/transform.rb +10 -0
- data/lib/lutaml/key_value/adapter/yaml.rb +17 -0
- data/lib/lutaml/key_value/adapter/yamls/document.rb +16 -0
- data/lib/lutaml/key_value/adapter/yamls/mapping.rb +19 -0
- data/lib/lutaml/key_value/adapter/yamls/mapping_rule.rb +9 -0
- data/lib/lutaml/key_value/adapter/yamls/standard_adapter.rb +37 -0
- data/lib/lutaml/key_value/adapter/yamls/transform.rb +26 -0
- data/lib/lutaml/key_value/adapter/yamls.rb +17 -0
- data/lib/lutaml/key_value/adapter.rb +14 -0
- data/lib/lutaml/key_value/data_model/element.rb +222 -0
- data/lib/lutaml/key_value/data_model.rb +14 -0
- data/lib/lutaml/{model/key_value_document.rb → key_value/document.rb} +2 -2
- data/lib/lutaml/{model/mapping/key_value_mapping.rb → key_value/mapping.rb} +81 -43
- data/lib/lutaml/{model/mapping/key_value_mapping_rule.rb → key_value/mapping_rule.rb} +9 -10
- data/lib/lutaml/{model/transform/key_value_transform.rb → key_value/transform.rb} +111 -65
- data/lib/lutaml/key_value/transformation/collection_serializer.rb +575 -0
- data/lib/lutaml/key_value/transformation/rule_compiler.rb +294 -0
- data/lib/lutaml/key_value/transformation/value_serializer.rb +268 -0
- data/lib/lutaml/key_value/transformation.rb +1071 -0
- data/lib/lutaml/key_value/transformation_builder.rb +30 -0
- data/lib/lutaml/key_value.rb +24 -0
- data/lib/lutaml/model/attribute.rb +515 -121
- data/lib/lutaml/model/attribute_validator.rb +288 -0
- data/lib/lutaml/model/cached_type_resolver/concurrent_map_cache.rb +46 -0
- data/lib/lutaml/model/cached_type_resolver/mutex_hash_cache.rb +51 -0
- data/lib/lutaml/model/cached_type_resolver.rb +144 -0
- data/lib/lutaml/model/choice.rb +230 -13
- data/lib/lutaml/model/cli.rb +75 -121
- data/lib/lutaml/model/collection.rb +510 -43
- data/lib/lutaml/model/collection_handler.rb +106 -0
- data/lib/lutaml/model/comparable_model.rb +11 -3
- data/lib/lutaml/model/comparable_nil.rb +0 -2
- data/lib/lutaml/model/compiled_rule.rb +208 -0
- data/lib/lutaml/model/config.rb +56 -88
- data/lib/lutaml/model/configuration.rb +323 -0
- data/lib/lutaml/model/consolidation/attribute_grouper.rb +44 -0
- data/lib/lutaml/model/consolidation/dispatcher.rb +45 -0
- data/lib/lutaml/model/consolidation/engine.rb +33 -0
- data/lib/lutaml/model/consolidation/pattern_chunker.rb +87 -0
- data/lib/lutaml/model/consolidation_map.rb +68 -0
- data/lib/lutaml/model/consolidation_rule/dispatch_block.rb +34 -0
- data/lib/lutaml/model/consolidation_rule/gather_rule.rb +17 -0
- data/lib/lutaml/model/consolidation_rule/pattern_content_rule.rb +15 -0
- data/lib/lutaml/model/consolidation_rule/pattern_element_rule.rb +17 -0
- data/lib/lutaml/model/consolidation_rule.rb +27 -0
- data/lib/lutaml/model/constants.rb +5 -3
- data/lib/lutaml/model/context_registry.rb +208 -0
- data/lib/lutaml/model/error/element_count_out_of_range_error.rb +13 -7
- data/lib/lutaml/model/error/format_adapter_not_specified_error.rb +25 -0
- data/lib/lutaml/model/error/invalid_attribute_type_error.rb +98 -0
- data/lib/lutaml/model/error/invalid_format_error.rb +11 -0
- data/lib/lutaml/model/error/liquid_class_not_found_error.rb +9 -0
- data/lib/lutaml/model/error/mapping_already_exists_error.rb +6 -0
- data/lib/lutaml/model/error/mapping_attribute_missing_error.rb +6 -0
- data/lib/lutaml/model/error/mapping_attribute_type_error.rb +6 -0
- data/lib/lutaml/model/error/mixed_content_collection_error.rb +17 -0
- data/lib/lutaml/model/error/no_attributes_defined_liquid_error.rb +9 -0
- data/lib/lutaml/model/error/no_mapping_found_error.rb +9 -0
- data/lib/lutaml/model/error/required_attribute_missing_error.rb +9 -0
- data/lib/lutaml/model/error/reverse_transform_block_not_defined_error.rb +6 -0
- data/lib/lutaml/model/error/reverse_transformation_declaration_error.rb +6 -0
- data/lib/lutaml/model/error/sorting_configuration_conflict_error.rb +9 -0
- data/lib/lutaml/model/error/transform_block_not_defined_error.rb +6 -0
- data/lib/lutaml/model/error/type.rb +17 -0
- data/lib/lutaml/model/error/undefined_attribute_error.rb +9 -0
- data/lib/lutaml/model/error/unknown_adapter_type_error.rb +82 -3
- data/lib/lutaml/model/error/unknown_type_error.rb +25 -2
- data/lib/lutaml/model/error/unresolvable_type_error.rb +27 -0
- data/lib/lutaml/model/error.rb +2 -33
- data/lib/lutaml/model/errors.rb +4 -2
- data/lib/lutaml/model/finalization_cache.rb +51 -0
- data/lib/lutaml/model/format_registry.rb +236 -2
- data/lib/lutaml/model/global_context.rb +446 -0
- data/lib/lutaml/model/global_register.rb +106 -5
- data/lib/lutaml/model/hash.rb +15 -0
- data/lib/lutaml/model/import_registry.rb +250 -0
- data/lib/lutaml/model/instrumentation.rb +304 -0
- data/lib/lutaml/model/json.rb +17 -13
- data/lib/lutaml/model/jsonl.rb +7 -13
- data/lib/lutaml/model/liquefiable.rb +100 -12
- data/lib/lutaml/model/liquid/mapping.rb +30 -0
- data/lib/lutaml/model/liquid.rb +9 -0
- data/lib/lutaml/model/mapping/listener.rb +124 -0
- data/lib/lutaml/model/mapping/mapping.rb +99 -1
- data/lib/lutaml/model/mapping/mapping_rule.rb +172 -17
- data/lib/lutaml/model/mapping/model_mapping.rb +133 -0
- data/lib/lutaml/model/mapping/model_mapping_rule.rb +57 -0
- data/lib/lutaml/model/mapping_hash.rb +3 -1
- data/lib/lutaml/model/model_transformer.rb +101 -0
- data/lib/lutaml/model/one_entry_cache.rb +57 -0
- data/lib/lutaml/model/organization.rb +29 -0
- data/lib/lutaml/model/register/model_tree_importer.rb +88 -0
- data/lib/lutaml/model/register/namespace_binding.rb +92 -0
- data/lib/lutaml/model/register.rb +500 -35
- data/lib/lutaml/model/registrable.rb +2 -0
- data/lib/lutaml/model/render_policy.rb +154 -0
- data/lib/lutaml/model/runtime_compatibility.rb +95 -0
- data/lib/lutaml/model/schema/base_schema.rb +1 -3
- data/lib/lutaml/model/schema/decorators/attribute.rb +3 -1
- data/lib/lutaml/model/schema/decorators/choices.rb +0 -2
- data/lib/lutaml/model/schema/decorators/class_definition.rb +4 -5
- data/lib/lutaml/model/schema/decorators/definition_collection.rb +7 -7
- data/lib/lutaml/model/schema/decorators.rb +15 -0
- data/lib/lutaml/model/schema/generator/definition.rb +4 -3
- data/lib/lutaml/model/schema/generator/definitions_collection.rb +4 -3
- data/lib/lutaml/model/schema/generator/properties_collection.rb +7 -5
- data/lib/lutaml/model/schema/generator/property.rb +5 -1
- data/lib/lutaml/model/schema/generator.rb +15 -0
- data/lib/lutaml/model/schema/helpers.rb +11 -0
- data/lib/lutaml/model/schema/json_schema.rb +9 -53
- data/lib/lutaml/model/schema/renderer.rb +19 -17
- data/lib/lutaml/model/schema/schema_builder/nokogiri.rb +41 -0
- data/lib/lutaml/model/schema/schema_builder/oga.rb +92 -0
- data/lib/lutaml/model/schema/shared_methods.rb +2 -2
- data/lib/lutaml/model/schema/xml_compiler/attribute.rb +33 -12
- data/lib/lutaml/model/schema/xml_compiler/attribute_group.rb +3 -1
- data/lib/lutaml/model/schema/xml_compiler/choice.rb +4 -2
- data/lib/lutaml/model/schema/xml_compiler/complex_type.rb +73 -36
- data/lib/lutaml/model/schema/xml_compiler/element.rb +18 -1
- data/lib/lutaml/model/schema/xml_compiler/group.rb +20 -4
- data/lib/lutaml/model/schema/xml_compiler/registry_generator.rb +127 -0
- data/lib/lutaml/model/schema/xml_compiler/restriction.rb +5 -2
- data/lib/lutaml/model/schema/xml_compiler/sequence.rb +6 -2
- data/lib/lutaml/model/schema/xml_compiler/simple_content.rb +7 -3
- data/lib/lutaml/model/schema/xml_compiler/simple_type.rb +127 -51
- data/lib/lutaml/model/schema/xml_compiler/xml_namespace_class.rb +110 -0
- data/lib/lutaml/model/schema/xml_compiler.rb +256 -82
- data/lib/lutaml/model/schema/yaml_schema.rb +10 -50
- data/lib/lutaml/model/schema.rb +49 -14
- data/lib/lutaml/model/schema_location.rb +12 -60
- data/lib/lutaml/model/sequence.rb +102 -30
- data/lib/lutaml/model/serializable.rb +1 -3
- data/lib/lutaml/model/serialization_adapter.rb +2 -0
- data/lib/lutaml/model/serialize/attribute_definition.rb +229 -0
- data/lib/lutaml/model/serialize/builder.rb +169 -0
- data/lib/lutaml/model/serialize/enum_handling.rb +124 -0
- data/lib/lutaml/model/serialize/format_conversion.rb +298 -0
- data/lib/lutaml/model/serialize/initialization.rb +308 -0
- data/lib/lutaml/model/serialize/model_import.rb +357 -0
- data/lib/lutaml/model/serialize/transformation_builder.rb +127 -0
- data/lib/lutaml/model/serialize/value_mapping.rb +200 -0
- data/lib/lutaml/model/serialize.rb +175 -580
- data/lib/lutaml/model/services/base.rb +2 -2
- data/lib/lutaml/model/services/default_value_resolver.rb +60 -0
- data/lib/lutaml/model/services/logger.rb +10 -7
- data/lib/lutaml/model/services/rule_value_extractor.rb +22 -36
- data/lib/lutaml/model/services/transformer.rb +50 -9
- data/lib/lutaml/model/services/type/validator/string.rb +3 -2
- data/lib/lutaml/model/services/type/validator/symbol.rb +30 -0
- data/lib/lutaml/model/services/type/validator.rb +5 -2
- data/lib/lutaml/model/services/type.rb +9 -0
- data/lib/lutaml/model/services/validator.rb +1 -3
- data/lib/lutaml/model/services.rb +12 -5
- data/lib/lutaml/model/store.rb +59 -0
- data/lib/lutaml/model/toml.rb +24 -18
- data/lib/lutaml/model/transform/xml_transform.rb +4 -227
- data/lib/lutaml/model/transform.rb +49 -17
- data/lib/lutaml/model/transformation.rb +84 -0
- data/lib/lutaml/model/transformation_builder.rb +55 -0
- data/lib/lutaml/model/transformation_registry.rb +314 -0
- data/lib/lutaml/model/type/base64_binary.rb +58 -0
- data/lib/lutaml/model/type/boolean.rb +9 -16
- data/lib/lutaml/model/type/date.rb +49 -9
- data/lib/lutaml/model/type/date_time.rb +30 -18
- data/lib/lutaml/model/type/decimal.rb +28 -9
- data/lib/lutaml/model/type/duration.rb +82 -0
- data/lib/lutaml/model/type/float.rb +12 -13
- data/lib/lutaml/model/type/hash.rb +10 -17
- data/lib/lutaml/model/type/hex_binary.rb +56 -0
- data/lib/lutaml/model/type/integer.rb +19 -1
- data/lib/lutaml/model/type/qname.rb +85 -0
- data/lib/lutaml/model/type/reference.rb +76 -0
- data/lib/lutaml/model/type/string.rb +18 -35
- data/lib/lutaml/model/type/symbol.rb +67 -0
- data/lib/lutaml/model/type/time.rb +19 -22
- data/lib/lutaml/model/type/time_without_date.rb +18 -18
- data/lib/lutaml/model/type/uninitialized_class_guard.rb +36 -0
- data/lib/lutaml/model/type/uri.rb +51 -0
- data/lib/lutaml/model/type/value.rb +52 -5
- data/lib/lutaml/model/type.rb +98 -13
- data/lib/lutaml/model/type_context.rb +279 -0
- data/lib/lutaml/model/type_registry.rb +165 -0
- data/lib/lutaml/model/type_resolver.rb +185 -0
- data/lib/lutaml/model/type_substitution.rb +117 -0
- data/lib/lutaml/model/uninitialized_class.rb +1 -1
- data/lib/lutaml/model/utils.rb +110 -9
- data/lib/lutaml/model/validation.rb +50 -7
- data/lib/lutaml/model/value_transformer.rb +25 -0
- data/lib/lutaml/model/version.rb +1 -1
- data/lib/lutaml/model/yaml.rb +7 -13
- data/lib/lutaml/model/yamls.rb +7 -13
- data/lib/lutaml/model.rb +227 -25
- data/lib/lutaml/{model/toml → toml/adapter}/document.rb +3 -4
- data/lib/lutaml/{model/toml → toml/adapter}/mapping.rb +7 -6
- data/lib/lutaml/toml/adapter/mapping_rule.rb +9 -0
- data/lib/lutaml/toml/adapter/toml_rb_adapter.rb +38 -0
- data/lib/lutaml/toml/adapter/tomlib_adapter.rb +54 -0
- data/lib/lutaml/toml/adapter/transform.rb +9 -0
- data/lib/lutaml/toml/adapter.rb +19 -0
- data/lib/lutaml/toml/type/serializers.rb +71 -0
- data/lib/lutaml/toml.rb +41 -0
- data/lib/lutaml/xml/adapter/adapter_helpers.rb +149 -0
- data/lib/lutaml/xml/adapter/base_adapter.rb +672 -0
- data/lib/lutaml/xml/adapter/namespace_data.rb +73 -0
- data/lib/lutaml/xml/adapter/nokogiri_adapter.rb +1115 -0
- data/lib/lutaml/xml/adapter/oga_adapter.rb +849 -0
- data/lib/lutaml/xml/adapter/ox_adapter.rb +891 -0
- data/lib/lutaml/xml/adapter/rexml_adapter.rb +869 -0
- data/lib/lutaml/xml/adapter/xml_serialization.rb +145 -0
- data/lib/lutaml/xml/adapter.rb +20 -0
- data/lib/lutaml/xml/adapter_element.rb +185 -0
- data/lib/lutaml/xml/adapter_loader.rb +53 -0
- data/lib/lutaml/xml/attribute_namespace_resolver.rb +139 -0
- data/lib/lutaml/xml/blank_namespace.rb +51 -0
- data/lib/lutaml/xml/blank_namespace_handler.rb +50 -0
- data/lib/lutaml/xml/builder/base.rb +215 -0
- data/lib/lutaml/xml/builder/nokogiri.rb +12 -0
- data/lib/lutaml/xml/builder/oga.rb +15 -0
- data/lib/lutaml/xml/builder/ox.rb +15 -0
- data/lib/lutaml/xml/builder/rexml.rb +15 -0
- data/lib/lutaml/xml/builder.rb +16 -0
- data/lib/lutaml/xml/configurable.rb +214 -0
- data/lib/lutaml/xml/data_model.rb +257 -0
- data/lib/lutaml/xml/decisions/decision.rb +103 -0
- data/lib/lutaml/xml/decisions/decision_context.rb +225 -0
- data/lib/lutaml/xml/decisions/decision_engine.rb +67 -0
- data/lib/lutaml/xml/decisions/decision_rule.rb +54 -0
- data/lib/lutaml/xml/decisions/element_prefix_resolver.rb +85 -0
- data/lib/lutaml/xml/decisions/rules/attribute_usage_rule.rb +37 -0
- data/lib/lutaml/xml/decisions/rules/default_preference_rule.rb +62 -0
- data/lib/lutaml/xml/decisions/rules/element_form_default_rule.rb +66 -0
- data/lib/lutaml/xml/decisions/rules/element_form_default_unqualified_rule.rb +73 -0
- data/lib/lutaml/xml/decisions/rules/element_form_option_rule.rb +83 -0
- data/lib/lutaml/xml/decisions/rules/explicit_option_rule.rb +57 -0
- data/lib/lutaml/xml/decisions/rules/format_preservation_rule.rb +74 -0
- data/lib/lutaml/xml/decisions/rules/hoisted_on_parent_rule.rb +60 -0
- data/lib/lutaml/xml/decisions/rules/inherit_from_parent_rule.rb +52 -0
- data/lib/lutaml/xml/decisions/rules/inherit_parent_prefix_rule.rb +69 -0
- data/lib/lutaml/xml/decisions/rules/namespace_scope_rule.rb +54 -0
- data/lib/lutaml/xml/decisions/rules/reuse_parent_prefix_rule.rb +78 -0
- data/lib/lutaml/xml/decisions/rules/used_prefix_rule.rb +70 -0
- data/lib/lutaml/xml/decisions/rules.rb +39 -0
- data/lib/lutaml/xml/decisions.rb +15 -0
- data/lib/lutaml/xml/declaration_handler.rb +217 -0
- data/lib/lutaml/xml/declaration_plan/attribute_node.rb +81 -0
- data/lib/lutaml/xml/declaration_plan/element_node.rb +101 -0
- data/lib/lutaml/xml/declaration_plan.rb +480 -0
- data/lib/lutaml/xml/declaration_plan_query.rb +105 -0
- data/lib/lutaml/xml/declaration_planner.rb +1849 -0
- data/lib/lutaml/xml/doctype_extractor.rb +51 -0
- data/lib/lutaml/xml/document.rb +380 -0
- data/lib/lutaml/xml/element.rb +93 -0
- data/lib/lutaml/xml/element_prefix_resolver.rb +50 -0
- data/lib/lutaml/xml/encoding_normalizer.rb +54 -0
- data/lib/lutaml/xml/error/invalid_namespace_error.rb +46 -0
- data/lib/lutaml/xml/error/invalid_xsd_type_error.rb +43 -0
- data/lib/lutaml/xml/error/namespace_mismatch_error.rb +53 -0
- data/lib/lutaml/xml/error/xml_configuration_error.rb +17 -0
- data/lib/lutaml/xml/error/xml_error.rb +21 -0
- data/lib/lutaml/xml/format_chooser.rb +214 -0
- data/lib/lutaml/xml/hoisting_algorithm.rb +234 -0
- data/lib/lutaml/xml/listener.rb +33 -0
- data/lib/lutaml/xml/mapping.rb +1470 -0
- data/lib/lutaml/xml/mapping_rule.rb +565 -0
- data/lib/lutaml/xml/model_transform.rb +944 -0
- data/lib/lutaml/xml/namespace.rb +435 -0
- data/lib/lutaml/xml/namespace_class_registry.rb +144 -0
- data/lib/lutaml/xml/namespace_collector.rb +611 -0
- data/lib/lutaml/xml/namespace_declaration.rb +202 -0
- data/lib/lutaml/xml/namespace_declaration_builder.rb +67 -0
- data/lib/lutaml/xml/namespace_declaration_data.rb +182 -0
- data/lib/lutaml/xml/namespace_inheritance_resolver.rb +142 -0
- data/lib/lutaml/xml/namespace_inheritance_strategy.rb +26 -0
- data/lib/lutaml/xml/namespace_needs.rb +213 -0
- data/lib/lutaml/xml/namespace_resolution_strategy.rb +230 -0
- data/lib/lutaml/xml/namespace_resolver.rb +219 -0
- data/lib/lutaml/xml/namespace_scope_config.rb +109 -0
- data/lib/lutaml/xml/namespace_type_resolver.rb +135 -0
- data/lib/lutaml/xml/namespace_usage.rb +121 -0
- data/lib/lutaml/xml/nokogiri/element.rb +34 -0
- data/lib/lutaml/xml/nokogiri.rb +10 -0
- data/lib/lutaml/xml/oga/element.rb +15 -0
- data/lib/lutaml/xml/oga.rb +10 -0
- data/lib/lutaml/xml/ox/element.rb +15 -0
- data/lib/lutaml/xml/ox.rb +10 -0
- data/lib/lutaml/xml/parsed_namespace_declaration.rb +129 -0
- data/lib/lutaml/xml/parsed_namespace_set.rb +149 -0
- data/lib/lutaml/xml/polymorphic_value_handler.rb +41 -0
- data/lib/lutaml/xml/qualified_inheritance_strategy.rb +27 -0
- data/lib/lutaml/xml/rexml/element.rb +15 -0
- data/lib/lutaml/xml/rexml.rb +10 -0
- data/lib/lutaml/xml/schema/builder/nokogiri.rb +41 -0
- data/lib/lutaml/xml/schema/builder/oga.rb +92 -0
- data/lib/lutaml/xml/schema/builder.rb +59 -0
- data/lib/lutaml/xml/schema/builtin_types.rb +112 -0
- data/lib/lutaml/{model → xml}/schema/relaxng_schema.rb +9 -4
- data/lib/lutaml/xml/schema/xsd/all.rb +31 -0
- data/lib/lutaml/xml/schema/xsd/annotation.rb +31 -0
- data/lib/lutaml/xml/schema/xsd/any.rb +33 -0
- data/lib/lutaml/xml/schema/xsd/any_attribute.rb +29 -0
- data/lib/lutaml/xml/schema/xsd/appinfo.rb +25 -0
- data/lib/lutaml/xml/schema/xsd/attribute.rb +78 -0
- data/lib/lutaml/xml/schema/xsd/attribute_group.rb +89 -0
- data/lib/lutaml/xml/schema/xsd/base.rb +267 -0
- data/lib/lutaml/xml/schema/xsd/choice.rb +68 -0
- data/lib/lutaml/xml/schema/xsd/complex_content.rb +39 -0
- data/lib/lutaml/xml/schema/xsd/complex_type.rb +157 -0
- data/lib/lutaml/xml/schema/xsd/documentation.rb +26 -0
- data/lib/lutaml/xml/schema/xsd/element.rb +117 -0
- data/lib/lutaml/xml/schema/xsd/enumeration.rb +25 -0
- data/lib/lutaml/xml/schema/xsd/errors/enhanced_error.rb +142 -0
- data/lib/lutaml/xml/schema/xsd/errors/error_context.rb +67 -0
- data/lib/lutaml/xml/schema/xsd/errors/message_builder.rb +103 -0
- data/lib/lutaml/xml/schema/xsd/errors/suggestion.rb +67 -0
- data/lib/lutaml/xml/schema/xsd/errors/troubleshooters/namespace_troubleshooter.rb +96 -0
- data/lib/lutaml/xml/schema/xsd/errors/troubleshooters/troubleshooting_handler.rb +70 -0
- data/lib/lutaml/xml/schema/xsd/errors.rb +148 -0
- data/lib/lutaml/xml/schema/xsd/extension_complex_content.rb +63 -0
- data/lib/lutaml/xml/schema/xsd/extension_simple_content.rb +48 -0
- data/lib/lutaml/xml/schema/xsd/field.rb +25 -0
- data/lib/lutaml/xml/schema/xsd/file_validation_result.rb +55 -0
- data/lib/lutaml/xml/schema/xsd/fraction_digits.rb +29 -0
- data/lib/lutaml/xml/schema/xsd/glob.rb +105 -0
- data/lib/lutaml/xml/schema/xsd/group.rb +79 -0
- data/lib/lutaml/xml/schema/xsd/import.rb +33 -0
- data/lib/lutaml/xml/schema/xsd/include.rb +31 -0
- data/lib/lutaml/xml/schema/xsd/key.rb +32 -0
- data/lib/lutaml/xml/schema/xsd/keyref.rb +33 -0
- data/lib/lutaml/xml/schema/xsd/length.rb +27 -0
- data/lib/lutaml/xml/schema/xsd/list.rb +28 -0
- data/lib/lutaml/xml/schema/xsd/max_exclusive.rb +25 -0
- data/lib/lutaml/xml/schema/xsd/max_inclusive.rb +23 -0
- data/lib/lutaml/xml/schema/xsd/max_length.rb +25 -0
- data/lib/lutaml/xml/schema/xsd/min_exclusive.rb +25 -0
- data/lib/lutaml/xml/schema/xsd/min_inclusive.rb +23 -0
- data/lib/lutaml/xml/schema/xsd/min_length.rb +25 -0
- data/lib/lutaml/xml/schema/xsd/namespace_mapping.rb +37 -0
- data/lib/lutaml/xml/schema/xsd/namespace_uri_remapping.rb +79 -0
- data/lib/lutaml/xml/schema/xsd/notation.rb +31 -0
- data/lib/lutaml/xml/schema/xsd/pattern.rb +25 -0
- data/lib/lutaml/xml/schema/xsd/redefine.rb +35 -0
- data/lib/lutaml/xml/schema/xsd/restriction_complex_content.rb +56 -0
- data/lib/lutaml/xml/schema/xsd/restriction_simple_content.rb +84 -0
- data/lib/lutaml/xml/schema/xsd/restriction_simple_type.rb +64 -0
- data/lib/lutaml/xml/schema/xsd/schema.rb +373 -0
- data/lib/lutaml/xml/schema/xsd/schema_file_validation_results.rb +55 -0
- data/lib/lutaml/xml/schema/xsd/schema_location_mapping.rb +74 -0
- data/lib/lutaml/xml/schema/xsd/schema_name_resolver.rb +32 -0
- data/lib/lutaml/xml/schema/xsd/schema_path.rb +196 -0
- data/lib/lutaml/xml/schema/xsd/schema_validator.rb +256 -0
- data/lib/lutaml/xml/schema/xsd/selector.rb +27 -0
- data/lib/lutaml/xml/schema/xsd/sequence.rb +68 -0
- data/lib/lutaml/xml/schema/xsd/serialized_schema.rb +185 -0
- data/lib/lutaml/xml/schema/xsd/simple_content.rb +61 -0
- data/lib/lutaml/xml/schema/xsd/simple_type.rb +37 -0
- data/lib/lutaml/xml/schema/xsd/total_digits.rb +29 -0
- data/lib/lutaml/xml/schema/xsd/type_index_entry.rb +40 -0
- data/lib/lutaml/xml/schema/xsd/type_resolution_result.rb +112 -0
- data/lib/lutaml/xml/schema/xsd/union.rb +30 -0
- data/lib/lutaml/xml/schema/xsd/unique.rb +31 -0
- data/lib/lutaml/xml/schema/xsd/validation_error.rb +48 -0
- data/lib/lutaml/xml/schema/xsd/validation_result.rb +86 -0
- data/lib/lutaml/xml/schema/xsd/version.rb +11 -0
- data/lib/lutaml/xml/schema/xsd/white_space.rb +27 -0
- data/lib/lutaml/xml/schema/xsd.rb +165 -0
- data/lib/lutaml/xml/schema/xsd_namespace.rb +29 -0
- data/lib/lutaml/xml/schema/xsd_schema.rb +536 -0
- data/lib/lutaml/xml/schema.rb +13 -0
- data/lib/lutaml/xml/schema_location.rb +155 -0
- data/lib/lutaml/xml/serialization/collection_ext.rb +61 -0
- data/lib/lutaml/xml/serialization/format_conversion.rb +402 -0
- data/lib/lutaml/xml/serialization/instance_methods.rb +297 -0
- data/lib/lutaml/xml/serialization/model_import_ext.rb +40 -0
- data/lib/lutaml/xml/serialization.rb +15 -0
- data/lib/lutaml/xml/shared_dsl.rb +119 -0
- data/lib/lutaml/xml/transform.rb +6 -0
- data/lib/lutaml/xml/transformation/custom_method_wrapper.rb +262 -0
- data/lib/lutaml/xml/transformation/element_builder.rb +586 -0
- data/lib/lutaml/xml/transformation/ordered_applier.rb +329 -0
- data/lib/lutaml/xml/transformation/rule_applier.rb +379 -0
- data/lib/lutaml/xml/transformation/rule_compiler.rb +543 -0
- data/lib/lutaml/xml/transformation/skip_logic.rb +70 -0
- data/lib/lutaml/xml/transformation/value_serializer.rb +139 -0
- data/lib/lutaml/xml/transformation.rb +340 -0
- data/lib/lutaml/xml/transformation_builder.rb +28 -0
- data/lib/lutaml/xml/transformation_support.rb +14 -0
- data/lib/lutaml/xml/type/configurable.rb +157 -0
- data/lib/lutaml/xml/type/serializers.rb +98 -0
- data/lib/lutaml/xml/type/value_xml_mapping.rb +94 -0
- data/lib/lutaml/xml/type_namespace/collector.rb +101 -0
- data/lib/lutaml/xml/type_namespace/declaration.rb +61 -0
- data/lib/lutaml/xml/type_namespace/planner.rb +121 -0
- data/lib/lutaml/xml/type_namespace/reference.rb +71 -0
- data/lib/lutaml/xml/type_namespace/resolver.rb +43 -0
- data/lib/lutaml/xml/type_namespace.rb +13 -0
- data/lib/lutaml/xml/type_namespace_resolver.rb +76 -0
- data/lib/lutaml/xml/unqualified_inheritance_strategy.rb +34 -0
- data/lib/lutaml/xml/w3c/registration.rb +66 -0
- data/lib/lutaml/xml/w3c.rb +398 -0
- data/lib/lutaml/xml/xml_attribute.rb +38 -0
- data/lib/lutaml/xml/xml_element.rb +447 -0
- data/lib/lutaml/xml/xml_namespace.rb +72 -0
- data/lib/lutaml/xml.rb +295 -0
- data/lib/lutaml/{model/yaml → yaml/adapter}/document.rb +3 -3
- data/lib/lutaml/yaml/adapter/mapping.rb +19 -0
- data/lib/lutaml/yaml/adapter/mapping_rule.rb +9 -0
- data/lib/lutaml/yaml/adapter/standard_adapter.rb +39 -0
- data/lib/lutaml/yaml/adapter/transform.rb +9 -0
- data/lib/lutaml/yaml/adapter.rb +13 -0
- data/lib/lutaml/yaml/schema/yaml_schema.rb +65 -0
- data/lib/lutaml/yaml/schema.rb +9 -0
- data/lib/lutaml/yaml/type/serializers.rb +60 -0
- data/lib/lutaml/yaml.rb +26 -0
- data/lib/lutaml/{model/yamls → yamls/adapter}/document.rb +2 -2
- data/lib/lutaml/yamls/adapter/mapping.rb +19 -0
- data/lib/lutaml/yamls/adapter/mapping_rule.rb +9 -0
- data/lib/lutaml/{model/yamls → yamls/adapter}/standard_adapter.rb +6 -5
- data/lib/lutaml/yamls/adapter/transform.rb +26 -0
- data/lib/lutaml/yamls/adapter.rb +13 -0
- data/lib/lutaml/yamls.rb +21 -0
- data/lib/tasks/benchmark_runner.rb +161 -0
- data/lib/tasks/memory_profile.rb +176 -0
- data/lib/tasks/performance.rake +75 -0
- data/lib/tasks/performance_benchmark.rb +499 -0
- data/lib/tasks/performance_comparator.rb +114 -0
- data/lib/tasks/performance_helpers.rb +149 -0
- data/lib/tasks/xml_compiler_benchmark.rb +226 -0
- data/lib/tasks/xml_optimization_benchmark.rb +178 -0
- data/lutaml-model.gemspec +11 -1
- data/reference-docs/XML Entity Definitions for Characters (3rd Edition).html +595 -0
- data/scripts-xmi-profile/profile_xmi.rb +192 -0
- data/scripts-xmi-profile/profile_xmi_simple.rb +210 -0
- data/spec/address_person_spec.rb +436 -0
- data/spec/address_spec.rb +20 -18
- data/spec/ceramic_spec.rb +25 -7
- data/spec/fixtures/address.rb +2 -2
- data/spec/fixtures/ceramic.rb +6 -2
- data/spec/fixtures/person.rb +14 -13
- data/spec/fixtures/sample_model.rb +3 -3
- data/spec/fixtures/vase.rb +3 -3
- data/spec/fixtures/xml/address_example_260.xsd +8 -4
- data/spec/fixtures/xml/examples/nested_categories.xml +45 -51
- data/spec/fixtures/xml/examples/valid_catalog.xml +27 -41
- data/spec/fixtures/xml/math_document_schema.xsd +7 -5
- data/spec/fixtures/xml/product_catalog.xsd +19 -138
- data/spec/fixtures/xml/schema/xsd/build_test_package.rb +19 -0
- data/spec/fixtures/xml/schema/xsd/citygml/2.0/cityGMLBase.xsd +339 -0
- data/spec/fixtures/xml/schema/xsd/citygml/appearance/2.0/appearance.xsd +332 -0
- data/spec/fixtures/xml/schema/xsd/citygml/bridge/2.0/bridge.xsd +578 -0
- data/spec/fixtures/xml/schema/xsd/citygml/building/2.0/building.xsd +535 -0
- data/spec/fixtures/xml/schema/xsd/citygml/cityfurniture/2.0/cityFurniture.xsd +57 -0
- data/spec/fixtures/xml/schema/xsd/citygml/cityobjectgroup/2.0/cityObjectGroup.xsd +84 -0
- data/spec/fixtures/xml/schema/xsd/citygml/examples/2.0/ade/noise-ade/CityGML-NoiseADE.xsd +174 -0
- data/spec/fixtures/xml/schema/xsd/citygml/examples/2.0/ade/robotics-ade/stdOp.xsd +46 -0
- data/spec/fixtures/xml/schema/xsd/citygml/examples/2.0/ade/robotics-ade/unr.xsd +46 -0
- data/spec/fixtures/xml/schema/xsd/citygml/generics/2.0/generics.xsd +184 -0
- data/spec/fixtures/xml/schema/xsd/citygml/landuse/2.0/landUse.xsd +50 -0
- data/spec/fixtures/xml/schema/xsd/citygml/profiles/base/2.0/CityGML.xsd +30 -0
- data/spec/fixtures/xml/schema/xsd/citygml/relief/2.0/relief.xsd +186 -0
- data/spec/fixtures/xml/schema/xsd/citygml/texturedsurface/2.0/texturedSurface.xsd +157 -0
- data/spec/fixtures/xml/schema/xsd/citygml/transportation/2.0/transportation.xsd +224 -0
- data/spec/fixtures/xml/schema/xsd/citygml/tunnel/2.0/tunnel.xsd +530 -0
- data/spec/fixtures/xml/schema/xsd/citygml/vegetation/2.0/vegetation.xsd +108 -0
- data/spec/fixtures/xml/schema/xsd/citygml/waterbody/2.0/waterBody.xsd +171 -0
- data/spec/fixtures/xml/schema/xsd/citygml/xAL/xAL.xsd +1680 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/basicTypes.xsd +262 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/coordinateOperations.xsd +519 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/coordinateReferenceSystems.xsd +367 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/coordinateSystems.xsd +291 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/coverage.xsd +287 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/datums.xsd +281 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/defaultStyle.xsd +447 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/deprecatedTypes.xsd +1128 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/dictionary.xsd +84 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/direction.xsd +78 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/dynamicFeature.xsd +103 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/feature.xsd +88 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/geometryAggregates.xsd +191 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/geometryBasic0d1d.xsd +271 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/geometryBasic2d.xsd +118 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/geometryComplexes.xsd +89 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/geometryPrimitives.xsd +841 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/gml.xsd +15 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/gmlBase.xsd +179 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/grids.xsd +58 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/measures.xsd +63 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/observation.xsd +90 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/referenceSystems.xsd +64 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/temporal.xsd +263 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/temporalReferenceSystems.xsd +183 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/temporalTopology.xsd +113 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/topology.xsd +380 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/units.xsd +156 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/gml/3.2.1/valueObjects.xsd +199 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gco/basicTypes.xsd +429 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gco/gco.xsd +12 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gco/gcoBase.xsd +61 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/applicationSchema.xsd +42 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/citation.xsd +275 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/constraints.xsd +106 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/content.xsd +188 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/dataQuality.xsd +554 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/distribution.xsd +202 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/extent.xsd +205 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/freeText.xsd +122 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/gmd.xsd +12 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/identification.xsd +348 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/maintenance.xsd +86 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/metadataApplication.xsd +175 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/metadataEntity.xsd +70 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/metadataExtension.xsd +99 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/portrayalCatalogue.xsd +36 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/referenceSystem.xsd +100 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmd/spatialRepresentation.xsd +237 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmx/catalogues.xsd +112 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmx/codelistItem.xsd +168 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmx/crsItem.xsd +1030 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmx/extendedTypes.xsd +75 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmx/gmx.xsd +2 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmx/gmxUsage.xsd +127 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gmx/uomItem.xsd +162 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gsr/gsr.xsd +12 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gsr/spatialReferencing.xsd +24 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gss/geometry.xsd +35 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gss/gss.xsd +12 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gts/gts.xsd +12 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/iso/19139/20070417/gts/temporalObjects.xsd +34 -0
- data/spec/fixtures/xml/schema/xsd/codesynthesis-gml-3.2.1/xlink/1.0.0/xlinks.xsd +122 -0
- data/spec/fixtures/xml/schema/xsd/i-ur/urbanFunction.xsd +2772 -0
- data/spec/fixtures/xml/schema/xsd/i-ur/urbanObject.xsd +3344 -0
- data/spec/fixtures/xml/schema/xsd/import-without-location.xsd +9 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gco/1.2/baseTypes.xsd +775 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gco/1.2/gco.xsd +17 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gco/1.2.0/baseTypes.xsd +775 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gco/1.2.0/gco.xsd +17 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gcx/1.2/extendedTypes.xsd +151 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gcx/1.2/gcx.xsd +16 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gcx/1.2.0/extendedTypes.xsd +151 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19103/-/gcx/1.2.0/gcx.xsd +16 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/coordinateGeometry.xsd +1078 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/geometricAggregates.xsd +141 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/geometricComplex.xsd +177 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/geometricPrimative.xsd +526 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/geometry.xsd +9 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/geometryRoot.xsd +59 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/gss.xsd +26 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/topoComplex.xsd +33 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/topoPrimative.xsd +432 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/topoRoot.xsd +9 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/1.0.0/topology.xsd +15 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/coordinates.xsd +15 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/curves.xsd +22 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/geometry.xsd +41 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/gss.xsd +21 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/simplicialGeometry.xsd +63 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/solids.xsd +21 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/surfaces.xsd +15 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19107/-/gss/2.0.0/topology.xsd +21 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/fcc/2.1.0/abstract.xsd +47 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/fcc/2.1.0/fcc.xsd +12 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/fcc/2.2/abstract.xsd +45 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/fcc/2.2/fcc.xsd +11 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/fcc/2.2.0/abstract.xsd +45 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/fcc/2.2.0/fcc.xsd +11 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/gfc/1.0/gfc.xsd +497 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/gfc/2.1.0/featureCatalogue.xsd +673 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/gfc/2.1.0/gfc.xsd +19 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/gfc/2.2/featureCatalogue.xsd +798 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/gfc/2.2/gfc.xsd +19 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/gfc/2.2.0/featureCatalogue.xsd +798 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19110/-/gfc/2.2.0/gfc.xsd +19 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19110/fcc/1.0/abstract.xsd +49 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19110/fcc/1.0/fcc.xsd +9 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19110/gfc/1.1/featureCatalogue.xsd +671 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19110/gfc/1.1/gfc.xsd +13 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1/rbc.xsd +13 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1/rbcStubs.xsd +195 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.0/rbc.xsd +13 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.0/rbcStubs.xsd +195 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/AbstractCommonClasses.xsd +282 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/commonClasses.xsd +127 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/coordOps.xsd +676 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/coordRefSys.xsd +498 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/coordSys.xsd +844 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/coordinates.xsd +101 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/datum.xsd +474 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19111/-/rbc/3.1.1/rbc.xsd +18 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/cit/1.3/cit.xsd +12 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/cit/1.3/citation.xsd +445 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/cit/1.3.0/cit.xsd +12 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/cit/1.3.0/citation.xsd +445 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/gex/1.3/extent.xsd +243 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/gex/1.3/gex.xsd +16 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/gex/1.3.0/extent.xsd +243 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/gex/1.3.0/gex.xsd +16 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/gex/1.3.1/extent.xsd +244 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/gex/1.3.1/gex.xsd +15 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/lan/1.3/lan.xsd +13 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/lan/1.3/language.xsd +152 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/lan/1.3.0/lan.xsd +13 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/lan/1.3.0/language.xsd +152 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mas/1.3/applicationSchema.xsd +58 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mas/1.3/mas.xsd +16 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mas/1.3.0/applicationSchema.xsd +58 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mas/1.3.0/mas.xsd +16 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mcc/1.3/AbstractCommonClasses.xsd +378 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mcc/1.3/commonClasses.xsd +205 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mcc/1.3/mcc.xsd +12 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mcc/1.3.0/AbstractCommonClasses.xsd +378 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mcc/1.3.0/commonClasses.xsd +205 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mcc/1.3.0/mcc.xsd +12 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mco/1.3/constraints.xsd +171 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mco/1.3/mco.xsd +14 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mco/1.3.0/constraints.xsd +171 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mco/1.3.0/mco.xsd +14 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mda/1.3/mda.xsd +13 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mda/1.3/metadataApplication.xsd +207 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mda/1.3.0/mda.xsd +13 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mda/1.3.0/metadataApplication.xsd +207 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mda/1.3.1/mda.xsd +13 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mda/1.3.1/metadataApplication.xsd +247 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3/mdb.xsd +11 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3/metadataBase.xsd +117 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3/metadataBaseMDAerror.xsd +116 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3.0/mdb.xsd +11 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3.0/metadataBase.xsd +117 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3.0/metadataBaseMDAerror.xsd +116 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3.1/mdb.xsd +11 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mdb/1.3.1/metadataBase.xsd +144 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mex/1.3/metadataExtension.xsd +138 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mex/1.3/mex.xsd +15 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mex/1.3.0/metadataExtension.xsd +138 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mex/1.3.0/mex.xsd +15 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mmi/1.3/maintenance.xsd +70 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mmi/1.3/mmi.xsd +14 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mmi/1.3.0/maintenance.xsd +70 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mmi/1.3.0/mmi.xsd +14 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mpc/1.3/mpc.xsd +14 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mpc/1.3/portrayalCatalogue.xsd +40 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mpc/1.3.0/mpc.xsd +14 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mpc/1.3.0/portrayalCatalogue.xsd +40 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrc/1.3/content.xsd +368 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrc/1.3/mrc.xsd +19 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrc/1.3.0/content.xsd +368 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrc/1.3.0/mrc.xsd +19 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrc/1.3.1/content.xsd +366 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrc/1.3.1/mrc.xsd +13 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrd/1.3/distribution.xsd +232 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrd/1.3/mrd.xsd +13 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrd/1.3.0/distribution.xsd +232 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrd/1.3.0/mrd.xsd +13 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mri/1.3/identification.xsd +425 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mri/1.3/mri.xsd +16 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mri/1.3.0/identification.xsd +425 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mri/1.3.0/mri.xsd +16 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrl/1.3/lineage.xsd +130 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrl/1.3/mrl.xsd +15 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrl/1.3.0/lineage.xsd +130 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrl/1.3.0/mrl.xsd +15 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrs/1.3/mrs.xsd +16 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrs/1.3/referenceSystem.xsd +67 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrs/1.3.0/mrs.xsd +16 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrs/1.3.0/referenceSystem.xsd +67 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrs/1.3.1/mrs.xsd +16 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/mrs/1.3.1/referenceSystem.xsd +66 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/msr/1.3/msr.xsd +17 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/msr/1.3/spatialRepresentation.xsd +326 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/msr/1.3.0/msr.xsd +17 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/msr/1.3.0/spatialRepresentation.xsd +326 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/msr/1.3.1/msr.xsd +15 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/msr/1.3.1/spatialRepresentation.xsd +326 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/srv/1.3/serviceInformation.xsd +252 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/srv/1.3/srv.xsd +14 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/srv/1.3.0/serviceInformation.xsd +252 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-1/srv/1.3.0/srv.xsd +14 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.0/acquisitionInformation.xsd +415 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.0/contentInformation.xsd +147 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.0/dataQualityInformation.xsd +214 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.0/gmi.xsd +23 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.0/metadataEntitySet.xsd +43 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.0/spatialRepresentationInformation.xsd +140 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.1/acquisitionInformation.xsd +415 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.1/contentInformation.xsd +147 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.1/dataQualityInformation.xsd +214 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.1/gmi.xsd +24 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.1/metadataEntitySet.xsd +43 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/gmi/1.1/spatialRepresentationInformation.xsd +142 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mac/2.2/acquisitionInformationImagery.xsd +796 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mac/2.2/mac.xsd +11 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mac/2.2.0/acquisitionInformationImagery.xsd +796 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mac/2.2.0/mac.xsd +11 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mac/2.2.1/acquisitionInformationImagery.xsd +799 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mac/2.2.1/mac.xsd +10 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mrc/2.2/contentInformationImagery.xsd +161 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mrc/2.2.0/contentInformationImagery.xsd +161 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mrc/2.2.1/contentInformationImagery.xsd +159 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mrl/2.2/lineageImagery.xsd +312 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/mrl/2.2.0/lineageImagery.xsd +312 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/msr/2.2/spatialRepresentationImagery.xsd +138 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/msr/2.2.0/spatialRepresentationImagery.xsd +138 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-2/msr/2.2.1/spatialRepresentationImagery.xsd +145 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cat/1.0/cat.xsd +16 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cat/1.0/catalogues.xsd +59 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cat/1.0/codelistItem.xsd +63 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cat/1.0/crsItem.xsd +188 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cat/1.0/uomItem.xsd +45 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cit/1.0/cit.xsd +11 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cit/1.0/citation.xsd +400 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cit/2.0/cit.xsd +11 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/cit/2.0/citation.xsd +402 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gco/1.0/baseTypes.xsd +532 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gco/1.0/baseTypes2014.xsd +531 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gco/1.0/gco.xsd +16 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gcx/1.0/extendedTypes.xsd +97 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gcx/1.0/gcx.xsd +11 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gex/1.0/extent.xsd +207 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gex/1.0/gex.xsd +15 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gmw/1.0/gmlWrapperTypes.xsd +147 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gmw/1.0/gmlWrapperTypes2014.xsd +147 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/gmw/1.0/gmw.xsd +17 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/lan/1.0/lan.xsd +13 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/lan/1.0/language.xsd +141 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mac/1.0/acquisitionInformationImagery.xsd +424 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mac/1.0/mac.xsd +14 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mac/2.0/acquisitionInformationImagery.xsd +473 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mac/2.0/event.xsd +106 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mac/2.0/mac.xsd +15 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mac/2.0/metadataEntitySet.xsd +46 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mas/1.0/applicationSchema.xsd +53 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mas/1.0/mas.xsd +15 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mcc/1.0/AbstractCommonClasses.xsd +362 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mcc/1.0/commonClasses.xsd +179 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mcc/1.0/mcc.xsd +12 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mco/1.0/constraints.xsd +152 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mco/1.0/mco.xsd +13 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md1/1.0/md1.xsd +19 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md1/1.0/metadataWExtendedType.xsd +10 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md1/2.0/md1.xsd +19 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md1/2.0/metadataWExtendedType.xsd +10 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md2/1.0/md2.xsd +27 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md2/1.0/metadataWithExtensions.xsd +10 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md2/2.0/md2.xsd +27 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/md2/2.0/metadataWithExtensions.xsd +10 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mda/1.0/mda.xsd +13 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mda/1.0/metadataApplication.xsd +188 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mda/2.0/mda.xsd +13 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mda/2.0/metadataApplication.xsd +189 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdb/1.0/mdb.xsd +23 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdb/1.0/metadataBase.xsd +97 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdb/2.0/mdb.xsd +23 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdb/2.0/metadataBase.xsd +105 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mds/1.0/mds.xsd +59 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mds/1.0/metadataDataServices.xsd +10 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mds/2.0/mds.xsd +44 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mds/2.0/metadataDataServices.xsd +10 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdt/1.0/mdt.xsd +17 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdt/1.0/metadataTransfer.xsd +121 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdt/2.0/mdt.xsd +17 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mdt/2.0/metadataTransfer.xsd +121 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mex/1.0/metadataExtension.xsd +122 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mex/1.0/mex.xsd +13 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mmi/1.0/maintenance.xsd +63 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mmi/1.0/mmi.xsd +13 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mpc/1.0/mpc.xsd +13 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mpc/1.0/portrayalCatalogue.xsd +35 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrc/1.0/content.xsd +330 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrc/1.0/contentInformationImagery.xsd +160 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrc/1.0/mrc.xsd +18 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrc/2.0/content.xsd +334 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrc/2.0/contentInformationImagery.xsd +143 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrc/2.0/mrc.xsd +21 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrd/1.0/distribution.xsd +212 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrd/1.0/mrd.xsd +13 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mri/1.0/identification.xsd +385 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mri/1.0/mri.xsd +15 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrl/1.0/lineage.xsd +117 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrl/1.0/lineageImagery.xsd +168 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrl/1.0/mrl.xsd +14 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrl/2.0/lineage.xsd +118 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrl/2.0/lineageImagery.xsd +250 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrl/2.0/mrl.xsd +14 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrs/1.0/mrs.xsd +13 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/mrs/1.0/referenceSystem.xsd +47 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/msr/1.0/msr.xsd +16 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/msr/1.0/spatialRepresentation.xsd +288 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/msr/1.0/spatialRepresentationImagery.xsd +113 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/msr/2.0/msr.xsd +16 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/msr/2.0/spatialRepresentation.xsd +296 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/msr/2.0/spatialRepresentationImagery.xsd +114 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/srv/2.0/serviceInformation.xsd +217 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/srv/2.0/srv.xsd +14 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/srv/2.1/serviceInformation.xsd +220 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19115/-3/srv/2.1/srv.xsd +14 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19119/-/srv/1.0/serviceMetadata.xsd +204 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19119/-/srv/1.0/serviceModel.xsd +230 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19119/-/srv/1.0/srv.xsd +13 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19119/srv/serviceMetadata.xsd +204 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19119/srv/serviceModel.xsd +238 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19119/srv/srv.xsd +13 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/1.1/cis-0.xsd +17 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/1.1/codeLists.xsd +68 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/1.1/gridPoint.xsd +47 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/1.1.0/cis-0.xsd +17 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/1.1.0/codeLists.xsd +68 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/1.1.0/gridPoint.xsd +47 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/3.1.0/codeLists.xsd +68 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19123/-/cis/3.1.0/gridPoint.xsd +47 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.0/coverage.xsd +185 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.0/gmlcovAll.xsd +21 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.0/grids.xsd +115 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.1/coverage.xsd +188 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.1/gmlcovAll.xsd +25 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.1/grids.xsd +119 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.1.0/coverage.xsd +188 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.1.0/gmlcovAll.xsd +25 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/1.1.0/grids.xsd +119 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/3.1.0/coverage.xsd +188 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/3.1.0/gmlcovAll.xsd +23 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19123/-2/cis/3.1.0/grids.xsd +119 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.0/codeList.xsd +134 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.0/groundControlPoints.xsd +239 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.0/nonPhysicalSensorModel.xsd +321 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.0/physicalSensorModel.xsd +62 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.0/sensorModel.xsd +65 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.0/sensorParameters.xsd +762 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.0/spatialElements.xsd +497 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.1/codeList.xsd +129 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.1/groundControlPoints.xsd +235 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.1/nonPhysicalSensorModel.xsd +321 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.1/physicalSensorModel.xsd +62 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.1/sensorModel.xsd +65 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.1/sensorParameters.xsd +762 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-1/smi/1.1.1/spatialElements.xsd +496 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.0/codeList.xsd +349 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.0/sensorModel.xsd +53 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.0/sensorParameters.xsd +681 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.0/spatialElements.xsd +902 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.1/codeList.xsd +344 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.1/sensorModel.xsd +49 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.1/sensorParameters.xsd +676 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-2/smi/1.1.1/spatialElements.xsd +897 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-3/smi/1.1/smi.xsd +42 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-3/smi/1.1.0/smi.xsd +42 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19130/-3/smi/1.1.1/smi.xsd +42 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19131/-/dps/2.0/dps.xsd +1344 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19131/-/dps/2.0.0/dps.xsd +1344 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19131/-/dps/2.2/dps.xsd +1522 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19131/-/dps/2.2.0/dps.xsd +1522 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19131/-/dps/2.2.1/dps.xsd +1522 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19131/-1/dps/2.0/dps.xsd +1339 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19131/-1/dps/2.2.0/dps.xsd +1540 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.0/core.xsd +349 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.0/extended.xsd +1074 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.0/hierarchy.xsd +57 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.0/pir.xsd +13 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1/core.xsd +344 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1/extended.xsd +1076 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1/hierarchy.xsd +58 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1/pir.xsd +15 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1.0/core.xsd +344 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1.0/extended.xsd +1076 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1.0/hierarchy.xsd +58 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19135/-1/pir/1.1.0/pir.xsd +15 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/pre/1.0/abstract.xsd +42 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/pre/1.0/pre.xsd +4 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/pre/1.2.0/abstract.xsd +44 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/pre/1.2.0/pre.xsd +11 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/reg/1.0/reg.xsd +8 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/reg/1.0/registration.xsd +562 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/reg/1.2.0/reg.xsd +22 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19135/-2/reg/1.2.0/registration.xsd +590 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/basicTypes.xsd +275 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/coordinateOperations.xsd +534 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/coordinateReferenceSystems.xsd +379 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/coordinateSystems.xsd +303 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/coverage.xsd +298 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/datums.xsd +293 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/defaultStyle.xsd +462 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/deprecatedTypes.xsd +1139 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/dictionary.xsd +95 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/direction.xsd +90 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/dynamicFeature.xsd +114 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/feature.xsd +99 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/geometryAggregates.xsd +203 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/geometryBasic0d1d.xsd +283 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/geometryBasic2d.xsd +130 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/geometryComplexes.xsd +101 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/geometryPrimitives.xsd +852 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/gml.xsd +25 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/gmlBase.xsd +191 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/grids.xsd +70 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/measures.xsd +74 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/observation.xsd +100 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/referenceSystems.xsd +78 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/temporal.xsd +274 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/temporalReferenceSystems.xsd +194 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/temporalTopology.xsd +124 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/topology.xsd +391 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/units.xsd +168 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-/gml/1.0/valueObjects.xsd +210 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-1/gmw/1.1/gmlWrapperTypes.xsd +160 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-1/gmw/1.1/gmw.xsd +27 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-1/gmw/1.1.0/gmlWrapperTypes.xsd +160 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19136/-1/gmw/1.1.0/gmw.xsd +27 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2/cat.xsd +18 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2/catalogues.xsd +63 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2/codelistItem.xsd +64 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2/crsItem.xsd +200 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2/uomItem.xsd +49 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2.0/cat.xsd +18 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2.0/catalogues.xsd +63 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2.0/codelistItem.xsd +64 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2.0/crsItem.xsd +200 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/cat/1.2.0/uomItem.xsd +49 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gco/1.0/basicTypes.xsd +439 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gco/1.0/gco.xsd +18 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gco/1.0/gcoBase.xsd +71 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/applicationSchema.xsd +50 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/citation.xsd +283 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/constraints.xsd +114 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/content.xsd +197 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/dataQuality.xsd +563 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/distribution.xsd +210 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/extent.xsd +216 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/freeText.xsd +130 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/gmd.xsd +18 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/identification.xsd +356 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/maintenance.xsd +95 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/metadataApplication.xsd +183 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/metadataEntity.xsd +78 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/metadataExtension.xsd +107 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/portrayalCatalogue.xsd +44 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/referenceSystem.xsd +108 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmd/1.0/spatialRepresentation.xsd +246 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmx/1.0/catalogues.xsd +121 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmx/1.0/codelistItem.xsd +179 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmx/1.0/crsItem.xsd +1041 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmx/1.0/extendedTypes.xsd +83 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmx/1.0/gmx.xsd +18 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmx/1.0/gmxUsage.xsd +136 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gmx/1.0/uomItem.xsd +173 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gsr/1.0/gsr.xsd +18 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gsr/1.0/spatialReferencing.xsd +34 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gss/1.0/geometry.xsd +45 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gss/1.0/gss.xsd +18 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gts/1.0/gts.xsd +18 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19139/-/gts/1.0/temporalObjects.xsd +44 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19155/gpi/1.0/gpi.xsd +16 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19155/gpi/1.0/placeIdentifier.xsd +75 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19155/gpi/1.0/sampleGMLApplicationSchema.xsd +83 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqc/1.2/abstract.xsd +44 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqc/1.2/dqc.xsd +16 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqc/1.2.0/abstract.xsd +44 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqc/1.2.0/dqc.xsd +16 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqm/1.2/dqm.xsd +19 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqm/1.2/qualityMeasures.xsd +332 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqm/1.2.0/dqm.xsd +19 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/dqm/1.2.0/qualityMeasures.xsd +332 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2/dataQualityElement.xsd +583 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2/dataQualityEvaluation.xsd +199 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2/dataQualityImagery.xsd +75 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2/dataQualityResult.xsd +213 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2/mdq.xsd +22 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2/metaquality.xsd +93 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2.0/dataQualityElement.xsd +583 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2.0/dataQualityEvaluation.xsd +199 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2.0/dataQualityImagery.xsd +75 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2.0/dataQualityResult.xsd +213 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2.0/mdq.xsd +22 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-/mdq/1.2.0/metaquality.xsd +93 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqc/1.0.0/dataQualityCommon.xsd +33 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqc/1.0.0/dqc.xsd +14 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqc/1.0.1/dataQualityCommon.xsd +43 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqc/1.0.1/dqc.xsd +17 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqm/1.0.0/dataQualityMeasure.xsd +376 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqm/1.0.0/dqm.xsd +11 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqm/1.0.1/dataQualityMeasure.xsd +367 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/dqm/1.0.1/dqm.xsd +11 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.0/dataQuality.xsd +570 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.0/dataQualityEvaluation.xsd +227 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.0/dataQualityResult.xsd +191 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.0/mdq.xsd +14 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.0/metaquality.xsd +106 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.1/dataQuality.xsd +581 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.1/dataQualityEvaluation.xsd +227 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.1/dataQualityResult.xsd +198 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.1/mdq.xsd +14 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-1/mdq/1.0.1/metaquality.xsd +102 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/dqc/1.0/abstract.xsd +43 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/dqc/1.0/dqc.xsd +15 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/dqm/1.0/dqm.xsd +15 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/dqm/1.0/qualityMeasures.xsd +303 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/mdq/1.0/dataQualityElement.xsd +554 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/mdq/1.0/dataQualityEvaluation.xsd +182 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/mdq/1.0/dataQualityImagery.xsd +72 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/mdq/1.0/dataQualityResult.xsd +140 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/mdq/1.0/mdq.xsd +21 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19157/-2/mdq/1.0/metaquality.xsd +89 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19160/-4/patdl/2.7.3/PATDL.v.2.7.3.xsd +517 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1/IE_Imagery.xsd +520 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1/IE_ImageryAndGriddedData.xsd +222 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1/IE_ThematicGriddedData.xsd +117 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1/igd.xsd +14 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.0/IE_Imagery.xsd +520 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.0/IE_ImageryAndGriddedData.xsd +222 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.0/IE_ThematicGriddedData.xsd +117 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.0/igd.xsd +14 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.1/IE_Imagery.xsd +518 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.1/IE_ImageryAndGriddedData.xsd +213 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.1/IE_ThematicGriddedData.xsd +116 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19163/-1/igd/1.1.1/igd.xsd +15 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19165/-1/gpm/1.0.0/geospatialPreservationMetadata.xsd +872 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19165/-1/gpm/1.0.0/gpm.xsd +11 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19165/gpm/1.0/geospatialPreservationMetadata.xsd +385 -0
- data/spec/fixtures/xml/schema/xsd/isotc211/19165/gpm/1.0/gpm.xsd +8 -0
- data/spec/fixtures/xml/schema/xsd/metaschema-datatypes.xsd +263 -0
- data/spec/fixtures/xml/schema/xsd/metaschema-markup-line.xsd +9 -0
- data/spec/fixtures/xml/schema/xsd/metaschema-markup-multiline.xsd +135 -0
- data/spec/fixtures/xml/schema/xsd/metaschema-meta-constraints.xsd +39 -0
- data/spec/fixtures/xml/schema/xsd/metaschema-prose-base.xsd +82 -0
- data/spec/fixtures/xml/schema/xsd/metaschema-prose-module.xsd +5 -0
- data/spec/fixtures/xml/schema/xsd/metaschema.xsd +1344 -0
- data/spec/fixtures/xml/schema/xsd/omml_schema.xsd +1528 -0
- data/spec/fixtures/xml/schema/xsd/smil20/rdf.xsd +16 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-AccessKeyTiming.xsd +33 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-AudioLayout.xsd +32 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicAnimation.xsd +35 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicContentControl.xsd +49 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicInlineTiming.xsd +34 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicLayout.xsd +34 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicLinking.xsd +34 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicMedia.xsd +39 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicTimeContainers.xsd +37 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-BasicTransitions.xsd +36 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-BrushMedia.xsd +32 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-CustomTestAttributes.xsd +33 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-EventTiming.xsd +33 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-ExclTimeContainers.xsd +37 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-FillDefault.xsd +32 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-HierarchicalLayout.xsd +46 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-HostLanguage.xsd +85 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-InlineTransitions.xsd +35 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-IntegrationSet.xsd +72 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-LinkingAttributes.xsd +40 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-MediaAccessibility.xsd +34 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-MediaClipMarkers.xsd +35 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-MediaClipping.xsd +35 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-MediaDescription.xsd +35 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-MediaMarkerTiming.xsd +33 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-MediaParam.xsd +34 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-Metainformation.xsd +33 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-MinMaxTiming.xsd +33 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-MultiArcTiming.xsd +33 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-MultiWindowLayout.xsd +32 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-ObjectLinking.xsd +33 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-PrefetchControl.xsd +31 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-RepeatTiming.xsd +34 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-RepeatValueTiming.xsd +33 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-RestartDefault.xsd +32 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-RestartTiming.xsd +32 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-SkipContentControl.xsd +32 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-SplineAnimation.xsd +34 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-Structure.xsd +34 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-SyncBehavior.xsd +33 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-SyncBehaviorDefault.xsd +33 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-SyncMaster.xsd +32 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-SyncbaseTiming.xsd +33 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-TimeContainerAttributes.xsd +35 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-TimeManipulations.xsd +35 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-TransitionModifiers.xsd +37 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-WallclockTiming.xsd +33 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-animate.xsd +229 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-content.xsd +148 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-language.xsd +834 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-layout.xsd +211 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-linking.xsd +117 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-media.xsd +175 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-meta.xsd +44 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-struct.xsd +47 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-timemanip.xsd +34 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-timing.xsd +344 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-transitions.xsd +138 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20-utility.xsd +57 -0
- data/spec/fixtures/xml/schema/xsd/smil20/smil20.xsd +86 -0
- data/spec/fixtures/xml/schema/xsd/smil20/xml-mod.xsd +25 -0
- data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/advanced_encodings.xsd +186 -0
- data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/basic_types.xsd +147 -0
- data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/block_components.xsd +163 -0
- data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/choice_components.xsd +56 -0
- data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/examples/security.xsd +15 -0
- data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/record_components.xsd +95 -0
- data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/simple_components.xsd +536 -0
- data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/simple_encodings.xsd +93 -0
- data/spec/fixtures/xml/schema/xsd/sweCommon/2.0.1/swe.xsd +14 -0
- data/spec/fixtures/xml/schema/xsd/test_schema.lxr +0 -0
- data/spec/fixtures/xml/schema/xsd/test_schema.xsd +24 -0
- data/spec/fixtures/xml/schema/xsd/unitsml-v1.0-csd03.xsd +1333 -0
- data/spec/fixtures/xml/schema/xsd/unitsml-v1.0-csd04.xsd +1334 -0
- data/spec/fixtures/xml/schema/xsd/validation_config.yml +14 -0
- data/spec/fixtures/xml/special_char.xml +3 -4
- data/spec/fixtures/xml/user.xsd +14 -10
- data/spec/lutaml/key_value/transformation/collection_serializer_spec.rb +213 -0
- data/spec/lutaml/key_value/transformation/rule_compiler_spec.rb +229 -0
- data/spec/lutaml/key_value/transformation/value_serializer_spec.rb +216 -0
- data/spec/lutaml/key_value/transformation_spec.rb +292 -0
- data/spec/lutaml/model/attribute_collection_spec.rb +9 -6
- data/spec/lutaml/model/attribute_form_default_spec.rb +252 -0
- data/spec/lutaml/model/attribute_spec.rb +328 -38
- data/spec/lutaml/model/cached_type_resolver_spec.rb +362 -0
- data/spec/lutaml/model/cdata_spec.rb +180 -102
- data/spec/lutaml/model/choice_spec.rb +37 -7
- data/spec/lutaml/model/cli_spec.rb +452 -0
- data/spec/lutaml/model/collection_index_spec.rb +347 -0
- data/spec/lutaml/model/collection_mutation_spec.rb +124 -0
- data/spec/lutaml/model/collection_spec.rb +580 -155
- data/spec/lutaml/model/collection_validation_spec.rb +736 -0
- data/spec/lutaml/model/comparable_model_spec.rb +75 -0
- data/spec/lutaml/model/compiled_rule_spec.rb +364 -0
- data/spec/lutaml/model/consolidation_spec.rb +295 -0
- data/spec/lutaml/model/context_registry_spec.rb +269 -0
- data/spec/lutaml/model/custom_bibtex_adapter_spec.rb +21 -7
- data/spec/lutaml/model/custom_collection_spec.rb +321 -27
- data/spec/lutaml/model/custom_model_spec.rb +13 -10
- data/spec/lutaml/model/custom_serialization_spec.rb +12 -14
- data/spec/lutaml/model/custom_vobject_adapter_spec.rb +36 -16
- data/spec/lutaml/model/default_register_spec.rb +852 -0
- data/spec/lutaml/model/defaults_spec.rb +57 -6
- data/spec/lutaml/model/delegation_spec.rb +184 -110
- data/spec/lutaml/model/derived_attribute_serialization_spec.rb +33 -0
- data/spec/lutaml/model/dynamic_attribute_spec.rb +112 -0
- data/spec/lutaml/model/encoding_spec.rb +281 -0
- data/spec/lutaml/model/enum_spec.rb +46 -2
- data/spec/lutaml/model/except_spec.rb +240 -0
- data/spec/lutaml/model/finalization_cache_spec.rb +88 -0
- data/spec/lutaml/model/global_context_spec.rb +421 -0
- data/spec/lutaml/model/global_register_spec.rb +153 -36
- data/spec/lutaml/model/group_spec.rb +193 -54
- data/spec/lutaml/model/hash/adapter_spec.rb +5 -3
- data/spec/lutaml/model/import_registry_spec.rb +295 -0
- data/spec/lutaml/model/included_spec.rb +10 -17
- data/spec/lutaml/model/inheritance_spec.rb +6 -6
- data/spec/lutaml/model/json_adapter_spec.rb +13 -6
- data/spec/lutaml/model/json_spec.rb +33 -0
- data/spec/lutaml/model/key_value_data_model/key_value_element_spec.rb +320 -0
- data/spec/lutaml/model/key_value_mapping_spec.rb +12 -2
- data/spec/lutaml/model/lazy_collection_spec.rb +208 -0
- data/spec/lutaml/model/liquefiable_spec.rb +263 -24
- data/spec/lutaml/model/logger_spec.rb +68 -0
- data/spec/lutaml/model/map_all_spec.rb +36 -11
- data/spec/lutaml/model/map_content_spec.rb +4 -4
- data/spec/lutaml/model/mapping_rule_perf_guard_spec.rb +71 -0
- data/spec/lutaml/model/mixed_content_spec.rb +481 -171
- data/spec/lutaml/model/model_transformer_spec.rb +678 -0
- data/spec/lutaml/model/multiple_mapping_spec.rb +71 -39
- data/spec/lutaml/model/namespace_versioning_spec.rb +390 -0
- data/spec/lutaml/model/one_entry_cache_spec.rb +114 -0
- data/spec/lutaml/model/ordered_content_spec.rb +115 -24
- data/spec/lutaml/model/polymorphic_spec.rb +29 -6
- data/spec/lutaml/model/processing_instruction_spec.rb +375 -0
- data/spec/lutaml/model/{register/key_value_spec.rb → register_key_value_spec.rb} +57 -5
- data/spec/lutaml/model/register_spec.rb +235 -5
- data/spec/lutaml/model/render_empty_spec.rb +143 -6
- data/spec/lutaml/model/render_nil_spec.rb +15 -10
- data/spec/lutaml/model/root_mappings_spec.rb +16 -6
- data/spec/lutaml/model/rule_value_extractor_spec.rb +13 -44
- data/spec/lutaml/model/runtime_compatibility_spec.rb +36 -0
- data/spec/lutaml/model/schema/generator/definitions_collection_spec.rb +4 -0
- data/spec/lutaml/model/schema/json_schema_spec.rb +7 -1
- data/spec/lutaml/model/schema/relaxng_schema_spec.rb +1 -1
- data/spec/lutaml/model/schema/renderer_spec.rb +128 -0
- data/spec/lutaml/model/schema/xsd_schema_spec.rb +1 -1
- data/spec/lutaml/model/sequence_spec.rb +460 -15
- data/spec/lutaml/model/serializable_spec.rb +212 -12
- data/spec/lutaml/model/serializable_validation_spec.rb +3 -2
- data/spec/lutaml/model/serialize_perf_guard_spec.rb +100 -0
- data/spec/lutaml/model/services/default_value_resolver_spec.rb +162 -0
- data/spec/lutaml/model/simple_model_spec.rb +4 -4
- data/spec/lutaml/model/toml_adapter_spec.rb +11 -4
- data/spec/lutaml/model/toml_spec.rb +46 -2
- data/spec/lutaml/model/transformation_builder_spec.rb +283 -0
- data/spec/lutaml/model/transformation_spec.rb +165 -236
- data/spec/lutaml/model/type/base64_binary_spec.rb +202 -0
- data/spec/lutaml/model/type/date_spec.rb +132 -0
- data/spec/lutaml/model/type/date_time_spec.rb +54 -2
- data/spec/lutaml/model/type/decimal_spec.rb +1 -1
- data/spec/lutaml/model/type/duration_spec.rb +185 -0
- data/spec/lutaml/model/type/hex_binary_spec.rb +225 -0
- data/spec/lutaml/model/type/integer_spec.rb +1 -1
- data/spec/lutaml/model/type/qname_spec.rb +246 -0
- data/spec/lutaml/model/type/reference_integration_spec.rb +532 -0
- data/spec/lutaml/model/type/reference_spec.rb +293 -0
- data/spec/lutaml/model/type/symbol_spec.rb +322 -0
- data/spec/lutaml/model/type/time_spec.rb +6 -5
- data/spec/lutaml/model/type/time_without_date_spec.rb +1 -1
- data/spec/lutaml/model/type/uninitialized_class_spec.rb +110 -0
- data/spec/lutaml/model/type/uri_spec.rb +176 -0
- data/spec/lutaml/model/type/value_xml_mapping_spec.rb +162 -0
- data/spec/lutaml/model/type_context_spec.rb +370 -0
- data/spec/lutaml/model/type_registry_spec.rb +313 -0
- data/spec/lutaml/model/type_resolver_spec.rb +278 -0
- data/spec/lutaml/model/type_spec.rb +7 -8
- data/spec/lutaml/model/type_substitution_spec.rb +172 -0
- data/spec/lutaml/model/utils_spec.rb +39 -24
- data/spec/lutaml/model/value_map_spec.rb +2 -2
- data/spec/lutaml/model/value_transformation_comprehensive_spec.rb +676 -0
- data/spec/lutaml/model/with_child_mapping_spec.rb +1 -1
- data/spec/lutaml/model/xml_decoupling_spec.rb +435 -0
- data/spec/lutaml/model/xsd_form_default_patterns_spec.rb +664 -0
- data/spec/lutaml/model/xsd_patterns_spec.rb +278 -0
- data/spec/lutaml/model/xsd_type_spec.rb +345 -0
- data/spec/lutaml/model/xsd_type_validation_spec.rb +442 -0
- data/spec/lutaml/model/yamls/standard_adapter_spec.rb +2 -2
- data/spec/lutaml/xml/adapter/nokogiri_adapter_spec.rb +130 -0
- data/spec/lutaml/xml/adapter/oga_adapter_spec.rb +135 -0
- data/spec/lutaml/xml/adapter/ox_adapter_spec.rb +101 -0
- data/spec/lutaml/xml/adapter/rexml_adapter_spec.rb +101 -0
- data/spec/lutaml/xml/adapter/xml_namespace_spec.rb +531 -0
- data/spec/lutaml/xml/builder/builder_spec.rb +216 -0
- data/spec/lutaml/xml/compiled_rule_namespace_spec.rb +405 -0
- data/spec/lutaml/xml/conformance/xml_namespaces_spec.rb +580 -0
- data/spec/lutaml/xml/conformance/xml_schema_instance_spec.rb +266 -0
- data/spec/lutaml/xml/data_model_spec.rb +300 -0
- data/spec/lutaml/xml/decisions/decision_engine_spec.rb +242 -0
- data/spec/lutaml/xml/decisions/decision_spec.rb +217 -0
- data/spec/lutaml/xml/decisions/element_prefix_resolver_spec.rb +198 -0
- data/spec/lutaml/xml/declaration_planner_spec.rb +524 -0
- data/spec/lutaml/xml/default_namespace_spec.rb +190 -0
- data/spec/lutaml/{model/xml → xml}/derived_attributes_spec.rb +2 -2
- data/spec/lutaml/xml/doctype_preservation_spec.rb +323 -0
- data/spec/lutaml/xml/doubly_defined_namespace_spec.rb +415 -0
- data/spec/lutaml/xml/dual_namespace_element_spec.rb +181 -0
- data/spec/lutaml/xml/element_spec.rb +28 -0
- data/spec/lutaml/xml/encoding_normalizer_spec.rb +215 -0
- data/spec/lutaml/xml/enhanced_mapping_spec.rb +692 -0
- data/spec/lutaml/xml/entity_fragmentation_spec.rb +583 -0
- data/spec/lutaml/xml/format_chooser_spec.rb +0 -0
- data/spec/lutaml/xml/fpi_namespace_spec.rb +145 -0
- data/spec/lutaml/{model/xml/namespace_spec.rb → xml/general_namespace_spec.rb} +6 -5
- data/spec/lutaml/xml/mapping_finalization_guard_spec.rb +83 -0
- data/spec/lutaml/xml/mapping_rule_spec.rb +98 -0
- data/spec/lutaml/xml/mapping_spec.rb +1147 -0
- data/spec/lutaml/xml/model_transform_guard_spec.rb +126 -0
- data/spec/lutaml/{model/xml → xml}/namespace/nested_with_explicit_namespace_spec.rb +8 -5
- data/spec/lutaml/xml/namespace/w3c_reserved_warning_spec.rb +152 -0
- data/spec/lutaml/xml/namespace_alias_prefix_root_spec.rb +130 -0
- data/spec/lutaml/xml/namespace_alias_spec.rb +263 -0
- data/spec/lutaml/xml/namespace_aware_parsing_spec.rb +219 -0
- data/spec/lutaml/xml/namespace_backward_compatibility_spec.rb +48 -0
- data/spec/lutaml/xml/namespace_bound_element_roundtrip_spec.rb +433 -0
- data/spec/lutaml/xml/namespace_constant_spec.rb +383 -0
- data/spec/lutaml/xml/namespace_force_prefix_spec.rb +113 -0
- data/spec/lutaml/xml/namespace_format_preservation_spec.rb +49 -0
- data/spec/lutaml/xml/namespace_inheritance_deep_spec.rb +162 -0
- data/spec/lutaml/xml/namespace_inheritance_override_spec.rb +316 -0
- data/spec/lutaml/xml/namespace_inheritance_resolver_spec.rb +0 -0
- data/spec/lutaml/xml/namespace_inheritance_spec.rb +966 -0
- data/spec/lutaml/xml/namespace_integration_spec.rb +277 -0
- data/spec/lutaml/xml/namespace_missing_prefix_spec.rb +178 -0
- data/spec/lutaml/xml/namespace_no_hoisting_spec.rb +172 -0
- data/spec/lutaml/xml/namespace_placement_spec.rb +265 -0
- data/spec/lutaml/xml/namespace_preservation_spec.rb +427 -0
- data/spec/lutaml/xml/namespace_principles_spec.rb +909 -0
- data/spec/lutaml/xml/namespace_resolution_strategy_spec.rb +273 -0
- data/spec/lutaml/xml/namespace_scope_declare_spec.rb +205 -0
- data/spec/lutaml/xml/namespace_scope_spec.rb +389 -0
- data/spec/lutaml/xml/namespace_scope_vcard_spec.rb +616 -0
- data/spec/lutaml/xml/namespace_spec.rb +712 -0
- data/spec/lutaml/xml/namespace_three_phase_spec.rb +310 -0
- data/spec/lutaml/xml/nil_optional_element_namespace_spec.rb +84 -0
- data/spec/lutaml/xml/ooxml_namespace_spec.rb +177 -0
- data/spec/lutaml/xml/ordered_method_spec.rb +109 -0
- data/spec/lutaml/xml/prefix_control_spec.rb +286 -0
- data/spec/lutaml/{model/register/xml_spec.rb → xml/register_spec.rb} +75 -21
- data/spec/lutaml/xml/reusable_mapping_spec.rb +148 -0
- data/spec/lutaml/xml/reused_elements_namespace_spec.rb +85 -0
- data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/attribute_group_spec.rb +9 -3
- data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/attribute_spec.rb +11 -7
- data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/choice_spec.rb +5 -2
- data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/complex_content_restriction_spec.rb +7 -2
- data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/complex_content_spec.rb +5 -1
- data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/complex_type_spec.rb +49 -20
- data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/element_spec.rb +9 -4
- data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/group_spec.rb +9 -5
- data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/restriction_spec.rb +1 -0
- data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/sequence_spec.rb +10 -4
- data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/simple_content_spec.rb +9 -3
- data/spec/lutaml/{model/schema/xml_compiler → xml/schema/compiler}/simple_type_spec.rb +10 -7
- data/spec/lutaml/{model/schema/xml_compiler_spec.rb → xml/schema/compiler_spec.rb} +219 -94
- data/spec/lutaml/xml/schema/xsd/errors/error_context_spec.rb +65 -0
- data/spec/lutaml/xml/schema/xsd/errors/suggestion_spec.rb +77 -0
- data/spec/lutaml/xml/schema/xsd/file_validation_result_spec.rb +131 -0
- data/spec/lutaml/xml/schema/xsd/glob_spec.rb +318 -0
- data/spec/lutaml/xml/schema/xsd/liquid_methods/attribute_and_group_spec.rb +76 -0
- data/spec/lutaml/xml/schema/xsd/liquid_methods/complex_type_spec.rb +159 -0
- data/spec/lutaml/xml/schema/xsd/liquid_methods/containers_spec.rb +104 -0
- data/spec/lutaml/xml/schema/xsd/liquid_methods/element_spec.rb +139 -0
- data/spec/lutaml/xml/schema/xsd/liquid_methods/schema_spec.rb +75 -0
- data/spec/lutaml/xml/schema/xsd/liquid_methods/simple_content_spec.rb +79 -0
- data/spec/lutaml/xml/schema/xsd/namespace_uri_remapping_spec.rb +246 -0
- data/spec/lutaml/xml/schema/xsd/schema_helper_methods_spec.rb +237 -0
- data/spec/lutaml/xml/schema/xsd/schema_mapping_spec.rb +742 -0
- data/spec/lutaml/xml/schema/xsd/schema_validator_spec.rb +228 -0
- data/spec/lutaml/xml/schema/xsd/spec_helper.rb +26 -0
- data/spec/lutaml/xml/schema/xsd/validation_error_spec.rb +189 -0
- data/spec/lutaml/xml/schema/xsd/validation_result_spec.rb +276 -0
- data/spec/lutaml/xml/schema/xsd/xsd_spec.rb +51 -0
- data/spec/lutaml/xml/schema_primer_spec.rb +393 -0
- data/spec/lutaml/xml/serializable_namespace_spec.rb +125 -0
- data/spec/lutaml/xml/transformation/custom_method_wrapper_spec.rb +48 -0
- data/spec/lutaml/xml/transformation_spec.rb +439 -0
- data/spec/lutaml/xml/type_namespace/collector_spec.rb +212 -0
- data/spec/lutaml/xml/type_namespace/planner_spec.rb +270 -0
- data/spec/lutaml/xml/type_namespace_examples_spec.rb +521 -0
- data/spec/lutaml/xml/type_namespace_integration_spec.rb +332 -0
- data/spec/lutaml/xml/type_namespace_prefix_spec.rb +370 -0
- data/spec/lutaml/xml/type_namespace_resolver_spec.rb +0 -0
- data/spec/lutaml/xml/type_namespace_roundtrip_spec.rb +580 -0
- data/spec/lutaml/xml/w3c_types_spec.rb +376 -0
- data/spec/lutaml/{model → xml}/xml_adapter_spec.rb +64 -17
- data/spec/lutaml/xml/xml_declaration_spec.rb +568 -0
- data/spec/lutaml/xml/xml_element_guard_spec.rb +138 -0
- data/spec/lutaml/{model/xml → xml}/xml_element_spec.rb +1 -1
- data/spec/lutaml/xml/xml_lang_spec.rb +441 -0
- data/spec/lutaml/xml/xml_space_spec.rb +247 -0
- data/spec/lutaml/xml/xml_space_type_spec.rb +161 -0
- data/spec/lutaml/xml/xml_spec.rb +122 -0
- data/spec/parent_root_spec.rb +63 -0
- data/spec/person_spec.rb +9 -9
- data/spec/spec_helper.rb +64 -6
- data/spec/support/test_adapter_config.rb +101 -0
- data/spec/support/test_namespaces.rb +185 -0
- data/spec/support/trace_helper.rb +0 -0
- data/spec/support/xml/schema_helper.rb +15 -0
- data/spec/support/xml/xsd/code_example_validator.rb +393 -0
- data/spec/support/xml_mapping_namespaces.rb +176 -0
- metadata +1465 -100
- data/docs/custom_registers.adoc +0 -228
- data/lib/lutaml/model/hash_adapter/mapping.rb +0 -19
- data/lib/lutaml/model/hash_adapter/mapping_rule.rb +0 -9
- data/lib/lutaml/model/hash_adapter/transform.rb +0 -8
- data/lib/lutaml/model/hash_adapter.rb +0 -21
- data/lib/lutaml/model/json/mapping.rb +0 -19
- data/lib/lutaml/model/json/mapping_rule.rb +0 -9
- data/lib/lutaml/model/json/multi_json_adapter.rb +0 -18
- data/lib/lutaml/model/json/standard_adapter.rb +0 -25
- data/lib/lutaml/model/json/transform.rb +0 -8
- data/lib/lutaml/model/jsonl/mapping.rb +0 -19
- data/lib/lutaml/model/jsonl/mapping_rule.rb +0 -9
- data/lib/lutaml/model/jsonl/transform.rb +0 -19
- data/lib/lutaml/model/schema/xsd_schema.rb +0 -62
- data/lib/lutaml/model/toml/mapping_rule.rb +0 -9
- data/lib/lutaml/model/toml/toml_rb_adapter.rb +0 -18
- data/lib/lutaml/model/toml/tomlib_adapter.rb +0 -19
- data/lib/lutaml/model/toml/transform.rb +0 -8
- data/lib/lutaml/model/xml/builder/nokogiri.rb +0 -101
- data/lib/lutaml/model/xml/builder/oga.rb +0 -183
- data/lib/lutaml/model/xml/builder/ox.rb +0 -121
- data/lib/lutaml/model/xml/document.rb +0 -477
- data/lib/lutaml/model/xml/element.rb +0 -32
- data/lib/lutaml/model/xml/mapping.rb +0 -471
- data/lib/lutaml/model/xml/mapping_rule.rb +0 -149
- data/lib/lutaml/model/xml/nokogiri_adapter.rb +0 -234
- data/lib/lutaml/model/xml/oga/document.rb +0 -20
- data/lib/lutaml/model/xml/oga/element.rb +0 -123
- data/lib/lutaml/model/xml/oga_adapter.rb +0 -172
- data/lib/lutaml/model/xml/ox_adapter.rb +0 -229
- data/lib/lutaml/model/xml/transform.rb +0 -8
- data/lib/lutaml/model/xml/xml_attribute.rb +0 -37
- data/lib/lutaml/model/xml/xml_element.rb +0 -167
- data/lib/lutaml/model/xml/xml_namespace.rb +0 -49
- data/lib/lutaml/model/xml.rb +0 -31
- data/lib/lutaml/model/xml_adapter/element.rb +0 -18
- data/lib/lutaml/model/xml_adapter/nokogiri_adapter.rb +0 -15
- data/lib/lutaml/model/xml_adapter/oga_adapter.rb +0 -21
- data/lib/lutaml/model/xml_adapter/ox_adapter.rb +0 -18
- data/lib/lutaml/model/xml_adapter.rb +0 -7
- data/lib/lutaml/model/yaml/mapping.rb +0 -19
- data/lib/lutaml/model/yaml/mapping_rule.rb +0 -9
- data/lib/lutaml/model/yaml/standard_adapter.rb +0 -28
- data/lib/lutaml/model/yaml/transform.rb +0 -8
- data/lib/lutaml/model/yamls/mapping.rb +0 -19
- data/lib/lutaml/model/yamls/mapping_rule.rb +0 -9
- data/lib/lutaml/model/yamls/transform.rb +0 -19
- data/spec/benchmarks/xml_parsing_benchmark_spec.rb +0 -74
- data/spec/fixtures/xml/advanced_test_schema.xsd +0 -134
- data/spec/lutaml/model/namespace_spec.rb +0 -57
- data/spec/lutaml/model/xml_adapter/nokogiri_adapter_spec.rb +0 -56
- data/spec/lutaml/model/xml_adapter/oga_adapter_spec.rb +0 -60
- data/spec/lutaml/model/xml_adapter/ox_adapter_spec.rb +0 -61
- data/spec/lutaml/model/xml_adapter/xml_namespace_spec.rb +0 -368
- data/spec/lutaml/model/xml_mapping_rule_spec.rb +0 -158
- data/spec/lutaml/model/xml_mapping_spec.rb +0 -1318
- data/spec/lutaml/model/xml_spec.rb +0 -63
- /data/spec/lutaml/{model/xml → xml}/root_mappings/nested_child_mappings_spec.rb +0 -0
|
@@ -0,0 +1,1572 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: v0.8.0 Comprehensive Migration Guide
|
|
3
|
+
nav_order: 1
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
= v0.8.0 Comprehensive Migration Guide
|
|
7
|
+
|
|
8
|
+
:toc:
|
|
9
|
+
:toclevels: 3
|
|
10
|
+
|
|
11
|
+
== Overview
|
|
12
|
+
|
|
13
|
+
Version 0.8.0 is a **major release** that includes significant refactoring, new features, and breaking changes. This guide covers all migration topics in one place.
|
|
14
|
+
|
|
15
|
+
**Key changes in v0.8.0:**
|
|
16
|
+
|
|
17
|
+
1. **Namespace restructuring** - Format-specific code moved to dedicated namespaces
|
|
18
|
+
2. **Configuration consolidation** - Streamlined adapter configuration with sensible defaults
|
|
19
|
+
3. **XML namespace behavior** - Default namespace format, W3C-compliant defaults
|
|
20
|
+
4. **TOML on Windows** - tomlib disabled due to segfaults
|
|
21
|
+
5. **Attribute name conflicts** - Warnings only, no errors
|
|
22
|
+
6. **DataModel transformation** - Two-phase serialization pipeline for all formats
|
|
23
|
+
7. **Consolidated `xml do` syntax** - Unified syntax for models and Type classes
|
|
24
|
+
8. **XSD-aligned concepts** - Element vs ComplexType distinction
|
|
25
|
+
9. **Model-centric namespaces** - Namespaces defined on models only, not mappings
|
|
26
|
+
10. **Register system refactoring** - Hierarchical fallbacks, composition, key-based registration
|
|
27
|
+
11. **XSD schema generation** - Generate XSD from models, parse XSD to models
|
|
28
|
+
|
|
29
|
+
== Quick Start Migration
|
|
30
|
+
|
|
31
|
+
For most users, the migration is straightforward:
|
|
32
|
+
|
|
33
|
+
[source,ruby]
|
|
34
|
+
----
|
|
35
|
+
# Update your configuration to use simplified adapter names
|
|
36
|
+
Lutaml::Model::Config.configure do |config|
|
|
37
|
+
config.xml_adapter_type = :nokogiri # Now the default
|
|
38
|
+
config.json_adapter_type = :standard # Now the default
|
|
39
|
+
config.yaml_adapter_type = :standard # Now the default
|
|
40
|
+
config.toml_adapter_type = :toml_rb # Use :tomlib on non-Windows
|
|
41
|
+
config.hash_adapter_type = :standard # Now the default
|
|
42
|
+
end
|
|
43
|
+
----
|
|
44
|
+
|
|
45
|
+
== Namespace Restructuring
|
|
46
|
+
|
|
47
|
+
=== What Changed
|
|
48
|
+
|
|
49
|
+
Format-specific code has been moved to dedicated top-level namespaces:
|
|
50
|
+
|
|
51
|
+
|===
|
|
52
|
+
| Old Namespace (v0.7.x) | New Namespace (v0.8.0)
|
|
53
|
+
|
|
54
|
+
| `Lutaml::Model::Xml::*` | `Lutaml::Xml::*`
|
|
55
|
+
| `Lutaml::Model::Json::*` | `Lutaml::Json::*`
|
|
56
|
+
| `Lutaml::Model::Yaml::*` | `Lutaml::Yaml::*`
|
|
57
|
+
| `Lutaml::Model::Toml::*` | `Lutaml::Toml::*`
|
|
58
|
+
| `Lutaml::Model::Hash::*` | `Lutaml::HashFormat::*`
|
|
59
|
+
|===
|
|
60
|
+
|
|
61
|
+
=== Adapter Class Locations
|
|
62
|
+
|
|
63
|
+
|===
|
|
64
|
+
| Old Path (v0.7.x) | New Path (v0.8.0)
|
|
65
|
+
|
|
66
|
+
| `Lutaml::Model::Xml::NokogiriAdapter` | `Lutaml::Xml::Adapter::NokogiriAdapter`
|
|
67
|
+
| `Lutaml::Model::Json::StandardAdapter` | `Lutaml::Json::Adapter::StandardAdapter`
|
|
68
|
+
| `Lutaml::Model::Yaml::StandardAdapter` | `Lutaml::Yaml::Adapter::StandardAdapter`
|
|
69
|
+
| `Lutaml::Model::Toml::TomlRbAdapter` | `Lutaml::Toml::Adapter::TomlRbAdapter`
|
|
70
|
+
|===
|
|
71
|
+
|
|
72
|
+
=== Migration
|
|
73
|
+
|
|
74
|
+
If using explicit adapter class references, update the paths:
|
|
75
|
+
|
|
76
|
+
[source,ruby]
|
|
77
|
+
----
|
|
78
|
+
# OLD (v0.7.x)
|
|
79
|
+
require 'lutaml/model/xml/nokogiri_adapter'
|
|
80
|
+
config.xml_adapter = Lutaml::Model::Xml::NokogiriAdapter
|
|
81
|
+
|
|
82
|
+
# NEW (v0.8.0) - recommended approach
|
|
83
|
+
config.xml_adapter_type = :nokogiri
|
|
84
|
+
|
|
85
|
+
# NEW (v0.8.0) - if you need explicit class
|
|
86
|
+
require 'lutaml/xml/adapter/nokogiri_adapter'
|
|
87
|
+
config.xml_adapter = Lutaml::Xml::Adapter::NokogiriAdapter
|
|
88
|
+
----
|
|
89
|
+
|
|
90
|
+
== Configuration Changes
|
|
91
|
+
|
|
92
|
+
=== Default Adapters
|
|
93
|
+
|
|
94
|
+
No configuration is required for basic usage. Sensible defaults are provided:
|
|
95
|
+
|
|
96
|
+
* XML: `:nokogiri`
|
|
97
|
+
* JSON: `:standard`
|
|
98
|
+
* YAML: `:standard`
|
|
99
|
+
* TOML: `:tomlib` (non-Windows), `:toml_rb` (Windows)
|
|
100
|
+
* Hash: `:standard`
|
|
101
|
+
|
|
102
|
+
=== Simplified Adapter Names
|
|
103
|
+
|
|
104
|
+
The adapter type names have been simplified:
|
|
105
|
+
|
|
106
|
+
|===
|
|
107
|
+
| Old Name | New Name (Preferred)
|
|
108
|
+
|
|
109
|
+
| `:standard_json` | `:standard`
|
|
110
|
+
| `:standard_yaml` | `:standard`
|
|
111
|
+
| `:standard_hash` | `:standard`
|
|
112
|
+
|===
|
|
113
|
+
|
|
114
|
+
The old names still work as aliases for backward compatibility.
|
|
115
|
+
|
|
116
|
+
== TOML on Windows
|
|
117
|
+
|
|
118
|
+
The `:tomlib` adapter is **disabled on Windows** due to segmentation fault issues.
|
|
119
|
+
|
|
120
|
+
[source,ruby]
|
|
121
|
+
----
|
|
122
|
+
# On Windows, this now raises ArgumentError
|
|
123
|
+
config.toml_adapter_type = :tomlib # ❌ Error on Windows
|
|
124
|
+
|
|
125
|
+
# Use :toml_rb instead
|
|
126
|
+
config.toml_adapter_type = :toml_rb # ✅ Works on Windows
|
|
127
|
+
----
|
|
128
|
+
|
|
129
|
+
The default is automatically set to `:toml_rb` on Windows.
|
|
130
|
+
|
|
131
|
+
== XML Namespace Behavior Changes
|
|
132
|
+
|
|
133
|
+
=== Default Namespace Format
|
|
134
|
+
|
|
135
|
+
Version 0.8.0 changes the default XML output format from prefixed namespaces to default namespaces for cleaner, more standards-compliant XML.
|
|
136
|
+
|
|
137
|
+
==== Before (v0.7.x)
|
|
138
|
+
|
|
139
|
+
[source,xml]
|
|
140
|
+
----
|
|
141
|
+
<app:Properties xmlns:app="http://example.com/app">
|
|
142
|
+
<app:Template>Normal.dotm</app:Template>
|
|
143
|
+
</app:Properties>
|
|
144
|
+
----
|
|
145
|
+
|
|
146
|
+
==== After (v0.8.0)
|
|
147
|
+
|
|
148
|
+
[source,xml]
|
|
149
|
+
----
|
|
150
|
+
<Properties xmlns="http://example.com/app">
|
|
151
|
+
<Template>Normal.dotm</Template>
|
|
152
|
+
</Properties>
|
|
153
|
+
----
|
|
154
|
+
|
|
155
|
+
To restore old prefixed behavior:
|
|
156
|
+
|
|
157
|
+
[source,ruby]
|
|
158
|
+
----
|
|
159
|
+
instance.to_xml(prefix: true)
|
|
160
|
+
----
|
|
161
|
+
|
|
162
|
+
=== Attribute Form Default
|
|
163
|
+
|
|
164
|
+
The `attribute_form_default` now defaults to `:unqualified` (W3C correct).
|
|
165
|
+
|
|
166
|
+
==== Before (v0.7.x) - INCORRECT
|
|
167
|
+
|
|
168
|
+
[source,xml]
|
|
169
|
+
----
|
|
170
|
+
<my:element xmlns:my="http://example.com/ns" my:attr="value"/>
|
|
171
|
+
----
|
|
172
|
+
|
|
173
|
+
==== After (v0.8.0) - W3C CORRECT
|
|
174
|
+
|
|
175
|
+
[source,xml]
|
|
176
|
+
----
|
|
177
|
+
<my:element xmlns:my="http://example.com/ns" attr="value"/>
|
|
178
|
+
----
|
|
179
|
+
|
|
180
|
+
To get prefixed attributes:
|
|
181
|
+
|
|
182
|
+
[source,ruby]
|
|
183
|
+
----
|
|
184
|
+
class MyNamespace < Lutaml::Model::XmlNamespace
|
|
185
|
+
uri "http://example.com/ns"
|
|
186
|
+
prefix_default "my"
|
|
187
|
+
attribute_form_default :qualified # All attributes prefixed
|
|
188
|
+
end
|
|
189
|
+
----
|
|
190
|
+
|
|
191
|
+
=== Prefix Parameter Deprecation
|
|
192
|
+
|
|
193
|
+
The `prefix` parameter on XML mapping methods is deprecated. Define `prefix_default` in your `XmlNamespace` class instead.
|
|
194
|
+
|
|
195
|
+
==== Before (deprecated)
|
|
196
|
+
|
|
197
|
+
[source,ruby]
|
|
198
|
+
----
|
|
199
|
+
xml do
|
|
200
|
+
namespace "http://example.com/ns", "ex" # ❌ prefix parameter deprecated
|
|
201
|
+
map_element :title, to: :title, prefix: "dc" # ❌ prefix parameter deprecated
|
|
202
|
+
end
|
|
203
|
+
----
|
|
204
|
+
|
|
205
|
+
==== After (recommended)
|
|
206
|
+
|
|
207
|
+
[source,ruby]
|
|
208
|
+
----
|
|
209
|
+
class ExampleNamespace < Lutaml::Xml::Namespace
|
|
210
|
+
uri "http://example.com/ns"
|
|
211
|
+
prefix_default "ex" # ✅ Define prefix in namespace class
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
xml do
|
|
215
|
+
namespace ExampleNamespace # ✅ Pass namespace class
|
|
216
|
+
map_element :title, to: :title # ✅ No prefix parameter
|
|
217
|
+
end
|
|
218
|
+
----
|
|
219
|
+
|
|
220
|
+
=== Namespace Parameter Removal
|
|
221
|
+
|
|
222
|
+
The `namespace:` parameter on `map_element`, `map_attribute`, and `map_all` has been removed. Use typed attributes instead.
|
|
223
|
+
|
|
224
|
+
==== Before (removed)
|
|
225
|
+
|
|
226
|
+
[source,ruby]
|
|
227
|
+
----
|
|
228
|
+
map_element "Child", to: :child_data, namespace: ChildNamespace # ❌ ERROR
|
|
229
|
+
----
|
|
230
|
+
|
|
231
|
+
==== After (required)
|
|
232
|
+
|
|
233
|
+
[source,ruby]
|
|
234
|
+
----
|
|
235
|
+
# Create child model class with its own namespace
|
|
236
|
+
class Child < Lutaml::Model::Serializable
|
|
237
|
+
attribute :value, :string
|
|
238
|
+
|
|
239
|
+
xml do
|
|
240
|
+
element "Child"
|
|
241
|
+
namespace ChildNamespace # ✅ Namespace at model level
|
|
242
|
+
map_content to: :value
|
|
243
|
+
end
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
# Use typed attribute in parent
|
|
247
|
+
class Parent < Lutaml::Model::Serializable
|
|
248
|
+
attribute :child_data, Child # ✅ Changed type
|
|
249
|
+
|
|
250
|
+
xml do
|
|
251
|
+
element "Parent"
|
|
252
|
+
namespace ParentNamespace
|
|
253
|
+
map_element "Child", to: :child_data # ✅ No namespace parameter
|
|
254
|
+
end
|
|
255
|
+
end
|
|
256
|
+
----
|
|
257
|
+
|
|
258
|
+
=== Type::Value Namespace Directive
|
|
259
|
+
|
|
260
|
+
For custom Type classes, use `xml_namespace` instead of `namespace`:
|
|
261
|
+
|
|
262
|
+
==== Before (deprecated)
|
|
263
|
+
|
|
264
|
+
[source,ruby]
|
|
265
|
+
----
|
|
266
|
+
class CustomType < Lutaml::Model::Type::String
|
|
267
|
+
namespace CustomNamespace # ⚠️ DEPRECATED
|
|
268
|
+
end
|
|
269
|
+
----
|
|
270
|
+
|
|
271
|
+
==== After (current)
|
|
272
|
+
|
|
273
|
+
[source,ruby]
|
|
274
|
+
----
|
|
275
|
+
class CustomType < Lutaml::Model::Type::String
|
|
276
|
+
xml_namespace CustomNamespace # ✅ CURRENT
|
|
277
|
+
end
|
|
278
|
+
----
|
|
279
|
+
|
|
280
|
+
== Controlling XML Output Format
|
|
281
|
+
|
|
282
|
+
Version 0.8.0 introduces powerful options for controlling XML output format. Understanding these options is essential when your XML must conform to specific schema requirements or integrate with external systems.
|
|
283
|
+
|
|
284
|
+
=== Defining Prefixes with prefix_default
|
|
285
|
+
|
|
286
|
+
Prefixes are defined in your `XmlNamespace` class using `prefix_default`:
|
|
287
|
+
|
|
288
|
+
[source,ruby]
|
|
289
|
+
----
|
|
290
|
+
class PoNamespace < Lutaml::Xml::Namespace
|
|
291
|
+
uri "http://example.com/po"
|
|
292
|
+
prefix_default "po" # ✅ Define prefix here
|
|
293
|
+
element_form_default :qualified
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
class DcNamespace < Lutaml::Xml::Namespace
|
|
297
|
+
uri "http://purl.org/dc/elements/"
|
|
298
|
+
prefix_default "dc" # ✅ Define prefix here
|
|
299
|
+
end
|
|
300
|
+
----
|
|
301
|
+
|
|
302
|
+
IMPORTANT: The `prefix_default` is the **preferred prefix** for the namespace. Whether it's actually used depends on:
|
|
303
|
+
1. The output format you choose (`to_xml` options)
|
|
304
|
+
2. W3C rules (attributes require prefixes)
|
|
305
|
+
3. Whether children need the namespace
|
|
306
|
+
|
|
307
|
+
=== XML Output Format Options
|
|
308
|
+
|
|
309
|
+
The `to_xml` method accepts several options to control namespace formatting:
|
|
310
|
+
|
|
311
|
+
==== Default Behavior (Default Namespace)
|
|
312
|
+
|
|
313
|
+
[source,ruby]
|
|
314
|
+
----
|
|
315
|
+
order.to_xml
|
|
316
|
+
----
|
|
317
|
+
|
|
318
|
+
Produces **default namespace format** (cleaner, W3C-preferred):
|
|
319
|
+
|
|
320
|
+
[source,xml]
|
|
321
|
+
----
|
|
322
|
+
<PurchaseOrder xmlns="http://example.com/po">
|
|
323
|
+
<orderDate>2024-01-15</orderDate>
|
|
324
|
+
</PurchaseOrder>
|
|
325
|
+
----
|
|
326
|
+
|
|
327
|
+
This is the **new default** in v0.8.0. No prefix is used; the namespace is declared as `xmlns="..."`.
|
|
328
|
+
|
|
329
|
+
==== Force Prefix Format
|
|
330
|
+
|
|
331
|
+
[source,ruby]
|
|
332
|
+
----
|
|
333
|
+
order.to_xml(prefix: true)
|
|
334
|
+
----
|
|
335
|
+
|
|
336
|
+
Produces **prefixed format** using the namespace's `prefix_default`:
|
|
337
|
+
|
|
338
|
+
[source,xml]
|
|
339
|
+
----
|
|
340
|
+
<po:PurchaseOrder xmlns:po="http://example.com/po">
|
|
341
|
+
<po:orderDate>2024-01-15</po:orderDate>
|
|
342
|
+
</po:PurchaseOrder>
|
|
343
|
+
----
|
|
344
|
+
|
|
345
|
+
Use this when:
|
|
346
|
+
- Consuming system requires prefixed elements
|
|
347
|
+
- You prefer traditional namespace style
|
|
348
|
+
- Backward compatibility with v0.7.x output
|
|
349
|
+
|
|
350
|
+
==== Custom Prefix Override
|
|
351
|
+
|
|
352
|
+
[source,ruby]
|
|
353
|
+
----
|
|
354
|
+
order.to_xml(prefix: "custom")
|
|
355
|
+
----
|
|
356
|
+
|
|
357
|
+
Produces **custom prefix** (overrides `prefix_default`):
|
|
358
|
+
|
|
359
|
+
[source,xml]
|
|
360
|
+
----
|
|
361
|
+
<custom:PurchaseOrder xmlns:custom="http://example.com/po">
|
|
362
|
+
<custom:orderDate>2024-01-15</custom:orderDate>
|
|
363
|
+
</custom:PurchaseOrder>
|
|
364
|
+
----
|
|
365
|
+
|
|
366
|
+
Use this when:
|
|
367
|
+
- Integrating with systems that expect specific prefixes
|
|
368
|
+
- Avoiding prefix conflicts with other namespaces
|
|
369
|
+
|
|
370
|
+
==== Explicitly Disable Prefix
|
|
371
|
+
|
|
372
|
+
[source,ruby]
|
|
373
|
+
----
|
|
374
|
+
order.to_xml(prefix: false)
|
|
375
|
+
----
|
|
376
|
+
|
|
377
|
+
Produces **default namespace format** and **disables format preservation**:
|
|
378
|
+
|
|
379
|
+
[source,xml]
|
|
380
|
+
----
|
|
381
|
+
<PurchaseOrder xmlns="http://example.com/po">
|
|
382
|
+
<orderDate>2024-01-15</orderDate>
|
|
383
|
+
</PurchaseOrder>
|
|
384
|
+
----
|
|
385
|
+
|
|
386
|
+
Use this when:
|
|
387
|
+
- You want to override format preservation from parsed XML
|
|
388
|
+
- You explicitly want default format regardless of input
|
|
389
|
+
|
|
390
|
+
==== Override Prefix for Specific Namespaces
|
|
391
|
+
|
|
392
|
+
[source,ruby]
|
|
393
|
+
----
|
|
394
|
+
order.to_xml(namespaces: [
|
|
395
|
+
{ namespace: PoNamespace, prefix: "purchase" },
|
|
396
|
+
{ namespace: DcNamespace, prefix: "dublin" }
|
|
397
|
+
])
|
|
398
|
+
----
|
|
399
|
+
|
|
400
|
+
Produces **custom prefixes per namespace**:
|
|
401
|
+
|
|
402
|
+
[source,xml]
|
|
403
|
+
----
|
|
404
|
+
<purchase:PurchaseOrder xmlns:purchase="http://example.com/po"
|
|
405
|
+
xmlns:dublin="http://purl.org/dc/elements/">
|
|
406
|
+
<purchase:orderDate>2024-01-15</purchase:orderDate>
|
|
407
|
+
<dublin:title>Order #123</dublin:title>
|
|
408
|
+
</purchase:PurchaseOrder>
|
|
409
|
+
----
|
|
410
|
+
|
|
411
|
+
Use this for:
|
|
412
|
+
- Fine-grained control over multiple namespaces
|
|
413
|
+
- Matching specific schema requirements
|
|
414
|
+
|
|
415
|
+
=== Format Decision Priority
|
|
416
|
+
|
|
417
|
+
When you call `to_xml`, the format (default vs prefix) is decided using this priority order:
|
|
418
|
+
|
|
419
|
+
[cols="1,5"]
|
|
420
|
+
|===
|
|
421
|
+
| Priority | Rule
|
|
422
|
+
|
|
423
|
+
| 1 (Highest) | **Stored plan from parsed XML** - Round-trip preservation
|
|
424
|
+
| 2 | **Explicit user option** - `prefix: true/false/"custom"`
|
|
425
|
+
| 3 | **W3C rules** - Attributes MUST use prefix if in their own namespace
|
|
426
|
+
| 4 | **Qualified children** - If children need prefix, parent provides it
|
|
427
|
+
| 5 (Lowest) | **Default preference** - Prefer default namespace (cleaner)
|
|
428
|
+
|===
|
|
429
|
+
|
|
430
|
+
=== Understanding DeclarationPlan
|
|
431
|
+
|
|
432
|
+
The **DeclarationPlan** is the brain of XML namespace output. Before any XML is rendered, the plan decides:
|
|
433
|
+
|
|
434
|
+
1. **Where** each namespace is declared (root or local element)
|
|
435
|
+
2. **What format** each element uses (default or prefixed)
|
|
436
|
+
3. **Which prefix** to use for each namespace
|
|
437
|
+
|
|
438
|
+
==== How DeclarationPlan Works
|
|
439
|
+
|
|
440
|
+
The serialization uses a **two-track system** that produces parallel outputs:
|
|
441
|
+
|
|
442
|
+
```
|
|
443
|
+
Your Model Instance
|
|
444
|
+
│
|
|
445
|
+
├────────────────────────────────────────────────────────┐
|
|
446
|
+
│ │
|
|
447
|
+
▼ ▼
|
|
448
|
+
┌─────────────────────────┐ ┌─────────────────────────────┐
|
|
449
|
+
│ DATA MODEL TRACK │ │ DECLARATION PLAN TRACK │
|
|
450
|
+
│ (Content Layer) │ │ (Format Layer) │
|
|
451
|
+
│ │ │ │
|
|
452
|
+
│ XmlElement tree: │ │ DeclarationPlanner: │
|
|
453
|
+
│ - Element names │ │ - Format decisions │
|
|
454
|
+
│ - Structure │ │ - Prefix assignments │
|
|
455
|
+
│ - Namespace identity │ │ - Hoisting locations │
|
|
456
|
+
│ - Values │ │ │
|
|
457
|
+
│ - NO format info │ │ (from input or new) │
|
|
458
|
+
└─────────────────────────┘ └─────────────────────────────┘
|
|
459
|
+
│ │
|
|
460
|
+
│ │
|
|
461
|
+
└──────────────────────┬──────────────────────────────┘
|
|
462
|
+
│
|
|
463
|
+
▼
|
|
464
|
+
┌────────────────────────────────────┐
|
|
465
|
+
│ ADAPTER MERGE │
|
|
466
|
+
│ Parallel traversal: │
|
|
467
|
+
│ - Read XmlElement for content │
|
|
468
|
+
│ - Read DeclarationPlan for format │
|
|
469
|
+
│ - Generate XML with both │
|
|
470
|
+
└────────────────────────────────────┘
|
|
471
|
+
│
|
|
472
|
+
▼
|
|
473
|
+
Final XML Output
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
**Key Insight:**
|
|
477
|
+
|
|
478
|
+
- **DataModel (XmlElement)**: Contains WHAT to serialize (elements, values, structure)
|
|
479
|
+
- **DeclarationPlan**: Contains HOW to serialize (format, prefixes, declarations)
|
|
480
|
+
- **Adapter**: Merges both tracks during parallel traversal
|
|
481
|
+
|
|
482
|
+
**Round-Trip Preservation:**
|
|
483
|
+
|
|
484
|
+
When parsing XML, the input DeclarationPlan is stored:
|
|
485
|
+
[source,ruby]
|
|
486
|
+
----
|
|
487
|
+
# Parse creates both DataModel AND DeclarationPlan
|
|
488
|
+
doc = Order.from_xml(input_xml)
|
|
489
|
+
# doc stores:
|
|
490
|
+
# - XmlElement tree (content)
|
|
491
|
+
# - DeclarationPlan from input (format preserved)
|
|
492
|
+
|
|
493
|
+
# Serialize reuses stored plan
|
|
494
|
+
doc.to_xml # Format preserved from input!
|
|
495
|
+
----
|
|
496
|
+
|
|
497
|
+
==== Key Principle: Adapters Are "Dumb"
|
|
498
|
+
|
|
499
|
+
**Adapters never make namespace decisions.** They only apply what the DeclarationPlan decides. This ensures:
|
|
500
|
+
|
|
501
|
+
- Consistent output across all XML adapters (Nokogiri, Ox, Oga, REXML)
|
|
502
|
+
- Predictable behavior
|
|
503
|
+
- Testable decision logic
|
|
504
|
+
|
|
505
|
+
=== Common Scenarios and Solutions
|
|
506
|
+
|
|
507
|
+
==== "My XML looks different after upgrading!"
|
|
508
|
+
|
|
509
|
+
**Problem:** XML output changed from prefixed to default namespace format.
|
|
510
|
+
|
|
511
|
+
**Solution:** This is expected. v0.8.0 defaults to cleaner default namespace format.
|
|
512
|
+
|
|
513
|
+
To restore old format:
|
|
514
|
+
[source,ruby]
|
|
515
|
+
----
|
|
516
|
+
instance.to_xml(prefix: true)
|
|
517
|
+
----
|
|
518
|
+
|
|
519
|
+
==== "Consuming system rejects my XML!"
|
|
520
|
+
|
|
521
|
+
**Problem:** External system requires specific namespace format.
|
|
522
|
+
|
|
523
|
+
**Solutions:**
|
|
524
|
+
|
|
525
|
+
1. If system requires prefixes:
|
|
526
|
+
[source,ruby]
|
|
527
|
+
----
|
|
528
|
+
instance.to_xml(prefix: true)
|
|
529
|
+
----
|
|
530
|
+
|
|
531
|
+
2. If system requires specific prefix:
|
|
532
|
+
[source,ruby]
|
|
533
|
+
----
|
|
534
|
+
instance.to_xml(prefix: "required_prefix")
|
|
535
|
+
----
|
|
536
|
+
|
|
537
|
+
3. If system requires multiple specific prefixes:
|
|
538
|
+
[source,ruby]
|
|
539
|
+
----
|
|
540
|
+
instance.to_xml(namespaces: [
|
|
541
|
+
{ namespace: Ns1, prefix: "a" },
|
|
542
|
+
{ namespace: Ns2, prefix: "b" }
|
|
543
|
+
])
|
|
544
|
+
----
|
|
545
|
+
|
|
546
|
+
==== "My attributes need prefixes!"
|
|
547
|
+
|
|
548
|
+
**Problem:** Attributes should be prefixed but aren't.
|
|
549
|
+
|
|
550
|
+
**Solution:** Set `attribute_form_default :qualified` in your namespace class:
|
|
551
|
+
|
|
552
|
+
[source,ruby]
|
|
553
|
+
----
|
|
554
|
+
class MyNamespace < Lutaml::Xml::Namespace
|
|
555
|
+
uri "http://example.com/ns"
|
|
556
|
+
prefix_default "my"
|
|
557
|
+
attribute_form_default :qualified # ✅ Force prefixed attributes
|
|
558
|
+
end
|
|
559
|
+
----
|
|
560
|
+
|
|
561
|
+
==== "Prefix disappeared on child elements!"
|
|
562
|
+
|
|
563
|
+
**Problem:** Parent uses prefix, children don't.
|
|
564
|
+
|
|
565
|
+
**Solution:** Set `element_form_default :qualified`:
|
|
566
|
+
|
|
567
|
+
[source,ruby]
|
|
568
|
+
----
|
|
569
|
+
class MyNamespace < Lutaml::Xml::Namespace
|
|
570
|
+
uri "http://example.com/ns"
|
|
571
|
+
prefix_default "my"
|
|
572
|
+
element_form_default :qualified # ✅ Children inherit namespace
|
|
573
|
+
end
|
|
574
|
+
----
|
|
575
|
+
|
|
576
|
+
Or use `to_xml(prefix: true)` to force prefix format globally.
|
|
577
|
+
|
|
578
|
+
==== "I want round-trip preservation!"
|
|
579
|
+
|
|
580
|
+
**Problem:** Want parsed XML format preserved on output.
|
|
581
|
+
|
|
582
|
+
**Solution:** This happens automatically! The DeclarationPlan stores the input format and preserves it.
|
|
583
|
+
|
|
584
|
+
[source,ruby]
|
|
585
|
+
----
|
|
586
|
+
# Parse XML with prefixed format
|
|
587
|
+
parsed = Order.from_xml(prefixed_xml)
|
|
588
|
+
|
|
589
|
+
# Serialize - format is preserved!
|
|
590
|
+
parsed.to_xml # Still uses prefixed format
|
|
591
|
+
----
|
|
592
|
+
|
|
593
|
+
To override preservation:
|
|
594
|
+
[source,ruby]
|
|
595
|
+
----
|
|
596
|
+
parsed.to_xml(prefix: false) # Force default format
|
|
597
|
+
parsed.to_xml(prefix: true) # Force prefix format
|
|
598
|
+
----
|
|
599
|
+
|
|
600
|
+
== Namespace Hoisting with namespace_scope
|
|
601
|
+
|
|
602
|
+
The `namespace_scope` directive controls **where namespace declarations appear** in your XML output. This is called "Namespace Hoisting" - moving declarations from local elements to a higher (ancestor) element.
|
|
603
|
+
|
|
604
|
+
=== What is Namespace Hoisting?
|
|
605
|
+
|
|
606
|
+
By default, namespaces are declared on the **first element that uses them** (local declaration). Hoisting moves declarations to a designated ancestor element, typically the root.
|
|
607
|
+
|
|
608
|
+
[cols="1,1"]
|
|
609
|
+
|===
|
|
610
|
+
| Local Declaration (Default) | Hoisted Declaration
|
|
611
|
+
|
|
612
|
+
|
|
|
613
|
+
[source,xml]
|
|
614
|
+
----
|
|
615
|
+
<root>
|
|
616
|
+
<parent>
|
|
617
|
+
<child xmlns:dc="...">
|
|
618
|
+
<dc:title>...</dc:title>
|
|
619
|
+
</child>
|
|
620
|
+
</parent>
|
|
621
|
+
</root>
|
|
622
|
+
----
|
|
623
|
+
|
|
|
624
|
+
[source,xml]
|
|
625
|
+
----
|
|
626
|
+
<root xmlns:dc="...">
|
|
627
|
+
<parent>
|
|
628
|
+
<child>
|
|
629
|
+
<dc:title>...</dc:title>
|
|
630
|
+
</child>
|
|
631
|
+
</parent>
|
|
632
|
+
</root>
|
|
633
|
+
----
|
|
634
|
+
|===
|
|
635
|
+
|
|
636
|
+
=== Using namespace_scope
|
|
637
|
+
|
|
638
|
+
[source,ruby]
|
|
639
|
+
----
|
|
640
|
+
class Document < Lutaml::Model::Serializable
|
|
641
|
+
attribute :title, :string
|
|
642
|
+
attribute :creator, :string
|
|
643
|
+
|
|
644
|
+
xml do
|
|
645
|
+
element "document"
|
|
646
|
+
namespace DocNamespace
|
|
647
|
+
|
|
648
|
+
# Hoist these namespaces to this element
|
|
649
|
+
namespace_scope [
|
|
650
|
+
DcNamespace, # Auto-declare if used
|
|
651
|
+
DctermsNamespace, # Auto-declare if used
|
|
652
|
+
]
|
|
653
|
+
end
|
|
654
|
+
end
|
|
655
|
+
----
|
|
656
|
+
|
|
657
|
+
=== Declaration Modes
|
|
658
|
+
|
|
659
|
+
The `declare:` option controls when hoisted namespaces appear:
|
|
660
|
+
|
|
661
|
+
==== `:auto` (Default) - Declare Only If Used
|
|
662
|
+
|
|
663
|
+
[source,ruby]
|
|
664
|
+
----
|
|
665
|
+
namespace_scope [DcNamespace, DctermsNamespace]
|
|
666
|
+
# or explicitly:
|
|
667
|
+
namespace_scope [{ namespace: DcNamespace, declare: :auto }]
|
|
668
|
+
----
|
|
669
|
+
|
|
670
|
+
Namespace declared at this element **ONLY IF** any descendant uses it.
|
|
671
|
+
|
|
672
|
+
**Output when used:**
|
|
673
|
+
[source,xml]
|
|
674
|
+
----
|
|
675
|
+
<document xmlns="http://doc.example.com"
|
|
676
|
+
xmlns:dc="http://purl.org/dc/">
|
|
677
|
+
<dc:title>My Document</dc:title>
|
|
678
|
+
</document>
|
|
679
|
+
----
|
|
680
|
+
|
|
681
|
+
**Output when NOT used:**
|
|
682
|
+
[source,xml]
|
|
683
|
+
----
|
|
684
|
+
<document xmlns="http://doc.example.com">
|
|
685
|
+
<title>My Document</title>
|
|
686
|
+
</document>
|
|
687
|
+
----
|
|
688
|
+
|
|
689
|
+
==== `:always` - Force Declaration
|
|
690
|
+
|
|
691
|
+
[source,ruby]
|
|
692
|
+
----
|
|
693
|
+
namespace_scope [{ namespace: VtNamespace, declare: :always }]
|
|
694
|
+
----
|
|
695
|
+
|
|
696
|
+
Namespace declared at this element **even if no descendant uses it**.
|
|
697
|
+
|
|
698
|
+
**Use cases:**
|
|
699
|
+
- Office Open XML requires `xmlns:vt` always present
|
|
700
|
+
- Schema validation requires namespace declaration
|
|
701
|
+
- Pre-declaring for dynamic content
|
|
702
|
+
|
|
703
|
+
**Output:**
|
|
704
|
+
[source,xml]
|
|
705
|
+
----
|
|
706
|
+
<Properties xmlns="http://app.example.com"
|
|
707
|
+
xmlns:vt="http://vt.example.com">
|
|
708
|
+
<!-- vt namespace declared but NOT used -->
|
|
709
|
+
<Template>Normal.dotm</Template>
|
|
710
|
+
</Properties>
|
|
711
|
+
----
|
|
712
|
+
|
|
713
|
+
==== `:never` - Never Declare
|
|
714
|
+
|
|
715
|
+
[source,ruby]
|
|
716
|
+
----
|
|
717
|
+
namespace_scope [{ namespace: InternalNamespace, declare: :never }]
|
|
718
|
+
----
|
|
719
|
+
|
|
720
|
+
Namespace never declared at this element (error if used here).
|
|
721
|
+
|
|
722
|
+
**Use case:** Prevent accidental declaration at wrong level.
|
|
723
|
+
|
|
724
|
+
=== Hoisting Use Cases
|
|
725
|
+
|
|
726
|
+
==== Space Efficiency
|
|
727
|
+
|
|
728
|
+
For documents with many repeated namespace usages, hoisting reduces file size:
|
|
729
|
+
|
|
730
|
+
**Without hoisting** (repeated declarations):
|
|
731
|
+
[source,xml]
|
|
732
|
+
----
|
|
733
|
+
<root>
|
|
734
|
+
<item xmlns:dc="http://purl.org/dc/">
|
|
735
|
+
<dc:title>Title 1</dc:title>
|
|
736
|
+
</item>
|
|
737
|
+
<item xmlns:dc="http://purl.org/dc/">
|
|
738
|
+
<dc:title>Title 2</dc:title>
|
|
739
|
+
</item>
|
|
740
|
+
<item xmlns:dc="http://purl.org/dc/">
|
|
741
|
+
<dc:title>Title 3</dc:title>
|
|
742
|
+
</item>
|
|
743
|
+
</root>
|
|
744
|
+
----
|
|
745
|
+
|
|
746
|
+
**With hoisting** (single declaration):
|
|
747
|
+
[source,xml]
|
|
748
|
+
----
|
|
749
|
+
<root xmlns:dc="http://purl.org/dc/">
|
|
750
|
+
<item>
|
|
751
|
+
<dc:title>Title 1</dc:title>
|
|
752
|
+
</item>
|
|
753
|
+
<item>
|
|
754
|
+
<dc:title>Title 2</dc:title>
|
|
755
|
+
</item>
|
|
756
|
+
<item>
|
|
757
|
+
<dc:title>Title 3</dc:title>
|
|
758
|
+
</item>
|
|
759
|
+
</root>
|
|
760
|
+
----
|
|
761
|
+
|
|
762
|
+
==== Round-Trip Preservation
|
|
763
|
+
|
|
764
|
+
When parsing XML, the input's namespace declaration structure is preserved:
|
|
765
|
+
|
|
766
|
+
[source,ruby]
|
|
767
|
+
----
|
|
768
|
+
# Input has hoisted namespaces
|
|
769
|
+
input_xml = <<~XML
|
|
770
|
+
<document xmlns:dc="http://purl.org/dc/">
|
|
771
|
+
<dc:title>Example</dc:title>
|
|
772
|
+
</document>
|
|
773
|
+
XML
|
|
774
|
+
|
|
775
|
+
doc = Document.from_xml(input_xml)
|
|
776
|
+
|
|
777
|
+
# Output preserves hoisting
|
|
778
|
+
doc.to_xml # Still has xmlns:dc on root
|
|
779
|
+
----
|
|
780
|
+
|
|
781
|
+
==== Compatibility with Non-Namespace-Aware Software
|
|
782
|
+
|
|
783
|
+
Some legacy XML parsers don't properly handle local namespace declarations. Hoisting all namespaces to root ensures compatibility:
|
|
784
|
+
|
|
785
|
+
[source,ruby]
|
|
786
|
+
----
|
|
787
|
+
class LegacyFormat < Lutaml::Model::Serializable
|
|
788
|
+
xml do
|
|
789
|
+
element "data"
|
|
790
|
+
namespace MainNamespace
|
|
791
|
+
|
|
792
|
+
# Hoist ALL namespaces to root for legacy compatibility
|
|
793
|
+
namespace_scope [
|
|
794
|
+
{ namespace: Ns1, declare: :always },
|
|
795
|
+
{ namespace: Ns2, declare: :always },
|
|
796
|
+
{ namespace: Ns3, declare: :always },
|
|
797
|
+
]
|
|
798
|
+
end
|
|
799
|
+
end
|
|
800
|
+
----
|
|
801
|
+
|
|
802
|
+
This ensures all namespaces are declared at root, even if unused:
|
|
803
|
+
[source,xml]
|
|
804
|
+
----
|
|
805
|
+
<data xmlns="http://main"
|
|
806
|
+
xmlns:ns1="http://ns1"
|
|
807
|
+
xmlns:ns2="http://ns2"
|
|
808
|
+
xmlns:ns3="http://ns3">
|
|
809
|
+
<item>value</item>
|
|
810
|
+
</data>
|
|
811
|
+
----
|
|
812
|
+
|
|
813
|
+
=== Multiple namespace_scope Directives
|
|
814
|
+
|
|
815
|
+
If parent and child both use `namespace_scope`, the child's scope is additive:
|
|
816
|
+
|
|
817
|
+
[source,ruby]
|
|
818
|
+
----
|
|
819
|
+
class Parent < Lutaml::Model::Serializable
|
|
820
|
+
xml do
|
|
821
|
+
element "parent"
|
|
822
|
+
namespace_scope [Ns1, Ns2] # Parent hoists Ns1, Ns2
|
|
823
|
+
end
|
|
824
|
+
end
|
|
825
|
+
|
|
826
|
+
class Child < Lutaml::Model::Serializable
|
|
827
|
+
xml do
|
|
828
|
+
element "child"
|
|
829
|
+
namespace_scope [Ns3] # Child additionally hoists Ns3
|
|
830
|
+
end
|
|
831
|
+
end
|
|
832
|
+
----
|
|
833
|
+
|
|
834
|
+
== Attribute Name Conflicts
|
|
835
|
+
|
|
836
|
+
Version 0.8.0 simplifies attribute name conflict handling:
|
|
837
|
+
|
|
838
|
+
* **No more errors** for attribute names that conflict with built-in methods
|
|
839
|
+
* Only **warnings** are shown for potentially problematic overrides
|
|
840
|
+
* All attribute names are now usable
|
|
841
|
+
|
|
842
|
+
[source,ruby]
|
|
843
|
+
----
|
|
844
|
+
# Before (v0.7.x) - Error raised
|
|
845
|
+
attribute :display, :string # ❌ InvalidAttributeNameError
|
|
846
|
+
|
|
847
|
+
# After (v0.8.0) - Warning only
|
|
848
|
+
attribute :display, :string # ✅ Works (shows warning)
|
|
849
|
+
----
|
|
850
|
+
|
|
851
|
+
== no_root Method Deprecated
|
|
852
|
+
|
|
853
|
+
The `no_root` method is deprecated. Simply omit the `element()` declaration for type-only models.
|
|
854
|
+
|
|
855
|
+
==== Before (deprecated)
|
|
856
|
+
|
|
857
|
+
[source,ruby]
|
|
858
|
+
----
|
|
859
|
+
xml do
|
|
860
|
+
no_root # ❌ Deprecated
|
|
861
|
+
map_element "value", to: :value
|
|
862
|
+
end
|
|
863
|
+
----
|
|
864
|
+
|
|
865
|
+
==== After (recommended)
|
|
866
|
+
|
|
867
|
+
[source,ruby]
|
|
868
|
+
----
|
|
869
|
+
xml do
|
|
870
|
+
type_name "MyType" # ✅ Use type_name for XSD type naming
|
|
871
|
+
map_element "value", to: :value
|
|
872
|
+
# Simply omit element() declaration for type-only models
|
|
873
|
+
end
|
|
874
|
+
----
|
|
875
|
+
|
|
876
|
+
== Testing Your Migration
|
|
877
|
+
|
|
878
|
+
After updating, run your test suite:
|
|
879
|
+
|
|
880
|
+
[source,bash]
|
|
881
|
+
----
|
|
882
|
+
bundle exec rake spec
|
|
883
|
+
----
|
|
884
|
+
|
|
885
|
+
Pay attention to:
|
|
886
|
+
|
|
887
|
+
1. Deprecation warnings in the output
|
|
888
|
+
2. XML format changes (prefixes vs default namespaces)
|
|
889
|
+
3. Attribute prefixing behavior
|
|
890
|
+
|
|
891
|
+
== Troubleshooting
|
|
892
|
+
|
|
893
|
+
=== Problem: XML looks different after upgrading
|
|
894
|
+
|
|
895
|
+
**Solution:** This is expected. The new default uses clean XML with default namespaces. To restore old format:
|
|
896
|
+
|
|
897
|
+
[source,ruby]
|
|
898
|
+
----
|
|
899
|
+
instance.to_xml(prefix: true)
|
|
900
|
+
----
|
|
901
|
+
|
|
902
|
+
=== Problem: Consuming system rejects my XML
|
|
903
|
+
|
|
904
|
+
**Solution 1:** Check if system supports default namespaces (most do).
|
|
905
|
+
|
|
906
|
+
**Solution 2:** If system requires prefixes:
|
|
907
|
+
|
|
908
|
+
[source,ruby]
|
|
909
|
+
----
|
|
910
|
+
instance.to_xml(prefix: true)
|
|
911
|
+
----
|
|
912
|
+
|
|
913
|
+
=== Problem: tomlib fails on Windows
|
|
914
|
+
|
|
915
|
+
**Solution:** Use `:toml_rb` adapter:
|
|
916
|
+
|
|
917
|
+
[source,ruby]
|
|
918
|
+
----
|
|
919
|
+
config.toml_adapter_type = :toml_rb
|
|
920
|
+
----
|
|
921
|
+
|
|
922
|
+
=== Problem: My prefixes disappeared
|
|
923
|
+
|
|
924
|
+
**Solution:** This is intentional for cleaner XML. Define `prefix_default` in your `XmlNamespace` class and use `prefix: true`:
|
|
925
|
+
|
|
926
|
+
[source,ruby]
|
|
927
|
+
----
|
|
928
|
+
instance.to_xml(prefix: true)
|
|
929
|
+
----
|
|
930
|
+
|
|
931
|
+
=== Problem: Required namespace is missing from output
|
|
932
|
+
|
|
933
|
+
**Solution:** Use `declare: :always` in `namespace_scope`:
|
|
934
|
+
|
|
935
|
+
[source,ruby]
|
|
936
|
+
----
|
|
937
|
+
xml do
|
|
938
|
+
namespace_scope [RequiredNamespace], declare: :always
|
|
939
|
+
end
|
|
940
|
+
----
|
|
941
|
+
|
|
942
|
+
== Summary Checklist
|
|
943
|
+
|
|
944
|
+
=== Configuration & Adapters
|
|
945
|
+
|
|
946
|
+
- [ ] Update adapter configuration to use new simplified names (`:standard` instead of `:standard_json`)
|
|
947
|
+
- [ ] Update explicit adapter class references to new paths
|
|
948
|
+
- [ ] Use `:toml_rb` on Windows instead of `:tomlib`
|
|
949
|
+
|
|
950
|
+
=== XML Namespace Changes
|
|
951
|
+
|
|
952
|
+
- [ ] Review XML output format changes (prefix vs default namespace)
|
|
953
|
+
- [ ] Set `attribute_form_default :qualified` if you need prefixed attributes
|
|
954
|
+
- [ ] Remove `prefix` parameters from mapping methods
|
|
955
|
+
- [ ] Create child model classes for elements with different namespaces
|
|
956
|
+
- [ ] Use `namespace_scope` for consolidated namespace declarations
|
|
957
|
+
|
|
958
|
+
=== Model Definition Changes
|
|
959
|
+
|
|
960
|
+
- [ ] Replace `root "name"` with `element "name"` for standalone models
|
|
961
|
+
- [ ] Remove `no_root` calls - models without `element()` are type-only by default
|
|
962
|
+
- [ ] Use `type_name "TypeName"` for XSD type naming
|
|
963
|
+
- [ ] Move namespace definitions from mappings to model classes
|
|
964
|
+
- [ ] Update Type classes to use unified `xml do` syntax
|
|
965
|
+
|
|
966
|
+
=== New Architecture Adoption
|
|
967
|
+
|
|
968
|
+
- [ ] Consider using hierarchical registers for type organization
|
|
969
|
+
- [ ] Leverage XSD generation for schema documentation
|
|
970
|
+
- [ ] Use DataModel transformation pipeline for custom serialization
|
|
971
|
+
- [ ] Review attribute name conflict handling (warnings only, no errors)
|
|
972
|
+
|
|
973
|
+
== See Also
|
|
974
|
+
|
|
975
|
+
* link:../_pages/breaking-changes.adoc[Breaking Changes]
|
|
976
|
+
* link:../_pages/configuration.adoc[Configuration Documentation]
|
|
977
|
+
* link:../_pages/serialization_adapters.adoc[Serialization Adapters]
|
|
978
|
+
* link:../_references/custom_registers.adoc[Custom Registers Guide]
|
|
979
|
+
* link:../_references/xsd-generation.adoc[XSD Schema Generation]
|
|
980
|
+
* link:../_guides/xml-namespaces.adoc[XML Namespaces Complete Guide]
|
|
981
|
+
|
|
982
|
+
== New XML Architecture Concepts
|
|
983
|
+
|
|
984
|
+
Version 0.8.0 introduces a completely revamped XML serialization architecture. Understanding these concepts is essential for working with complex XML documents.
|
|
985
|
+
|
|
986
|
+
=== Three-Phase Architecture
|
|
987
|
+
|
|
988
|
+
The XML serialization now uses a sophisticated three-phase architecture that is W3C-compliant while handling complex model hierarchies:
|
|
989
|
+
|
|
990
|
+
==== Phase 1: Discovery
|
|
991
|
+
|
|
992
|
+
**Phase 1A: Identity Discovery (Bottom-Up)**
|
|
993
|
+
|
|
994
|
+
Walks the model tree from leaves to root, collecting all namespace identities of models and value types.
|
|
995
|
+
|
|
996
|
+
**Phase 1B: Scope Coverage Discovery (Top-Down)**
|
|
997
|
+
|
|
998
|
+
Determines the hoisting eligibility of each namespace based on `namespace_scope` directives and namespace identity.
|
|
999
|
+
|
|
1000
|
+
==== Phase 2: Planning
|
|
1001
|
+
|
|
1002
|
+
**Hoisting Planning:** Determines which namespaces (and prefixes) can be consolidated into a higher scope.
|
|
1003
|
+
|
|
1004
|
+
**Prefix Planning:** Assigns prefixes to each namespace, ensuring no conflicts occur.
|
|
1005
|
+
|
|
1006
|
+
==== Phase 3: Serialization
|
|
1007
|
+
|
|
1008
|
+
During XML serialization, the planned hoisting and prefix assignments are used to generate proper `xmlns` declarations.
|
|
1009
|
+
|
|
1010
|
+
=== DeclarationPlan
|
|
1011
|
+
|
|
1012
|
+
The `DeclarationPlan` is a new central concept that stores ALL namespace decisions before rendering:
|
|
1013
|
+
|
|
1014
|
+
[source,ruby]
|
|
1015
|
+
----
|
|
1016
|
+
# The plan contains:
|
|
1017
|
+
DeclarationPlan = {
|
|
1018
|
+
# Namespace declarations
|
|
1019
|
+
namespace_declarations: {
|
|
1020
|
+
"po" => {
|
|
1021
|
+
uri: "http://example.com/po",
|
|
1022
|
+
prefix: "po",
|
|
1023
|
+
format: :default, # or :prefix
|
|
1024
|
+
}
|
|
1025
|
+
},
|
|
1026
|
+
|
|
1027
|
+
# Element format decisions
|
|
1028
|
+
element_formats: {
|
|
1029
|
+
"purchaseOrder" => :default,
|
|
1030
|
+
"title" => :prefix, # Type namespace
|
|
1031
|
+
},
|
|
1032
|
+
|
|
1033
|
+
# Prefix assignments
|
|
1034
|
+
prefix_assignments: {
|
|
1035
|
+
PoNamespace => "po",
|
|
1036
|
+
DcNamespace => "dc",
|
|
1037
|
+
}
|
|
1038
|
+
}
|
|
1039
|
+
----
|
|
1040
|
+
|
|
1041
|
+
**Key Principle:** Adapters are "dumb" - they ONLY apply decisions from the DeclarationPlan. They NEVER make namespace decisions themselves.
|
|
1042
|
+
|
|
1043
|
+
=== XmlDataModel (Content Layer)
|
|
1044
|
+
|
|
1045
|
+
The `XmlDataModel` is an intermediate representation between your Model and XML:
|
|
1046
|
+
|
|
1047
|
+
* **Content Layer:** Defines WHAT to serialize (element names, structure, namespace identity)
|
|
1048
|
+
* **Namespace Identity:** Knows which namespace each element belongs to
|
|
1049
|
+
* **No Format Info:** Does NOT specify prefix vs default (DeclarationPlan's job)
|
|
1050
|
+
|
|
1051
|
+
=== Namespace Scopes
|
|
1052
|
+
|
|
1053
|
+
The `namespace_scope` directive controls WHERE namespace declarations appear:
|
|
1054
|
+
|
|
1055
|
+
[source,ruby]
|
|
1056
|
+
----
|
|
1057
|
+
xml do
|
|
1058
|
+
element "vCard"
|
|
1059
|
+
namespace VcardNamespace
|
|
1060
|
+
|
|
1061
|
+
# Consolidate namespaces at root
|
|
1062
|
+
namespace_scope [
|
|
1063
|
+
{ namespace: DcNamespace, declare: :always },
|
|
1064
|
+
{ namespace: DctermsNamespace, declare: :auto }
|
|
1065
|
+
]
|
|
1066
|
+
end
|
|
1067
|
+
----
|
|
1068
|
+
|
|
1069
|
+
**Declaration modes:**
|
|
1070
|
+
|
|
1071
|
+
* `:auto` - Declare if any descendant element/attribute belongs to this namespace
|
|
1072
|
+
* `:always` - Always declare at this element (unless ancestor already declared)
|
|
1073
|
+
* `:never` - Never declare at this element
|
|
1074
|
+
|
|
1075
|
+
=== Decision System (Element Format)
|
|
1076
|
+
|
|
1077
|
+
The Decision System determines whether each element uses default or prefixed format. Rules are evaluated in priority order:
|
|
1078
|
+
|
|
1079
|
+
1. **Priority 0:** Inherit parent's default namespace
|
|
1080
|
+
2. **Priority 0.5:** Use prefix hoisted on parent
|
|
1081
|
+
3. **Priority 1:** User explicit option (`to_xml(prefix: true/false/"custom")`)
|
|
1082
|
+
4. **Priority 2:** Preserved format from input (round-trip)
|
|
1083
|
+
5. **Priority 3:** W3C disambiguation (attributes need prefix)
|
|
1084
|
+
6. **Priority 4:** namespace_scope (multiple namespaces at root)
|
|
1085
|
+
7. **Priority 5:** Prefer default format (cleanest)
|
|
1086
|
+
|
|
1087
|
+
=== TypeNamespace Subsystem
|
|
1088
|
+
|
|
1089
|
+
Type namespaces (declared on custom Type classes) are now handled by a dedicated subsystem:
|
|
1090
|
+
|
|
1091
|
+
[source,ruby]
|
|
1092
|
+
----
|
|
1093
|
+
# Define type with namespace
|
|
1094
|
+
class DcTitleType < Lutaml::Model::Type::String
|
|
1095
|
+
xml_namespace DublinCoreNamespace # Type-level namespace
|
|
1096
|
+
end
|
|
1097
|
+
|
|
1098
|
+
# Use in model
|
|
1099
|
+
class Document < Lutaml::Model::Serializable
|
|
1100
|
+
attribute :title, DcTitleType # Type namespace applies automatically
|
|
1101
|
+
|
|
1102
|
+
xml do
|
|
1103
|
+
element "document"
|
|
1104
|
+
map_element "title", to: :title
|
|
1105
|
+
end
|
|
1106
|
+
end
|
|
1107
|
+
----
|
|
1108
|
+
|
|
1109
|
+
**Key rules:**
|
|
1110
|
+
|
|
1111
|
+
* Type namespace as attribute → MUST use prefix (W3C constraint)
|
|
1112
|
+
* Type namespace as element with same namespace as parent → Can inherit
|
|
1113
|
+
* Type namespace as element with different namespace → Can use default OR prefix
|
|
1114
|
+
|
|
1115
|
+
=== XmlNamespace Class
|
|
1116
|
+
|
|
1117
|
+
The `XmlNamespace` class encapsulates all namespace configuration:
|
|
1118
|
+
|
|
1119
|
+
[source,ruby]
|
|
1120
|
+
----
|
|
1121
|
+
class PoNamespace < Lutaml::Xml::Namespace
|
|
1122
|
+
uri "http://example.com/po" # Required: namespace URI
|
|
1123
|
+
prefix_default "po" # Required: default prefix
|
|
1124
|
+
element_form_default :qualified # Optional: children inherit namespace
|
|
1125
|
+
attribute_form_default :unqualified # Optional: attributes unprefixed
|
|
1126
|
+
end
|
|
1127
|
+
----
|
|
1128
|
+
|
|
1129
|
+
**W3C Compliance:**
|
|
1130
|
+
|
|
1131
|
+
* `element_form_default :unqualified` (default) - Children in blank namespace
|
|
1132
|
+
* `element_form_default :qualified` - Children inherit parent namespace
|
|
1133
|
+
* `attribute_form_default :unqualified` (default) - Attributes have NO namespace
|
|
1134
|
+
* `attribute_form_default :qualified` - Attributes MUST use prefix format
|
|
1135
|
+
|
|
1136
|
+
=== Benefits of New Architecture
|
|
1137
|
+
|
|
1138
|
+
1. **Single Source of Truth:** DeclarationPlanner makes ALL xmlns decisions
|
|
1139
|
+
2. **Full Tree Knowledge:** NamespaceCollector provides complete context before decisions
|
|
1140
|
+
3. **Never Declare Twice:** xmlns declared at optimal location, children reference it
|
|
1141
|
+
4. **Clean Separation:** Three independent, testable phases
|
|
1142
|
+
5. **Circular Reference Handling:** Built-in recursion prevention
|
|
1143
|
+
6. **Type-Only Model Support:** Models without element wrapper fully supported
|
|
1144
|
+
7. **Round-Trip Preservation:** Input format preserved during serialization
|
|
1145
|
+
|
|
1146
|
+
=== Key Design Patterns
|
|
1147
|
+
|
|
1148
|
+
==== Dumb Adapter Pattern
|
|
1149
|
+
|
|
1150
|
+
Adapters ONLY apply decisions from DeclarationPlan - they NEVER make namespace decisions:
|
|
1151
|
+
|
|
1152
|
+
```
|
|
1153
|
+
Planning Phase Rendering Phase
|
|
1154
|
+
┌─────────────────────┐ ┌─────────────────────┐
|
|
1155
|
+
│ DeclarationPlanner │ │ NokogiriAdapter │
|
|
1156
|
+
│ - MAKE DECISIONS │ ───▶ │ - Read plan │
|
|
1157
|
+
│ - Create plan │ │ - Apply xmlns │
|
|
1158
|
+
└─────────────────────┘ │ - NO DECISIONS │
|
|
1159
|
+
└─────────────────────┘
|
|
1160
|
+
```
|
|
1161
|
+
|
|
1162
|
+
==== Registry Pattern
|
|
1163
|
+
|
|
1164
|
+
Centralized namespace and prefix management:
|
|
1165
|
+
|
|
1166
|
+
[source,ruby]
|
|
1167
|
+
----
|
|
1168
|
+
register = NamespaceRegister.new
|
|
1169
|
+
register.register_namespace(PoNamespace)
|
|
1170
|
+
prefix = register.prefix_for(PoNamespace) # => "po"
|
|
1171
|
+
----
|
|
1172
|
+
|
|
1173
|
+
=== Understanding xmlns="" Behavior
|
|
1174
|
+
|
|
1175
|
+
**When REQUIRED:**
|
|
1176
|
+
|
|
1177
|
+
* Child in different namespace than parent
|
|
1178
|
+
* Parent uses default namespace format (`xmlns="uri"`)
|
|
1179
|
+
* Child's namespace has no prefix on child element
|
|
1180
|
+
|
|
1181
|
+
[source,xml]
|
|
1182
|
+
----
|
|
1183
|
+
<!-- CORRECT -->
|
|
1184
|
+
<parent xmlns="http://example.com/parent">
|
|
1185
|
+
<child xmlns="">Value</child>
|
|
1186
|
+
<!-- xmlns="" REQUIRED to opt out -->
|
|
1187
|
+
</parent>
|
|
1188
|
+
|
|
1189
|
+
<!-- CORRECT: Child has prefix -->
|
|
1190
|
+
<parent xmlns="http://example.com/parent">
|
|
1191
|
+
<other:child xmlns:other="http://other">Value</other:child>
|
|
1192
|
+
<!-- No xmlns="" needed - prefix makes it clear -->
|
|
1193
|
+
</parent>
|
|
1194
|
+
----
|
|
1195
|
+
|
|
1196
|
+
=== Related Documentation
|
|
1197
|
+
|
|
1198
|
+
For comprehensive details on the new architecture:
|
|
1199
|
+
|
|
1200
|
+
* link:../_references/three-phase-namespace-architecture.adoc[Three-Phase Namespace Architecture]
|
|
1201
|
+
* link:../_tutorials/lutaml-xml-architecture.adoc[LutaML XML Architecture Reference]
|
|
1202
|
+
* link:../_guides/xml-namespace-declarations.adoc[XML Namespace Declarations Guide]
|
|
1203
|
+
* link:../_guides/xml-namespaces.adoc[XML Namespaces Complete Guide]
|
|
1204
|
+
|
|
1205
|
+
== DataModel Transformation Architecture
|
|
1206
|
+
|
|
1207
|
+
Version 0.8.0 introduces a **two-phase transformation pipeline** for all serialization formats. Instead of directly serializing Lutaml::Model instances, the system now uses an intermediate representation.
|
|
1208
|
+
|
|
1209
|
+
=== Transformation Pipeline
|
|
1210
|
+
|
|
1211
|
+
```
|
|
1212
|
+
┌─────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
|
|
1213
|
+
│ Lutaml::Model │ │ Format DataModel │ │ Serialization Format│
|
|
1214
|
+
│ Instance │ ──▶ │ (Intermediate) │ ──▶ │ (String/Bytes) │
|
|
1215
|
+
└─────────────────┘ └─────────────────────┘ └─────────────────────┘
|
|
1216
|
+
│ │ │
|
|
1217
|
+
Your model XmlElement, XML, JSON, YAML,
|
|
1218
|
+
classes JsonObject, TOML, Hash
|
|
1219
|
+
YamlNode, etc.
|
|
1220
|
+
```
|
|
1221
|
+
|
|
1222
|
+
=== Phase 1: Model to DataModel Transformation
|
|
1223
|
+
|
|
1224
|
+
Each format has a dedicated `Transformation` class that converts your model instances into format-specific DataModel objects:
|
|
1225
|
+
|
|
1226
|
+
[source,ruby]
|
|
1227
|
+
----
|
|
1228
|
+
# XML Transformation
|
|
1229
|
+
transformation = Lutaml::Xml::Transformation.new
|
|
1230
|
+
xml_data_model = transformation.apply(person_instance)
|
|
1231
|
+
# => XmlElement tree with children, attributes, namespaces
|
|
1232
|
+
|
|
1233
|
+
# JSON Transformation
|
|
1234
|
+
transformation = Lutaml::Json::Transformation.new
|
|
1235
|
+
json_data_model = transformation.apply(person_instance)
|
|
1236
|
+
# => JsonObject tree
|
|
1237
|
+
----
|
|
1238
|
+
|
|
1239
|
+
=== Phase 2: DataModel to Serialization Format
|
|
1240
|
+
|
|
1241
|
+
The DataModel objects are then serialized by the adapter:
|
|
1242
|
+
|
|
1243
|
+
[source,ruby]
|
|
1244
|
+
----
|
|
1245
|
+
# XML adapter serializes XmlElement tree
|
|
1246
|
+
xml_string = Lutaml::Xml::Adapter.serialize(xml_data_model)
|
|
1247
|
+
|
|
1248
|
+
# JSON adapter serializes JsonObject tree
|
|
1249
|
+
json_string = Lutaml::Json::Adapter.serialize(json_data_model)
|
|
1250
|
+
----
|
|
1251
|
+
|
|
1252
|
+
=== Benefits
|
|
1253
|
+
|
|
1254
|
+
1. **Format-agnostic logic**: Business logic stays in your models
|
|
1255
|
+
2. **Testable intermediate representation**: Debug DataModel objects directly
|
|
1256
|
+
3. **Clean separation**: Transformation logic isolated from serialization
|
|
1257
|
+
4. **Extensibility**: Add new formats by creating new Transformation classes
|
|
1258
|
+
5. **Round-trip support**: Parse → DataModel → Model → DataModel → Serialize
|
|
1259
|
+
|
|
1260
|
+
== Consolidated `xml do` Syntax
|
|
1261
|
+
|
|
1262
|
+
Version 0.8.0 unifies the `xml do` syntax for both model classes and custom Type classes.
|
|
1263
|
+
|
|
1264
|
+
=== Before (v0.7.x) - Different Syntaxes
|
|
1265
|
+
|
|
1266
|
+
[source,ruby]
|
|
1267
|
+
----
|
|
1268
|
+
# Model class - used namespace method
|
|
1269
|
+
class Person < Lutaml::Model::Serializable
|
|
1270
|
+
xml do
|
|
1271
|
+
namespace "http://example.com/ns", "p" # Different syntax
|
|
1272
|
+
root "person"
|
|
1273
|
+
end
|
|
1274
|
+
end
|
|
1275
|
+
|
|
1276
|
+
# Type class - used xml_namespace method
|
|
1277
|
+
class CustomType < Lutaml::Model::Type::String
|
|
1278
|
+
xml_namespace CustomNamespace # Different method name!
|
|
1279
|
+
end
|
|
1280
|
+
----
|
|
1281
|
+
|
|
1282
|
+
=== After (v0.8.0) - Unified Syntax
|
|
1283
|
+
|
|
1284
|
+
Both models and types now use the same `xml do` block syntax:
|
|
1285
|
+
|
|
1286
|
+
[source,ruby]
|
|
1287
|
+
----
|
|
1288
|
+
# Model class
|
|
1289
|
+
class Person < Lutaml::Model::Serializable
|
|
1290
|
+
xml do
|
|
1291
|
+
namespace PersonNamespace # Namespace class reference
|
|
1292
|
+
element "person" # element() replaces root()
|
|
1293
|
+
end
|
|
1294
|
+
end
|
|
1295
|
+
|
|
1296
|
+
# Type class - SAME syntax!
|
|
1297
|
+
class CustomType < Lutaml::Model::Type::String
|
|
1298
|
+
xml do
|
|
1299
|
+
namespace CustomNamespace # Same method
|
|
1300
|
+
# No element() - types don't have root elements
|
|
1301
|
+
end
|
|
1302
|
+
end
|
|
1303
|
+
----
|
|
1304
|
+
|
|
1305
|
+
=== Migration
|
|
1306
|
+
|
|
1307
|
+
[cols="1,1"]
|
|
1308
|
+
|===
|
|
1309
|
+
| Old (v0.7.x) | New (v0.8.0)
|
|
1310
|
+
|
|
1311
|
+
| `root "elementName"` | `element "elementName"`
|
|
1312
|
+
| `no_root` | (omit element() entirely)
|
|
1313
|
+
| `namespace "uri", "prefix"` | `namespace NamespaceClass`
|
|
1314
|
+
| `xml_namespace Namespace` (types only) | `xml do; namespace Namespace; end`
|
|
1315
|
+
|===
|
|
1316
|
+
|
|
1317
|
+
== XSD-Aligned Concepts: Element vs ComplexType
|
|
1318
|
+
|
|
1319
|
+
Version 0.8.0 aligns Lutaml::Model concepts with W3C XML Schema (XSD) terminology for better clarity and standards compliance.
|
|
1320
|
+
|
|
1321
|
+
=== Element Declaration
|
|
1322
|
+
|
|
1323
|
+
An **Element** is a model that can be serialized as a standalone XML document with a root element.
|
|
1324
|
+
|
|
1325
|
+
[source,ruby]
|
|
1326
|
+
----
|
|
1327
|
+
class PurchaseOrder < Lutaml::Model::Serializable
|
|
1328
|
+
attribute :order_date, :date
|
|
1329
|
+
attribute :items, Item, collection: true
|
|
1330
|
+
|
|
1331
|
+
xml do
|
|
1332
|
+
element "purchaseOrder" # ✅ Element - can be root
|
|
1333
|
+
namespace PoNamespace
|
|
1334
|
+
map_element "orderDate", to: :order_date
|
|
1335
|
+
map_element "item", to: :items
|
|
1336
|
+
end
|
|
1337
|
+
end
|
|
1338
|
+
|
|
1339
|
+
# Can be serialized standalone
|
|
1340
|
+
order = PurchaseOrder.new(...)
|
|
1341
|
+
order.to_xml # => <purchaseOrder>...</purchaseOrder>
|
|
1342
|
+
----
|
|
1343
|
+
|
|
1344
|
+
=== ComplexType (Type-Only Model)
|
|
1345
|
+
|
|
1346
|
+
A **ComplexType** is a model that defines a type structure but cannot be serialized as a standalone document. It must be embedded in another model.
|
|
1347
|
+
|
|
1348
|
+
[source,ruby]
|
|
1349
|
+
----
|
|
1350
|
+
# No element() declaration = ComplexType (type-only)
|
|
1351
|
+
class Address < Lutaml::Model::Serializable
|
|
1352
|
+
attribute :street, :string
|
|
1353
|
+
attribute :city, :string
|
|
1354
|
+
|
|
1355
|
+
xml do
|
|
1356
|
+
# No element() - this is a ComplexType
|
|
1357
|
+
type_name "AddressType" # Optional: XSD type name
|
|
1358
|
+
map_element "street", to: :street
|
|
1359
|
+
map_element "city", to: :city
|
|
1360
|
+
end
|
|
1361
|
+
end
|
|
1362
|
+
|
|
1363
|
+
# Cannot be serialized standalone
|
|
1364
|
+
address = Address.new(...)
|
|
1365
|
+
address.to_xml # => NoRootMappingError
|
|
1366
|
+
|
|
1367
|
+
# Must be used in an Element
|
|
1368
|
+
class Person < Lutaml::Model::Serializable
|
|
1369
|
+
attribute :address, Address # Embed ComplexType
|
|
1370
|
+
|
|
1371
|
+
xml do
|
|
1372
|
+
element "person" # Element
|
|
1373
|
+
map_element "address", to: :address
|
|
1374
|
+
end
|
|
1375
|
+
end
|
|
1376
|
+
----
|
|
1377
|
+
|
|
1378
|
+
=== Migration Summary
|
|
1379
|
+
|
|
1380
|
+
|===
|
|
1381
|
+
| v0.7.x | v0.8.0 | Behavior
|
|
1382
|
+
|
|
1383
|
+
| `root "name"` | `element "name"` | Element (standalone)
|
|
1384
|
+
| `no_root` | (omit element) | ComplexType (embedded)
|
|
1385
|
+
| (no root or no_root) | (omit element) | ComplexType (embedded)
|
|
1386
|
+
|===
|
|
1387
|
+
|
|
1388
|
+
== Model-Centric Namespace Definitions
|
|
1389
|
+
|
|
1390
|
+
Version 0.8.0 enforces **model-centric namespace definitions**. Namespaces are defined ONLY on models and types, not on individual mappings.
|
|
1391
|
+
|
|
1392
|
+
=== Before (v0.7.x) - Namespace on Mappings
|
|
1393
|
+
|
|
1394
|
+
[source,ruby]
|
|
1395
|
+
----
|
|
1396
|
+
class Parent < Lutaml::Model::Serializable
|
|
1397
|
+
xml do
|
|
1398
|
+
root "parent"
|
|
1399
|
+
namespace "http://parent.com", "p"
|
|
1400
|
+
|
|
1401
|
+
# ❌ Namespace on mapping - NO LONGER SUPPORTED
|
|
1402
|
+
map_element "child", to: :child, namespace: ChildNamespace
|
|
1403
|
+
map_element "other", to: :other, prefix: "o"
|
|
1404
|
+
end
|
|
1405
|
+
end
|
|
1406
|
+
----
|
|
1407
|
+
|
|
1408
|
+
=== After (v0.8.0) - Namespace on Models Only
|
|
1409
|
+
|
|
1410
|
+
[source,ruby]
|
|
1411
|
+
----
|
|
1412
|
+
# Child model has its own namespace
|
|
1413
|
+
class Child < Lutaml::Model::Serializable
|
|
1414
|
+
attribute :value, :string
|
|
1415
|
+
|
|
1416
|
+
xml do
|
|
1417
|
+
element "child"
|
|
1418
|
+
namespace ChildNamespace # ✅ Namespace on model
|
|
1419
|
+
map_content to: :value
|
|
1420
|
+
end
|
|
1421
|
+
end
|
|
1422
|
+
|
|
1423
|
+
# Parent references child model
|
|
1424
|
+
class Parent < Lutaml::Model::Serializable
|
|
1425
|
+
attribute :child, Child # Typed attribute
|
|
1426
|
+
attribute :other, Other
|
|
1427
|
+
|
|
1428
|
+
xml do
|
|
1429
|
+
element "parent"
|
|
1430
|
+
namespace ParentNamespace # ✅ Namespace on model
|
|
1431
|
+
map_element "child", to: :child # No namespace parameter
|
|
1432
|
+
map_element "other", to: :other
|
|
1433
|
+
end
|
|
1434
|
+
end
|
|
1435
|
+
----
|
|
1436
|
+
|
|
1437
|
+
=== Why This Change
|
|
1438
|
+
|
|
1439
|
+
1. **Single source of truth**: Each model owns its namespace
|
|
1440
|
+
2. **Reusability**: Child models work in any parent context
|
|
1441
|
+
3. **Clarity**: No confusion about which namespace applies
|
|
1442
|
+
4. **XSD alignment**: Matches XSD's type-centric namespace model
|
|
1443
|
+
|
|
1444
|
+
=== Migration
|
|
1445
|
+
|
|
1446
|
+
[source,ruby]
|
|
1447
|
+
----
|
|
1448
|
+
# Before: Inline namespace on mapping
|
|
1449
|
+
map_element "item", to: :item, namespace: ItemNamespace
|
|
1450
|
+
|
|
1451
|
+
# After: Create separate model with namespace
|
|
1452
|
+
class Item < Lutaml::Model::Serializable
|
|
1453
|
+
attribute :value, :string
|
|
1454
|
+
xml do
|
|
1455
|
+
element "item"
|
|
1456
|
+
namespace ItemNamespace
|
|
1457
|
+
map_content to: :value
|
|
1458
|
+
end
|
|
1459
|
+
end
|
|
1460
|
+
|
|
1461
|
+
# Then use typed attribute
|
|
1462
|
+
attribute :item, Item
|
|
1463
|
+
map_element "item", to: :item
|
|
1464
|
+
----
|
|
1465
|
+
|
|
1466
|
+
== Register System Refactoring
|
|
1467
|
+
|
|
1468
|
+
Version 0.8.0 significantly enhances the `Register` system with hierarchical fallbacks, composition, and key-based registration.
|
|
1469
|
+
|
|
1470
|
+
=== Hierarchical Fallback Chains
|
|
1471
|
+
|
|
1472
|
+
Registers can now delegate to parent registers when a type is not found:
|
|
1473
|
+
|
|
1474
|
+
[source,ruby]
|
|
1475
|
+
----
|
|
1476
|
+
# Parent register with base types
|
|
1477
|
+
base_register = Lutaml::Model::Register.new do
|
|
1478
|
+
register_type(:string, Lutaml::Model::Type::String)
|
|
1479
|
+
register_type(:integer, Lutaml::Model::Type::Integer)
|
|
1480
|
+
end
|
|
1481
|
+
|
|
1482
|
+
# Child register with domain types, falls back to parent
|
|
1483
|
+
domain_register = Lutaml::Model::Register.new(
|
|
1484
|
+
fallback: base_register # ✅ Hierarchical fallback
|
|
1485
|
+
) do
|
|
1486
|
+
register_type(:custom_id, CustomIdType)
|
|
1487
|
+
end
|
|
1488
|
+
|
|
1489
|
+
# Resolution tries child first, then parent
|
|
1490
|
+
domain_register.resolve_type(:string) # => From base_register
|
|
1491
|
+
domain_register.resolve_type(:custom_id) # => From domain_register
|
|
1492
|
+
----
|
|
1493
|
+
|
|
1494
|
+
=== Register Composition
|
|
1495
|
+
|
|
1496
|
+
Multiple registers can be composed together:
|
|
1497
|
+
|
|
1498
|
+
[source,ruby]
|
|
1499
|
+
----
|
|
1500
|
+
# Create specialized registers
|
|
1501
|
+
core_types = Lutaml::Model::Register.new { ... }
|
|
1502
|
+
xml_types = Lutaml::Model::Register.new { ... }
|
|
1503
|
+
domain_types = Lutaml::Model::Register.new { ... }
|
|
1504
|
+
|
|
1505
|
+
# Compose into unified register
|
|
1506
|
+
composed = Lutaml::Model::Register.composite(
|
|
1507
|
+
[domain_types, xml_types, core_types]
|
|
1508
|
+
)
|
|
1509
|
+
----
|
|
1510
|
+
|
|
1511
|
+
=== Key-Based Registration
|
|
1512
|
+
|
|
1513
|
+
Types can be registered under specific keys for namespacing:
|
|
1514
|
+
|
|
1515
|
+
[source,ruby]
|
|
1516
|
+
----
|
|
1517
|
+
register = Lutaml::Model::Register.new do
|
|
1518
|
+
# Register with key for namespacing
|
|
1519
|
+
register_type(:id, MyIdType, key: :myapp)
|
|
1520
|
+
register_type(:name, MyNameType, key: :myapp)
|
|
1521
|
+
end
|
|
1522
|
+
|
|
1523
|
+
# Resolve with key
|
|
1524
|
+
register.resolve_type(:id, key: :myapp) # => MyIdType
|
|
1525
|
+
register.resolve_type(:id) # => nil (key required)
|
|
1526
|
+
----
|
|
1527
|
+
|
|
1528
|
+
=== Global Register Access
|
|
1529
|
+
|
|
1530
|
+
[source,ruby]
|
|
1531
|
+
----
|
|
1532
|
+
# Access global register
|
|
1533
|
+
global = Lutaml::Model::GlobalRegister.instance
|
|
1534
|
+
|
|
1535
|
+
# Register globally
|
|
1536
|
+
global.register_type(:my_type, MyCustomType)
|
|
1537
|
+
|
|
1538
|
+
# Use in models
|
|
1539
|
+
attribute :field, :my_type # Resolves from global register
|
|
1540
|
+
----
|
|
1541
|
+
|
|
1542
|
+
== XSD Schema Generation and Parsing
|
|
1543
|
+
|
|
1544
|
+
Version 0.8.0 integrates XSD schema capabilities from lutaml-xsd directly into
|
|
1545
|
+
lutaml-model, enabling both generation and parsing of XML Schema documents.
|
|
1546
|
+
|
|
1547
|
+
This is a major new feature. For full documentation, see the dedicated
|
|
1548
|
+
link:0-8-0-xsd-features.adoc[XSD Features Migration Guide].
|
|
1549
|
+
|
|
1550
|
+
=== Quick Start
|
|
1551
|
+
|
|
1552
|
+
[source,ruby]
|
|
1553
|
+
----
|
|
1554
|
+
# Generate XSD from a Ruby model
|
|
1555
|
+
xsd = Lutaml::Model::Schema.to_xsd(Person)
|
|
1556
|
+
|
|
1557
|
+
# Parse XSD into Ruby model classes
|
|
1558
|
+
Lutaml::Model::Schema.from_xml(xsd_content, output_dir: "models", create_files: true)
|
|
1559
|
+
----
|
|
1560
|
+
|
|
1561
|
+
=== Key Capabilities
|
|
1562
|
+
|
|
1563
|
+
* **XSD generation** - Convert Ruby models to XML Schema (XSD) documents
|
|
1564
|
+
* **XSD parsing** - Parse XSD files into Ruby model objects
|
|
1565
|
+
* **Code generation** - Compile XSD into Ruby model class files
|
|
1566
|
+
* **Custom XSD types** - Define `xsd_type` on `Type::Value` subclasses
|
|
1567
|
+
* **RelaxNG generation** - Generate RELAX NG schemas from models
|
|
1568
|
+
* **XSD validation** - Pre-parsing validation of XSD documents
|
|
1569
|
+
|
|
1570
|
+
For migration details and comprehensive examples, see
|
|
1571
|
+
link:0-8-0-xsd-features.adoc[XSD Features Migration Guide].
|
|
1572
|
+
|