- Add custom parser for assertion facet (without position() and last()).
- Move parser initialization to XsdAssert.parse_xpath_test() because
all the components must be defined.
- 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().
- XMLResource.get_namespaces(): consider local root when adding
another default namespace
- Fix for XPath default namespace handling in ElementPathMixin
- Moved all ElementTree/XPath iter methods to ElementPathMixin
- Moved XsdElement.match() method to XsdComponent
- Added attribute qualified=True to XsdComponent
- Optimized safe iteration methods (collecting only local elements)
- Schema text property transformed to a get_text() to avoid ElementPathMixin
override (the text property should be always None for schema components).
- Add tail and get() to ElementPathMixin.
- ElementPathMixin now is derived from collections.Sequence
- XMLSchemaMeta now is derived from abc.ABCMeta
- iter() and iterchildren(): name optional argument changed to tag
- iter() rewritten for XMLSchema and XsdElement
- Local elements and attributes with form == 'unqualified' now
have an unqualified name.
- Attribute groups include both qualified and unqualified lookups
for unqualified attributes.
- For XSD 1.0 in an XPath expression the default namespace have to be
mapped to no namespace (need to use a prefix for targetNamespace)
- Due to this two test about XPath fail for XSD 1.0
- Added xpathDefaultNamespace attribute parser method
- Added validation='strict' argument to XsdBaseComponent
- Moved _parse and _parse_error methods to XsdBaseComponent
- XPathMixin renamed to ElementPathMixin
Module to constraints.py:
- XPathSelector renamed to XsdSelector
- Created a XsdFieldSelector subclass for parsing xs:field definitions
- Added an XsdSelectorXPathParser created by xpath builder function
Module xpath.py:
- Created 2 full lists for XPath1 and XPath2 (to complete)
- Created the XPathSelector class
Modified the class XPathParser of module xpath.py:
- Removed the parameter token_table, not used and not necessary;
- Added a 'version' argument that can be 1 or 2 (default);
- Added an 'exclude' argument to remove some tokens for a limited
parsing, required in some cases.
- Argument --extra substituted with -s/--skip-extra that doesn't
change the old behaviour
- Fixed a typo for XsdSimpleType.check_facets() (min_inclusive)
- Added a fix for lxml.etree._Comment parsing in XsdElement.iter_decode()
- now parses also WSDL-SOAP original schema
xmlschema/schema.py module:
- more XSD compiliant imports and includes
- added 'locations' argument to schema class init
- improved schema location hints
- revised documentation with more autodoc
- schema class code cleaning
- schema class creation is now based on a metaclass
xmlschema/resources.py module:
- added iter_schema_location_hints
- fetch_schema code cleaned
- removed old functions for retrieving XSI attributes
xmlschema/exceptions.py module:
- added index and expected attributes to XMLSchemaChildrenValidationError
Updated docs using more autodocs
Added requirements-dev.txt
* The `set_context` method has been removed because is not always
applicable starting from schema;
* Now all identity constraints paths are selected from instances;
* XPath select functions now have a name related to the selection scope;
* Added `etree_getpath` function in etree.py;
* Added `maxunicode` checks in codepoints.py (issue #32, Python 2.7
compiled without --enable-unicode=ucs4) for load only UCS-2 code points.
- Fixed issues #28 and #29
- Code cleaning
- Created a "validators" subpackage that includes schemas, xsd global
maps and all the XSD components
- Added "prefixed_name" property to XsdComponent class
* new file: xmlschema/components/constraints.py
* parsed xs:unique, xs:key and xs:keyref and subcomponents
* added '|' as reference delimiter in xpath.py tokenizer
* improved XPathParser to check operator: the base class
admits all operators, subclasses can restricts overriding
NOT_ALLOWED_OPERATORS class attribute.
* Default converter (the format used by the package before)
* Converters for JsonML, Parker, Badgerfish and Abdera conventions
* Update of the documentation
* Refactoring of modules for grouping QName functions and
declarations (module xmlschema/qnames.py)
* Created a module for namespaces declarations
(xmlschema/namespaces.py)
* Added a directory for model declaration tests
(xmlschema/tests/examples/model/)
* Added XsdAnnotation class as subclass of XsdBase
* XsdBase class splitted and create XsdComponent class
as the new parent class of XSD components
* Documentation extended
* Docuemtation examples now are tested with doctest
* Improved tests for XPath, validation and decoding
* The collection.xsd example schema has been extended
* Removed the exception XMLSchemaBaseValidatorError
* Now XMLSchemaValidationError is the parent class of
decode/encode exceptions
* Added test files for decoder (examples/decoder/*);
* Added a variant of test schema vehicles.xsd (examples/vehicles/vehicles2.xsd);
* Added XPath filter predicates;
* Fixed empty dict decoding to None (issue #4).
* Added iterfind, find and findall APIs to schema class for searching
XSD element declarations using XPath;
* Added xmlschema/xpath.py for parsing XPath;
* Added namespace optional argument to iter_decode method, in order
to map fully qualified names into names with prefixes when decoding.