net.sf.saxon.s9api.package-info Maven / Gradle / Ivy
Show all versions of Saxon-HE Show documentation
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2018-2022 Saxonica Limited
// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
// If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
// This Source Code Form is "Incompatible With Secondary Licenses", as defined by the Mozilla Public License, v. 2.0.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* This package provides Saxon's preferred Java API for XSLT, XQuery, XPath, and XML Schema processing.
* The interface is designed to hide as much as possible of the detail of the
* implementation. However, the API architecture faithfully reflects the internal architecture
* of the Saxon product, unlike standard APIs such as JAXP and XQJ which in many cases force
* compromises in the design and performance of the application.
* An application starts by loading a {@link net.sf.saxon.s9api.Processor}, which allows configuration options
* to be set. As far as possible, an application should instantiate a single Processor
.
* The interfaces for XSLT, XQuery, and XPath processing all follow the same pattern. There is a three-stage
* execution model: first a compiler is created using a factory method in the Processor
object.
* The compiler holds compile-time options and the static context information. Then the compiler's
* compile()
method is called to create an executable, a representation of the compiled stylesheet,
* query, or expression. This is thread-safe and immutable once created. To run the query or transformation,
* first call the load()
method to create a run-time object called variously an {@link
* net.sf.saxon.s9api.XsltTransformer},
* {@link net.sf.saxon.s9api.XQueryEvaluator}, or {@link net.sf.saxon.s9api.XPathSelector}. This holds run-time context
* information
* such as parameter settings and the initial context node; the object is therefore not shareable and should
* only be run in a single thread; indeed it should normally only be used once. This object also provides
* methods allowing the transformation or query to be executed.
* In Saxon-EE the Processor
owns a {@link net.sf.saxon.s9api.SchemaManager} that holds
* the cache of schema components and can be used to load new schema components from source schema documents.
* It can also be used to create a {@link net.sf.saxon.s9api.SchemaValidator}, which in turn is used to validate
* instance
* documents.
* Source documents can be constructed using a {@link net.sf.saxon.s9api.DocumentBuilder}, which holds all the options
* and parameters to control document building.
* The output of a transformation, or of any other process that generates an XML tree, can be sent to a
* {@link net.sf.saxon.s9api.Destination}. There are a number of implementations of this interface, including a
* {@link net.sf.saxon.s9api.Serializer} which translates the XML document tree into lexical XML form.
* There are classes to represent the objects of the XDM data model, including {@link net.sf.saxon.s9api.XdmValue},
* {@link net.sf.saxon.s9api.XdmItem}, {@link net.sf.saxon.s9api.XdmNode}, and {@link
* net.sf.saxon.s9api.XdmAtomicValue}. These can be manipulated using methods based on the Java 8 streams
* processing model: for details see package {@link net.sf.saxon.s9api.streams}.
*
*/
package net.sf.saxon.s9api;