This release is a pre-release and may not be stable for production use.
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.
Metadata
Release files for inxs 0.2b1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| inxs-0.2b1.tar.gz | 32.4 kB | Details |
Release files / inxs-0.2b1.tar.gz
| Download URL | inxs-0.2b1.tar.gz |
|---|---|
| Size | 32.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
68630ffbd61606cc662175ddfed4b035bb2a9c7700fd228c83a697bf11250a57
|
|
BLAKE2b-256 checksum How to use checksums |
547c8dc4d04c15ce7a5a0110960524922b76551411b62fca06f7dd5086234d9a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3
|