sdcvalidator 4.0.2__tar.gz → 4.0.5__tar.gz
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.
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/CHANGELOG.rst +101 -0
- {sdcvalidator-4.0.2/sdcvalidator.egg-info → sdcvalidator-4.0.5}/PKG-INFO +1 -1
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/pyproject.toml +1 -1
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/sdc4/constants.py +33 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/sdc4/error_mapper.py +69 -5
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/sdc4/instance_modifier.py +156 -13
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/sdc4/validator.py +55 -1
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5/sdcvalidator.egg-info}/PKG-INFO +1 -1
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/LICENSE +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/MANIFEST.in +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/README.md +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/README.rst +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/Makefile +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/api.rst +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/components.rst +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/conf.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/converters.rst +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/extras.rst +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/features.rst +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/index.rst +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/intro.rst +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/requirements.txt +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/testing.rst +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/usage.rst +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/requirements-dev.txt +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/scripts/make_translation.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/__init__.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/_limits.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/aliases.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/arguments.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/cli.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/converters/__init__.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/converters/abdera.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/converters/badgerfish.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/converters/base.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/converters/columnar.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/converters/gdata.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/converters/jsonml.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/converters/parker.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/converters/unordered.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/__init__.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/assertions.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/attributes.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/builders.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/builtins.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/complex_types.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/elements.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/exceptions.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/facets.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/groups.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/helpers.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/identities.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/models.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/notations.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/particles.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/schemas.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/simple_types.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/validation.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/wildcards.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/xsd_globals.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/xsdbase.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/dataobjects.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/documents.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/exceptions.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/exports.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/extras/__init__.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/extras/codegen.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/extras/templates/python/bindings.py.jinja +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/extras/templates/python/sample.py.jinja +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/extras/wsdl.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/limits.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/loaders.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/locale/en/LC_MESSAGES/xmlschema.mo +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/locale/en/LC_MESSAGES/xmlschema.po +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/locale/it/LC_MESSAGES/xmlschema.mo +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/locale/it/LC_MESSAGES/xmlschema.po +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/locale/pl/LC_MESSAGES/xmlschema.mo +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/locale/pl/LC_MESSAGES/xmlschema.po +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/locale/ru/LC_MESSAGES/xmlschema.mo +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/locale/ru/LC_MESSAGES/xmlschema.po +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/locations.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/names.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/namespaces.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/py.typed +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/resources/__init__.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/resources/fetchers.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/resources/parsers.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/resources/sax.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/resources/xml_loader.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/resources/xml_resource.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/DSIG/xmldsig-core-schema.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/DSIG/xmldsig11-schema.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/HFP/XMLSchema-hasFacetAndProperty.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/VC/XMLSchema-versioning.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/WSDL/soap-encoding.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/WSDL/soap-envelope.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/WSDL/wsdl-soap.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/WSDL/wsdl.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/XENC/xenc-schema-11.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/XENC/xenc-schema.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/XHTML/xhtml1-strict.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/XLINK/xlink.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/XML/xml.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/XSD_1.0/XMLSchema.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/XSD_1.0/datatypes.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/XSD_1.1/XMLSchema.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/XSD_1.1/datatypes.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/XSD_1.1/xsd11-extra.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/XSI/XMLSchema-instance.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/sdc4/__init__.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/sdc4/examples.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/sdc4/schema_validator.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/settings.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/testing/__init__.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/testing/_builders.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/testing/_factory.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/testing/_helpers.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/testing/_observers.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/testing/_test_case_classes.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/translation.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/utils/__init__.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/utils/decoding.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/utils/descriptors.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/utils/etree.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/utils/logger.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/utils/misc.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/utils/paths.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/utils/protocols.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/utils/qnames.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/utils/streams.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/utils/urls.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/xpath/__init__.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/xpath/assertion_parser.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/xpath/identity_parser.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/xpath/mixin.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/xpath/proxy.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/xpath/selectors.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/xpath/xpath3.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator.egg-info/SOURCES.txt +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator.egg-info/dependency_links.txt +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator.egg-info/entry_points.txt +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator.egg-info/requires.txt +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator.egg-info/top_level.txt +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/setup.cfg +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/__init__.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/check_memory.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/run_all_tests.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/run_memory_tests.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/run_typing_tests.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/run_w3c_tests.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/sdc4/__init__.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/sdc4/test_error_mapper.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/sdc4/test_schema_validator.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/sdc4/test_schemas/invalid_sdc4_schema_with_extension.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/sdc4/test_schemas/non_sdc4_schema_with_extension.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/sdc4/test_schemas/valid_sdc4_schema.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/sdc4/test_sdc4_integration.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/templates/demo/demo_type_filter_test.jinja +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/templates/filters/name_filter_test.jinja +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/templates/filters/namespace_filter_test.jinja +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/templates/filters/python_type_filter_test.jinja +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/templates/filters/qname_filter_test.jinja +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/templates/filters/sort_types_filter_test.jinja +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/templates/filters/type_name_filter_test.jinja +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/templates/filters/type_qname_filter_test.jinja +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/templates/filters/unknown_filter_test.jinja +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/templates/filters/wrong-template.jinja +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection-1_error.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection-default.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection-redef-xmlns.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection2.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection2.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection3.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection3.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection3bis.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection3bis.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection4.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection4.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection5.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection6.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/men/303/271/men/303/271-ascii.xml" +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/men/303/271/men/303/271-ascii.xsd" +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/men/303/271/men/303/271-cp1252.xml" +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/men/303/271/men/303/271-cp1252.xsd" +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/men/303/271/men/303/271.txt" +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/men/303/271/men/303/271.xml" +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/men/303/271/men/303/271.xsd" +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/stockquote/stockquote.wsdl +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/stockquote/stockquote.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/stockquote/stockquoteservice.wsdl +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/bikes.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/cars.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/invalid.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/types.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/vehicles-1_error.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/vehicles-2_errors.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/vehicles-3_errors.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/vehicles-max.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/vehicles-ns-mix.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/vehicles-redef.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/vehicles.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/vehicles.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/vehicles2.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/attributes/default_attributes-missing_group.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/attributes/default_attributes.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/builtins/builtins.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/builtins/builtins.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/decoder/data.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/decoder/data2.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/decoder/data3.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/decoder/data4-mixed.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/decoder/long-sequence-1.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/decoder/mixed-content.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/decoder/simple-types.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/derivations/complex-extensions.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/derivations/complex-with-simple-content-restriction.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/derivations/complex11-restrictions.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/derivations/invalid-enumeration-restriction.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/derivations/invalid-restrictions1.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/derivations/invalid-restrictions2.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/derivations/list_types.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/derivations/list_types.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/elements/test_alternatives-1.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/elements/type_alternatives-no-ns.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/elements/type_alternatives.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/billion_laughs_model.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/circular_model.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/illegal-attributes.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/illegal-declarations.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/illegal-occurs.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/invalid_models1.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/invalid_models2.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/model1.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/models.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/other-ns.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/recursive-groups.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/valid_model1.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/chameleon1.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/chameleon2.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/chameleon3.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/default_ns_invalid.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/default_ns_valid1.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/default_ns_valid2.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/dynamic-case1-2.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/dynamic-case1-overlap.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/dynamic-case1-override.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/dynamic-case1.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/dynamic-case1.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/import-case1.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/import-case2.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/import-case3.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/import-case4-1.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/import-case4-2.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/import-case4a.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/import-case4b.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/import-case5a.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/import-case5b.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/import-case5c.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/include-case1.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/include-case1bis.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/include-case2.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/include-case2bis.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/include-case3.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/include-case4.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/include-case5.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/include-case6.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/include-case7.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/include-case8.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/included3-valid.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/included4-invalid.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/included5-valid.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/included6-invalid.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/included7-overlap.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/included8-redefine.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/patterns/patterns.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/patterns/patterns.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/substitutions/words.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/substitutions/words1.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/substitutions/words2.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/substitutions/words3.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/substitutions/words4.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/wsdl/wsdl11_example3.wsdl +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/wsdl/wsdl11_example3_no_types.wsdl +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/wsdl/wsdl11_example3_types.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/wsdl/wsdl11_example3_valid.wsdl +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/wsdl/wsdl11_example4.wsdl +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/wsdl/wsdl11_example4_valid.wsdl +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/wsdl/wsdl11_example5.wsdl +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/wsdl/wsdl11_example5_valid.wsdl +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/wsdl/wsdl11_example5_with_fault.wsdl +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_008/issue_008.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_008/issue_008.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_009/issue_009.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_013/issue_013-1.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_013/issue_013-1.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_013/issue_013-2.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_013/issue_013.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_013/issue_013.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_014/issue014.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_018/issue_018-1.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_018/issue_018.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_022/README.md +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_022/xml_string_1.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_022/xml_string_2.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_022/xsd_string.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_026/issue_026-1.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_026/issue_026-2.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_026/issue_026-3.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_026/issue_026.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_028/issue_028-1.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_028/issue_028-2.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_028/issue_028.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_029/issue_029-1.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_029/issue_029-2.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_029/issue_029-3.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_029/issue_029.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_035/dates.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_035/dates.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_041/issue_041.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_041/issue_041.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_045/issue_045.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_046/issue_046.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_046/issue_046.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_051/issue_051.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_051/issue_051.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_073/issue_073-1.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_073/issue_073-2.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_073/issue_073.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_086/issue_086-1.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_086/issue_086-2.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_086/issue_086.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_105/issue_105.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_111/issue_111.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_111/issue_111_skeleton.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_115/Rotation.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_171/issue_171.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_171/issue_171b.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_171/issue_171c.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_187/issue_187_1.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_187/issue_187_2.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_190/issue_190.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_190/issue_190.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_200/issue_200.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_200/issue_200.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_203/issue_203.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_203/issue_203.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_203/issue_203alt.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_204/issue_204.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_204/issue_204_1.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_204/issue_204_2.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_204/issue_204_3.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_208/issue_208.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_208/issue_208.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_222/issue_222.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_222/issue_222.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_223/issue_223.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_223/issue_223.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_237/dir1/issue_237.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_237/dir1/stockquoteservice.wsdl +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_237/dir2/issue_237a.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_237/dir2/issue_237b.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_237/dir2/stockquote.wsdl +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_237/dir2/stockquote.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_243/issue_243.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_243/issue_243.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_245/issue_245-valid.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_245/issue_245.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_245/issue_245.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_259/issue_259-1.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_259/issue_259-2.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_265/issue_265-1.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_265/issue_265-2-invalid.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_265/issue_265-2-override.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_266/issue_266-1.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_266/issue_266-1.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_266/issue_266-2.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_266/issue_266-2.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_266/issue_266b-1.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_266/issue_266b-2.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_273/issue_273.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_273/issue_273.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_276/dummy.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_276/schema.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_298/issue_298-1.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_298/issue_298-2.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_298/issue_298.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_306/issue_306-alt.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_306/issue_306-invalid.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_306/issue_306-valid.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_306/issue_306.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_311/correct_no_list.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_311/incorrect_with_list.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_311/kPartModel_reduit_issue.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_314/issue_314.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_314/issue_314.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_315/issue_315-1.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_315/issue_315-2.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_315/issue_315-3.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_315/issue_315-4.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_315/issue_315-5.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_315/issue_315_mixed.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_315/issue_315_simple.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_322/issue_322.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_322/issue_322.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_324/issue_324-invalid.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_324/issue_324-valid.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_324/issue_324a.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_324/issue_324b.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_334/issue_334.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_334/issue_334.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_341/issue_341-ext.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_341/issue_341.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_341/issue_341.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_349/issue_349.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_349/issue_349.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_362/dir1/dir2/issue_362_2.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_362/dir1/issue_362_1.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_362/dir2/issue_362_2.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_362/issue_362_1.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_363/issue_363-invalid-1.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_363/issue_363-invalid-2.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_363/issue_363-invalid-3.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_363/issue_363.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_363/issue_363.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_372/issue_372-1.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_372/issue_372-2.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_372/issue_372.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_386/issue_386-1.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_386/issue_386-2.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_386/issue_386-2.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_386/issue_386.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_414/issue_414.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_414/issue_414.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_414/issue_414b.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_414/issue_414ne-inv1.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_414/issue_414ne-inv2.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_414/issue_414ne.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_417/issue_417.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_417/issue_417.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_418/issue_418-invalid.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_418/issue_418.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_418/issue_418.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_424/issue_424.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_424/issue_424.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_437/issue_437-1.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_437/issue_437-2.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_437/issue_437.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_459/issue_459.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/loaders/alt/other1.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/loaders/other1.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/loaders/other2.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/loaders/other3.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/loaders/other5.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/loaders/schema1.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/loaders/schema2.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/loaders/schema3.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/loaders/schema4.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/loaders/schema5.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/mypy/extra_validator.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/mypy/protocols.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/mypy/schema_source.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/mypy/simple_types.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/resources/dummy file.txt +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/resources/dummy file.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/resources/external_entity.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/resources/malformed.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/resources/malformed.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/resources/unparsed_entity.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/resources/unused_external_entity.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/resources/unused_unparsed_entity.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/resources/with_entity.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/serialization/abdera.json +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/serialization/badgerfish.json +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/serialization/document.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/serialization/jsonml.json +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/serialization/parker.json +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/testfiles +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/translations/pl/tw-1(5)8e.xsd +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/translations/pl/tytul_wykonawczy_niekompletny.xml +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cli.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_codegen.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_converters.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_dataobjects.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_documents.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_exports.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_files.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_loaders.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_locations.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_namespaces.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_package.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_resources.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_translations.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_utils.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_wsdl.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_xml_testfiles.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_xpath.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_xsd_testfiles.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validation/__init__.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validation/test_decoding.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validation/test_encoding.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validation/test_validation.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/__init__.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_assertions.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_attributes.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_builtins.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_complex_types.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_elements.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_exceptions.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_facets.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_groups.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_identities.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_models.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_notations.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_particles.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_schemas.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_simple_types.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_wildcards.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_xsd_globals.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_xsdbase.py +0 -0
- {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tox.ini +0 -0
|
@@ -2,6 +2,107 @@
|
|
|
2
2
|
CHANGELOG
|
|
3
3
|
*********
|
|
4
4
|
|
|
5
|
+
`v4.0.5`_ (2025-11-04)
|
|
6
|
+
======================
|
|
7
|
+
**Selective ExceptionalValue Tagging & Configurable Output**
|
|
8
|
+
|
|
9
|
+
* **NOTE**: Version 4.0.4 was published with preliminary selective tagging; this release adds configurable output and fixes
|
|
10
|
+
* **CRITICAL CLARIFICATION**: ExceptionalValue tagging applies **only to data-bearing elements**
|
|
11
|
+
* **Fixed**: Structural and metadata elements now properly fail validation instead of being tagged
|
|
12
|
+
* **Breaking Change**: Validation errors in structural elements (label, vtb, vte, tr, modified, etc.) now cause validation failure as intended by SDC4 spec
|
|
13
|
+
* **NEW**: Configurable output file paths with user-friendly naming convention
|
|
14
|
+
* **NEW**: Automatic file saving with {original_filename}-ev.xml naming
|
|
15
|
+
* **NEW**: Inline validation error comments in ExceptionalValue elements
|
|
16
|
+
* **Data-Bearing Elements** that receive ExceptionalValue tags:
|
|
17
|
+
|
|
18
|
+
* xdstring-value, xdcount-value, xdquantity-value
|
|
19
|
+
* xdboolean-value, xdfile-value, xdlink-value
|
|
20
|
+
* xdtemporal-value, xdordinal-value, xdratio-value
|
|
21
|
+
* xdinterval-value, xdtoken-value
|
|
22
|
+
|
|
23
|
+
* **Structural/Metadata Elements** that must be valid (validation fails if invalid):
|
|
24
|
+
|
|
25
|
+
* label - Component labels must be valid
|
|
26
|
+
* vtb, vte, tr, modified - Temporal metadata must be valid dateTime
|
|
27
|
+
* act - Audit/control/trust elements must conform to schema
|
|
28
|
+
* latitude, longitude - Geographic coordinates must be valid
|
|
29
|
+
* normal-status, magnitude-status, accuracy_margin, precision_digits - Quantified metadata
|
|
30
|
+
|
|
31
|
+
**Changes:**
|
|
32
|
+
|
|
33
|
+
* Updated ErrorMapper.map_error() to return None for structural element errors
|
|
34
|
+
* Updated InstanceModifier.insert_exceptional_value() to check element type before tagging
|
|
35
|
+
* Added DATA_BEARING_ELEMENTS and STRUCTURAL_ELEMENTS constants
|
|
36
|
+
* Added element name extraction from XPath in both ErrorMapper and InstanceModifier
|
|
37
|
+
* Fixed Clark notation XPath parsing for namespace-aware element location
|
|
38
|
+
* Fixed parent element insertion (ExceptionalValue inserted into parent, not child)
|
|
39
|
+
* Added output_path parameter to validate_with_recovery()
|
|
40
|
+
* Added save parameter to validate_with_recovery() (default: True)
|
|
41
|
+
* Default output naming: saves to same directory as input with -ev suffix
|
|
42
|
+
* Automatic XML formatting with 4-space indentation
|
|
43
|
+
* Enhanced SDC4 README.md with selective tagging and output configuration documentation
|
|
44
|
+
|
|
45
|
+
**New API:**
|
|
46
|
+
|
|
47
|
+
.. code-block:: python
|
|
48
|
+
|
|
49
|
+
from sdcvalidator.sdc4 import SDC4Validator
|
|
50
|
+
|
|
51
|
+
validator = SDC4Validator('schema.xsd')
|
|
52
|
+
|
|
53
|
+
# Default: saves to 'input-ev.xml' in same directory
|
|
54
|
+
validator.validate_with_recovery('input.xml')
|
|
55
|
+
|
|
56
|
+
# Custom output path
|
|
57
|
+
validator.validate_with_recovery('input.xml', output_path='/custom/path.xml')
|
|
58
|
+
|
|
59
|
+
# Skip saving (in-memory only)
|
|
60
|
+
tree = validator.validate_with_recovery('input.xml', save=False)
|
|
61
|
+
|
|
62
|
+
**Migration Guide:**
|
|
63
|
+
|
|
64
|
+
If your code relies on structural elements being tagged with ExceptionalValue, you will need to update your validation logic. Structural elements must now be valid for the XML instance to pass validation.
|
|
65
|
+
|
|
66
|
+
The validate_with_recovery() method now saves recovered XML automatically. Use save=False if you want the old behavior of only returning the tree without saving.
|
|
67
|
+
|
|
68
|
+
----
|
|
69
|
+
|
|
70
|
+
`v4.0.3`_ (2025-11-04)
|
|
71
|
+
======================
|
|
72
|
+
**Critical Fix: Xerces/Saxon Gold Standard Compatibility**
|
|
73
|
+
|
|
74
|
+
* **CRITICAL FIX**: Use validation='lax' to match Xerces 1.1 and Saxon EE 1.1 behavior (gold standard validators)
|
|
75
|
+
* **Documentation**: Add comprehensive SDC4 Quick Start guide with XMLSchema11 and uri_mapper examples
|
|
76
|
+
* **Fixed**: sdcvalidator was rejecting valid XSD 1.1 schemas that pass Xerces and Saxon validation
|
|
77
|
+
* **Fixed**: validation='strict' (default) was stricter than XSD spec, causing false rejections
|
|
78
|
+
* **Recommendation**: Always use XMLSchema11 with validation='lax' for SDC4 schemas
|
|
79
|
+
* **Breaking Fix**: This ensures SDC4 community can use standard-compliant schemas
|
|
80
|
+
|
|
81
|
+
**Key Changes for SDC4 Users:**
|
|
82
|
+
|
|
83
|
+
* Use `XMLSchema11` explicitly (XMLSchema is alias to XMLSchema10, will prune XSD 1.1 schemas)
|
|
84
|
+
* Use `uri_mapper` parameter for offline validation (maps schema URLs to local files)
|
|
85
|
+
* Use `validation='lax'` to match Xerces/Saxon behavior
|
|
86
|
+
* See sdcvalidator/sdc4/README.md for complete Quick Start guide
|
|
87
|
+
|
|
88
|
+
**Example:**
|
|
89
|
+
|
|
90
|
+
.. code-block:: python
|
|
91
|
+
|
|
92
|
+
from sdcvalidator import XMLSchema11
|
|
93
|
+
|
|
94
|
+
uri_mapper = {
|
|
95
|
+
'https://semanticdatacharter.com/ns/sdc4/sdc4.xsd': '/path/to/sdc4.xsd'
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
schema = XMLSchema11(
|
|
99
|
+
'my_datamodel.xsd',
|
|
100
|
+
uri_mapper=uri_mapper,
|
|
101
|
+
validation='lax' # Matches Xerces/Saxon
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
----
|
|
105
|
+
|
|
5
106
|
`v4.0.2`_ (2025-11-04)
|
|
6
107
|
======================
|
|
7
108
|
**SDCValidator Release**
|
|
@@ -107,6 +107,39 @@ EXCEPTIONAL_VALUE_TYPES: Dict[str, tuple] = {
|
|
|
107
107
|
# XPath patterns for locating elements in SDC4 data model instances
|
|
108
108
|
XDANY_TYPE_PATTERN = r"xd(?:string|count|quantity|boolean|file|link|temporal|ordinal|ratio|interval)-value"
|
|
109
109
|
|
|
110
|
+
# Data-bearing elements that can receive ExceptionalValue tags
|
|
111
|
+
# These are the actual data values - validation errors here use quarantine-and-tag pattern
|
|
112
|
+
DATA_BEARING_ELEMENTS = {
|
|
113
|
+
'xdstring-value',
|
|
114
|
+
'xdcount-value',
|
|
115
|
+
'xdquantity-value',
|
|
116
|
+
'xdboolean-value',
|
|
117
|
+
'xdfile-value',
|
|
118
|
+
'xdlink-value',
|
|
119
|
+
'xdtemporal-value',
|
|
120
|
+
'xdordinal-value',
|
|
121
|
+
'xdratio-value',
|
|
122
|
+
'xdinterval-value',
|
|
123
|
+
'xdtoken-value',
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
# Structural/metadata elements that should FAIL validation (not use ExceptionalValue)
|
|
127
|
+
# These include labels, temporal metadata, and other structural elements
|
|
128
|
+
STRUCTURAL_ELEMENTS = {
|
|
129
|
+
'label', # Component labels
|
|
130
|
+
'act', # Audit/control/trust
|
|
131
|
+
'vtb', # Valid time begin
|
|
132
|
+
'vte', # Valid time end
|
|
133
|
+
'tr', # Transaction time
|
|
134
|
+
'modified', # Modification timestamp
|
|
135
|
+
'latitude', # Geographic coordinate
|
|
136
|
+
'longitude', # Geographic coordinate
|
|
137
|
+
'normal-status', # Quantified metadata
|
|
138
|
+
'magnitude-status',# Quantified metadata
|
|
139
|
+
'accuracy_margin', # Quantified metadata
|
|
140
|
+
'precision_digits',# Quantified metadata
|
|
141
|
+
}
|
|
142
|
+
|
|
110
143
|
# Element sequence position for ExceptionalValue in XdAnyType
|
|
111
144
|
# Per SDC4 schema: label, act, ExceptionalValue, vtb, vte, tr, modified, latitude, longitude, ...
|
|
112
145
|
EXCEPTIONAL_VALUE_INSERT_AFTER = ['label', 'act']
|
|
@@ -14,7 +14,11 @@ from sdcvalidator.core.exceptions import (
|
|
|
14
14
|
XMLSchemaDecodeError,
|
|
15
15
|
XMLSchemaChildrenValidationError
|
|
16
16
|
)
|
|
17
|
-
from .constants import
|
|
17
|
+
from .constants import (
|
|
18
|
+
ExceptionalValueType,
|
|
19
|
+
DATA_BEARING_ELEMENTS,
|
|
20
|
+
STRUCTURAL_ELEMENTS
|
|
21
|
+
)
|
|
18
22
|
|
|
19
23
|
|
|
20
24
|
class ErrorMapper:
|
|
@@ -86,13 +90,30 @@ class ErrorMapper:
|
|
|
86
90
|
"""
|
|
87
91
|
self._rules.append((condition, ev_type))
|
|
88
92
|
|
|
89
|
-
def map_error(self, error: XMLSchemaValidationError) -> ExceptionalValueType:
|
|
93
|
+
def map_error(self, error: XMLSchemaValidationError) -> Optional[ExceptionalValueType]:
|
|
90
94
|
"""
|
|
91
95
|
Map a validation error to an ExceptionalValue type.
|
|
92
96
|
|
|
97
|
+
Only data-bearing elements (xdstring-value, xdcount-value, etc.) can receive
|
|
98
|
+
ExceptionalValue tags. Structural/metadata elements (label, vtb, vte, tr, etc.)
|
|
99
|
+
should fail validation.
|
|
100
|
+
|
|
93
101
|
:param error: The XML Schema validation error.
|
|
94
|
-
:return: The appropriate ExceptionalValueType
|
|
102
|
+
:return: The appropriate ExceptionalValueType, or None if this is a structural
|
|
103
|
+
element that should fail validation.
|
|
104
|
+
:raises XMLSchemaValidationError: If the error occurs in a structural element.
|
|
95
105
|
"""
|
|
106
|
+
# Extract element name from the error path
|
|
107
|
+
element_name = self._extract_element_name(error.path)
|
|
108
|
+
|
|
109
|
+
# Check if this is a structural element - these should fail validation
|
|
110
|
+
if element_name and element_name in STRUCTURAL_ELEMENTS:
|
|
111
|
+
# Don't map to ExceptionalValue - let validation fail
|
|
112
|
+
return None
|
|
113
|
+
|
|
114
|
+
# For SDC4 data-bearing elements or unknown elements, map to appropriate ExceptionalValue
|
|
115
|
+
# Note: We're permissive here - only STRUCTURAL_ELEMENTS fail validation
|
|
116
|
+
# This allows the system to work with custom element names and future SDC versions
|
|
96
117
|
for condition, ev_type in self._rules:
|
|
97
118
|
if condition(error):
|
|
98
119
|
return ev_type
|
|
@@ -100,6 +121,38 @@ class ErrorMapper:
|
|
|
100
121
|
# Should never reach here due to default rule, but just in case
|
|
101
122
|
return ExceptionalValueType.NI
|
|
102
123
|
|
|
124
|
+
def _extract_element_name(self, xpath: Optional[str]) -> Optional[str]:
|
|
125
|
+
"""
|
|
126
|
+
Extract the element name from an XPath expression.
|
|
127
|
+
|
|
128
|
+
Handles paths like:
|
|
129
|
+
- /DataModel/xdstring-value
|
|
130
|
+
- /ns:DataModel/ns:xdstring-value[1]
|
|
131
|
+
- //xdcount-value
|
|
132
|
+
|
|
133
|
+
:param xpath: The XPath expression from the validation error.
|
|
134
|
+
:return: The local element name (without namespace prefix), or None.
|
|
135
|
+
"""
|
|
136
|
+
if not xpath:
|
|
137
|
+
return None
|
|
138
|
+
|
|
139
|
+
# Get the last path component
|
|
140
|
+
parts = xpath.strip('/').split('/')
|
|
141
|
+
if not parts:
|
|
142
|
+
return None
|
|
143
|
+
|
|
144
|
+
last_part = parts[-1]
|
|
145
|
+
|
|
146
|
+
# Remove namespace prefix (e.g., 'sdc4:xdstring-value' -> 'xdstring-value')
|
|
147
|
+
if ':' in last_part:
|
|
148
|
+
last_part = last_part.split(':')[-1]
|
|
149
|
+
|
|
150
|
+
# Remove predicates (e.g., 'xdstring-value[1]' -> 'xdstring-value')
|
|
151
|
+
if '[' in last_part:
|
|
152
|
+
last_part = last_part[:last_part.index('[')]
|
|
153
|
+
|
|
154
|
+
return last_part if last_part else None
|
|
155
|
+
|
|
103
156
|
# =========================================================================
|
|
104
157
|
# Error classification helper methods
|
|
105
158
|
# =========================================================================
|
|
@@ -221,14 +274,25 @@ class ErrorMapper:
|
|
|
221
274
|
return any(re.search(pattern, reason) for pattern in patterns)
|
|
222
275
|
|
|
223
276
|
def get_error_summary(self, error: XMLSchemaValidationError,
|
|
224
|
-
ev_type: ExceptionalValueType) -> Dict[str, str]:
|
|
277
|
+
ev_type: Optional[ExceptionalValueType]) -> Dict[str, str]:
|
|
225
278
|
"""
|
|
226
279
|
Generate a summary of the error mapping.
|
|
227
280
|
|
|
228
281
|
:param error: The validation error.
|
|
229
|
-
:param ev_type: The mapped ExceptionalValueType.
|
|
282
|
+
:param ev_type: The mapped ExceptionalValueType, or None for structural elements.
|
|
230
283
|
:return: A dictionary with error details.
|
|
231
284
|
"""
|
|
285
|
+
if ev_type is None:
|
|
286
|
+
# Structural/metadata element error - no ExceptionalValue
|
|
287
|
+
return {
|
|
288
|
+
'xpath': error.path or 'unknown',
|
|
289
|
+
'error_type': type(error).__name__,
|
|
290
|
+
'reason': error.reason or 'No reason provided',
|
|
291
|
+
'exceptional_value_type': None,
|
|
292
|
+
'exceptional_value_name': None,
|
|
293
|
+
'description': 'Structural/metadata element - validation fails',
|
|
294
|
+
}
|
|
295
|
+
|
|
232
296
|
return {
|
|
233
297
|
'xpath': error.path or 'unknown',
|
|
234
298
|
'error_type': type(error).__name__,
|
|
@@ -13,7 +13,9 @@ from .constants import (
|
|
|
13
13
|
SDC4_NAMESPACE,
|
|
14
14
|
ExceptionalValueType,
|
|
15
15
|
EXCEPTIONAL_VALUE_INSERT_AFTER,
|
|
16
|
-
EXCEPTIONAL_VALUE_INSERT_BEFORE
|
|
16
|
+
EXCEPTIONAL_VALUE_INSERT_BEFORE,
|
|
17
|
+
DATA_BEARING_ELEMENTS,
|
|
18
|
+
STRUCTURAL_ELEMENTS
|
|
17
19
|
)
|
|
18
20
|
|
|
19
21
|
|
|
@@ -43,29 +45,75 @@ class InstanceModifier:
|
|
|
43
45
|
"""
|
|
44
46
|
Insert an ExceptionalValue element at the specified XPath location.
|
|
45
47
|
|
|
48
|
+
Only data-bearing elements (xdstring-value, xdcount-value, etc.) can receive
|
|
49
|
+
ExceptionalValue tags. Structural/metadata elements (label, vtb, vte, tr, etc.)
|
|
50
|
+
should not be tagged.
|
|
51
|
+
|
|
46
52
|
:param root: The root element of the XML document.
|
|
47
53
|
:param xpath: XPath to the element where the error occurred.
|
|
48
54
|
:param ev_type: The ExceptionalValueType to insert.
|
|
49
55
|
:param reason: Optional additional reason text.
|
|
50
|
-
:return: True if insertion was successful, False
|
|
56
|
+
:return: True if insertion was successful, False if element should not be tagged.
|
|
51
57
|
"""
|
|
58
|
+
# Check if this element should receive ExceptionalValue tag
|
|
59
|
+
element_name = self._extract_element_name_from_xpath(xpath)
|
|
60
|
+
|
|
61
|
+
# Don't tag structural elements - these should fail validation
|
|
62
|
+
if element_name and element_name in STRUCTURAL_ELEMENTS:
|
|
63
|
+
return False
|
|
64
|
+
|
|
65
|
+
# All other elements (data-bearing, custom, or unknown) can be tagged
|
|
66
|
+
# This allows flexibility for custom element names and future SDC versions
|
|
67
|
+
|
|
52
68
|
# Ensure namespace is registered
|
|
53
69
|
self._register_namespace()
|
|
54
70
|
|
|
55
|
-
# Find the
|
|
56
|
-
|
|
57
|
-
if
|
|
71
|
+
# Find the element with the invalid value using XPath
|
|
72
|
+
invalid_elem = self._find_element_by_xpath(root, xpath)
|
|
73
|
+
if invalid_elem is None:
|
|
74
|
+
return False
|
|
75
|
+
|
|
76
|
+
# Find the parent element (XdAnyType) where ExceptionalValue should be inserted
|
|
77
|
+
parent_elem = self._find_parent_element(root, invalid_elem)
|
|
78
|
+
if parent_elem is None:
|
|
58
79
|
return False
|
|
59
80
|
|
|
60
81
|
# Create the ExceptionalValue element
|
|
61
82
|
ev_element = self._create_exceptional_value_element(ev_type, reason)
|
|
62
83
|
|
|
63
|
-
# Insert at the appropriate position in the sequence
|
|
64
|
-
insert_pos = self._find_insertion_position(
|
|
65
|
-
|
|
84
|
+
# Insert at the appropriate position in the parent's sequence
|
|
85
|
+
insert_pos = self._find_insertion_position(parent_elem)
|
|
86
|
+
parent_elem.insert(insert_pos, ev_element)
|
|
66
87
|
|
|
67
88
|
return True
|
|
68
89
|
|
|
90
|
+
def _extract_element_name_from_xpath(self, xpath: str) -> Optional[str]:
|
|
91
|
+
"""
|
|
92
|
+
Extract the element name from an XPath expression.
|
|
93
|
+
|
|
94
|
+
:param xpath: The XPath expression.
|
|
95
|
+
:return: The local element name (without namespace prefix), or None.
|
|
96
|
+
"""
|
|
97
|
+
if not xpath:
|
|
98
|
+
return None
|
|
99
|
+
|
|
100
|
+
# Get the last path component
|
|
101
|
+
parts = xpath.strip('/').split('/')
|
|
102
|
+
if not parts:
|
|
103
|
+
return None
|
|
104
|
+
|
|
105
|
+
last_part = parts[-1]
|
|
106
|
+
|
|
107
|
+
# Remove namespace prefix (e.g., 'sdc4:xdstring-value' -> 'xdstring-value')
|
|
108
|
+
if ':' in last_part:
|
|
109
|
+
last_part = last_part.split(':')[-1]
|
|
110
|
+
|
|
111
|
+
# Remove predicates (e.g., 'xdstring-value[1]' -> 'xdstring-value')
|
|
112
|
+
if '[' in last_part:
|
|
113
|
+
last_part = last_part[:last_part.index('[')]
|
|
114
|
+
|
|
115
|
+
return last_part if last_part else None
|
|
116
|
+
|
|
69
117
|
def _register_namespace(self):
|
|
70
118
|
"""Register the SDC4 namespace with ElementTree."""
|
|
71
119
|
try:
|
|
@@ -76,15 +124,20 @@ class InstanceModifier:
|
|
|
76
124
|
|
|
77
125
|
def _find_element_by_xpath(self, root: ET.Element, xpath: str) -> Optional[ET.Element]:
|
|
78
126
|
"""
|
|
79
|
-
Find an element by XPath.
|
|
127
|
+
Find an element by XPath (including Clark notation support).
|
|
80
128
|
|
|
81
129
|
:param root: The root element to search from.
|
|
82
|
-
:param xpath: The XPath expression.
|
|
130
|
+
:param xpath: The XPath expression (may use Clark notation: {namespace}localname).
|
|
83
131
|
:return: The found element or None.
|
|
84
132
|
"""
|
|
85
133
|
if not xpath:
|
|
86
134
|
return None
|
|
87
135
|
|
|
136
|
+
# Handle Clark notation in XPath by traversing manually
|
|
137
|
+
# Clark notation: /{namespace}localname/{namespace}localname/...
|
|
138
|
+
if '{' in xpath:
|
|
139
|
+
return self._find_element_by_clark_path(root, xpath)
|
|
140
|
+
|
|
88
141
|
# Handle namespace prefixes in XPath
|
|
89
142
|
# Convert xpath like /ns:root/ns:child to proper namespaced search
|
|
90
143
|
namespaces = self._extract_namespaces(root)
|
|
@@ -111,6 +164,88 @@ class InstanceModifier:
|
|
|
111
164
|
|
|
112
165
|
return None
|
|
113
166
|
|
|
167
|
+
def _find_element_by_clark_path(self, root: ET.Element, clark_path: str) -> Optional[ET.Element]:
|
|
168
|
+
"""
|
|
169
|
+
Find an element by traversing a Clark notation path.
|
|
170
|
+
|
|
171
|
+
Clark notation: /{namespace}localname/{namespace}localname/...
|
|
172
|
+
|
|
173
|
+
:param root: The root element to search from.
|
|
174
|
+
:param clark_path: The path using Clark notation.
|
|
175
|
+
:return: The found element or None.
|
|
176
|
+
"""
|
|
177
|
+
# Parse Clark notation path components
|
|
178
|
+
# Need to be careful not to split on slashes inside the namespace URI
|
|
179
|
+
parts = []
|
|
180
|
+
i = 0
|
|
181
|
+
while i < len(clark_path):
|
|
182
|
+
if clark_path[i] == '/':
|
|
183
|
+
# Skip slashes
|
|
184
|
+
i += 1
|
|
185
|
+
continue
|
|
186
|
+
elif clark_path[i] == '{':
|
|
187
|
+
# Start of namespaced element: {namespace}localname
|
|
188
|
+
# Find the matching '}'
|
|
189
|
+
end_brace = clark_path.index('}', i)
|
|
190
|
+
# Find the next '/' or end of string
|
|
191
|
+
next_slash = clark_path.find('/', end_brace)
|
|
192
|
+
if next_slash == -1:
|
|
193
|
+
next_slash = len(clark_path)
|
|
194
|
+
# Extract the full element name with namespace
|
|
195
|
+
part = clark_path[i:next_slash]
|
|
196
|
+
parts.append(part)
|
|
197
|
+
i = next_slash
|
|
198
|
+
else:
|
|
199
|
+
# Element without namespace
|
|
200
|
+
next_slash = clark_path.find('/', i)
|
|
201
|
+
if next_slash == -1:
|
|
202
|
+
next_slash = len(clark_path)
|
|
203
|
+
part = clark_path[i:next_slash]
|
|
204
|
+
parts.append(part)
|
|
205
|
+
i = next_slash
|
|
206
|
+
|
|
207
|
+
if not parts:
|
|
208
|
+
return None
|
|
209
|
+
|
|
210
|
+
# Start from root
|
|
211
|
+
current = root
|
|
212
|
+
|
|
213
|
+
# Check if the first part is the root element itself
|
|
214
|
+
if parts[0] == root.tag:
|
|
215
|
+
# Skip the root element in the path
|
|
216
|
+
parts = parts[1:]
|
|
217
|
+
if not parts:
|
|
218
|
+
return root
|
|
219
|
+
|
|
220
|
+
# Traverse each part of the path
|
|
221
|
+
for part in parts:
|
|
222
|
+
# The part is in Clark notation: {namespace}localname or just localname
|
|
223
|
+
found = False
|
|
224
|
+
for child in current:
|
|
225
|
+
if child.tag == part:
|
|
226
|
+
current = child
|
|
227
|
+
found = True
|
|
228
|
+
break
|
|
229
|
+
|
|
230
|
+
if not found:
|
|
231
|
+
return None
|
|
232
|
+
|
|
233
|
+
return current
|
|
234
|
+
|
|
235
|
+
def _find_parent_element(self, root: ET.Element, child: ET.Element) -> Optional[ET.Element]:
|
|
236
|
+
"""
|
|
237
|
+
Find the parent element of a given child element.
|
|
238
|
+
|
|
239
|
+
:param root: The root element to search from.
|
|
240
|
+
:param child: The child element whose parent we want to find.
|
|
241
|
+
:return: The parent element or None.
|
|
242
|
+
"""
|
|
243
|
+
# Iterate through all elements in the tree
|
|
244
|
+
for parent in root.iter():
|
|
245
|
+
if child in list(parent):
|
|
246
|
+
return parent
|
|
247
|
+
return None
|
|
248
|
+
|
|
114
249
|
def _extract_namespaces(self, root: ET.Element) -> Dict[str, str]:
|
|
115
250
|
"""
|
|
116
251
|
Extract namespace mappings from the root element.
|
|
@@ -204,19 +339,27 @@ class InstanceModifier:
|
|
|
204
339
|
"""
|
|
205
340
|
Create an ExceptionalValue element.
|
|
206
341
|
|
|
342
|
+
Per SDC4 spec, the element name is the ExceptionalValue code (INV, UNK, etc.)
|
|
343
|
+
with a child <ev-name> element containing the human-readable name.
|
|
344
|
+
|
|
345
|
+
Example:
|
|
346
|
+
<sdc4:INV>
|
|
347
|
+
<ev-name>Invalid</ev-name>
|
|
348
|
+
</sdc4:INV>
|
|
349
|
+
|
|
207
350
|
:param ev_type: The ExceptionalValueType.
|
|
208
351
|
:param reason: Optional additional reason text.
|
|
209
352
|
:return: The created element.
|
|
210
353
|
"""
|
|
211
|
-
# Create element with
|
|
354
|
+
# Create element with the ExceptionalValue code as the tag name
|
|
212
355
|
tag = f"{{{self.sdc4_ns}}}{ev_type.code}"
|
|
213
356
|
ev_elem = ET.Element(tag)
|
|
214
357
|
|
|
215
358
|
# Add the ev-name child element
|
|
216
|
-
ev_name_elem = ET.SubElement(ev_elem,
|
|
359
|
+
ev_name_elem = ET.SubElement(ev_elem, "ev-name")
|
|
217
360
|
ev_name_elem.text = ev_type.ev_name
|
|
218
361
|
|
|
219
|
-
# Optionally add reason as a comment
|
|
362
|
+
# Optionally add reason as a comment
|
|
220
363
|
if reason:
|
|
221
364
|
comment = ET.Comment(f" Validation error: {reason} ")
|
|
222
365
|
ev_elem.insert(0, comment)
|
|
@@ -72,14 +72,38 @@ class SDC4Validator:
|
|
|
72
72
|
|
|
73
73
|
def validate_with_recovery(self,
|
|
74
74
|
xml_source: Union[str, Path, ET.Element, XMLResource],
|
|
75
|
-
|
|
75
|
+
output_path: Optional[Union[str, Path]] = None,
|
|
76
|
+
remove_existing_ev: bool = True,
|
|
77
|
+
save: bool = True) -> ET.ElementTree:
|
|
76
78
|
"""
|
|
77
79
|
Validate an XML instance and insert ExceptionalValue elements for errors.
|
|
78
80
|
|
|
81
|
+
The recovered XML with ExceptionalValue tags is automatically saved unless save=False.
|
|
82
|
+
|
|
79
83
|
:param xml_source: The XML instance to validate (file path, element, or XMLResource).
|
|
84
|
+
:param output_path: Optional output file path. If None and xml_source is a file path,
|
|
85
|
+
defaults to '{original_filename}-ev.xml' in the same directory.
|
|
86
|
+
If xml_source is not a file path, you must provide output_path or set save=False.
|
|
80
87
|
:param remove_existing_ev: If True, remove any existing ExceptionalValue elements before processing.
|
|
88
|
+
:param save: If True (default), save the recovered XML to output_path. Set to False to skip saving.
|
|
81
89
|
:return: Modified XML ElementTree with ExceptionalValue elements inserted.
|
|
90
|
+
:raises ValueError: If save=True but output_path cannot be determined.
|
|
91
|
+
|
|
92
|
+
Example usage:
|
|
93
|
+
# Default: saves to 'count_error_example-ev.xml' in same directory
|
|
94
|
+
validator.validate_with_recovery('count_error_example.xml')
|
|
95
|
+
|
|
96
|
+
# Custom output path
|
|
97
|
+
validator.validate_with_recovery('input.xml', output_path='/path/to/recovered.xml')
|
|
98
|
+
|
|
99
|
+
# Don't save, just return the tree
|
|
100
|
+
tree = validator.validate_with_recovery('input.xml', save=False)
|
|
82
101
|
"""
|
|
102
|
+
# Track the original file path for default output naming
|
|
103
|
+
original_file_path = None
|
|
104
|
+
if isinstance(xml_source, (str, Path)):
|
|
105
|
+
original_file_path = Path(xml_source)
|
|
106
|
+
|
|
83
107
|
# Parse the XML if it's a path
|
|
84
108
|
if isinstance(xml_source, (str, Path)):
|
|
85
109
|
tree = ET.parse(str(xml_source))
|
|
@@ -109,6 +133,10 @@ class SDC4Validator:
|
|
|
109
133
|
# Map error to ExceptionalValue type
|
|
110
134
|
ev_type = self.error_mapper.map_error(error)
|
|
111
135
|
|
|
136
|
+
# Skip if error mapper returned None (structural/metadata element)
|
|
137
|
+
if ev_type is None:
|
|
138
|
+
continue
|
|
139
|
+
|
|
112
140
|
# Get the XPath to the error location
|
|
113
141
|
xpath = error.path
|
|
114
142
|
|
|
@@ -126,6 +154,27 @@ class SDC4Validator:
|
|
|
126
154
|
# For now, we'll just continue
|
|
127
155
|
pass
|
|
128
156
|
|
|
157
|
+
# Save the recovered XML if requested
|
|
158
|
+
if save:
|
|
159
|
+
# Determine output path
|
|
160
|
+
if output_path is None:
|
|
161
|
+
if original_file_path is None:
|
|
162
|
+
raise ValueError(
|
|
163
|
+
"Cannot determine output path: xml_source is not a file path. "
|
|
164
|
+
"Either provide output_path parameter or set save=False."
|
|
165
|
+
)
|
|
166
|
+
# Default naming: {original_filename}-ev.xml
|
|
167
|
+
output_path = original_file_path.parent / f"{original_file_path.stem}-ev{original_file_path.suffix}"
|
|
168
|
+
else:
|
|
169
|
+
output_path = Path(output_path)
|
|
170
|
+
|
|
171
|
+
# Ensure parent directory exists
|
|
172
|
+
output_path.parent.mkdir(parents=True, exist_ok=True)
|
|
173
|
+
|
|
174
|
+
# Save with formatting
|
|
175
|
+
ET.indent(tree, space=' ')
|
|
176
|
+
tree.write(str(output_path), encoding='UTF-8', xml_declaration=True)
|
|
177
|
+
|
|
129
178
|
return tree
|
|
130
179
|
|
|
131
180
|
def iter_errors_with_mapping(self,
|
|
@@ -152,6 +201,11 @@ class SDC4Validator:
|
|
|
152
201
|
# Map error to ExceptionalValue type
|
|
153
202
|
ev_type = self.error_mapper.map_error(error)
|
|
154
203
|
|
|
204
|
+
# Skip if error mapper returned None (structural/metadata element)
|
|
205
|
+
# These errors cannot be recovered with ExceptionalValue
|
|
206
|
+
if ev_type is None:
|
|
207
|
+
continue
|
|
208
|
+
|
|
155
209
|
# Generate summary
|
|
156
210
|
summary = self.error_mapper.get_error_summary(error, ev_type)
|
|
157
211
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|