Commit Graph

105 Commits

Author SHA1 Message Date
Davide Brunato a79a5583ae Fix datetime types validation on encoding
- Add is_datetime() to XSD types classes
2019-10-11 13:26:17 +02:00
Davide Brunato 588f17a1f9 Fix xs:error type decoding/encoding 2019-10-10 20:34:40 +02:00
Davide Brunato b7b6fef418 Base modules refactoring for fix ElementTree import 2019-10-07 15:31:18 +02:00
Davide Brunato 7fcacde313 Fix issue #136
- Protect facets validators from type and value errors
  - Add strictly_equal() helper to check fixed value equality
  - Move get_instance_type() from XsdType to global maps
2019-10-03 22:00:32 +02:00
Davide Brunato 9afff86ee9 Remove validators and patterns checks for XsdList/XsdUnion
- The base XsdList and XsdUnion types have no validators or patterns,
    that are added only to restrictions.
  - Added patterns optional argument to XsdUnion.iter_decode(): derived
    types pass our patterns to the xs:union base type, that checks them
    after normalization with the selected member type.
2019-10-03 07:13:56 +02:00
Davide Brunato b6c6e2ac8f Change get_context() in document module
- Now the optional schema argument is a fallbak in case
    the schema path is not found into XML resource.
2019-09-23 17:29:08 +02:00
Davide Brunato b1663c5550 Add root_type property to XsdType
- Atomic's property primitive_type transformed to attribute
  - Optimized base_type assignement
2019-09-21 10:47:11 +02:00
Davide Brunato a95dfe26fe Add is_list() to XsdSimpleType and fix xs:QName length facets 2019-09-19 19:00:05 +02:00
Davide Brunato 0480e4bee8 Add is_override() to XsdComponent for XSD 1.1 schemas
- Change is_global() from property to function
2019-09-19 06:37:42 +02:00
Davide Brunato 590c7e6c41 Add intersection() to XsdWildcard
- Renamed XsdWildcard.extend() to union()
2019-09-17 16:37:16 +02:00
Davide Brunato 07070ad714 Fix W3C instance tests
- Add iter_substitutes() to Xsd11Element to fix upa.xsd/upa2.xsd
    tests with instances. Now for XsdElement the abstract substitutes
    are simply ignored by iter_substitutes().
2019-09-11 18:43:13 +02:00
Davide Brunato c35f86d681 Add IDREF checking and fix ID collecting
- ID are not counted for XML document root
  - IDREF checked with adding a key with 0 value if missing
    (TODO: Add a validation error instance or a reference)
2019-09-06 11:37:30 +02:00
Davide Brunato e6fe1675c2 Fix fixed value check and model visiting with empty inner groups
- Added text_value() to XsdSimpleType and XsdComplexType for
    getting decoded text value for elements and attributes.
2019-08-26 08:10:58 +02:00
Davide Brunato 6c47e49971 Fixing W3C XSD 1.1 schema tests
- Add XSD 1.1 skip list in W3C test script
  - Regex: check unescaped double hyphens (--)
  - Check model extension allowed types
2019-08-23 08:48:02 +02:00
Davide Brunato 9e58e99e01 Add XSD 1.1 support and XSD components API to documentation 2019-08-19 13:52:30 +02:00
Davide Brunato 211d1deca7 Update test_w3c_suite.py
- Additional options (--xsd10, --xsd11, --valid, --invalid, a
    list of indexes) to run only a subset of the W3C tests.
  - Run also XML tests with --xml option.
  - Add filter for import warnings that are out of the scope of
    tests with W3C XSD 1.1 suite
2019-08-08 12:31:43 +02:00
Davide Brunato 4661c1e0bf Complete versioning filter for XSD 1.1+
- etree_pruning() renamed to prune_etree
  - version_check() now is used only as selector for prune_etree()
    at schema initialization
2019-08-03 05:50:18 +02:00
Davide Brunato f2a30baf32 Fix XSD 1.1 bugs with W3C XML Schema suite 2019-08-01 17:16:12 +02:00
Davide Brunato df5c454b24 Add minimal schema for versioning namespace
- Added XMLSchemaNamespaceError for namespace related errors
  - version_check moved to schema class
  - resolve_qname() now raises KeyError if namespace prefix is not found
  - resolve_qname() now raises XMLSchemaNamespaceError if a namespace
    is mapped with a prefix but is not loaded by an import
2019-08-01 07:03:03 +02:00
Davide Brunato 6e90de7b4c Add Version Control namespace attributes
- Added xsd_version property to XSD components
  - Add version_check() helper to XsdValidator base class
2019-07-31 14:19:02 +02:00
Davide Brunato d4bb951a45 Improve schema checks
- Checked and improved 'built' properties for XSD components:
      * Simple types, attributes and attribute group are now built
        withoug cheching on base types.
      * Don't check global subcomponents: the scope of built is to
        assure that local parts are built.
  - Split global maps checks from build phase:
      * XsdGlobals._check_schema substituted by check() method with
        two opional arguments. The new methos is useful also to check
        global maps also after schema building.
  - Added validator=None argument to parse_error() method
2019-07-30 14:52:51 +02:00
Davide Brunato 3d33424541 Refactor and clean reference and name attributes parsing
- Add an helper method _parse_reference()
  - Removed ref property, replaced by attribute
2019-07-29 16:01:48 +02:00
Davide Brunato 035be87572 Complete XSD 1.1 wildcards (xs:any and xs:anyAttribute) 2019-07-23 16:02:17 +02:00
Davide Brunato 281a426ec4 Code optimization on parse helpers
- Remove iter_xsd_components() and has_hsd_components() helpers
    replaced by filter() and any() calls
