Edouard@2752: #!/usr/bin/env python Edouard@2752: # -*- coding: utf-8 -*- Edouard@2752: # This file is part of Beremiz. Edouard@2752: # See COPYING file for copyrights details. Edouard@2752: Edouard@2752: from __future__ import absolute_import Edouard@2752: from lxml import etree Edouard@2752: Edouard@2752: class XSLTransform(object): Edouard@2752: """ a class to handle XSLT queries on project and libs """ Edouard@2752: def __init__(self, xsltpath, xsltext): Edouard@2752: Edouard@2752: # parse and compile. "beremiz" arbitrary namespace for extensions Edouard@2752: self.xslt = etree.XSLT( Edouard@2752: etree.parse( Edouard@2752: xsltpath, Edouard@2752: etree.XMLParser()), Edouard@2752: extensions={("beremiz", name): call for name, call in xsltext}) Edouard@2752: Edouard@2752: def transform(self, root, **kwargs): Edouard@2752: res = self.xslt(root, **{k: etree.XSLT.strparam(v) for k, v in kwargs.iteritems()}) Edouard@2752: # print(self.xslt.error_log) Edouard@2752: return res Edouard@2752: Edouard@2834: def get_error_log(self): Edouard@2834: return self.xslt.error_log Edouard@2752: Edouard@2834: