Source code, samples, and other resources
Source code, sample files, and documentation are not included in the same download file as
the executable code. Instead, the samples and documentation are available in a separate
resources file saxon-resources-13.zip, which can be downloaded from either the
GitHub Saxon-HE
repository or the www.saxonica.com site. The documentation is also available
online.
Source code
It is not necessary to download or recompile the source code unless you need to make changes (and it is rarely necessary to make changes, because Saxon provides extensive system programming hooks to enable customization). The exception to this is that in SaxonJ-HE, adapters for external object models, and localization code for non-English languages, are provided in source form only.
The original source code (the code that Saxonica's developers work with) contains preprocessor directives that mark some of the code to be included only in some Saxonica products and not others. Saxonica makes this original source code available, as required by the terms of an open source license. However, for many users it is simpler to work with the version of the code that has been preprocessed for SaxonJ-HE. The preprocessed code can be dropped directly into an IDE such as Eclipse or IntelliJ.
- The original source code, including preprocessor directives, is available in a GIT repository. This also includes gradle build scripts, which you may need to customize to remove unwanted dependencies.
- The preprocessed source code, suitable for dropping into your IDE, is available as a download in the Saxonica Saxon-HE GitHub repository.
The modules included in the original source code of SaxonJ-HE are also used, with different preprocessing, in SaxonJ-PE and SaxonJ-EE. Source code for the additional components of the commercial editions is not provided. The source code is the same between the Java and .NET platforms: both products are generated from the same source, though there are some modules that apply only to one platform or the other.
SaxonCS is built partly from C# code transpiled from Java, and partly from hand-written C# code. (The hand-written code is partly to interface Saxon to the .NET platform, and partly to provide an API that follows C# conventions.) The transpiled C# code is not technically "source" code, at least not in the sense of an open source license, because it is software-generated. In the language of the Mozilla Public License, it falls within the definition of an "executable form" of the software.
Saxonica intends to publish the C# code of SaxonCS-HE, subject to the proviso that (a) most of it is not technically source code in the sense of an open source license, and (b) the fact that it is generated by a transpiler limits its usefulness. We will publish information on this as soon as we have worked out the details.
Saxonica has no plans to release the transpiler used to generate SaxonCS from SaxonJ. This is essentially because it would set false expectations. The transpiler has been developed for internal use: it handles the SaxonJ code, but cannot handle arbitrary Java source code, and the restrictions are not well documented. Turning it into a releasable product would be a significant effort.
Source code for SaxonC-HE is available as a download in the Saxon-HE GitHub repository.
Note that although Saxon-HE is made available under an open source license, and everyone is welcome to use the code under the terms of that license, it is not developed using an open collaborative development process. Saxonica retains full design control, and will only accept third-party contributions under very strict conditions.
User documentation
User documentation (this documentation, together with API specifications for the Java and C# products) is also available for download from the Saxonica Saxon-HE GitHub repository. The resources download contains exactly the same information as the documentation section of the Saxonica website. It also contains the SaxonC documentation.
Sample applications
The resources download contains a number of sample applications, found in the directory
/samples. They are described in the Samples section of the documentation.