Mercurial > genshi > genshi-test
diff markup/tests/path.py @ 228:f79b20a50919
Add support for position predicates in XPath expressions.
author | cmlenz |
---|---|
date | Fri, 08 Sep 2006 10:51:14 +0000 |
parents | e4dad1145f84 |
children |
line wrap: on
line diff
--- a/markup/tests/path.py +++ b/markup/tests/path.py @@ -27,9 +27,6 @@ self.assertRaises(PathSyntaxError, Path, '..') self.assertRaises(PathSyntaxError, Path, 'parent::ma') - def test_error_position_predicate(self): - self.assertRaises(PathSyntaxError, Path, 'item[0]') - def test_1step(self): xml = XML('<root><elem/></root>') @@ -407,6 +404,23 @@ self.assertEqual('<foo>bar</foo>', path.select(xml, variables=variables).render()) + def test_predicate_position(self): + xml = XML('<root><foo id="a1"/><foo id="a2"/><foo id="a3"/></root>') + path = Path('*[2]') + self.assertEqual('<foo id="a2"/>', path.select(xml).render()) + + def test_predicate_attr_and_position(self): + xml = XML('<root><foo/><foo id="a1"/><foo id="a2"/></root>') + path = Path('*[@id][2]') + self.assertEqual('<foo id="a2"/>', path.select(xml).render()) + + def test_predicate_position_and_attr(self): + xml = XML('<root><foo/><foo id="a1"/><foo id="a2"/></root>') + path = Path('*[1][@id]') + self.assertEqual('', path.select(xml).render()) + path = Path('*[2][@id]') + self.assertEqual('<foo id="a1"/>', path.select(xml).render()) + def test_name_with_namespace(self): xml = XML('<root xmlns:f="FOO"><f:foo>bar</f:foo></root>') path = Path('f:foo')