<?xml version="1.0" standalone="no"?>
<!DOCTYPE s1 SYSTEM "../../style/dtd/document.dtd">
<!--
 * Copyright 2004 The Apache Software Foundation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
-->
<s1 title="Supported Interfaces in &xslt4j;">
  <ul>
    <li><link anchor="public">Public interfaces</link></li>
    <li><link anchor="experimental">Experimental interfaces</link></li>
    <li><link anchor="internal">Internal interfaces</link></li>
  </ul><anchor name="public"/>
  <s2 title="Public interfaces">
  <p>A public interface of &xslt4j2; 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.</p>
  <p>The &xslt4j2; team will support use of public interfaces, and will
     attempt to fix severe bugs in such interfaces.</p>
  <p>A particular version of a public interface will be supported for all
     the maintenance drops of a particular version and release of &xslt4j2;
     (that is, for a release that changes just the third digit of the
     version number).  At the point a new version of &xslt4j2; 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.</p>
  <p>The public interfaces of &xslt4j2; are:</p>
  <ul>
    <li><jump href="http://java.sun.com/xml/jaxp/">JAXP 1.3</jump>
        interfaces found in the
        <jump href="apidocs/javax/xml/parsers/package-summary.html">
           <code>javax.xml.parsers</code></jump>,
        <jump href="apidocs/javax/xml/transform/package-summary.html">
           <code>javax.xml.transform</code></jump>,
        <jump href="apidocs/org/xml/sax/package-summary.html">
           <code>org.xml.sax</code></jump>,
        <jump href="apidocs/org/w3c/dom/package-summary.html">
           <code>org.w3c.dom</code></jump> and
        <jump href="apidocs/javax/xml/xpath/package-summary.html">
           <code>javax.xml.xpath</code></jump> packages. </li>
    <li>The &xslt4j2; specific XPath API, defined by the classes
      <ul>
        <li><jump href="apidocs/org/apache/xpath/XPathAPI.html">
          <code>org.apache.xpath.XPathAPI</code></jump></li>
        <li><jump href="apidocs/org/apache/xpath/CachedXPathAPI.html">
          <code>org.apache.xpath.CachedXPathAPI</code></jump></li>
      </ul>
    </li>
    <li>API's for using, configuring or defining a serializer, from the
        <code>org.apache.xml.serializer</code> package:
      <ul>
        <li><jump href="apidocs/org/apache/xml/serializer/OutputPropertiesFactory.html">
                <code>OutputPropertiesFactory</code></jump></li>
        <li><jump href="apidocs/org/apache/xml/serializer/SerializerFactory.html">
                <code>SerializerFactory</code></jump></li>
        <li><jump href="apidocs/org/apache/xml/serializer/Serializer.html">
                <code>Serializer</code></jump></li>
      </ul>
    </li>
    <li>Properties files for configuring a serializer.  (See
        <link idref="usagepatterns" anchor="outputprops">Setting output
        properties in your stylesheets</link> for more information.)
      <ul>
        <li><code>org/apache/xml/serializer/output_xml.properties</code></li>
        <li><code>org/apache/xml/serializer/output_html.properties</code></li>
        <li><code>org/apache/xml/serializer/output_text.properties</code></li>
      </ul>
    </li>
    <li>Command-line interfaces for performing transformations:
      <ul>
        <li><link idref="commandline">&xslt4j; Command-line utility</link></li>
        <li><link idref="xsltc_usage" anchor="compile">Compiling translets
              from the command line</link></li>
        <li><link idref="xsltc_usage" anchor="run">Running translets
              from the command line</link></li>
      </ul>
    </li>
  </ul>
  </s2><anchor name="experimental"/>
  <s2 title="Experimental interfaces">
  <p>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.</p>
  <p>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 &xslt4j2;, although the &xslt4j2; team could
     decide to simply withdraw the API, if it decided that making the API
     a public interface would not be appropriate.</p>
  <p>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 &xslt4j2; team may fix severe bugs in
     experimental interfaces.</p>
  <p>The experimental interfaces of &xslt4j2; are:</p>
  <ul>
    <li>The
        <jump href="http://www.w3.org/TR/2004/NOTE-DOM-Level-3-XPath-20040226">
           DOM Level 3 XPath API</jump> found in the
        <jump href="apidocs/org/apache/xpath/domapi/package-summary.html">
           <code>org.apache.xpath.domapi</code></jump> package.</li>
  </ul>
  </s2><anchor name="internal"/>
  <s2 title="Internal interfaces">
  <p>All other classes are considered to be part of the internal interface of
     &xslt4j2;.  Some such classes or members of such classes may themselves
     be designated as <code>public</code> using the Java keyword, but that is
     a consequence of the internal organization of &xslt4j2;.</p>
  <p>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.</p>
  </s2>
</s1>
