etree/lxml/XSLT and dynamic stylesheet variables
Stefan Behnel
stefan_ml at behnel.de
Fri Jan 20 23:56:32 EST 2012
Adam Tauno Williams, 20.01.2012 21:38:
> I'm using etree to perform XSLT transforms, such as -
>
> from lxml import etree
> source = etree.parse(self.rfile)
> xslt = etree.fromstring(self._xslt)
> transform = etree.XSLT(xslt)
> result = transform(source)
>
> according to the docs at
> <http://lxml.de/xpathxslt.html#stylesheet-parameters> I can pass a
> dictionary of parameters to transform, such as -
>
> result = transform(doc_root, **{'non-python-identifier': '5'})
>
> Can I pass a dictionary-like object? That doesn't seem to be working.
Yes it does, Python copies it into a plain dict at call time.
> I need to perform dynamic lookup of variables for the stylesheet.
Different story.
> I've subclassed dictionary and overloaded [], get, has_key, and in to
> perform the required lookups; these work in testing. But passing the
> object to transform doesn't work.
You should make the lookup explicit in your XSLT code using an XPath
function. See here:
http://lxml.de/extensions.html
Stefan
More information about the Python-list
mailing list