Hi I'm trying to use the .xpath('id("foo")') function on an lxml tree but can't get it to work.
Given the following XML: <root><child id="foo"/></root> And it's XMLSchema: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="root"> <xs:complexType> <xs:sequence> <xs:element ref="child"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="child"> <xs:complexType> <xs:attribute name="id" use="required" type="xs:ID"/> </xs:complexType> </xs:element> </xs:schema> Or in more readable, compact RelaxNG, form: element root { element child { attribute id { xsd:ID } } } Now I'm trying to parse the XML and use the .xpath() method to find the <child/> element using the id XPath function: from lxml import etree schema_root = etree.parse(file('schema.xsd')) schema = etree.XMLSchema(schema_root) parser = etree.XMLParser(schema=schema) root = etree.fromstring('<root><child id="foo"/></root>', parser) root.xpath('id("foo")') --> [] I was expecting to get the <child/> element with that last statement (well, inside a list that is), but instead I just get an empty list. Is there anything obvious I'm doing wrong? As far as I can see the lxml documentation says this should work. Cheers Floris -- http://mail.python.org/mailman/listinfo/python-list