Hello,

     Last year, Ilene Seelemann put some effort into producing a list of 
the API's that should be considered to be public, another list of those 
that should be considered experimental, and a third list of those that 
should be considered purely internal to Xalan-Java.  The idea was that 
this would provide some guidance to users on the extent to which they can 
rely on particular API's from one release of Xalan-Java to the next. 
Xerces-J has something similar on its web-site.[1]

     I spent a little time putting the final touches on Ilene's document, 
and have presented it below.  If no one objects, I'd like to include the 
following information in the web site for the Xalan-J 2.6.0 release.

     If anybody feels he or she hasn't had sufficient time to consider 
this, or objects to any of the specific details, I'll hold off until the 
next release.


------------------------------------------------------------------
Supported Interfaces in Xalan-Java
----------------------------------

Public Interfaces
-----------------

A public interface of Xalan-Java 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 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 (i.e., 
a change in just the third digit of the version number).  At the point a 
new release of Xalan-Java is made available (i.e., a change in 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 are:

 o JAXP 1.2 interfaces found in the javax.xml.parsers and
   javax.xml.transform packages.

 o The XPath API, defined by the classes

     . org.apache.xpath.XPathAPI 
     . org.apache.xpath.CachedXPathAPI 

 o API's for using, configuring or defining a serializer, from the
   org.apache.xml.serializer package: 

     . OutputPropertiesFactory 
     . SerializerFactory 
     . Serializer 

 o Properties files for configuring a serializer.

     . org/apache/xml/serializer/output_xml.properties 
     . org/apache/xml/serializer/output_html.properties 
     . org/apache/xml/serializer/output_text.properties 

 o 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.  The Xalan-Java team could instead 
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 experimental interfaces of Xalan-Java are:

 o 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.  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.

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.
------------------------------------------------------------------

Thanks,

Henry
[1] http://xml.apache.org/xerces2-j/api.html
------------------------------------------------------------------
Henry Zongaro      Xalan development
IBM SWS Toronto Lab   T/L 969-6044;  Phone +1 905 413-6044
mailto:[EMAIL PROTECTED]

Reply via email to