diff --git a/CHANGELOG.rst b/CHANGELOG.rst index fba3068..bb6c11b 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -6,6 +6,7 @@ CHANGELOG =============== * Fix descendant shortcut operator '//' * Fix text() function +* Fix typed select of '(name)' token `v1.2.1`_ (2019-08-30) ====================== diff --git a/elementpath/xpath1_parser.py b/elementpath/xpath1_parser.py index c09952b..2e88afe 100644 --- a/elementpath/xpath1_parser.py +++ b/elementpath/xpath1_parser.py @@ -304,11 +304,13 @@ def select(self, context=None): yield self.xsd_type.decode(item[1]) elif is_element_node(item, name): if self.xsd_type.is_simple(): - yield self.xsd_type.decode(item) + self.xsd_type.validate(item.text) else: - yield item + self.xsd_type.validate(item) + yield item except (TypeError, ValueError): - self.wrong_sequence_type("Type %r does not match sequence type of %r" % (self.xsd_type, item)) + msg = "Type {!r} does not match sequence type of {!r}" + self.wrong_sequence_type(msg.format(self.xsd_type, item)) ### diff --git a/tox.ini b/tox.ini index 416627f..23116f0 100644 --- a/tox.ini +++ b/tox.ini @@ -22,7 +22,9 @@ whitelist_externals = make commands = python tests/test_elementpath.py [testenv:py38] -deps = xmlschema~=1.0.13 +deps = + lxml==4.3.5 + xmlschema~=1.0.13 commands = python -m unittest [testenv:docs]