Hi! The Namespace class now has a doctest in scoder2/doc/namespace_extensions.txt. I also gave a quick example on how to use XPath extension functions, but I still somewhat feel that the prefixes should not have to be specified on evaluation. My current example looks like this: .>>> from lxml.etree import Namespace .>>> def tag_of(context, elem): ... return elem[0].tag .>>> namespace = Namespace('myfunctions') .>>> namespace['tagname'] = tag_of .>>> element = XML('<test><honk honking="true"/></test>') .>>> element.xpath('f:tagname(//honk)', {'f' : 'myfunctions'}) 'honk' What bothers me is the {'f' : 'myfunctions'} in there. The user shouldn't have to care about that. What about supporting this: .>>> element.xpath('{myfunctions}tagname(//honk)') My XPath class already supports that for elements, but it is not currently done for extension functions (and not in the two original evaluators either, for backward compatibility). Personally, I'd prefer removing the current extension support completely, since it makes the code rather complicated. Providing two different APIs to the user and then merging the functions from both of them internally is not exactly elegant. Stefan