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.

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.

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.