A framework for XML transformations without boilerplate.
Project description
inxs – A Python framework for XML transformations without boilerplate.
inxs is inexcessive.
inxs is not XSLT.
inxs is ISC-licensed.
inxs is fully documented here: https://inxs.readthedocs.io/en/latest/
At a glimpse
Solving the Wikipedia XSLT example #1:
def extract_person(element):
return element.attrib['username'], element.find('name').text
def append_person(previous_result, result):
lxml_utils.subelement(result, 'name', {'username': previous_result[0]},
text=previous_result[1])
transformation = Transformation(
Rule('person', (extract_person, append_person)),
result_object='context.result', context={'result': etree.Element('root')})
# that's five (or not counting line-breaks: nine) lines less sloc
# than the XSLT implementation
Solving the Wikipedia XSLT example #2:
def generate_skeleton(context, e):
context.persons_list = e.ul()
context.html = e.html(
e.head(e.title('Testing XML Example')),
e.body(e.h1('Persons'), context.persons_list))
def extract_person(element, persons):
persons.append((element.find('name').text, element.find('family-name').text))
def list_persons(previous_result, persons_list, e):
persons_list.extend(e.li(f'{x[1]}, {x[0]}') for x in previous_result)
transformation = Transformation(
lib.init_elementmaker(namespace='http://www.w3.org/1999/xhtml'),
generate_skeleton,
Rule('person', extract_person),
lib.sorter('persons', itemgetter(1)),
list_persons,
result_object='context.html', context={'persons': []})
# that's eight (or not counting line-breaks: thirteen) lines less sloc
# than the XSLT implementation
Here you can find the source repository and issue tracker of inxs.
History
0.1b1 (2017-06-25)
new: Allows the definition that any rule must match per transformation as common_rule_conditions.
Minor improvements and fixes.
0.1b0 (2017-06-19)
First beta release.
0.1a0 (2017-05-02)
First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
inxs-0.1b2.dev2.tar.gz
(42.7 kB
view hashes)
Built Distribution
inxs-0.1b2.dev2-py3-none-any.whl
(19.0 kB
view hashes)
Close
Hashes for inxs-0.1b2.dev2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 950e5ca2b8a99e7eb5282347f22ddd8de02ac94732962715553ce168e3a29f1c |
|
MD5 | 76c847a5192cab0f07801bc67c2d5892 |
|
BLAKE2b-256 | 3c4b9aa31dc6e9755558a34a2193b68d5cb85f414ba90f15f0d108c63e749287 |