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.
Files changed (523) hide show
  1. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/CHANGELOG.rst +101 -0
  2. {sdcvalidator-4.0.2/sdcvalidator.egg-info → sdcvalidator-4.0.5}/PKG-INFO +1 -1
  3. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/pyproject.toml +1 -1
  4. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/sdc4/constants.py +33 -0
  5. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/sdc4/error_mapper.py +69 -5
  6. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/sdc4/instance_modifier.py +156 -13
  7. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/sdc4/validator.py +55 -1
  8. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5/sdcvalidator.egg-info}/PKG-INFO +1 -1
  9. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/LICENSE +0 -0
  10. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/MANIFEST.in +0 -0
  11. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/README.md +0 -0
  12. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/README.rst +0 -0
  13. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/Makefile +0 -0
  14. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/api.rst +0 -0
  15. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/components.rst +0 -0
  16. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/conf.py +0 -0
  17. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/converters.rst +0 -0
  18. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/extras.rst +0 -0
  19. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/features.rst +0 -0
  20. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/index.rst +0 -0
  21. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/intro.rst +0 -0
  22. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/requirements.txt +0 -0
  23. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/testing.rst +0 -0
  24. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/doc/usage.rst +0 -0
  25. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/requirements-dev.txt +0 -0
  26. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/scripts/make_translation.py +0 -0
  27. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/__init__.py +0 -0
  28. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/_limits.py +0 -0
  29. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/aliases.py +0 -0
  30. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/arguments.py +0 -0
  31. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/cli.py +0 -0
  32. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/converters/__init__.py +0 -0
  33. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/converters/abdera.py +0 -0
  34. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/converters/badgerfish.py +0 -0
  35. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/converters/base.py +0 -0
  36. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/converters/columnar.py +0 -0
  37. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/converters/gdata.py +0 -0
  38. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/converters/jsonml.py +0 -0
  39. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/converters/parker.py +0 -0
  40. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/converters/unordered.py +0 -0
  41. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/__init__.py +0 -0
  42. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/assertions.py +0 -0
  43. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/attributes.py +0 -0
  44. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/builders.py +0 -0
  45. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/builtins.py +0 -0
  46. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/complex_types.py +0 -0
  47. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/elements.py +0 -0
  48. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/exceptions.py +0 -0
  49. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/facets.py +0 -0
  50. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/groups.py +0 -0
  51. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/helpers.py +0 -0
  52. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/identities.py +0 -0
  53. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/models.py +0 -0
  54. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/notations.py +0 -0
  55. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/particles.py +0 -0
  56. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/schemas.py +0 -0
  57. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/simple_types.py +0 -0
  58. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/validation.py +0 -0
  59. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/wildcards.py +0 -0
  60. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/xsd_globals.py +0 -0
  61. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/core/xsdbase.py +0 -0
  62. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/dataobjects.py +0 -0
  63. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/documents.py +0 -0
  64. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/exceptions.py +0 -0
  65. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/exports.py +0 -0
  66. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/extras/__init__.py +0 -0
  67. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/extras/codegen.py +0 -0
  68. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/extras/templates/python/bindings.py.jinja +0 -0
  69. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/extras/templates/python/sample.py.jinja +0 -0
  70. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/extras/wsdl.py +0 -0
  71. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/limits.py +0 -0
  72. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/loaders.py +0 -0
  73. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/locale/en/LC_MESSAGES/xmlschema.mo +0 -0
  74. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/locale/en/LC_MESSAGES/xmlschema.po +0 -0
  75. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/locale/it/LC_MESSAGES/xmlschema.mo +0 -0
  76. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/locale/it/LC_MESSAGES/xmlschema.po +0 -0
  77. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/locale/pl/LC_MESSAGES/xmlschema.mo +0 -0
  78. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/locale/pl/LC_MESSAGES/xmlschema.po +0 -0
  79. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/locale/ru/LC_MESSAGES/xmlschema.mo +0 -0
  80. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/locale/ru/LC_MESSAGES/xmlschema.po +0 -0
  81. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/locations.py +0 -0
  82. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/names.py +0 -0
  83. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/namespaces.py +0 -0
  84. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/py.typed +0 -0
  85. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/resources/__init__.py +0 -0
  86. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/resources/fetchers.py +0 -0
  87. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/resources/parsers.py +0 -0
  88. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/resources/sax.py +0 -0
  89. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/resources/xml_loader.py +0 -0
  90. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/resources/xml_resource.py +0 -0
  91. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/DSIG/xmldsig-core-schema.xsd +0 -0
  92. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/DSIG/xmldsig11-schema.xsd +0 -0
  93. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/HFP/XMLSchema-hasFacetAndProperty.xsd +0 -0
  94. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/VC/XMLSchema-versioning.xsd +0 -0
  95. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/WSDL/soap-encoding.xsd +0 -0
  96. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/WSDL/soap-envelope.xsd +0 -0
  97. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/WSDL/wsdl-soap.xsd +0 -0
  98. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/WSDL/wsdl.xsd +0 -0
  99. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/XENC/xenc-schema-11.xsd +0 -0
  100. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/XENC/xenc-schema.xsd +0 -0
  101. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/XHTML/xhtml1-strict.xsd +0 -0
  102. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/XLINK/xlink.xsd +0 -0
  103. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/XML/xml.xsd +0 -0
  104. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/XSD_1.0/XMLSchema.xsd +0 -0
  105. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/XSD_1.0/datatypes.xsd +0 -0
  106. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/XSD_1.1/XMLSchema.xsd +0 -0
  107. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/XSD_1.1/datatypes.xsd +0 -0
  108. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/XSD_1.1/xsd11-extra.xsd +0 -0
  109. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/schemas/XSI/XMLSchema-instance.xsd +0 -0
  110. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/sdc4/__init__.py +0 -0
  111. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/sdc4/examples.py +0 -0
  112. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/sdc4/schema_validator.py +0 -0
  113. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/settings.py +0 -0
  114. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/testing/__init__.py +0 -0
  115. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/testing/_builders.py +0 -0
  116. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/testing/_factory.py +0 -0
  117. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/testing/_helpers.py +0 -0
  118. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/testing/_observers.py +0 -0
  119. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/testing/_test_case_classes.py +0 -0
  120. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/translation.py +0 -0
  121. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/utils/__init__.py +0 -0
  122. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/utils/decoding.py +0 -0
  123. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/utils/descriptors.py +0 -0
  124. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/utils/etree.py +0 -0
  125. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/utils/logger.py +0 -0
  126. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/utils/misc.py +0 -0
  127. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/utils/paths.py +0 -0
  128. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/utils/protocols.py +0 -0
  129. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/utils/qnames.py +0 -0
  130. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/utils/streams.py +0 -0
  131. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/utils/urls.py +0 -0
  132. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/xpath/__init__.py +0 -0
  133. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/xpath/assertion_parser.py +0 -0
  134. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/xpath/identity_parser.py +0 -0
  135. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/xpath/mixin.py +0 -0
  136. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/xpath/proxy.py +0 -0
  137. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/xpath/selectors.py +0 -0
  138. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator/xpath/xpath3.py +0 -0
  139. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator.egg-info/SOURCES.txt +0 -0
  140. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator.egg-info/dependency_links.txt +0 -0
  141. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator.egg-info/entry_points.txt +0 -0
  142. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator.egg-info/requires.txt +0 -0
  143. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/sdcvalidator.egg-info/top_level.txt +0 -0
  144. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/setup.cfg +0 -0
  145. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/__init__.py +0 -0
  146. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/check_memory.py +0 -0
  147. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/run_all_tests.py +0 -0
  148. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/run_memory_tests.py +0 -0
  149. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/run_typing_tests.py +0 -0
  150. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/run_w3c_tests.py +0 -0
  151. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/sdc4/__init__.py +0 -0
  152. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/sdc4/test_error_mapper.py +0 -0
  153. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/sdc4/test_schema_validator.py +0 -0
  154. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/sdc4/test_schemas/invalid_sdc4_schema_with_extension.xsd +0 -0
  155. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/sdc4/test_schemas/non_sdc4_schema_with_extension.xsd +0 -0
  156. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/sdc4/test_schemas/valid_sdc4_schema.xsd +0 -0
  157. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/sdc4/test_sdc4_integration.py +0 -0
  158. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/templates/demo/demo_type_filter_test.jinja +0 -0
  159. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/templates/filters/name_filter_test.jinja +0 -0
  160. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/templates/filters/namespace_filter_test.jinja +0 -0
  161. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/templates/filters/python_type_filter_test.jinja +0 -0
  162. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/templates/filters/qname_filter_test.jinja +0 -0
  163. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/templates/filters/sort_types_filter_test.jinja +0 -0
  164. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/templates/filters/type_name_filter_test.jinja +0 -0
  165. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/templates/filters/type_qname_filter_test.jinja +0 -0
  166. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/templates/filters/unknown_filter_test.jinja +0 -0
  167. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/templates/filters/wrong-template.jinja +0 -0
  168. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection-1_error.xml +0 -0
  169. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection-default.xml +0 -0
  170. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection-redef-xmlns.xml +0 -0
  171. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection.py +0 -0
  172. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection.xml +0 -0
  173. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection.xsd +0 -0
  174. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection2.xml +0 -0
  175. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection2.xsd +0 -0
  176. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection3.xml +0 -0
  177. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection3.xsd +0 -0
  178. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection3bis.xml +0 -0
  179. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection3bis.xsd +0 -0
  180. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection4.xml +0 -0
  181. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection4.xsd +0 -0
  182. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection5.xsd +0 -0
  183. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/collection/collection6.xml +0 -0
  184. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/men/303/271/men/303/271-ascii.xml" +0 -0
  185. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/men/303/271/men/303/271-ascii.xsd" +0 -0
  186. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/men/303/271/men/303/271-cp1252.xml" +0 -0
  187. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/men/303/271/men/303/271-cp1252.xsd" +0 -0
  188. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/men/303/271/men/303/271.txt" +0 -0
  189. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/men/303/271/men/303/271.xml" +0 -0
  190. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/men/303/271/men/303/271.xsd" +0 -0
  191. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/stockquote/stockquote.wsdl +0 -0
  192. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/stockquote/stockquote.xsd +0 -0
  193. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/stockquote/stockquoteservice.wsdl +0 -0
  194. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/bikes.xsd +0 -0
  195. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/cars.xsd +0 -0
  196. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/invalid.xsd +0 -0
  197. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/types.xsd +0 -0
  198. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/vehicles-1_error.xml +0 -0
  199. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/vehicles-2_errors.xml +0 -0
  200. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/vehicles-3_errors.xml +0 -0
  201. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/vehicles-max.xsd +0 -0
  202. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/vehicles-ns-mix.xml +0 -0
  203. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/vehicles-redef.xml +0 -0
  204. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/vehicles.xml +0 -0
  205. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/vehicles.xsd +0 -0
  206. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/examples/vehicles/vehicles2.xml +0 -0
  207. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/attributes/default_attributes-missing_group.xsd +0 -0
  208. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/attributes/default_attributes.xsd +0 -0
  209. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/builtins/builtins.xml +0 -0
  210. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/builtins/builtins.xsd +0 -0
  211. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/decoder/data.xml +0 -0
  212. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/decoder/data2.xml +0 -0
  213. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/decoder/data3.xml +0 -0
  214. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/decoder/data4-mixed.xml +0 -0
  215. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/decoder/long-sequence-1.xsd +0 -0
  216. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/decoder/mixed-content.xsd +0 -0
  217. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/decoder/simple-types.xsd +0 -0
  218. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/derivations/complex-extensions.xsd +0 -0
  219. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/derivations/complex-with-simple-content-restriction.xsd +0 -0
  220. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/derivations/complex11-restrictions.xsd +0 -0
  221. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/derivations/invalid-enumeration-restriction.xsd +0 -0
  222. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/derivations/invalid-restrictions1.xsd +0 -0
  223. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/derivations/invalid-restrictions2.xsd +0 -0
  224. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/derivations/list_types.xml +0 -0
  225. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/derivations/list_types.xsd +0 -0
  226. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/elements/test_alternatives-1.xml +0 -0
  227. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/elements/type_alternatives-no-ns.xsd +0 -0
  228. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/elements/type_alternatives.xsd +0 -0
  229. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/billion_laughs_model.xsd +0 -0
  230. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/circular_model.xsd +0 -0
  231. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/illegal-attributes.xsd +0 -0
  232. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/illegal-declarations.xsd +0 -0
  233. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/illegal-occurs.xsd +0 -0
  234. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/invalid_models1.xsd +0 -0
  235. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/invalid_models2.xsd +0 -0
  236. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/model1.xml +0 -0
  237. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/models.xsd +0 -0
  238. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/other-ns.xsd +0 -0
  239. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/recursive-groups.xsd +0 -0
  240. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/models/valid_model1.xsd +0 -0
  241. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/chameleon1.xsd +0 -0
  242. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/chameleon2.xsd +0 -0
  243. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/chameleon3.xsd +0 -0
  244. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/default_ns_invalid.xsd +0 -0
  245. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/default_ns_valid1.xsd +0 -0
  246. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/default_ns_valid2.xsd +0 -0
  247. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/dynamic-case1-2.xml +0 -0
  248. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/dynamic-case1-overlap.xsd +0 -0
  249. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/dynamic-case1-override.xsd +0 -0
  250. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/dynamic-case1.xml +0 -0
  251. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/dynamic-case1.xsd +0 -0
  252. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/import-case1.xsd +0 -0
  253. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/import-case2.xsd +0 -0
  254. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/import-case3.xsd +0 -0
  255. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/import-case4-1.xml +0 -0
  256. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/import-case4-2.xml +0 -0
  257. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/import-case4a.xsd +0 -0
  258. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/import-case4b.xsd +0 -0
  259. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/import-case5a.xsd +0 -0
  260. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/import-case5b.xsd +0 -0
  261. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/import-case5c.xsd +0 -0
  262. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/include-case1.xsd +0 -0
  263. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/include-case1bis.xsd +0 -0
  264. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/include-case2.xsd +0 -0
  265. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/include-case2bis.xsd +0 -0
  266. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/include-case3.xsd +0 -0
  267. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/include-case4.xsd +0 -0
  268. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/include-case5.xsd +0 -0
  269. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/include-case6.xsd +0 -0
  270. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/include-case7.xsd +0 -0
  271. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/include-case8.xsd +0 -0
  272. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/included3-valid.xsd +0 -0
  273. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/included4-invalid.xsd +0 -0
  274. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/included5-valid.xsd +0 -0
  275. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/included6-invalid.xsd +0 -0
  276. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/included7-overlap.xsd +0 -0
  277. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/namespaces/included8-redefine.xsd +0 -0
  278. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/patterns/patterns.xml +0 -0
  279. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/patterns/patterns.xsd +0 -0
  280. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/substitutions/words.xsd +0 -0
  281. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/substitutions/words1.xml +0 -0
  282. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/substitutions/words2.xml +0 -0
  283. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/substitutions/words3.xml +0 -0
  284. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/substitutions/words4.xml +0 -0
  285. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/wsdl/wsdl11_example3.wsdl +0 -0
  286. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/wsdl/wsdl11_example3_no_types.wsdl +0 -0
  287. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/wsdl/wsdl11_example3_types.xsd +0 -0
  288. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/wsdl/wsdl11_example3_valid.wsdl +0 -0
  289. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/wsdl/wsdl11_example4.wsdl +0 -0
  290. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/wsdl/wsdl11_example4_valid.wsdl +0 -0
  291. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/wsdl/wsdl11_example5.wsdl +0 -0
  292. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/wsdl/wsdl11_example5_valid.wsdl +0 -0
  293. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/features/wsdl/wsdl11_example5_with_fault.wsdl +0 -0
  294. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_008/issue_008.xml +0 -0
  295. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_008/issue_008.xsd +0 -0
  296. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_009/issue_009.xsd +0 -0
  297. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_013/issue_013-1.xml +0 -0
  298. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_013/issue_013-1.xsd +0 -0
  299. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_013/issue_013-2.xml +0 -0
  300. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_013/issue_013.xml +0 -0
  301. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_013/issue_013.xsd +0 -0
  302. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_014/issue014.xsd +0 -0
  303. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_018/issue_018-1.xml +0 -0
  304. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_018/issue_018.xsd +0 -0
  305. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_022/README.md +0 -0
  306. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_022/xml_string_1.xml +0 -0
  307. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_022/xml_string_2.xml +0 -0
  308. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_022/xsd_string.xsd +0 -0
  309. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_026/issue_026-1.xml +0 -0
  310. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_026/issue_026-2.xml +0 -0
  311. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_026/issue_026-3.xml +0 -0
  312. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_026/issue_026.xsd +0 -0
  313. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_028/issue_028-1.xml +0 -0
  314. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_028/issue_028-2.xml +0 -0
  315. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_028/issue_028.xsd +0 -0
  316. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_029/issue_029-1.xml +0 -0
  317. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_029/issue_029-2.xml +0 -0
  318. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_029/issue_029-3.xml +0 -0
  319. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_029/issue_029.xsd +0 -0
  320. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_035/dates.xml +0 -0
  321. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_035/dates.xsd +0 -0
  322. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_041/issue_041.xml +0 -0
  323. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_041/issue_041.xsd +0 -0
  324. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_045/issue_045.xsd +0 -0
  325. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_046/issue_046.xml +0 -0
  326. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_046/issue_046.xsd +0 -0
  327. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_051/issue_051.xml +0 -0
  328. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_051/issue_051.xsd +0 -0
  329. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_073/issue_073-1.xml +0 -0
  330. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_073/issue_073-2.xml +0 -0
  331. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_073/issue_073.xsd +0 -0
  332. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_086/issue_086-1.xml +0 -0
  333. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_086/issue_086-2.xml +0 -0
  334. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_086/issue_086.xsd +0 -0
  335. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_105/issue_105.xsd +0 -0
  336. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_111/issue_111.xsd +0 -0
  337. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_111/issue_111_skeleton.xsd +0 -0
  338. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_115/Rotation.xsd +0 -0
  339. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_171/issue_171.xsd +0 -0
  340. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_171/issue_171b.xsd +0 -0
  341. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_171/issue_171c.xsd +0 -0
  342. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_187/issue_187_1.xsd +0 -0
  343. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_187/issue_187_2.xsd +0 -0
  344. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_190/issue_190.xml +0 -0
  345. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_190/issue_190.xsd +0 -0
  346. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_200/issue_200.xml +0 -0
  347. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_200/issue_200.xsd +0 -0
  348. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_203/issue_203.xml +0 -0
  349. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_203/issue_203.xsd +0 -0
  350. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_203/issue_203alt.xsd +0 -0
  351. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_204/issue_204.xsd +0 -0
  352. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_204/issue_204_1.xml +0 -0
  353. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_204/issue_204_2.xml +0 -0
  354. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_204/issue_204_3.xml +0 -0
  355. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_208/issue_208.xml +0 -0
  356. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_208/issue_208.xsd +0 -0
  357. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_222/issue_222.xml +0 -0
  358. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_222/issue_222.xsd +0 -0
  359. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_223/issue_223.xml +0 -0
  360. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_223/issue_223.xsd +0 -0
  361. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_237/dir1/issue_237.xsd +0 -0
  362. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_237/dir1/stockquoteservice.wsdl +0 -0
  363. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_237/dir2/issue_237a.xsd +0 -0
  364. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_237/dir2/issue_237b.xsd +0 -0
  365. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_237/dir2/stockquote.wsdl +0 -0
  366. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_237/dir2/stockquote.xsd +0 -0
  367. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_243/issue_243.xml +0 -0
  368. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_243/issue_243.xsd +0 -0
  369. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_245/issue_245-valid.xml +0 -0
  370. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_245/issue_245.xml +0 -0
  371. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_245/issue_245.xsd +0 -0
  372. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_259/issue_259-1.xsd +0 -0
  373. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_259/issue_259-2.xsd +0 -0
  374. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_265/issue_265-1.xsd +0 -0
  375. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_265/issue_265-2-invalid.xsd +0 -0
  376. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_265/issue_265-2-override.xsd +0 -0
  377. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_266/issue_266-1.xml +0 -0
  378. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_266/issue_266-1.xsd +0 -0
  379. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_266/issue_266-2.xml +0 -0
  380. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_266/issue_266-2.xsd +0 -0
  381. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_266/issue_266b-1.xsd +0 -0
  382. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_266/issue_266b-2.xsd +0 -0
  383. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_273/issue_273.xml +0 -0
  384. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_273/issue_273.xsd +0 -0
  385. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_276/dummy.xml +0 -0
  386. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_276/schema.xsd +0 -0
  387. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_298/issue_298-1.xml +0 -0
  388. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_298/issue_298-2.xml +0 -0
  389. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_298/issue_298.xsd +0 -0
  390. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_306/issue_306-alt.xsd +0 -0
  391. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_306/issue_306-invalid.xml +0 -0
  392. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_306/issue_306-valid.xml +0 -0
  393. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_306/issue_306.xsd +0 -0
  394. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_311/correct_no_list.xml +0 -0
  395. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_311/incorrect_with_list.xml +0 -0
  396. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_311/kPartModel_reduit_issue.xsd +0 -0
  397. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_314/issue_314.xml +0 -0
  398. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_314/issue_314.xsd +0 -0
  399. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_315/issue_315-1.xml +0 -0
  400. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_315/issue_315-2.xml +0 -0
  401. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_315/issue_315-3.xml +0 -0
  402. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_315/issue_315-4.xml +0 -0
  403. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_315/issue_315-5.xml +0 -0
  404. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_315/issue_315_mixed.xsd +0 -0
  405. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_315/issue_315_simple.xsd +0 -0
  406. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_322/issue_322.xml +0 -0
  407. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_322/issue_322.xsd +0 -0
  408. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_324/issue_324-invalid.xml +0 -0
  409. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_324/issue_324-valid.xml +0 -0
  410. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_324/issue_324a.xsd +0 -0
  411. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_324/issue_324b.xsd +0 -0
  412. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_334/issue_334.xml +0 -0
  413. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_334/issue_334.xsd +0 -0
  414. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_341/issue_341-ext.xsd +0 -0
  415. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_341/issue_341.xml +0 -0
  416. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_341/issue_341.xsd +0 -0
  417. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_349/issue_349.xml +0 -0
  418. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_349/issue_349.xsd +0 -0
  419. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_362/dir1/dir2/issue_362_2.xsd +0 -0
  420. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_362/dir1/issue_362_1.xsd +0 -0
  421. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_362/dir2/issue_362_2.xsd +0 -0
  422. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_362/issue_362_1.xsd +0 -0
  423. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_363/issue_363-invalid-1.xml +0 -0
  424. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_363/issue_363-invalid-2.xml +0 -0
  425. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_363/issue_363-invalid-3.xml +0 -0
  426. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_363/issue_363.xml +0 -0
  427. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_363/issue_363.xsd +0 -0
  428. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_372/issue_372-1.xml +0 -0
  429. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_372/issue_372-2.xml +0 -0
  430. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_372/issue_372.xsd +0 -0
  431. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_386/issue_386-1.xml +0 -0
  432. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_386/issue_386-2.xml +0 -0
  433. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_386/issue_386-2.xsd +0 -0
  434. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_386/issue_386.xsd +0 -0
  435. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_414/issue_414.xml +0 -0
  436. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_414/issue_414.xsd +0 -0
  437. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_414/issue_414b.xsd +0 -0
  438. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_414/issue_414ne-inv1.xsd +0 -0
  439. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_414/issue_414ne-inv2.xsd +0 -0
  440. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_414/issue_414ne.xsd +0 -0
  441. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_417/issue_417.xml +0 -0
  442. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_417/issue_417.xsd +0 -0
  443. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_418/issue_418-invalid.xml +0 -0
  444. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_418/issue_418.xml +0 -0
  445. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_418/issue_418.xsd +0 -0
  446. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_424/issue_424.xml +0 -0
  447. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_424/issue_424.xsd +0 -0
  448. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_437/issue_437-1.xml +0 -0
  449. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_437/issue_437-2.xml +0 -0
  450. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_437/issue_437.xsd +0 -0
  451. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/issues/issue_459/issue_459.xsd +0 -0
  452. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/loaders/alt/other1.xsd +0 -0
  453. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/loaders/other1.xsd +0 -0
  454. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/loaders/other2.xsd +0 -0
  455. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/loaders/other3.xsd +0 -0
  456. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/loaders/other5.xsd +0 -0
  457. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/loaders/schema1.xsd +0 -0
  458. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/loaders/schema2.xsd +0 -0
  459. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/loaders/schema3.xsd +0 -0
  460. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/loaders/schema4.xsd +0 -0
  461. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/loaders/schema5.xsd +0 -0
  462. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/mypy/extra_validator.py +0 -0
  463. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/mypy/protocols.py +0 -0
  464. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/mypy/schema_source.py +0 -0
  465. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/mypy/simple_types.py +0 -0
  466. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/resources/dummy file.txt +0 -0
  467. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/resources/dummy file.xml +0 -0
  468. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/resources/external_entity.xml +0 -0
  469. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/resources/malformed.xml +0 -0
  470. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/resources/malformed.xsd +0 -0
  471. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/resources/unparsed_entity.xml +0 -0
  472. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/resources/unused_external_entity.xml +0 -0
  473. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/resources/unused_unparsed_entity.xml +0 -0
  474. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/resources/with_entity.xml +0 -0
  475. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/serialization/abdera.json +0 -0
  476. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/serialization/badgerfish.json +0 -0
  477. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/serialization/document.xml +0 -0
  478. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/serialization/jsonml.json +0 -0
  479. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/serialization/parker.json +0 -0
  480. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/testfiles +0 -0
  481. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/translations/pl/tw-1(5)8e.xsd +0 -0
  482. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cases/translations/pl/tytul_wykonawczy_niekompletny.xml +0 -0
  483. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_cli.py +0 -0
  484. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_codegen.py +0 -0
  485. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_converters.py +0 -0
  486. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_dataobjects.py +0 -0
  487. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_documents.py +0 -0
  488. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_exports.py +0 -0
  489. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_files.py +0 -0
  490. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_loaders.py +0 -0
  491. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_locations.py +0 -0
  492. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_namespaces.py +0 -0
  493. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_package.py +0 -0
  494. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_resources.py +0 -0
  495. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_translations.py +0 -0
  496. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_utils.py +0 -0
  497. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_wsdl.py +0 -0
  498. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_xml_testfiles.py +0 -0
  499. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_xpath.py +0 -0
  500. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/test_xsd_testfiles.py +0 -0
  501. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validation/__init__.py +0 -0
  502. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validation/test_decoding.py +0 -0
  503. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validation/test_encoding.py +0 -0
  504. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validation/test_validation.py +0 -0
  505. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/__init__.py +0 -0
  506. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_assertions.py +0 -0
  507. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_attributes.py +0 -0
  508. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_builtins.py +0 -0
  509. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_complex_types.py +0 -0
  510. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_elements.py +0 -0
  511. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_exceptions.py +0 -0
  512. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_facets.py +0 -0
  513. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_groups.py +0 -0
  514. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_identities.py +0 -0
  515. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_models.py +0 -0
  516. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_notations.py +0 -0
  517. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_particles.py +0 -0
  518. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_schemas.py +0 -0
  519. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_simple_types.py +0 -0
  520. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_wildcards.py +0 -0
  521. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_xsd_globals.py +0 -0
  522. {sdcvalidator-4.0.2 → sdcvalidator-4.0.5}/tests/validators/test_xsdbase.py +0 -0
  523. {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**
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sdcvalidator
3
- Version: 4.0.2
3
+ Version: 4.0.5
4
4
  Summary: SDC4 XML validation with ExceptionalValue recovery
5
5
  Author: Axius-SDC, Inc.
6
6
  Maintainer-email: Tim Cook <contact@axius-sdc.com>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "sdcvalidator"
7
- version = "4.0.2"
7
+ version = "4.0.5"
8
8
  description = "SDC4 XML validation with ExceptionalValue recovery"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -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 ExceptionalValueType
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 otherwise.
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 target element using XPath
56
- target_elem = self._find_element_by_xpath(root, xpath)
57
- if target_elem is None:
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(target_elem)
65
- target_elem.insert(insert_pos, ev_element)
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 namespaced tag
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, f"{{{self.sdc4_ns}}}ev-name")
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 or custom element
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
- remove_existing_ev: bool = True) -> ET.ElementTree:
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
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sdcvalidator
3
- Version: 4.0.2
3
+ Version: 4.0.5
4
4
  Summary: SDC4 XML validation with ExceptionalValue recovery
5
5
  Author: Axius-SDC, Inc.
6
6
  Maintainer-email: Tim Cook <contact@axius-sdc.com>
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