lutaml-model 0.7.7 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/dependent-repos.json +9 -0
- data/.github/workflows/dependent-tests.yml +4 -0
- data/.github/workflows/docs.yml +59 -0
- data/.github/workflows/downstream-performance.yml +153 -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 +408 -88
- data/Gemfile +15 -9
- data/README.adoc +13736 -6922
- 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_xmi.rb +51 -0
- data/bench/gate_config.rb +120 -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 +306 -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 +319 -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 +108 -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/docs/yamls_sequence.adoc +335 -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 +29 -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 +62 -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/adapter_resolver.rb +410 -0
- data/lib/lutaml/model/adapter_scope.rb +64 -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 +111 -80
- data/lib/lutaml/model/configuration.rb +91 -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 +170 -9
- 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 +337 -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 -578
- 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 +229 -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 +48 -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 +303 -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 +294 -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 +30 -0
- data/lib/lutaml/{model/yamls → yamls/adapter}/document.rb +2 -2
- data/lib/lutaml/yamls/adapter/mapping.rb +26 -0
- data/lib/lutaml/yamls/adapter/mapping_rule.rb +9 -0
- data/lib/lutaml/yamls/adapter/standard_adapter.rb +56 -0
- data/lib/lutaml/yamls/adapter/transform.rb +124 -0
- data/lib/lutaml/yamls/adapter/yamls_sequence.rb +20 -0
- data/lib/lutaml/yamls/adapter/yamls_sequence_rule.rb +48 -0
- data/lib/lutaml/yamls/adapter.rb +15 -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/geolexica_v2_concept.rb +136 -0
- data/spec/fixtures/geolexica_v2_sample.yaml +36 -0
- data/spec/fixtures/geolexica_v2_sample2.yaml +38 -0
- 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/fixtures/yamls_range_concept.rb +139 -0
- 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 +436 -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/model/yamls_range_spec.rb +393 -0
- data/spec/lutaml/model/yamls_sequence_spec.rb +245 -0
- 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 +69 -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 +1475 -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/standard_adapter.rb +0 -34
- 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,1531 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Missing Values Handling
|
|
3
|
+
nav_order: 10
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
= Handling missing values
|
|
7
|
+
:toc:
|
|
8
|
+
:toclevels: 3
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
=== General
|
|
12
|
+
|
|
13
|
+
Different information models define different primitive value types,
|
|
14
|
+
and the same goes for the notions of the "missing values" family:
|
|
15
|
+
|
|
16
|
+
the empty value:: the value is present but empty
|
|
17
|
+
the non-existent value:: the value is not present
|
|
18
|
+
the undefined value:: the value is not defined
|
|
19
|
+
|
|
20
|
+
There are also different ways to represent these missing values
|
|
21
|
+
when the attribute accepts a single value or a collection of values.
|
|
22
|
+
|
|
23
|
+
.Support of missing value types in different technologies
|
|
24
|
+
|===
|
|
25
|
+
| Technology | Missing value type | Realized as
|
|
26
|
+
|
|
27
|
+
.3+| Lutaml::Model
|
|
28
|
+
| empty value | Ruby empty string (`""`)
|
|
29
|
+
| non-existent value | Ruby `NilClass` (`nil`)
|
|
30
|
+
| undefined value | `class Uninitialized`
|
|
31
|
+
|
|
32
|
+
.3+| XML element
|
|
33
|
+
| empty value | XML blank element: `<status></status>` or `<status/>`
|
|
34
|
+
| non-existent value | XML blank element with attribute `xsi:nil`: `<status xsi:nil="true"/>`
|
|
35
|
+
| undefined value | the XML element is omitted
|
|
36
|
+
|
|
37
|
+
.3+| XML attribute
|
|
38
|
+
| empty value | XML blank attribute: `status=""`
|
|
39
|
+
| non-existent value | the XML attribute is omitted
|
|
40
|
+
| undefined value | the XML attribute is omitted
|
|
41
|
+
|
|
42
|
+
.3+| JSON
|
|
43
|
+
| empty value | JSON empty string (`""`)
|
|
44
|
+
| non-existent value | JSON `null` value
|
|
45
|
+
| undefined value | the JSON key is omitted
|
|
46
|
+
|
|
47
|
+
.3+| TOML
|
|
48
|
+
| empty value | TOML empty string
|
|
49
|
+
| non-existent value | the TOML key is omitted since TOML does not support the concept of null.
|
|
50
|
+
| undefined value | the TOML key is omitted
|
|
51
|
+
|
|
52
|
+
|===
|
|
53
|
+
|
|
54
|
+
NOTE: The `Uninitialized` class is a special Lutaml::Model construct, it is not
|
|
55
|
+
supported by normal Ruby objects.
|
|
56
|
+
|
|
57
|
+
The challenge for the developer is how to represent fully compatible semantics
|
|
58
|
+
using interoperable data models across different technologies.
|
|
59
|
+
|
|
60
|
+
Lutaml::Model provides you with several mechanisms to retain the missing values
|
|
61
|
+
semantics. An example mapping is shown in the following diagram.
|
|
62
|
+
|
|
63
|
+
.Mapping of missing value types between Lutaml::Model and YAML
|
|
64
|
+
[source]
|
|
65
|
+
----
|
|
66
|
+
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
67
|
+
│ ╔════════════════════════╗ ╔════════════════════════╗ │
|
|
68
|
+
│ ║ Lutaml::Model Values ║ ║ YAML Values ║ │
|
|
69
|
+
│ ╠════════════════════════╣ ╠════════════════════════╣ │
|
|
70
|
+
│ ║ ║ mapping ║ ║ │
|
|
71
|
+
│ ║ "empty" ║◀──────────────────▶║ "empty" ║ │
|
|
72
|
+
│ ║ (empty string, []) ║ to empty ║ (empty string, []) ║ │
|
|
73
|
+
│ ║ ║ ║ ║ │
|
|
74
|
+
│ ╟────────────────────────╢ ╟────────────────────────╢ │
|
|
75
|
+
│ ║ ║ mapping ║ ║ │
|
|
76
|
+
│ ║ "non-existent" ║◀──────────────────▶║ "non-existent" ║ │
|
|
77
|
+
│ ║ (nil) ║ to non-existent ║ (null) ║ │
|
|
78
|
+
│ ║ ║ ║ ║ │
|
|
79
|
+
│ ╟────────────────────────╢ ╟────────────────────────╢ │
|
|
80
|
+
│ ║ ║ mapping ║ ║ │
|
|
81
|
+
│ ║ "undefined" ║◀──────────────────▶║ "undefined" ║ │
|
|
82
|
+
│ ║ (uninitialized) ║ to undefined ║ (key omitted) ║ │
|
|
83
|
+
│ ║ ║ ║ ║ │
|
|
84
|
+
│ ╚════════════════════════╝ ╚════════════════════════╝ │
|
|
85
|
+
└─────────────────────────────────────────────────────────────────────────────┘
|
|
86
|
+
----
|
|
87
|
+
|
|
88
|
+
In the case where the interoperating technologies do not support the full spectrum
|
|
89
|
+
of missing value types, it is necessary for the developer to understand any
|
|
90
|
+
such behavior and relevant handling.
|
|
91
|
+
|
|
92
|
+
.Mapping of missing value types between Lutaml::Model and TOML
|
|
93
|
+
[source]
|
|
94
|
+
----
|
|
95
|
+
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
96
|
+
│ ╔════════════════════════╗ ╔════════════════════════╗ │
|
|
97
|
+
│ ║ Lutaml::Model Values ║ ║ TOML Values ║ │
|
|
98
|
+
│ ╠════════════════════════╣ ╠════════════════════════╣ │
|
|
99
|
+
│ ║ ║ mapping ║ ║ │
|
|
100
|
+
│ ║ "empty" ║◀──────────────────▶║ "empty" ║ │
|
|
101
|
+
│ ║ (empty string, []) ║ to empty ║ (empty string, []) ║ │
|
|
102
|
+
│ ║ ║ ║ ║ │
|
|
103
|
+
│ ╟────────────────────────╢ ╟────────────────────────╢ │
|
|
104
|
+
│ ║ ║ mapping ║ ║ │
|
|
105
|
+
│ ║ "non-existent" ║◀──────────────────▶║ ║ │
|
|
106
|
+
│ ║ (nil) ║ to undefined ║ "undefined" ║ │
|
|
107
|
+
│ ║ ║ ║ (key omitted) ║ │
|
|
108
|
+
│ ╟────────────────────────╢ ║ ║ │
|
|
109
|
+
│ ║ ║ mapping ║ ║ │
|
|
110
|
+
│ ║ "undefined" ║─────(one-way)─────▶║ TOML does not ║ │
|
|
111
|
+
│ ║ (uninitialized) ║ to undefined ║ support NULL ║ │
|
|
112
|
+
│ ║ ║ ║ ║ │
|
|
113
|
+
│ ╚════════════════════════╝ ╚════════════════════════╝ │
|
|
114
|
+
└─────────────────────────────────────────────────────────────────────────────┘
|
|
115
|
+
----
|
|
116
|
+
|
|
117
|
+
There are the following additional challenges that a developer must take into account of:
|
|
118
|
+
|
|
119
|
+
* Single attribute value vs collection attribute value. Different technologies
|
|
120
|
+
treat single/collection values differently.
|
|
121
|
+
|
|
122
|
+
* External schemas and systems that interoperate with serializations from
|
|
123
|
+
Lutaml::Model. Many schemas and systems adopt "different" conventions for
|
|
124
|
+
representing missing value semantics (sometimes very awkward ones).
|
|
125
|
+
|
|
126
|
+
The solution for the first challenge is to understand the behavior of the
|
|
127
|
+
different technologies used. The default mappings are described in <<value_representation_in_lutaml-model>>
|
|
128
|
+
and <<value_representation_in_serialization_formats>>.
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
[[value_representation_in_lutaml-model]]
|
|
132
|
+
=== Value representation in Lutaml::Model
|
|
133
|
+
|
|
134
|
+
The following table summarizes the behavior of the Lutaml::Model
|
|
135
|
+
in regards of the "missing values" family.
|
|
136
|
+
|
|
137
|
+
.Handling of missing value types in Lutaml::Model data types
|
|
138
|
+
[cols="1,1,2,2"]
|
|
139
|
+
|===
|
|
140
|
+
| LutaML value type | Cardinality (1 or n) | Missing value type | Ruby value
|
|
141
|
+
|
|
142
|
+
.3+| Collection attribute
|
|
143
|
+
.3+| collection
|
|
144
|
+
| empty value | `[]` (Array)
|
|
145
|
+
| non-existent value | `nil` (NilClass)
|
|
146
|
+
| undefined value | No assigned value
|
|
147
|
+
|
|
148
|
+
.3+| `:string`
|
|
149
|
+
.3+| single
|
|
150
|
+
| empty value | `""` (String)
|
|
151
|
+
| non-existent value | `nil` (NilClass)
|
|
152
|
+
| undefined value | No assigned value
|
|
153
|
+
|
|
154
|
+
.3+| `:integer`
|
|
155
|
+
.3+| single
|
|
156
|
+
| empty value | N/A
|
|
157
|
+
| non-existent value | `nil` (NilClass)
|
|
158
|
+
| undefined value | No assigned value
|
|
159
|
+
|
|
160
|
+
.3+| `:float`
|
|
161
|
+
.3+| single
|
|
162
|
+
| empty value | N/A
|
|
163
|
+
| non-existent value | `nil` (NilClass)
|
|
164
|
+
| undefined value | No assigned value
|
|
165
|
+
|
|
166
|
+
.3+| `:boolean`
|
|
167
|
+
.3+| single
|
|
168
|
+
| empty value | N/A
|
|
169
|
+
| non-existent value | `nil` (NilClass)
|
|
170
|
+
| undefined value | No assigned value
|
|
171
|
+
|
|
172
|
+
.3+| `:date`
|
|
173
|
+
.3+| single
|
|
174
|
+
| empty value | N/A
|
|
175
|
+
| non-existent value | `nil` (NilClass)
|
|
176
|
+
| undefined value | No assigned value
|
|
177
|
+
|
|
178
|
+
.3+| `:time_without_date`
|
|
179
|
+
.3+| single
|
|
180
|
+
| empty value | N/A
|
|
181
|
+
| non-existent value | `nil` (NilClass)
|
|
182
|
+
| undefined value | No assigned value
|
|
183
|
+
|
|
184
|
+
.3+| `:date_time`
|
|
185
|
+
.3+| single
|
|
186
|
+
| empty value | N/A
|
|
187
|
+
| non-existent value | `nil` (NilClass)
|
|
188
|
+
| undefined value | No assigned value
|
|
189
|
+
|
|
190
|
+
.3+| `:time`
|
|
191
|
+
.3+| single
|
|
192
|
+
| empty value | N/A
|
|
193
|
+
| non-existent value | `nil` (NilClass)
|
|
194
|
+
| undefined value | No assigned value
|
|
195
|
+
|
|
196
|
+
.3+| `:decimal`
|
|
197
|
+
.3+| single
|
|
198
|
+
| empty value | N/A
|
|
199
|
+
| non-existent value | `nil` (NilClass)
|
|
200
|
+
| undefined value | No assigned value
|
|
201
|
+
|
|
202
|
+
.3+| `:hash`
|
|
203
|
+
.3+| single
|
|
204
|
+
| empty value | `{}` (Hash)
|
|
205
|
+
| non-existent value | `nil` (NilClass)
|
|
206
|
+
| undefined value | No assigned value
|
|
207
|
+
|
|
208
|
+
|===
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
[[value_representation_in_serialization_formats]]
|
|
212
|
+
=== Value representation in serialization formats
|
|
213
|
+
|
|
214
|
+
Every serialization format uses a different information model to represent
|
|
215
|
+
these missing values.
|
|
216
|
+
|
|
217
|
+
Some serialization formats support all 3 types of missing values,
|
|
218
|
+
while others only support a subset of them.
|
|
219
|
+
|
|
220
|
+
.Varied handling of missing values in supported serialization formats
|
|
221
|
+
|===
|
|
222
|
+
| Serialization format | Cardinality (1 or n) | Missing value type | Example
|
|
223
|
+
|
|
224
|
+
.6+| XML
|
|
225
|
+
.3+| collection
|
|
226
|
+
| empty collection | the XML blank element: `<status></status>` or `<status/>`
|
|
227
|
+
| non-existent collection | a blank element with attribute `xsi:nil`: `<status xsi:nil="true"/>`
|
|
228
|
+
| undefined collection | the XML element is omitted
|
|
229
|
+
.3+| single
|
|
230
|
+
| empty value | the XML blank element: `<status></status>` or `<status/>`
|
|
231
|
+
| non-existent value | a blank element with attribute `xsi:nil`: `<status xsi:nil="true"/>`
|
|
232
|
+
| undefined value | the XML element is omitted
|
|
233
|
+
|
|
234
|
+
.6+| JSON
|
|
235
|
+
.3+| collection
|
|
236
|
+
| empty collection | an empty array (`[]`)
|
|
237
|
+
| non-existent collection | the value `null`
|
|
238
|
+
| undefined collection | the key is omitted
|
|
239
|
+
.3+| single
|
|
240
|
+
| empty value | an empty string (`""`)
|
|
241
|
+
| non-existent value | the value `null`
|
|
242
|
+
| undefined value | the key is omitted
|
|
243
|
+
|
|
244
|
+
.6+| YAML
|
|
245
|
+
.3+| collection
|
|
246
|
+
| empty collection | an empty array (`[]`)
|
|
247
|
+
| non-existent collection | the value `null`
|
|
248
|
+
| undefined collection | the key is omitted
|
|
249
|
+
.3+| single
|
|
250
|
+
| empty value | an empty string (`""`)
|
|
251
|
+
| non-existent value | the value `null`
|
|
252
|
+
| undefined value | the key is omitted
|
|
253
|
+
|
|
254
|
+
.6+| TOML
|
|
255
|
+
.3+| collection
|
|
256
|
+
| empty collection | an empty array (`[]`)
|
|
257
|
+
| non-existent collection | TOML does not support the concept of "null"
|
|
258
|
+
| undefined collection | the key is omitted
|
|
259
|
+
.3+| single
|
|
260
|
+
| empty value | an empty string (`""`)
|
|
261
|
+
| non-existent value | TOML does not support the concept of "null"
|
|
262
|
+
| undefined value | the key is omitted
|
|
263
|
+
|
|
264
|
+
|===
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
=== Missing value mapping
|
|
268
|
+
|
|
269
|
+
==== General
|
|
270
|
+
|
|
271
|
+
Lutaml::Model provides a comprehensive way to handle the missing values family
|
|
272
|
+
across different serialization formats.
|
|
273
|
+
|
|
274
|
+
The `value_map` option as applied to serialization mapping rules allow users to
|
|
275
|
+
meticulously define how each and every missing value should be mapped from a
|
|
276
|
+
serialization format to a Lutaml::Model object.
|
|
277
|
+
|
|
278
|
+
The `value_map` option is used to define mappings for both `from` and `to` values:
|
|
279
|
+
|
|
280
|
+
`from` pairs::
|
|
281
|
+
A hash of key-value pairs that determines the mapping of a missing value at the serialization format
|
|
282
|
+
("from") to a LutaML Model missing value where this mapping applies.
|
|
283
|
+
The key is the missing value type in the serialization format, and the value is
|
|
284
|
+
the missing value type in the LutaML Model.
|
|
285
|
+
+
|
|
286
|
+
NOTE: In other words, used when converting the serialized format into a
|
|
287
|
+
Lutaml::Model Ruby object.
|
|
288
|
+
|
|
289
|
+
`to` pairs::
|
|
290
|
+
A hash of key-value pairs that determines the mapping of a LutaML Model ("to") missing
|
|
291
|
+
to a missing value choice at the serialization format where this mapping applies.
|
|
292
|
+
The key is the missing value type in the LutaML Model, and the value is the
|
|
293
|
+
missing value type in the serialization format.
|
|
294
|
+
+
|
|
295
|
+
NOTE: In other words, used when converting a Lutaml::Model Ruby object into the
|
|
296
|
+
serialized format.
|
|
297
|
+
|
|
298
|
+
Syntax:
|
|
299
|
+
|
|
300
|
+
[source,ruby]
|
|
301
|
+
----
|
|
302
|
+
{map_command} 'format-key', to: :attribute_name, value_map: { <1>
|
|
303
|
+
from: {
|
|
304
|
+
{format-missing-value-n}: {model-missing-value-n}, <2>
|
|
305
|
+
{format-missing-value-m}: {model-missing-value-m},
|
|
306
|
+
{format-missing-value-o}: {model-missing-value-o}
|
|
307
|
+
},
|
|
308
|
+
to: {
|
|
309
|
+
{model-missing-value-n}: {format-missing-value-n}, <3>
|
|
310
|
+
{model-missing-value-m}: {format-missing-value-m},
|
|
311
|
+
{model-missing-value-o}: {format-missing-value-o}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
----
|
|
315
|
+
<1> The `{map_command}` is a mapping rule with the actual command depending on
|
|
316
|
+
the serialization format.
|
|
317
|
+
<2> In the `from` mapping, the keys are the missing value types in the
|
|
318
|
+
serialization format.
|
|
319
|
+
<3> In the `to` mapping, the keys are the missing value types in the LutaML
|
|
320
|
+
Model.
|
|
321
|
+
|
|
322
|
+
The missing value type mapping differs per serialization format,
|
|
323
|
+
as serialization formats may not fully support all missing value types.
|
|
324
|
+
|
|
325
|
+
The availability of `from` and `to` keys and values depend on the types of
|
|
326
|
+
missing values supported by that particular serialization format.
|
|
327
|
+
|
|
328
|
+
The available values for `from` and `to` for serialization formats
|
|
329
|
+
are presented below, where the allowed values are to be used in the direction
|
|
330
|
+
of the format. That means if the format supports `:empty`, it can be used
|
|
331
|
+
as a key in `from:` direction, and the value in the `to:` direction (see `{format-missing-value-n}`) in the syntax.
|
|
332
|
+
|
|
333
|
+
.Available missing value types in different mapping commands
|
|
334
|
+
[cols="a,2a"]
|
|
335
|
+
|===
|
|
336
|
+
| Map command | Missing value types available (key in `from:` direction, value in the `to:` direction)
|
|
337
|
+
|
|
338
|
+
| XML element `map_element` | `:empty`, `:omitted`, `:nil`
|
|
339
|
+
| XML attribute `map_attribute` | `:empty`, `:omitted`
|
|
340
|
+
| Hash `map`, `map_content` | `:empty`, `:omitted`, `:nil`
|
|
341
|
+
| JSON `map`, `map_content` | `:empty`, `:omitted`, `:nil`
|
|
342
|
+
| YAML `map`, `map_content` | `:empty`, `:omitted`, `:nil`
|
|
343
|
+
| TOML `map`, `map_content` | `:empty`, `:omitted`
|
|
344
|
+
|
|
345
|
+
|===
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
[example]
|
|
349
|
+
For instance, TOML does not support the notion of "null" and therefore the
|
|
350
|
+
missing value type of `nil` cannot be used; therefore in a `from:`
|
|
351
|
+
value map, it is not possible to indicate `nil: {model-missing-value}`.
|
|
352
|
+
|
|
353
|
+
[example]
|
|
354
|
+
====
|
|
355
|
+
In an XML mapping block, it is possible to do the following.
|
|
356
|
+
|
|
357
|
+
[source,ruby]
|
|
358
|
+
----
|
|
359
|
+
xml do
|
|
360
|
+
map_element 'status', to: :status, value_map: {
|
|
361
|
+
from: { empty: :nil, omitted: :omitted, nil: :nil },
|
|
362
|
+
to: { empty: :nil, omitted: :omitted, nil: :nil }
|
|
363
|
+
}
|
|
364
|
+
end
|
|
365
|
+
----
|
|
366
|
+
====
|
|
367
|
+
|
|
368
|
+
Each serialization format has specific behavior when handling values
|
|
369
|
+
such as `empty`, `omitted`, and `nil`.
|
|
370
|
+
|
|
371
|
+
Users can specify the mapping for both `from` and `to` values using the
|
|
372
|
+
`value_map` option in the attribute definition.
|
|
373
|
+
|
|
374
|
+
* The keys that can be used in the `from` and `to` mappings are `empty`,
|
|
375
|
+
`omitted`, and `nil`.
|
|
376
|
+
|
|
377
|
+
* The values in the mappings can also be `empty`, `omitted`, and `nil`.
|
|
378
|
+
|
|
379
|
+
`empty`::
|
|
380
|
+
The `:empty` key is **context-aware**: for scalar attributes, it represents an
|
|
381
|
+
empty value (e.g., empty string `""`). For collection attributes, it represents
|
|
382
|
+
an empty collection (e.g., empty array `[]`). The attribute type determines the
|
|
383
|
+
semantic meaning automatically — no separate key is needed.
|
|
384
|
+
|
|
385
|
+
IMPORTANT: When both DSL options (`render_nil`, `render_empty`) and `value_map`
|
|
386
|
+
entries are provided on the same mapping rule, the **DSL options take
|
|
387
|
+
precedence**. For example, given `render_empty: false` (the default) and
|
|
388
|
+
`value_map: { to: { empty: :empty } }`, the `render_empty: false` wins and empty
|
|
389
|
+
values are omitted. This ensures that the explicit DSL intent is never silently
|
|
390
|
+
overridden by a `value_map` entry.
|
|
391
|
+
|
|
392
|
+
NOTE: Since `nil` is not supported in TOML, so mappings like `nil:
|
|
393
|
+
{any_option}` or `{any_option}: :nil` will not work in TOML.
|
|
394
|
+
|
|
395
|
+
NOTE: In a collection attribute, the values of `value_map` also depend on the
|
|
396
|
+
`initialize_empty` setting, where an omitted value in the serialization format can still lead to a `nil`
|
|
397
|
+
or an empty array `[]` at the attribute-level (instead of the mapping-level).
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
==== Default value maps for serialization formats
|
|
402
|
+
|
|
403
|
+
The table below describes the default `value_map` configurations for supported
|
|
404
|
+
serialization formats.
|
|
405
|
+
|
|
406
|
+
// TODO: Find a place to write this
|
|
407
|
+
// XML Handling::
|
|
408
|
+
// - `<status>new</status>` will be treated as `["new"]`.
|
|
409
|
+
// - `<status>new</status><status>assigned</status>` will be treated as `["new", "assigned"]`.
|
|
410
|
+
|
|
411
|
+
===== Default value map for XML element (single attribute)
|
|
412
|
+
|
|
413
|
+
[source,ruby]
|
|
414
|
+
----
|
|
415
|
+
attribute :attr, :string
|
|
416
|
+
|
|
417
|
+
xml do
|
|
418
|
+
map_element 'key', to: :attr, value_map: {
|
|
419
|
+
from: { empty: :nil, omitted: :omitted, nil: :nil },
|
|
420
|
+
to: { empty: :empty, omitted: :omitted, nil: :nil }
|
|
421
|
+
}
|
|
422
|
+
end
|
|
423
|
+
----
|
|
424
|
+
|
|
425
|
+
.Default missing value mapping configuration for single attributes in XML elements
|
|
426
|
+
[cols="a,a,a,a"]
|
|
427
|
+
|===
|
|
428
|
+
|
|
429
|
+
h| Direction h| Map rule h| XML source h| Model target
|
|
430
|
+
|
|
431
|
+
.3+|`from:`
|
|
432
|
+
| `empty: :nil`
|
|
433
|
+
| blank XML element (`<status/>`)
|
|
434
|
+
| `nil`
|
|
435
|
+
|
|
436
|
+
| `omitted: :omitted`
|
|
437
|
+
| absent XML element
|
|
438
|
+
| omitted from the model
|
|
439
|
+
|
|
440
|
+
| `nil: :nil`
|
|
441
|
+
| blank XML element with attribute `xsi:nil` (`<status xsi:nil=true/>`)
|
|
442
|
+
| `nil` value in the model
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
h| Direction h| Map rule h| Model source h| XML target
|
|
446
|
+
|
|
447
|
+
.3+|`to:`
|
|
448
|
+
| `empty: :empty`
|
|
449
|
+
| empty string (`""`)
|
|
450
|
+
| blank XML element
|
|
451
|
+
|
|
452
|
+
| `omitted: :omitted`
|
|
453
|
+
| omitted in the model
|
|
454
|
+
| XML element not rendered
|
|
455
|
+
|
|
456
|
+
| `nil: :nil`
|
|
457
|
+
| `nil` value in the model
|
|
458
|
+
| blank XML element with attribute `xsi:nil` (`<status xsi:nil=true/>`)
|
|
459
|
+
|
|
460
|
+
|===
|
|
461
|
+
|
|
462
|
+
===== Default value map for XML element (collection attribute)
|
|
463
|
+
|
|
464
|
+
[source,ruby]
|
|
465
|
+
----
|
|
466
|
+
attribute :attr, :string, collection: true
|
|
467
|
+
|
|
468
|
+
xml do
|
|
469
|
+
map_element 'key', to: :attr, value_map: {
|
|
470
|
+
from: { empty: :empty, omitted: :omitted, nil: :nil },
|
|
471
|
+
to: { empty: :empty, omitted: :omitted, nil: :nil }
|
|
472
|
+
}
|
|
473
|
+
end
|
|
474
|
+
----
|
|
475
|
+
|
|
476
|
+
.Default missing value mapping configuration for collection attributes in XML elements
|
|
477
|
+
[cols="a,a,a,a"]
|
|
478
|
+
|===
|
|
479
|
+
|
|
480
|
+
h| Direction h| Map rule h| XML source h| Model target
|
|
481
|
+
|
|
482
|
+
.3+|`from:`
|
|
483
|
+
| `empty: :empty`
|
|
484
|
+
| blank XML element (`<status/>`)
|
|
485
|
+
| empty array (`[]`)
|
|
486
|
+
|
|
487
|
+
| `omitted: :omitted`
|
|
488
|
+
| absent XML element
|
|
489
|
+
| omitted from the model
|
|
490
|
+
|
|
491
|
+
| `nil: :nil`
|
|
492
|
+
| blank XML element with attribute `xsi:nil` (`<status xsi:nil=true/>`)
|
|
493
|
+
| `nil` value in the model
|
|
494
|
+
|
|
495
|
+
|
|
496
|
+
h| Direction h| Map rule h| Model source h| XML target
|
|
497
|
+
|
|
498
|
+
.3+|`to:`
|
|
499
|
+
| `empty: :empty`
|
|
500
|
+
| empty array (`[]`)
|
|
501
|
+
| no child elements rendered (empty container)
|
|
502
|
+
|
|
503
|
+
| `omitted: :omitted`
|
|
504
|
+
| omitted in the model
|
|
505
|
+
| XML element not rendered
|
|
506
|
+
|
|
507
|
+
| `nil: :nil`
|
|
508
|
+
| `nil` value in the model
|
|
509
|
+
| blank XML element with attribute `xsi:nil` (`<status xsi:nil=true/>`)
|
|
510
|
+
|
|
511
|
+
|===
|
|
512
|
+
|
|
513
|
+
===== Default value map for XML attribute (single attribute)
|
|
514
|
+
|
|
515
|
+
[source,ruby]
|
|
516
|
+
----
|
|
517
|
+
attribute :attr, :string
|
|
518
|
+
|
|
519
|
+
xml do
|
|
520
|
+
map_attribute 'attr_name', to: :attr, value_map: {
|
|
521
|
+
from: { empty: :nil, omitted: :omitted },
|
|
522
|
+
to: { empty: :empty, nil: :empty, omitted: :omitted }
|
|
523
|
+
}
|
|
524
|
+
end
|
|
525
|
+
----
|
|
526
|
+
|
|
527
|
+
.Default missing value mapping configuration for single attributes in XML attributes
|
|
528
|
+
[cols="a,a,a,a"]
|
|
529
|
+
|===
|
|
530
|
+
|
|
531
|
+
h| Direction h| Map rule h| XML source h| Model target
|
|
532
|
+
|
|
533
|
+
.2+|`from:` (source only supports `empty` and `omitted`)
|
|
534
|
+
| `empty: :nil`
|
|
535
|
+
| blank XML attribute (`status=""`)
|
|
536
|
+
| `nil`
|
|
537
|
+
|
|
538
|
+
| `omitted: :omitted`
|
|
539
|
+
| absent XML attribute
|
|
540
|
+
| omitted from the model
|
|
541
|
+
|
|
542
|
+
h| Direction h| Map rule h| Model source h| XML target
|
|
543
|
+
|
|
544
|
+
.3+|`to:` (target only accepts `empty` and `omitted`)
|
|
545
|
+
| `empty: :empty`
|
|
546
|
+
| empty string (`""`)
|
|
547
|
+
| blank XML attribute (`status=""`)
|
|
548
|
+
|
|
549
|
+
| `omitted: :omitted`
|
|
550
|
+
| omitted in the model
|
|
551
|
+
| XML attribute not rendered
|
|
552
|
+
|
|
553
|
+
| `nil: :empty`
|
|
554
|
+
| `nil`
|
|
555
|
+
| blank XML attribute (`status=""`)
|
|
556
|
+
|
|
557
|
+
|===
|
|
558
|
+
|
|
559
|
+
===== Default value map for XML attribute (collection attribute)
|
|
560
|
+
|
|
561
|
+
[source,ruby]
|
|
562
|
+
----
|
|
563
|
+
attribute :attr, :string, collection: true
|
|
564
|
+
|
|
565
|
+
xml do
|
|
566
|
+
map_attribute 'attr_name', to: :attr, value_map: {
|
|
567
|
+
from: { empty: :empty, omitted: :omitted },
|
|
568
|
+
to: { empty: :empty, nil: :omitted, omitted: :omitted }
|
|
569
|
+
}
|
|
570
|
+
end
|
|
571
|
+
----
|
|
572
|
+
|
|
573
|
+
.Default missing value mapping configuration for collection attributes in XML attributes
|
|
574
|
+
[cols="a,a,a,a"]
|
|
575
|
+
|===
|
|
576
|
+
|
|
577
|
+
h| Direction h| Map rule h| XML source h| Model target
|
|
578
|
+
|
|
579
|
+
.2+|`from:` (source only supports `empty` and `omitted`)
|
|
580
|
+
| `empty: :empty`
|
|
581
|
+
| blank XML attribute (`status=""`)
|
|
582
|
+
| empty array (`[]`)
|
|
583
|
+
|
|
584
|
+
| `omitted: :omitted`
|
|
585
|
+
| absent XML attribute
|
|
586
|
+
| omitted from the model
|
|
587
|
+
|
|
588
|
+
h| Direction h| Map rule h| Model source h| XML target
|
|
589
|
+
|
|
590
|
+
.3+|`to:` (target only accepts `empty` and `omitted`)
|
|
591
|
+
| `empty: :empty`
|
|
592
|
+
| empty array (`[]`)
|
|
593
|
+
| XML attribute rendered as empty string
|
|
594
|
+
|
|
595
|
+
| `omitted: :omitted`
|
|
596
|
+
| omitted in the model
|
|
597
|
+
| XML attribute not rendered
|
|
598
|
+
|
|
599
|
+
| `nil: :omitted`
|
|
600
|
+
| `nil`
|
|
601
|
+
| XML attribute not rendered
|
|
602
|
+
|
|
603
|
+
|===
|
|
604
|
+
|
|
605
|
+
|
|
606
|
+
|
|
607
|
+
===== Default value map for YAML (single attribute)
|
|
608
|
+
|
|
609
|
+
[source,ruby]
|
|
610
|
+
----
|
|
611
|
+
attribute :attr, :string
|
|
612
|
+
|
|
613
|
+
yaml do
|
|
614
|
+
map 'key', to: :attr, value_map: {
|
|
615
|
+
from: { empty: :empty, omitted: :omitted, nil: :nil },
|
|
616
|
+
to: { empty: :empty, omitted: :omitted, nil: :nil }
|
|
617
|
+
}
|
|
618
|
+
end
|
|
619
|
+
----
|
|
620
|
+
|
|
621
|
+
.Default missing value mapping configuration for single attributes in YAML
|
|
622
|
+
[cols="a,a,a,a"]
|
|
623
|
+
|===
|
|
624
|
+
|
|
625
|
+
h| Direction h| Map rule h| XML source h| Model target
|
|
626
|
+
|
|
627
|
+
.3+|`from:`
|
|
628
|
+
| `empty: :empty`
|
|
629
|
+
| empty string in YAML (`status:` or `status: ""`)
|
|
630
|
+
| empty string (`""`)
|
|
631
|
+
|
|
632
|
+
| `omitted: :omitted`
|
|
633
|
+
| absent YAML key
|
|
634
|
+
| omitted from the model
|
|
635
|
+
|
|
636
|
+
| `nil: :nil`
|
|
637
|
+
| YAML `null`
|
|
638
|
+
| `nil`
|
|
639
|
+
|
|
640
|
+
h| Direction h| Map rule h| Model source h| XML target
|
|
641
|
+
|
|
642
|
+
.3+|`to:`
|
|
643
|
+
| `empty: :empty`
|
|
644
|
+
| empty string (`""`)
|
|
645
|
+
| empty string in YAML (`status:`)
|
|
646
|
+
|
|
647
|
+
| `omitted: :omitted`
|
|
648
|
+
| omitted in the model
|
|
649
|
+
| YAML key omitted
|
|
650
|
+
|
|
651
|
+
| `nil: :nil`
|
|
652
|
+
| `nil`
|
|
653
|
+
| YAML `null`
|
|
654
|
+
|
|
655
|
+
|===
|
|
656
|
+
|
|
657
|
+
NOTE: In order to treat a YAML value like `status: ''` to `nil`, the mapping of
|
|
658
|
+
`value_map: { from: { empty: :nil } }` can be applied.
|
|
659
|
+
|
|
660
|
+
|
|
661
|
+
===== Default value map for YAML (collection attribute)
|
|
662
|
+
|
|
663
|
+
[source,ruby]
|
|
664
|
+
----
|
|
665
|
+
attribute :attr, :string, collection: true
|
|
666
|
+
|
|
667
|
+
yaml do
|
|
668
|
+
map 'key', to: :attr, value_map: {
|
|
669
|
+
from: { empty: :empty, omitted: :omitted, nil: :nil },
|
|
670
|
+
to: { empty: :empty, omitted: :omitted, nil: :nil }
|
|
671
|
+
}
|
|
672
|
+
end
|
|
673
|
+
----
|
|
674
|
+
|
|
675
|
+
.Default missing value mapping configuration for collection attributes in YAML
|
|
676
|
+
[cols="a,a,a,a"]
|
|
677
|
+
|===
|
|
678
|
+
|
|
679
|
+
h| Direction h| Map rule h| YAML source h| Model target
|
|
680
|
+
|
|
681
|
+
.3+|`from:`
|
|
682
|
+
| `empty: :empty`
|
|
683
|
+
| empty YAML array (`status:` or `status: []`)
|
|
684
|
+
| empty array (`[]`)
|
|
685
|
+
|
|
686
|
+
| `omitted: :omitted`
|
|
687
|
+
| absent YAML key
|
|
688
|
+
| omitted from the model
|
|
689
|
+
|
|
690
|
+
| `nil: :nil`
|
|
691
|
+
| YAML `null`
|
|
692
|
+
| `nil`
|
|
693
|
+
|
|
694
|
+
h| Direction h| Map rule h| Model source h| YAML target
|
|
695
|
+
|
|
696
|
+
.3+|`to:`
|
|
697
|
+
| `empty: :empty`
|
|
698
|
+
| empty array (`[]`)
|
|
699
|
+
| YAML key rendered with empty array
|
|
700
|
+
|
|
701
|
+
| `omitted: :omitted`
|
|
702
|
+
| omitted in the model
|
|
703
|
+
| YAML key omitted
|
|
704
|
+
|
|
705
|
+
| `nil: :nil`
|
|
706
|
+
| `nil`
|
|
707
|
+
| YAML `null`
|
|
708
|
+
|
|
709
|
+
|===
|
|
710
|
+
|
|
711
|
+
NOTE: If the YAML key for the collection attribute is omitted, it will be treated
|
|
712
|
+
as `nil` or an empty array depending on the `initialize_empty` setting.
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
===== Default value map for JSON (single attribute)
|
|
716
|
+
|
|
717
|
+
[source,ruby]
|
|
718
|
+
----
|
|
719
|
+
attribute :attr, :string
|
|
720
|
+
|
|
721
|
+
json do
|
|
722
|
+
map 'key', to: :attr, value_map: {
|
|
723
|
+
from: { empty: :empty, omitted: :omitted, nil: :nil },
|
|
724
|
+
to: { empty: :empty, omitted: :omitted, nil: :nil }
|
|
725
|
+
}
|
|
726
|
+
end
|
|
727
|
+
----
|
|
728
|
+
|
|
729
|
+
.Default missing value mapping configuration for single attributes in JSON
|
|
730
|
+
[cols="a,a,a,a"]
|
|
731
|
+
|===
|
|
732
|
+
|
|
733
|
+
h| Direction h| Map rule h| JSON source h| Model target
|
|
734
|
+
|
|
735
|
+
.3+|`from:`
|
|
736
|
+
| `empty: :empty`
|
|
737
|
+
| empty string in JSON (`"status" : ""`)
|
|
738
|
+
| empty string (`""`)
|
|
739
|
+
|
|
740
|
+
| `omitted: :omitted`
|
|
741
|
+
| absent JSON key
|
|
742
|
+
| omitted from the model
|
|
743
|
+
|
|
744
|
+
| `nil: :nil`
|
|
745
|
+
| JSON `null`
|
|
746
|
+
| `nil`
|
|
747
|
+
|
|
748
|
+
h| Direction h| Map rule h| Model source h| JSON target
|
|
749
|
+
|
|
750
|
+
.3+|`to:`
|
|
751
|
+
| `empty: :empty`
|
|
752
|
+
| empty string (`""`)
|
|
753
|
+
| empty string in JSON (`"status" : ""`)
|
|
754
|
+
|
|
755
|
+
| `omitted: :omitted`
|
|
756
|
+
| omitted in the model
|
|
757
|
+
| JSON key omitted
|
|
758
|
+
|
|
759
|
+
| `nil: :nil`
|
|
760
|
+
| `nil`
|
|
761
|
+
| JSON `null`
|
|
762
|
+
|
|
763
|
+
|===
|
|
764
|
+
|
|
765
|
+
|
|
766
|
+
|
|
767
|
+
===== Default value map for JSON (collection attribute)
|
|
768
|
+
|
|
769
|
+
[source,ruby]
|
|
770
|
+
----
|
|
771
|
+
attribute :attr, :string, collection: true
|
|
772
|
+
|
|
773
|
+
json do
|
|
774
|
+
map 'key', to: :attr, value_map: {
|
|
775
|
+
from: { empty: :empty, omitted: :omitted, nil: :nil },
|
|
776
|
+
to: { empty: :empty, omitted: :omitted, nil: :nil }
|
|
777
|
+
}
|
|
778
|
+
end
|
|
779
|
+
----
|
|
780
|
+
|
|
781
|
+
.Default missing value mapping configuration for collection attributes in JSON
|
|
782
|
+
[cols="a,a,a,a"]
|
|
783
|
+
|===
|
|
784
|
+
|
|
785
|
+
h| Direction h| Map rule h| JSON source h| Model target
|
|
786
|
+
|
|
787
|
+
.3+|`from:`
|
|
788
|
+
| `empty: :empty`
|
|
789
|
+
| empty JSON array (`"status": []`)
|
|
790
|
+
| empty array (`[]`)
|
|
791
|
+
|
|
792
|
+
| `omitted: :omitted`
|
|
793
|
+
| absent JSON key
|
|
794
|
+
| omitted from the model
|
|
795
|
+
|
|
796
|
+
| `nil: :nil`
|
|
797
|
+
| JSON `null`
|
|
798
|
+
| `nil`
|
|
799
|
+
|
|
800
|
+
h| Direction h| Map rule h| Model source h| JSON target
|
|
801
|
+
|
|
802
|
+
.3+|`to:`
|
|
803
|
+
| `empty: :empty`
|
|
804
|
+
| empty array (`[]`)
|
|
805
|
+
| JSON key rendered with empty array
|
|
806
|
+
|
|
807
|
+
| `omitted: :omitted`
|
|
808
|
+
| omitted in the model
|
|
809
|
+
| JSON key omitted
|
|
810
|
+
|
|
811
|
+
| `nil: :nil`
|
|
812
|
+
| `nil`
|
|
813
|
+
| JSON `null`
|
|
814
|
+
|
|
815
|
+
|===
|
|
816
|
+
|
|
817
|
+
===== Default value map for TOML (single attribute)
|
|
818
|
+
|
|
819
|
+
TOML does not support the concept of `nil` and therefore the mapping of `from:`
|
|
820
|
+
direction with `nil` to will not work in TOML.
|
|
821
|
+
|
|
822
|
+
The `nil` mapping is only supported in the `to:` direction (model to TOML).
|
|
823
|
+
|
|
824
|
+
[source,ruby]
|
|
825
|
+
----
|
|
826
|
+
attribute :attr, :string
|
|
827
|
+
|
|
828
|
+
toml do
|
|
829
|
+
map 'key', to: :attr, value_map: {
|
|
830
|
+
from: { empty: :empty, omitted: :omitted },
|
|
831
|
+
to: { empty: :empty, omitted: :omitted, nil: :omitted }
|
|
832
|
+
}
|
|
833
|
+
end
|
|
834
|
+
----
|
|
835
|
+
|
|
836
|
+
.Default missing value mapping configuration for single attributes in TOML
|
|
837
|
+
[cols="a,a,a,a"]
|
|
838
|
+
|===
|
|
839
|
+
|
|
840
|
+
h| Direction h| Map rule h| TOML source h| Model target
|
|
841
|
+
|
|
842
|
+
.2+|`from:` (source only supports `empty` and `omitted`)
|
|
843
|
+
| `empty: :empty`
|
|
844
|
+
| empty string in TOML (`[status]` with no value)
|
|
845
|
+
| empty string (`""`)
|
|
846
|
+
|
|
847
|
+
| `omitted: :omitted`
|
|
848
|
+
| absent TOML key
|
|
849
|
+
| omitted from the model
|
|
850
|
+
|
|
851
|
+
h| Direction h| Map rule h| Model source h| TOML target
|
|
852
|
+
|
|
853
|
+
.3+|`to:` (source only supports `empty` and `omitted`)
|
|
854
|
+
| `empty: :empty`
|
|
855
|
+
| empty string (`""`)
|
|
856
|
+
| empty string in TOML (`[status]` with no value)
|
|
857
|
+
|
|
858
|
+
| `omitted: :omitted`
|
|
859
|
+
| omitted in the model
|
|
860
|
+
| TOML key omitted
|
|
861
|
+
|
|
862
|
+
| `nil: :omitted`
|
|
863
|
+
| `nil`
|
|
864
|
+
| TOML key omitted
|
|
865
|
+
|
|
866
|
+
|===
|
|
867
|
+
|
|
868
|
+
|
|
869
|
+
|
|
870
|
+
===== Default value map for TOML (collection attribute)
|
|
871
|
+
|
|
872
|
+
TOML does not support the concept of `nil` and therefore the mapping of `from:`
|
|
873
|
+
direction with `nil` to will not work in TOML.
|
|
874
|
+
|
|
875
|
+
The `nil` mapping is only supported in the `to:` direction (model to TOML).
|
|
876
|
+
|
|
877
|
+
[source,ruby]
|
|
878
|
+
----
|
|
879
|
+
attribute :attr, :string, collection: true
|
|
880
|
+
|
|
881
|
+
toml do
|
|
882
|
+
map 'key', to: :attr, value_map: {
|
|
883
|
+
from: { empty: :empty, omitted: :omitted },
|
|
884
|
+
to: { empty: :empty, omitted: :omitted, nil: :omitted }
|
|
885
|
+
}
|
|
886
|
+
end
|
|
887
|
+
----
|
|
888
|
+
|
|
889
|
+
.Default missing value mapping configuration for collection attributes in TOML
|
|
890
|
+
[cols="a,a,a,a"]
|
|
891
|
+
|===
|
|
892
|
+
|
|
893
|
+
h| Direction h| Map rule h| TOML source h| Model target
|
|
894
|
+
|
|
895
|
+
.2+|`from:` (source only supports `empty` and `omitted`)
|
|
896
|
+
| `empty: :empty`
|
|
897
|
+
| empty TOML array (`[status]` with no value)
|
|
898
|
+
| empty array (`[]`)
|
|
899
|
+
|
|
900
|
+
| `omitted: :omitted`
|
|
901
|
+
| absent TOML key
|
|
902
|
+
| omitted from the model
|
|
903
|
+
|
|
904
|
+
h| Direction h| Map rule h| Model source h| TOML target
|
|
905
|
+
|
|
906
|
+
.3+|`to:` (source only supports `empty` and `omitted`)
|
|
907
|
+
| `empty: :empty`
|
|
908
|
+
| empty array (`[]`)
|
|
909
|
+
| TOML key rendered with empty array
|
|
910
|
+
|
|
911
|
+
| `omitted: :omitted`
|
|
912
|
+
| omitted in the model
|
|
913
|
+
| TOML key omitted
|
|
914
|
+
|
|
915
|
+
| `nil: :omitted`
|
|
916
|
+
| `nil`
|
|
917
|
+
| TOML key omitted
|
|
918
|
+
|
|
919
|
+
|===
|
|
920
|
+
|
|
921
|
+
|
|
922
|
+
|
|
923
|
+
==== Replacing missing values type mapping with `value_map`
|
|
924
|
+
|
|
925
|
+
The `value_map` option can be defined to meticulously map for each serialization
|
|
926
|
+
format as follows.
|
|
927
|
+
|
|
928
|
+
[example]
|
|
929
|
+
====
|
|
930
|
+
.Using `value_map` with `from` and `to` values
|
|
931
|
+
[source,ruby]
|
|
932
|
+
----
|
|
933
|
+
class ExampleClass < Lutaml::Model::Serializable
|
|
934
|
+
attribute :status, :string
|
|
935
|
+
|
|
936
|
+
xml do
|
|
937
|
+
map_element 'status', to: :status, value_map: {
|
|
938
|
+
from: { empty: :nil, omitted: :omitted, nil: :nil },
|
|
939
|
+
to: { empty: :nil, omitted: :omitted, nil: :nil }
|
|
940
|
+
}
|
|
941
|
+
end
|
|
942
|
+
|
|
943
|
+
hsh | json | yaml | toml | key_value do
|
|
944
|
+
map 'status', to: :status, value_map: {
|
|
945
|
+
from: { empty: :nil, omitted: :omitted, nil: :nil },
|
|
946
|
+
to: { empty: :nil, omitted: :omitted, nil: :nil }
|
|
947
|
+
}
|
|
948
|
+
end
|
|
949
|
+
end
|
|
950
|
+
|
|
951
|
+
yaml = <<~YAML
|
|
952
|
+
---
|
|
953
|
+
status: ''
|
|
954
|
+
YAML
|
|
955
|
+
|
|
956
|
+
ExampleClass.from_yaml(yaml)
|
|
957
|
+
# => #<ExampleClass:0x000000011954efb0 @status=nil>
|
|
958
|
+
|
|
959
|
+
yaml1 = <<~YAML
|
|
960
|
+
---
|
|
961
|
+
YAML
|
|
962
|
+
|
|
963
|
+
ExampleClass.from_yaml(yaml1)
|
|
964
|
+
# => #<ExampleClass:0x000000011954efb0 @status=uninitialized>
|
|
965
|
+
|
|
966
|
+
yaml2 = <<~YAML
|
|
967
|
+
---
|
|
968
|
+
status:
|
|
969
|
+
YAML
|
|
970
|
+
|
|
971
|
+
ExampleClass.from_yaml(yaml2)
|
|
972
|
+
# => #<ExampleClass:0x000000011954efb0 @status=nil>
|
|
973
|
+
----
|
|
974
|
+
====
|
|
975
|
+
|
|
976
|
+
|
|
977
|
+
When defining an attribute with `collection: true`, the attribute will behave as follows:
|
|
978
|
+
|
|
979
|
+
[source,ruby]
|
|
980
|
+
----
|
|
981
|
+
attribute :status, :string, collection: true
|
|
982
|
+
----
|
|
983
|
+
|
|
984
|
+
Here's an example of how you can use the `value_map` with a collection attribute.
|
|
985
|
+
|
|
986
|
+
.Using `value_map` with a collection attribute
|
|
987
|
+
[example]
|
|
988
|
+
====
|
|
989
|
+
[source,ruby]
|
|
990
|
+
----
|
|
991
|
+
class ExampleClass < Lutaml::Model::Serializable
|
|
992
|
+
attribute :status, :string, collection: true
|
|
993
|
+
|
|
994
|
+
xml do
|
|
995
|
+
map_element 'status', to: :status, value_map: {
|
|
996
|
+
from: { empty: :nil, omitted: :omitted, nil: :nil },
|
|
997
|
+
to: { empty: :nil, omitted: :omitted, nil: :nil }
|
|
998
|
+
}
|
|
999
|
+
end
|
|
1000
|
+
|
|
1001
|
+
hsh | json | yaml | key_value do
|
|
1002
|
+
map 'status', to: :status, value_map: {
|
|
1003
|
+
from: { empty: :nil, omitted: :omitted, nil: :nil },
|
|
1004
|
+
to: { empty: :nil, omitted: :omitted, nil: :nil }
|
|
1005
|
+
}
|
|
1006
|
+
end
|
|
1007
|
+
|
|
1008
|
+
toml do
|
|
1009
|
+
map 'status', to: :status, value_map: {
|
|
1010
|
+
from: { empty: :nil, omitted: :omitted },
|
|
1011
|
+
to: { empty: :nil, omitted: :omitted, nil: :omitted }
|
|
1012
|
+
}
|
|
1013
|
+
end
|
|
1014
|
+
end
|
|
1015
|
+
|
|
1016
|
+
yaml = <<~YAML
|
|
1017
|
+
---
|
|
1018
|
+
status: ['new', 'assigned']
|
|
1019
|
+
YAML
|
|
1020
|
+
|
|
1021
|
+
y = ExampleClass.from_yaml(yaml)
|
|
1022
|
+
# => #<ExampleClass:0x000000011954efb0 @status=["new", "assigned"]>
|
|
1023
|
+
----
|
|
1024
|
+
====
|
|
1025
|
+
|
|
1026
|
+
// TODO: Need to improve this example.
|
|
1027
|
+
|
|
1028
|
+
=== Specific overrides of value map (`render_*` and `treat_*`)
|
|
1029
|
+
|
|
1030
|
+
==== General
|
|
1031
|
+
|
|
1032
|
+
There are times that one may want to simply override handling of selective missing value types
|
|
1033
|
+
rather than re-define the entire value map.
|
|
1034
|
+
|
|
1035
|
+
The `:render_*` and `:treat_*` options are simple switches that override the default
|
|
1036
|
+
value map provided for the different serialization formats.
|
|
1037
|
+
|
|
1038
|
+
Syntax:
|
|
1039
|
+
|
|
1040
|
+
[source,ruby]
|
|
1041
|
+
----
|
|
1042
|
+
{map_command} 'format-key', to: :attribute_name, <1>
|
|
1043
|
+
:render_{model-value}: :as_{format-value}, <2>
|
|
1044
|
+
# ...
|
|
1045
|
+
:treat_{format-value}: :as_{model-value}, <3>
|
|
1046
|
+
# ...
|
|
1047
|
+
----
|
|
1048
|
+
<1> The `{map_command}` is a mapping rule with the actual command depending on
|
|
1049
|
+
the serialization format. The attribute of `attribute_name` may be a single or a collection value.
|
|
1050
|
+
<2> The `:render_*` mapping overrides the default value map for missing value types in model-to-serialization.
|
|
1051
|
+
<3> The `:treat_*` mapping overrides the default value map for missing value types in serialization-to-model.
|
|
1052
|
+
|
|
1053
|
+
Specifically,
|
|
1054
|
+
|
|
1055
|
+
* The `:render_{model-value}: :as_{format-value}` options are used to override the default behavior of rendering
|
|
1056
|
+
missing value types into the serialization format.
|
|
1057
|
+
`{model-value}`::: specifies the missing value type in the LutaML Model.
|
|
1058
|
+
`{format-value}`::: specifies the missing value type in the serialization format.
|
|
1059
|
+
|
|
1060
|
+
* The `:treat_{format-value}: :as_{model-value}` options are used to override the default behavior of importing
|
|
1061
|
+
missing value types into the model.
|
|
1062
|
+
`{format-value}`::: specifies the missing value type in the serialization format.
|
|
1063
|
+
`{model-value}`::: specifies the missing value type in the LutaML Model.
|
|
1064
|
+
|
|
1065
|
+
In effect, the default `value_map` is overriden by the `:render_*` and `:treat_*`
|
|
1066
|
+
directives.
|
|
1067
|
+
|
|
1068
|
+
[example]
|
|
1069
|
+
====
|
|
1070
|
+
Given the default mapping for an XML element, the `:render_*` and `:treat_*`
|
|
1071
|
+
options can be used to selectively override behavior.
|
|
1072
|
+
|
|
1073
|
+
[source,ruby]
|
|
1074
|
+
----
|
|
1075
|
+
xml do
|
|
1076
|
+
map_element 'key', to: :attr, value_map: {
|
|
1077
|
+
from: { empty: :nil, omitted: :omitted, nil: :nil },
|
|
1078
|
+
to: { empty: :empty, omitted: :omitted, nil: :nil }
|
|
1079
|
+
}
|
|
1080
|
+
end
|
|
1081
|
+
----
|
|
1082
|
+
|
|
1083
|
+
By changing to this:
|
|
1084
|
+
|
|
1085
|
+
[source,ruby]
|
|
1086
|
+
----
|
|
1087
|
+
xml do
|
|
1088
|
+
map_element 'key', to: :attr,
|
|
1089
|
+
render_nil: :as_empty, <1>
|
|
1090
|
+
treat_omitted: :as_nil <2>
|
|
1091
|
+
end
|
|
1092
|
+
----
|
|
1093
|
+
<1> This overrides the `to:` direction `nil: :nil` mapping.
|
|
1094
|
+
<2> This overrides the `from:` direction `omitted: :omitted` mapping
|
|
1095
|
+
|
|
1096
|
+
The resulting value map would be:
|
|
1097
|
+
|
|
1098
|
+
[source,ruby]
|
|
1099
|
+
----
|
|
1100
|
+
xml do
|
|
1101
|
+
map_element 'status', to: :status, value_map: {
|
|
1102
|
+
from: { empty: :nil, omitted: :omitted, nil: :empty }, <1>
|
|
1103
|
+
to: { empty: :nil, omitted: :nil, nil: :nil } <2>
|
|
1104
|
+
}
|
|
1105
|
+
end
|
|
1106
|
+
----
|
|
1107
|
+
<1> See that `nil: :nil` is now `nil: :empty`.
|
|
1108
|
+
<2> See that `omitted: :omitted` is now `omitted: :nil`
|
|
1109
|
+
====
|
|
1110
|
+
|
|
1111
|
+
|
|
1112
|
+
=== `render_nil`
|
|
1113
|
+
|
|
1114
|
+
==== General
|
|
1115
|
+
|
|
1116
|
+
`:render_nil` is a specially handled case of the `:render_*` pattern due to
|
|
1117
|
+
legacy. It is used to override default value map behavior for the `nil` model
|
|
1118
|
+
value.
|
|
1119
|
+
|
|
1120
|
+
==== Format-specific terminology
|
|
1121
|
+
|
|
1122
|
+
NOTE: The terms `:as_blank` and `:as_empty` are **format-specific** and
|
|
1123
|
+
**not interchangeable**. See <<render_empty>> for detailed explanation.
|
|
1124
|
+
|
|
1125
|
+
`render_nil` accepts these values:
|
|
1126
|
+
|
|
1127
|
+
`:as_empty`::: (key-value formats only) If the value is nil, render as explicit
|
|
1128
|
+
empty value (`[]` or `""`).
|
|
1129
|
+
|
|
1130
|
+
`:as_blank`::: (XML only) If the value is nil, render as blank XML element
|
|
1131
|
+
(`<tag/>`).
|
|
1132
|
+
|
|
1133
|
+
`:as_nil`::: If the value is nil, render as nil (XML: `xsi:nil="true"`,
|
|
1134
|
+
key-value: `null`).
|
|
1135
|
+
|
|
1136
|
+
`:omit`::: If the value is nil, omit the element, attribute, or key entirely.
|
|
1137
|
+
|
|
1138
|
+
`true`::: (legacy) Setting `render_nil: true` will render the attribute as an
|
|
1139
|
+
empty element if the attribute is `nil`. For XML, this behaves like `:as_blank`.
|
|
1140
|
+
For key-value formats, this behaves like `:as_empty`.
|
|
1141
|
+
|
|
1142
|
+
Syntax:
|
|
1143
|
+
|
|
1144
|
+
[source,ruby]
|
|
1145
|
+
----
|
|
1146
|
+
xml do
|
|
1147
|
+
map_element 'key_value_model_attribute_name', to: :name_of_attribute, render_nil: {option}
|
|
1148
|
+
end
|
|
1149
|
+
----
|
|
1150
|
+
|
|
1151
|
+
[source,ruby]
|
|
1152
|
+
----
|
|
1153
|
+
hsh | json | yaml | toml do
|
|
1154
|
+
map 'key_value_model_attribute_name', to: :name_of_attribute, render_nil: {option}
|
|
1155
|
+
end
|
|
1156
|
+
----
|
|
1157
|
+
|
|
1158
|
+
==== Render `nil` as `true`
|
|
1159
|
+
|
|
1160
|
+
.Using the `render_nil: true` option to render an attribute value of `nil` as an empty element
|
|
1161
|
+
[example]
|
|
1162
|
+
====
|
|
1163
|
+
[source,ruby]
|
|
1164
|
+
----
|
|
1165
|
+
class Ceramic < Lutaml::Model::Serializable
|
|
1166
|
+
attribute :type, :string
|
|
1167
|
+
attribute :glaze, :string
|
|
1168
|
+
|
|
1169
|
+
xml do
|
|
1170
|
+
map_element 'type', to: :type, render_nil: true
|
|
1171
|
+
map_element 'glaze', to: :glaze
|
|
1172
|
+
end
|
|
1173
|
+
|
|
1174
|
+
json do
|
|
1175
|
+
map 'type', to: :type, render_nil: true
|
|
1176
|
+
map 'glaze', to: :glaze
|
|
1177
|
+
end
|
|
1178
|
+
end
|
|
1179
|
+
----
|
|
1180
|
+
|
|
1181
|
+
[source,ruby]
|
|
1182
|
+
----
|
|
1183
|
+
> Ceramic.new.to_json
|
|
1184
|
+
> # { 'type': null }
|
|
1185
|
+
> Ceramic.new(type: "Porcelain", glaze: "Clear").to_json
|
|
1186
|
+
> # { 'type': 'Porcelain', 'glaze': 'Clear' }
|
|
1187
|
+
----
|
|
1188
|
+
|
|
1189
|
+
[source,ruby]
|
|
1190
|
+
----
|
|
1191
|
+
> Ceramic.new.to_xml
|
|
1192
|
+
> # <Ceramic><type></type></Ceramic>
|
|
1193
|
+
> Ceramic.new(type: "Porcelain", glaze: "Clear").to_xml
|
|
1194
|
+
> # <Ceramic><type>Porcelain</type><glaze>Clear</glaze></Ceramic>
|
|
1195
|
+
----
|
|
1196
|
+
====
|
|
1197
|
+
|
|
1198
|
+
.Using the `render_nil: true` option to render an empty attribute collection of `nil` as an empty element
|
|
1199
|
+
[example]
|
|
1200
|
+
====
|
|
1201
|
+
[source,ruby]
|
|
1202
|
+
----
|
|
1203
|
+
class Ceramic < Lutaml::Model::Serializable
|
|
1204
|
+
attribute :type, :string
|
|
1205
|
+
attribute :glazes, :string, collection: true
|
|
1206
|
+
|
|
1207
|
+
xml do
|
|
1208
|
+
map_element 'type', to: :type, render_nil: true
|
|
1209
|
+
map_element 'glazes', to: :glazes, render_nil: true
|
|
1210
|
+
end
|
|
1211
|
+
|
|
1212
|
+
json do
|
|
1213
|
+
map 'type', to: :type, render_nil: true
|
|
1214
|
+
map 'glazes', to: :glazes, render_nil: true
|
|
1215
|
+
end
|
|
1216
|
+
end
|
|
1217
|
+
----
|
|
1218
|
+
|
|
1219
|
+
[source,ruby]
|
|
1220
|
+
----
|
|
1221
|
+
> Ceramic.new.to_json
|
|
1222
|
+
> # { 'type': null, 'glazes': [] }
|
|
1223
|
+
> Ceramic.new(type: "Porcelain", glazes: ["Clear"]).to_json
|
|
1224
|
+
> # { 'type': 'Porcelain', 'glazes': ['Clear'] }
|
|
1225
|
+
----
|
|
1226
|
+
|
|
1227
|
+
[source,ruby]
|
|
1228
|
+
----
|
|
1229
|
+
> Ceramic.new.to_xml
|
|
1230
|
+
> # <Ceramic><type></type><glazes></glazes></Ceramic>
|
|
1231
|
+
> Ceramic.new(type: "Porcelain", glazes: ["Clear"]).to_xml
|
|
1232
|
+
> # <Ceramic><type>Porcelain</type><glazes>Clear</glazes></Ceramic>
|
|
1233
|
+
----
|
|
1234
|
+
====
|
|
1235
|
+
|
|
1236
|
+
==== Render `nil` as `omit`
|
|
1237
|
+
|
|
1238
|
+
Using `render_nil: :omit` with a `nil` value will omit the key from XML and
|
|
1239
|
+
key-value formats.
|
|
1240
|
+
|
|
1241
|
+
[example]
|
|
1242
|
+
====
|
|
1243
|
+
[source,ruby]
|
|
1244
|
+
----
|
|
1245
|
+
class SomeModel < Lutaml::Model::Serializable
|
|
1246
|
+
attribute :coll, :string, collection: true
|
|
1247
|
+
|
|
1248
|
+
xml do
|
|
1249
|
+
root "some-model"
|
|
1250
|
+
map_element 'collection', to: :coll, render_nil: :omit
|
|
1251
|
+
end
|
|
1252
|
+
|
|
1253
|
+
key_value do
|
|
1254
|
+
map 'collection', to: :coll, render_nil: :omit
|
|
1255
|
+
end
|
|
1256
|
+
end
|
|
1257
|
+
|
|
1258
|
+
puts SomeModel.new.coll
|
|
1259
|
+
# => nil
|
|
1260
|
+
|
|
1261
|
+
puts SomeModel.new.to_xml
|
|
1262
|
+
# =>
|
|
1263
|
+
# <some-model></some-model>
|
|
1264
|
+
|
|
1265
|
+
puts SomeModel.new.to_yaml
|
|
1266
|
+
# =>
|
|
1267
|
+
# ---
|
|
1268
|
+
----
|
|
1269
|
+
====
|
|
1270
|
+
|
|
1271
|
+
|
|
1272
|
+
==== Render `nil` as `nil`
|
|
1273
|
+
|
|
1274
|
+
Using `render_nil: :as_nil` with a `nil` value will create an empty element with
|
|
1275
|
+
`xsi:nil` attribute in XML and create a key with explicit null value in
|
|
1276
|
+
key-value formats.
|
|
1277
|
+
|
|
1278
|
+
NOTE: `TOML` does not support this option.
|
|
1279
|
+
|
|
1280
|
+
[example]
|
|
1281
|
+
====
|
|
1282
|
+
[source,ruby]
|
|
1283
|
+
----
|
|
1284
|
+
class SomeModel < Lutaml::Model::Serializable
|
|
1285
|
+
attribute :coll, :string, collection: true
|
|
1286
|
+
|
|
1287
|
+
xml do
|
|
1288
|
+
root "some-model"
|
|
1289
|
+
map_element 'collection', to: :coll, render_nil: :as_nil
|
|
1290
|
+
end
|
|
1291
|
+
|
|
1292
|
+
hsh | json | yaml do
|
|
1293
|
+
map 'collection', to: :coll, render_nil: :as_nil
|
|
1294
|
+
end
|
|
1295
|
+
end
|
|
1296
|
+
|
|
1297
|
+
puts SomeModel.new.coll
|
|
1298
|
+
# => nil
|
|
1299
|
+
|
|
1300
|
+
puts SomeModel.new.to_xml
|
|
1301
|
+
# =>
|
|
1302
|
+
# <some-model xsi:xmlns="..."><collection xsi:nil="true"/></some-model>
|
|
1303
|
+
|
|
1304
|
+
puts SomeModel.new.to_yaml
|
|
1305
|
+
# =>
|
|
1306
|
+
# ---
|
|
1307
|
+
# coll: null
|
|
1308
|
+
----
|
|
1309
|
+
====
|
|
1310
|
+
|
|
1311
|
+
|
|
1312
|
+
==== Render `nil` as `blank`
|
|
1313
|
+
|
|
1314
|
+
Using `render_nil: :as_blank` in XML mappings will create a blank element, and
|
|
1315
|
+
using `render_nil: :as_empty` in key-value mappings will create a key with an
|
|
1316
|
+
explicit empty array.
|
|
1317
|
+
|
|
1318
|
+
NOTE: `:as_blank` is XML-specific (creates blank XML elements like `<tag/>`),
|
|
1319
|
+
while `:as_empty` is key-value-specific (creates explicit empty values like
|
|
1320
|
+
`[]`). These terms are format-specific and not interchangeable.
|
|
1321
|
+
|
|
1322
|
+
[example]
|
|
1323
|
+
====
|
|
1324
|
+
[source,ruby]
|
|
1325
|
+
----
|
|
1326
|
+
class SomeModel < Lutaml::Model::Serializable
|
|
1327
|
+
attribute :coll, :string, collection: true
|
|
1328
|
+
|
|
1329
|
+
xml do
|
|
1330
|
+
root "some-model"
|
|
1331
|
+
map_element 'collection', to: :coll, render_nil: :as_blank # <1>
|
|
1332
|
+
end
|
|
1333
|
+
|
|
1334
|
+
key_value do
|
|
1335
|
+
map 'collection', to: :coll, render_nil: :as_empty # <2>
|
|
1336
|
+
end
|
|
1337
|
+
end
|
|
1338
|
+
|
|
1339
|
+
puts SomeModel.new.coll
|
|
1340
|
+
# => nil
|
|
1341
|
+
|
|
1342
|
+
puts SomeModel.new.to_xml
|
|
1343
|
+
# =>
|
|
1344
|
+
# <some-model><collection/></some-model>
|
|
1345
|
+
|
|
1346
|
+
puts SomeModel.new.to_yaml
|
|
1347
|
+
# =>
|
|
1348
|
+
# ---
|
|
1349
|
+
# coll: []
|
|
1350
|
+
----
|
|
1351
|
+
<1> XML uses `:as_blank` to create a blank element `<collection/>`
|
|
1352
|
+
<2> Key-value formats use `:as_empty` to create explicit empty array `[]`
|
|
1353
|
+
====
|
|
1354
|
+
|
|
1355
|
+
[[render_empty]]
|
|
1356
|
+
=== `render_empty`
|
|
1357
|
+
|
|
1358
|
+
==== General
|
|
1359
|
+
|
|
1360
|
+
`:render_empty` is a specially handled case of the `:render_*` pattern due to
|
|
1361
|
+
legacy. It is used to override default value map behavior for empty model
|
|
1362
|
+
values.
|
|
1363
|
+
|
|
1364
|
+
==== Format-specific terminology
|
|
1365
|
+
|
|
1366
|
+
IMPORTANT: The terms `:as_blank` and `:as_empty` are **format-specific** and
|
|
1367
|
+
**not interchangeable**.
|
|
1368
|
+
|
|
1369
|
+
`:as_blank`::: **XML-specific**. Creates a blank XML element (`<tag/>` or
|
|
1370
|
+
`<tag></tag>`). Only valid in `xml` mapping blocks (`map_element`,
|
|
1371
|
+
`map_attribute`, `map_content`).
|
|
1372
|
+
|
|
1373
|
+
`:as_empty`::: **Key-value-specific**. Creates an explicit empty value (`[]` for
|
|
1374
|
+
arrays, `""` for strings). Only valid in `json`, `yaml`, `toml`, `hsh`, and
|
|
1375
|
+
`key_value` mapping blocks.
|
|
1376
|
+
|
|
1377
|
+
Using the wrong term for a format will raise an
|
|
1378
|
+
`IncorrectMappingArgumentsError`:
|
|
1379
|
+
|
|
1380
|
+
* Using `:as_empty` in XML mappings → Error: "`:as_empty` is not supported for
|
|
1381
|
+
XML mappings. Use `:as_blank` instead." * Using `:as_blank` in key-value
|
|
1382
|
+
mappings → Error: "`:as_blank` is not supported for key-value mappings. Use
|
|
1383
|
+
`:as_empty` instead."
|
|
1384
|
+
|
|
1385
|
+
==== Supported values
|
|
1386
|
+
|
|
1387
|
+
`render_empty` accepts these values:
|
|
1388
|
+
|
|
1389
|
+
`:as_empty`::: (key-value formats only) Render as explicit empty value.
|
|
1390
|
+
|
|
1391
|
+
`:as_blank`::: (XML only) Render as blank XML element.
|
|
1392
|
+
|
|
1393
|
+
`:as_nil`::: Render as nil (XML: `xsi:nil="true"`, key-value: `null`).
|
|
1394
|
+
|
|
1395
|
+
`:omit`::: Omit the element, attribute, or key entirely.
|
|
1396
|
+
|
|
1397
|
+
|
|
1398
|
+
Syntax:
|
|
1399
|
+
|
|
1400
|
+
[source,ruby]
|
|
1401
|
+
----
|
|
1402
|
+
xml do
|
|
1403
|
+
map_element 'key_value_model_attribute_name', to: :name_of_attribute, render_empty: {option}
|
|
1404
|
+
end
|
|
1405
|
+
----
|
|
1406
|
+
|
|
1407
|
+
[source,ruby]
|
|
1408
|
+
----
|
|
1409
|
+
hsh | json | yaml | toml do
|
|
1410
|
+
map 'key_value_model_attribute_name', to: :name_of_attribute, render_empty: {option}
|
|
1411
|
+
end
|
|
1412
|
+
----
|
|
1413
|
+
|
|
1414
|
+
==== Render `empty` as `omit`
|
|
1415
|
+
|
|
1416
|
+
Using `render_empty: :omit` with an empty value or empty collection will omit
|
|
1417
|
+
the key from XML and key-value formats.
|
|
1418
|
+
|
|
1419
|
+
[example]
|
|
1420
|
+
====
|
|
1421
|
+
[source,ruby]
|
|
1422
|
+
----
|
|
1423
|
+
class SomeModel < Lutaml::Model::Serializable
|
|
1424
|
+
attribute :coll, :string, collection: true
|
|
1425
|
+
|
|
1426
|
+
xml do
|
|
1427
|
+
root "some-model"
|
|
1428
|
+
map_element 'collection', to: :coll, render_empty: :omit
|
|
1429
|
+
end
|
|
1430
|
+
|
|
1431
|
+
key_value do
|
|
1432
|
+
map 'collection', to: :coll, render_empty: :omit
|
|
1433
|
+
end
|
|
1434
|
+
end
|
|
1435
|
+
|
|
1436
|
+
puts SomeModel.new(coll: []).coll
|
|
1437
|
+
# => []
|
|
1438
|
+
|
|
1439
|
+
puts SomeModel.new.to_xml
|
|
1440
|
+
# =>
|
|
1441
|
+
# <some-model></some-model>
|
|
1442
|
+
|
|
1443
|
+
puts SomeModel.new.to_yaml
|
|
1444
|
+
# =>
|
|
1445
|
+
# ---
|
|
1446
|
+
----
|
|
1447
|
+
====
|
|
1448
|
+
|
|
1449
|
+
==== Render `empty` as `nil`
|
|
1450
|
+
|
|
1451
|
+
Using `render_empty: :as_nil` will create an empty element with the `xsi:nil`
|
|
1452
|
+
attribute in XML, and create a key with explicit null value in key-value formats.
|
|
1453
|
+
|
|
1454
|
+
NOTE: `TOML` does not support this option.
|
|
1455
|
+
|
|
1456
|
+
[example]
|
|
1457
|
+
====
|
|
1458
|
+
[source,ruby]
|
|
1459
|
+
----
|
|
1460
|
+
class SomeModel < Lutaml::Model::Serializable
|
|
1461
|
+
attribute :coll, :string, collection: true
|
|
1462
|
+
|
|
1463
|
+
xml do
|
|
1464
|
+
root "some-model"
|
|
1465
|
+
map_element 'collection', to: :coll, render_empty: :as_nil
|
|
1466
|
+
end
|
|
1467
|
+
|
|
1468
|
+
hsh | json | yaml do
|
|
1469
|
+
map 'collection', to: :coll, render_empty: :as_nil
|
|
1470
|
+
end
|
|
1471
|
+
end
|
|
1472
|
+
|
|
1473
|
+
puts SomeModel.new(coll: []).coll
|
|
1474
|
+
# => []
|
|
1475
|
+
|
|
1476
|
+
puts SomeModel.new.to_xml
|
|
1477
|
+
# =>
|
|
1478
|
+
# <some-model xsi:xmlns="..."><collection xsi:nil="true"/></some-model>
|
|
1479
|
+
|
|
1480
|
+
puts SomeModel.new.to_yaml
|
|
1481
|
+
# =>
|
|
1482
|
+
# ---
|
|
1483
|
+
# coll: null
|
|
1484
|
+
----
|
|
1485
|
+
====
|
|
1486
|
+
|
|
1487
|
+
|
|
1488
|
+
==== Render `empty` as `blank`/`empty`
|
|
1489
|
+
|
|
1490
|
+
Using `render_empty: :as_blank` in XML mappings will create a blank
|
|
1491
|
+
element, and using `render_empty: :as_empty` in key-value mappings will create
|
|
1492
|
+
a key with an explicit empty array.
|
|
1493
|
+
|
|
1494
|
+
NOTE: `:as_blank` is XML-specific (creates blank XML elements like `<tag/>`),
|
|
1495
|
+
while `:as_empty` is key-value-specific (creates explicit empty values like `[]`).
|
|
1496
|
+
These terms are format-specific and not interchangeable.
|
|
1497
|
+
|
|
1498
|
+
[example]
|
|
1499
|
+
====
|
|
1500
|
+
[source,ruby]
|
|
1501
|
+
----
|
|
1502
|
+
class SomeModel < Lutaml::Model::Serializable
|
|
1503
|
+
attribute :coll, :string, collection: true
|
|
1504
|
+
|
|
1505
|
+
xml do
|
|
1506
|
+
root "some-model"
|
|
1507
|
+
map_element 'collection', to: :coll, render_empty: :as_blank # <1>
|
|
1508
|
+
end
|
|
1509
|
+
|
|
1510
|
+
key_value do
|
|
1511
|
+
map 'collection', to: :coll, render_empty: :as_empty # <2>
|
|
1512
|
+
end
|
|
1513
|
+
end
|
|
1514
|
+
|
|
1515
|
+
puts SomeModel.new(coll: []).coll
|
|
1516
|
+
# => []
|
|
1517
|
+
|
|
1518
|
+
puts SomeModel.new.to_xml
|
|
1519
|
+
# =>
|
|
1520
|
+
# <some-model><collection/></some-model>
|
|
1521
|
+
|
|
1522
|
+
puts SomeModel.new.to_yaml
|
|
1523
|
+
# =>
|
|
1524
|
+
# ---
|
|
1525
|
+
# coll: []
|
|
1526
|
+
----
|
|
1527
|
+
<1> XML uses `:as_blank` to create a blank element `<collection/>`
|
|
1528
|
+
<2> Key-value formats use `:as_empty` to create explicit empty array `[]`
|
|
1529
|
+
====
|
|
1530
|
+
|
|
1531
|
+
|