2019-06-26 07:27:18 +02:00
Davide Brunato 50c99f7b01 Fix issue #115
- Removed raise validation error statements for simpleType classes:
    with validation='strict' the errors are yielded and then raised at
    higher level (element/attribute) with XML instance information.
2019-06-13 16:48:51 +02:00
Davide Brunato 5d04d7e68a Implementing lazy validation
- Added XMLResource.iterfind() for XPath iteration of a resource;
  - Validator API refactored: remove path argument from iter_errors()
    of components, add validate, is_valid, iter_errors to XMLSchema
    class with additional arguments path and schema_path.
  - Fix test case patterns.xml (now find also duplicated IDs)
2019-06-05 07:01:53 +02:00
Davide Brunato d21ac11dde Fix default values decoding as reported by issue #108
- Default and fixed values are inserted during the decode or
    encode process
  - Update tox.ini to include coverage and flake8 to environments
    and an optional environment to build source and wheel packages
2019-05-31 09:29:41 +02:00
Davide Brunato 22dbd7256c Add XsdList.is_derived() and XSD 1.0 invalid rule to choice restriction 2019-04-29 22:43:41 +02:00
Davide Brunato b36472bd6d Fix tests for a new release
- W3C test script cleaned
  - Fix attribute wildcard extension: new method extend_namespace()
  - Generate an error if schema has the attribute targetNamespace=''
  - Fix complexType redefinition checks
  - Fix UPA violation checking
2019-04-29 11:44:15 +02:00
Davide Brunato c4385f4559 Fixes for bad schemas checks 2019-04-27 19:41:26 +02:00
Davide Brunato 36dbb1a904 Move and fix XsdType.is_derived()
- Method replaced by an abstract method and moved to XsdSimpleType
2019-04-15 18:49:42 +02:00
Davide Brunato e6fd152843 Fix simple restriction checking 2019-04-11 07:09:19 +02:00
Davide Brunato 14ac859b33 Write redefinition checking
- Added class attribute redefine=None to XSD types and groups: this
    attribute is ovverridden by instance attribute in case of a redefine
2019-04-07 11:50:22 +02:00
Davide Brunato c2f5512f0d Fixes for schemas with substitution groups
- Build of substitution groups moved into XsdElement code
2019-03-28 14:08:36 +01:00
Davide Brunato 85cdd364ad Fix facets for XSD builtin types
- Added facets to numerical XSD builtins but keep validator functions
  - More checks on min/max value facets
  - Removed HFP namespace from base schemas (used only for meta-schema wildcars)
2019-03-28 07:26:36 +01:00
Davide Brunato b221fa255f Bugfix for attributes and attribute groups 2019-03-27 11:59:22 +01:00
Davide Brunato f1427a3335 Fix complex restriction checking
- ParticleMixin.is_restriction() renamed to has_particle_restriction()
2019-03-22 18:17:57 +01:00
Davide Brunato 37595da57c Add model checks after schema build
- Added check on type matching of same elements
  - Added XsdGroup.check_particles() for check Unique Particle Attribution
    Constraint of schema
  - Fixed group redefine (clear in any case when _parse begins)
2019-03-21 07:14:58 +01:00
Davide Brunato b01a8579d2 Complete W3C tests with valid schemas for XSD 1.0
- Added XsdElement.get_path()
  - Fixes for XSD types, identities and pattern facets
2019-03-19 10:58:12 +01:00
Davide Brunato 5917873b7f Add resolve_qname() to XMLSchemaBase
- Replace prefixed_to_qname() with resolve_qname()
  - Code cleaning for helpers.py module
  - Add schema defaults as XMLSchemaBase class attributes
2019-03-14 15:18:28 +01:00
Davide Brunato cb255c44ef Remove max_value and min_value typos from XsdSimpleType._parse_facets() 2019-03-11 11:24:48 +01:00
Davide Brunato 069146fd22 Integrating with W3C test suite
- Fix the decoding of attributes with a default value
  - Fix parse of the element type
  - Fix parse of the element block attribute
2019-03-06 17:09:16 +01:00
Davide Brunato e55dfde69c Add min_value e max_value properties to XsdSimpleType
- Fix the checking of min/max value facets
2019-03-05 10:11:20 +01:00
Davide Brunato 326ea24785 Rewrite XSD derivation properties and attributes 2019-03-02 23:32:11 +01:00
Davide Brunato bcf6f7b21b Replace XsdSimpleType.check_facets() with _parse_facets() 2019-03-02 09:39:11 +01:00
Davide Brunato 3aaab4a115 Fix 'final' attribute checking for simple types 2019-03-01 15:34:25 +01:00
Davide Brunato a8eebf3d15 Starting integration with W3C test suite
- Added a script for using W3C test suite with unittest
  - Started with invalid schema tests
2019-03-01 09:33:06 +01:00
Davide Brunato 1ae3ebd131 Remove sample value from XSD primitive builtin types
- No more necessary, now provided by elementpath v1.1.4+.
2019-02-25 13:47:10 +01:00
Davide Brunato ccfaab9479 Fix XML resource defusing
- Add XMLResource.defusing() for checking XML data
  - Now in XMLResource.parse() and fromsource() the SafeXMLParser is
    used only for defusing data
2019-02-25 13:34:52 +01:00
Davide Brunato a341721d59 Modify assertion facets
- Move XsdAssertion to XsdAssertionFacet
  - Removed XsdAssertionFacets
  - Refactoring of XSD facets parsing
2019-02-23 09:18:36 +01:00