
Security News
AGENTS.md Gains Traction as an Open Format for AI Coding Agents
AGENTS.md is a fast-growing open format giving AI coding agents a shared, predictable way to understand project setup, style, and workflows.
Official Saxonica python package for the SaxonC-HE 12.8.0 processor: for XSLT 3.0, XQuery 3.1, XPath 3.1 and XML Schema processing.
This is the official Saxonica Python wheel package for Saxon, an XML document processor. SaxonC provides APIs to run XSLT 3.0 transformations, XQuery 3.1 queries, XPath 3.1, and XML Schema validation.
The SaxonC release comes in separate wheels for the three product editions:
SaxonC-PE and SaxonC-EE are commercial products that require a valid license key. Licenses can be purchased from the Saxonica online store. Alternatively a 30-day evaluation license is available free of charge. By downloading the software, you are agreeing to our terms and conditions.
For full documentation for the latest SaxonC release, see the SaxonC 12 documentation.
The main reason for using SaxonC in preference to other XML tools available for Python is that it supports all the latest W3C standards: XSLT 3.0, XPath 3.1, XQuery 3.1, and XSD 1.1. It even includes experimental support for the draft 4.0 specifications currently under development.
SaxonC is a version of Saxon developed by compiling the Java source code to native executables that run on the C/C++ platform, with extensions for PHP and Python. All features of Saxon have been ported, other than those (such as collations) that are necessarily platform dependent. In particular, SaxonC provides processing in XSLT, XQuery and XPath, and Schema validation. It therefore makes these processing capabilities available to a plethora of other languages that are strongly coupled to C/C++ such as PHP, Perl, Python, and Ruby.
Saxon is developed by Saxonica, a company created in 2004 by Michael Kay, who was the editor of the XSLT 2.0 and 3.0 specifications in W3C. The original Saxon product on the Java platform has been continually developed for over 20 years, and has acquired a reputation for standards conformance, performance, and reliability.
pip install saxonche
Either import the whole API:
from saxonche import *
Or specific modules:
from saxonche import PySaxonProcessor
The SaxonC API includes classes for constructing XDM data models and for a variety of processors. For full details see the SaxonC Python API documentation.
The following short example shows how to get the Saxon version from
the PySaxonProcessor
:
from saxonche import PySaxonProcessor
proc = PySaxonProcessor(license=False)
print(proc.version)
It will print something like this:
SaxonC-HE 12.8.0 from Saxonica
Note: license=False
requests the open-source version of Saxon, whereas
license=True
requests the commercial product - which requires a license file.
SaxonC looks for the license key in the directory identified by the environment
variable SAXONC_HOME
. To explicitly set the location of the license key,
create a licensed PySaxonProcessor
and set the licenseFileLocation
property
on it before doing anything else:
from saxoncee import PySaxonProcessor
proc = PySaxonProcessor(license=True)
proc.set_configuration_property("http://saxon.sf.net/feature/licenseFileLocation",
"/path/to/saxon-license.lic")
...
The following basic example shows how an XSLT stylesheet can be run against a source XML document in Python using SaxonC:
from saxonche import *
proc = PySaxonProcessor(license=False)
xsltproc = proc.new_xslt30_processor()
document = proc.parse_xml(xml_text="<doc><item>text1</item><item>text2</item><item>text3</item></doc>")
executable = xsltproc.compile_stylesheet(stylesheet_file="test.xsl")
output = executable.transform_to_string(xdm_node=document)
print(output)
For more Python examples, and further details about installing and configuring the product, see the SaxonC 12 documentation.
pylint
on a project which uses saxonche
Because the saxonche
is a C extension, you will need to either configure Pylint to load the module to avoid pylint errors like:
E0611: No name 'PySaxonProcessor' in module 'saxonche' (no-name-in-module)
$ pylint --extension-pkg-allow-list=saxonche my_module.py
All users are welcome to use the public support site for reporting issues and seeking help (registration required). In addition, many questions are asked and answered on StackOverflow: please use the saxon tag.
We learned a lot about how to create Python wheels for Saxon from the Saxonpy wheel package, which is a third-party project on github.
FAQs
Official Saxonica python package for the SaxonC-HE 12.8.0 processor: for XSLT 3.0, XQuery 3.1, XPath 3.1 and XML Schema processing.
We found that saxonche demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
AGENTS.md is a fast-growing open format giving AI coding agents a shared, predictable way to understand project setup, style, and workflows.
Security News
/Research
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.