I am trying to evaluate an XPath expression that involves namespace
prefixes. Just trying to use node.xpathEval('//pre:element') fails
with:
Undefined namespace prefix
xmlXPathEval: evaluation failed
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/usr/lib/python2.3/site-packages/libxml2.py", line 361, in xpathEval
res = ctxt.xpathEval(expr)
File "/usr/lib/python2.3/site-packages/libxml2.py", line 6221, in xpathEval
if ret is None:raise xpathError('xmlXPathEval() failed')
libxml2.xpathError: xmlXPathEval() failed
And so I assumed that perhaps the XPath evaluation engine does not pick
up on namespaces that are in scope, and that I would have to craft an
XPath evaluation context to specify my namespace prefix bindings.
Note: I don't know if my assumptions are correct; it is hard to find
precise documentation on the semantics of the various API
points of entry, and even harder when it comes to the Python
API. As such, corrections of any of my erroneous
assumptions/approaches are welcome.
So I get started on experimenting with the xpathContext class in Python
from the command line:
Python 2.3.2 (#1, Nov 21 2003, 14:36:46)
[GCC 3.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import libxml2
>>> doc = libxml2.parseFile('overview.xml.rdf')
>>> xc = libxml2.xpathContext()
>>> xc
<libxml2.xpathContext instance at 0x40a4f30c>
>>> xc.setContextDoc(doc)
Segmentation fault
The same thing happens when I try to use setContextNode (with a node
instead of doc). I am ...
Using libxml 20606, libxslt 10103 and libexslt 803
xsltproc was compiled against libxml 20606, libxslt 10103 and libexslt 803
libxslt 10103 was compiled against libxml 20606
libexslt 803 was compiled against libxml 20606
Can someone point me in the right direction? Is this latter problem a
bug?
Take care,
John L. Clark
Attachment:
pgpPZYvLnVFHz.pgp
Description: PGP signature