inxs 0.2b1

Creator: rpa-with-ash

Last updated:

Add to Cart

Description:

inxs 0.2b1

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(node: TagNode):
return node.attributes['username'], first(node.css_select("name")).full_text

def append_person(previous_result, result: TagNode):
result.append_child(result.new_tag_node(
"name", attributes={"username": previous_result[0]},
children=[previous_result[1]]
))

transformation = Transformation(
Rule('person', (extract_person, append_person)),
result_object='context.result', context={'result': new_tag_node('root')})

# that's four lines less LOC than the XSLT implementation
Solving the Wikipedia XSLT example #2:
def generate_skeleton(context):
context.html = new_tag_node(
"html", namespace='http://www.w3.org/1999/xhtml',
children=(
tag("head",
tag("title", "Testing XML Example")),
tag("body", (
tag("h1", "Persons"),
tag("ul")
)),
)
)

def extract_person(node: TagNode, persons):
persons.append(
(first(node.css_select("name")).full_text,
first(node.css_select("family-name")).full_text)
)

def list_persons(previous_result, html: TagNode):
first(html.css_select("html|body html|ul")).append_child(
*(html.new_tag_node("li", children=[f'{x[1]}, {x[0]}'])
for x in previous_result)
)

transformation = Transformation(
generate_skeleton,
Rule('person', extract_person),
lib.sort('persons', itemgetter(1)),
list_persons,
result_object='context.html', context={'persons': []})

# that's four lines more LOC than the XSLT implementation
Here you can find the source repository and issue tracker of inxs.



History

0.2b1 (2019-06-23)

refactored to base on delb instead of lxml

removed from the available symbols for handler functions:

tree
xpath_evaluator (use root.xpath instead)





renamed available symbols for handler functions:

element -> node





renamed in core:

SkipToNextElement -> SkipToNextNode





removed from the lib:

drop_siblings
extract_text
has_tail
init_elementmaker
merge
replace_text
sub





renamed in the lib:

make_element -> make_node
remove_element -> remove_node
remove_elements -> remove_nodes
sorter -> sort
strip_attributes -> remove_attributes
strip_namespace -> remove_namespace





Various arguments to functions and methods have been renamed accordingly.


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.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.