forked from beremiz/beremiz
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathXSLTransform.py
More file actions
31 lines (23 loc) · 869 Bytes
/
XSLTransform.py
File metadata and controls
31 lines (23 loc) · 869 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# This file is part of Beremiz.
# See COPYING file for copyrights details.
from lxml import etree
class XSLTransform(object):
"""a class to handle XSLT queries on project and libs"""
def __init__(self, xsltpath, xsltext):
# parse and compile. "beremiz" arbitrary namespace for extensions
self.xslt = etree.XSLT(
etree.parse(xsltpath, etree.XMLParser()),
extensions={("beremiz", name): call for name, call in xsltext},
)
def transform(self, root, profile_run=False, **kwargs):
res = self.xslt(
root,
profile_run=profile_run,
**{k: etree.XSLT.strparam(v) for k, v in kwargs.items()}
)
# print(self.xslt.error_log)
return res
def get_error_log(self):
return self.xslt.error_log