- Public interfaces
- Experimental interfaces
- Internal interfaces

| Public interfaces |

A public interface of Xalan-Java 2 is an API that a typical client developer should code against. Such interfaces are usually based upon World-Wide Web Consortium (W3C) recommendations, such as XSLT 1.0 and XPath 1.0, or Java Specification Requests (JSR's) with a status of "Final Release", such as JAXP.

The Xalan-Java 2 team will support use of public interfaces, and will attempt to fix severe bugs in such interfaces.

A particular version of a public interface will be supported for all the maintenance drops of a particular version and release of Xalan-Java 2 (that is, for a release that changes just the third digit of the version number). At the point a new version of Xalan-Java 2 is made available, (that is, a release that changes the first or second digit of the version number) such interfaces could change to reflect the latest standard specifications.

The public interfaces of Xalan-Java 2 are:

- JAXP 1.3 interfaces found in the `javax.xml.parsers`, `javax.xml.transform`, `org.xml.sax`, `org.w3c.dom` and `javax.xml.xpath` packages.
- The Xalan-Java 2 specific XPath API, defined by the classes
  - `org.apache.xpath.XPathAPI`
  - `org.apache.xpath.CachedXPathAPI`
- API's for using, configuring or defining a serializer, from the `org.apache.xml.serializer` package:
  - `OutputPropertiesFactory`
  - `SerializerFactory`
  - `Serializer`
- Properties files for configuring a serializer. (See Setting output properties in your stylesheets for more information.)
  - `org/apache/xml/serializer/output_xml.properties`
  - `org/apache/xml/serializer/output_html.properties`
  - `org/apache/xml/serializer/output_text.properties`
- Command-line interfaces for performing transformations:
  - Xalan-Java Command-line utility
  - Compiling translets from the command line
  - Running translets from the command line

| Experimental interfaces |

Interfaces and classes that are designated experimental reflect recent World-Wide Web Consortium (W3C) draft recommendations or draft Java Specification Requests (JSR's). Such an API is based upon a specification that is subject to change, and so is itself subject to change as the relevant standards body makes changes to the specification.

If and when the specification upon which the API is based reaches its final published form, the API could become a Public interface in a subsequent release of Xalan-Java 2, although the Xalan-Java 2 team could decide to simply withdraw the API, if it decided that making the API a public interface would not be appropriate.

As the name suggests, experimental interfaces are provided in order to give users the opportunity to experiment with new features so that they can provide feed-back on those features. They should not be used in production-level code. The Xalan-Java 2 team may fix severe bugs in experimental interfaces.

The experimental interfaces of Xalan-Java 2 are:

- The DOM Level 3 XPath API found in the `org.apache.xpath.domapi` package.

| Internal interfaces |

All other classes are considered to be part of the internal interface of Xalan-Java 2. Some such classes or members of such classes may themselves be designated as `public` using the Java keyword, but that is a consequence of the internal organization of Xalan-Java 2.

Users who have complex and specific needs, such as the need to build their own XSLT or XPath processors, might use these internal interfaces, but their use is not supported. In addition these interfaces are subject to change without notice.

Copyright © 2006 The Apache Software Foundation. All Rights Reserved.