




















|
| |
Xalan-Java version 1.1.D01 is a Developer's release. We plan to make a standard point release (Xalan-Java 1.1.0) with more extensive
testing and additional bug fixes shortly after the Xerces-Java team releases Xerces-Java 1.1.2.
 |  |  |  | Changes since Xalan-Java version 1.0.1 |  |  |  |  |
| |
Xerces-Java version 1.0.4 introduced some API changes that caused problems for Xalan-Java version 1.0.1. The two teams have collaborated to bring Xalan-Java and Xerces-Java back into synch with Xalan-Java version 1.1.D01 and Xerces-Java version 1.1.1.
We have also addressed several bugs found in Xalan-Java version 1.0.1:
- A function or variable reference on the left-hand-side of a union was sometimes incorrectly evaluated. This has been fixed. The fix, however, introduces a new bug that we have not yet fixed: complex XPath expressions including steps after a union raise an unknown access error and do not return the correct node-set.
- Numbered entity references were sometimes output in hexadecimal, not decimal. Numbered entity references are now always output in decimal.
- Xalan-Java was not using the xsl:output standalone attribute to place document standalone declarations in the output. If the standalone attribute is set to "yes", Xalan-Java now includes a standalone document declaration in the output. If the standalone attribute is set to "no", Xalan-Java does not place a standalone document declaration in the output.
- xsl:key declarations in imported stylesheets did not work. This has been fixed.
- When the key() function encountered an attribute set to a null string, key() ignored all subsequent nodes. This has been fixed.
- The local-name function now returns the correct string for text and comment nodes.
- We fixed a namespace resolution problem in the XPathAPI eval() method. XPathAPI provides an API for executing XPath expressions and is included with the ApplyXPath sample application.
Ant
We have upgraded support for using Apache Ant to build Xalan-Java. For the details, see Using Ant.
URI attributes in HTML output
In response to requests, we have added a boolean SpecialEscapeURLs property to FormatterToHTML and changed the way we output certain characters in URI attributes (such as HREF) when the output method is HTML.
What we did in version 1.0.1: Non-ASCII characters, space, and double quote("), were output as %hh , where hh is the hex value of the character. Ampersand (&) was output literally.
What we do by default in version 1.1.0D01 (the SpecialEscapeURLs is set to false): Non-ASCII characters are output as &#nnn , where nnn is the decimal value of the character, and HTML special characters are output as &xyz; , where xyz is the named entity for this character (such as " for "). Space is output as a literal space.
What we do in version 1.1.D01 if you set the FormatterToHTML SpecialEscapeURLs property to true: Non-ASCII characters and space are output as %hh , where hh is the hex value of the character, and double quote is output as " (instead of %22 ). Ampersand is output as a literal ampersand.
Given our reading of the XSLT and HTML specs, we are not sure this is appropriate output to support, so we are soliciting feedback from the XSL community.
Here is code fragment indicating one technique for setting SpecialEscapeURLs to true.
 |  |  |  | // Manually set up a FormatterToHTML
OutputFormat format = new OutputFormat( "html", "UTF-8", false );
org.apache.xalan.xpath.xml.FormatterToHTML formatter =
new FormatterToHTML();
formatter.init(writer, format);
// New! Turn on the new special HTML URL attr escaping
formatter.setSpecialEscapeURLs(true);
// Perform the process, using the Formatter as a target
processor.process(new XSLTInputSource(xmlName),
new XSLTInputSource(xslName),
new XSLTResultTarget(formatter)); |  |  |  |  |
|
 |  |  |  | Open bugs and bug reporting |  |  |  |  |
| |
Open bugs:
- Complex XPath expressions including steps after a union raise an unknown access error and do not return the correct
node-set.
- Text nodes with entity references are not handled correctly by the Document Table Model (DTM). An entity reference in a text node causes the node to be split at that entity. A problem was also reported with the contains() function; contains(String, entity) was returning false when it should return true. Workaround: instantiate the XSLTProcessor as follows so it uses the XercesLiaison class and the Xerces DOM parser:
org.apache.xalan.xslt.XSLTProcessor xsltProc = org.apache.xalan.xslt.XSLTProcessorFactory.getProcessor(
new org.apache.xalan.xpath.xdom.XercesLiaison());
If you are running org.apache.xalan.xslt.Process from the command line, include
-parser org.apache.xalan.xpath.xdom.XercesLiaison
on the command line.
- UTF-16 output encoding is not yet supported. Under Sun's JDK 1.2.2, a suitable message is issued, but a stack dump occurs under JDK 1.1.8 due to differences in ByteToCharConverter.
- Implied HTML output (the output begins with <HTML>, but the output method has not been explicilty set to HTML) is not thread-safe, due to a "late" change of output method. Workaround: put an explicit <xsl:output method="html".../> declaration in the stylesheet.
- The namespace::* axis only selects namespaces that were declared locally on the context node. Inherited namespaces are in effect; the only known flaw is the lack of their presence on this rarely-used axis. The name() function, when applied to a namespace node, returns a string that disagrees with other processors, and the XPath spec is vague on this point.
- In some cases, exclude-result-prefixes takes effect even when the specified prefix appears in sub-elements, causing output of unresolved prefixes. If you experience this, please adjust your exclude-result-prefixes attribute.
- The id() function doesn't work in some complex match patterns.
- If you specify HTML output and encoding via xsl:output, and if a <HEAD> element is generated, then the encoding should be represented in a <META> tag inside the <HEAD> element. We do not put out the META tag nor any representation of the encoding in this case.
- If you are generating processing instructions (PIs) in XML output, and you attempt to insert a literal "?>" in it, the spec says that "? >" should be generated, inserting a space to prevent interpretation as the end of the PI. We do not take this special step, so "?>" is generated.
- When outputting URI attributes in HTML, almost all "control" characters below decimal 32 will cause an error to be raised, rather than silently being discarded. Most characters above decimal 127 will be output as that character. Percent should be output as %25 at all times (it is currently output as a literal percent); this will be fixed later.
Bug reports that we have not yet confirmed:
- We have a report that passing a long string value (somewhere over 128 characters) to a template via with-param caused an overflow problem under Solaris with a Sun JDK. We have not seen the problem under Sun's JDKs (1.1.8 and 1.2.2) on Win32. Additional reports are welcome.
- We have a report that external entities can affect xsl:copy in a DOM input scenario. An external entity that had no attributes was causing improper copying, and adding an attribute fixed the problem. To date we have been unable to create the bug situation in our lab.
Outstanding bugs are recorded in the Apache XML Bug Tracking System.
If you find a bug, please use this system to report it.
|
| |
The Xalan-Java version 1.1.D01 has been tested with Xerces-Java version 1.1.1. The Xalan-Java version 1.1.D01 download from xml.apache.org includes xerces.jar from Xerces-Java version 1.1.1. For information about including xerces.jar on the system class path, see Setting up the system class path.
Important You may experience unpredictable anomalies if your Xalan and Xerces builds are not in synch. If you download an update to Xalan, check the release notes to determine which version of Xerces you should use.
|
 |  |  |  | To-do tasks for future Xalan-Java releases |  |  |  |  |
| |
The Xalan-Java team is hard at work on Xalan-Java version 2.0, which represents a major redesign of the Xalan XSLT Processor.
The main goals of this redesign are as follows:
- Improvide ease of access and usability of Xalan-Java, and encourage greater participation from the open source community
in the ongoing design and development process
- Reduce code size and complexity
- Improvide performance and simplify optimization.
- Produce more localized, less-intertangled modules
- Begin the adoption of the TRaX (Transformations for XML) interfaces.
As part of the xml.apache team, members of the Xalan-Java team are also exploring options to upgrade the integration of all
the xml.apache projects, including Xalan, Xerces, Cocoon, and FOP.
The more individuals who join in the design, development, testing, documention, and use of
Xalan-Java the better for us all in the xml.apache.org open source community! Watch the Xalan Development Mailing List
for more information and for ideas about how you can get involved.
|
|
| |
| |
Apache Ant is a flexible, powerful, and easy-to-use Java build tool that we include with the
Xalan-Java distribution. The Ant JAR file is in the root directory along with a cross-platform XML build file (build.xml), a
Windows32 batch file (build.bat) and a UNIX shell file (build.sh). The build file defines the "targets" that you can use Ant
to build. The batch and shell files set up the classpath and launch Ant with the target (and any other arguments) you
provide.
Instructions for using Ant
- Set the JAVA_HOME environment variable to the JDK root directory.
If you are using JDK 1.1.8, you must also put classes.zip in the JDK bin directory on the classpath. You can use Ant
with JDK 1.1.8 to compile and jar the Xalan-Java source files, but you must have JDK 1.2.2 or higher to build the
documentation.
- Depending on your environment, run the batch file (build.bat) or shell file (bmild.sh) from the Xalan-Java root
directory, optionally with arguments (see the table of targets below).
The batch/shell file adds several JAR files to the classpath and launches Ant with any arguments you provide. If you
provide no target, Ant compiles the source files and rebuilds xalan.jar (the "jar" target).
You can also set up your classpath manually (see build.bat or build.sh for the details), and then run Ant as
follows:
java org.apache.tools.ant.Main target
where target is nothing (for the default target) or one of the following.
Target
| What Ant does
|
compile
| compiles Xalan-J in build/classes.
|
jar
| creates xalan.jar in the build directory (the default)
|
samples
| compiles and jars the sample apps
|
docs
| creates the HTML User's Guide in build/docs
|
javadocs
| generates the API documentation in ./build/docs/apidocs
|
dist
| creates a complete distribution in xalan-j_x_y_z
|
site
| creates the website documentation tree in xml-site/target/xalan
|
clean
| purges the build, distribution, and site trees
|
If you build a target that depends on other targets, Ant creates those other targets in the correct order.
Other build tools
The distribution also includes makefiles that you can use with the GNU development tools. And of course you can also use
the underlying utilities to compile source files, create JAR files, generate Javadoc, and generate the HTML User's Guide. One
utility that you may not be familiar with is org.apache.stylebook.StyleBook (in stylebook-1.0-b2.jar), a tool from the
xml-stylebook module that we use along with Xalan and Xerces to help generate the documentation. For the details, you can
inspect the makefiles.
|
| |
The Xalan-Java build is in xalan.jar. The Xalan-Java source code tree is in the src directory.
If you are using Ant, the target is jar (the default). For more information, see Using
Ant.
To use GNU development tools, do the following:
- Set up GNU or the equivalent build environment on your workstation.
If you are running Windows 95/98/2000/NT, you can use the Cygwin port of GNU. Be sure to put the
appropriate Cygwin bin directory at the beginning of your system path. For information about
Cygwin, see Cygwin.
- Place Xerces-Java version 1.1.1 xerces.jar in the Java class path.
- If you are working in Windows, set MAKE_MODE as follows:
set MAKE_MODE=UNIX
- Run the make file in the Xalan-Java root directory:
make build
If you want to do the build without Ant or the GNU build environment, keep the following in mind:
- Set the class path to include the src directory, xerces.jar, bsf.jar, and bsfengines.jar.
- Use a Java compiler (such as the IBM Just-In-Time compiler or the Sun javac) to compile all the .java files in the src
tree.
- Use the Sun jar utility to store the resulting .class files in xalan.jar
|
 |  |  |  | Rebuilding the Xalan-Java documentation |  |  |  |  |
| |
Xalan-Java includes a number of XML source files, XSL stylesheets, document type definition (DTD)
files, entity relationship (ENT) files, graphics, and a JavaScript file that provide the input for the Xalan
HTML User's Guide, and the overview and package-level documents used during the generation of Javadoc.
To rebuild the documentation, you must use the StyleBook tool and the JDK 1.2.2 java and javadoc
tools. StyleBook (which uses Xalan and Xerces) is in stylebook-1.0-b2.jar. Some of the document definition files,
stylesheets, and resources are stored in xml-site-style.tar.gz, and are unzipped when you run the make files as described
below. If the JDK 1.2.2 bin and lib directories are not on your class path, you can edit the make.include file in the
Xalan root directory so the make file can find the JDK 1.2.2 java and javadoc tools. You can also include java and javadoc
arguments on the make file command line. See the make.include file for the details.
You can use Ant with the docs target to regenerate the User's Guide and with the javadocs target to regenerate the
Javadoc API documentation. For more information, see Using Ant.
To generate the Xalan HTML User's Guide with the GNU development tools, run the Xalan make file in the Xalan xdocs
directory:
make makesbook
To generate the Xalan API documentation with GNU, set up the make file to use the Javadoc tool in the Java JDK 1.2.2 bin
directory.
Do the following:
- Put the Java JDK 1.2.2 bin directory on your path (in front of any JDK 1.1.x bin
directory that appears on the path).
- In the Xalan docs directory, run the Xalan make file as follows:
make makejavadoc
If you want to rebuild the documentation without using Ant or the GNU build environment, keep the following in
mind:
- Unzip xml-site-style.tar.gz into the xdocs directory (the operation places files in a number of subdirectories).
- Be sure stylebook-1.0-b2.jar, xalanjdoc.jar, xalan.jar, bsf.jar, bsfengines.jar, and xerces.jar are on the class
path.
- To build doc in a build/docs subdirectory, run StyleBook from the xdocs directory as follows:
java org.apache.stylebook.StyleBook "targetDirectory=../build/docs/" sources/xalanLocal.xml style
- To build the HTML source files that javadoc needs for top-level and package-level documentation, run
StyleBook from the xdocs directory as follows:
java org.apache.stylebook.StyleBook "loaderConfig=sbk:/style/loaderjdoc.xml" targetDirectory=../src sources/javadocPackages.xml style
- Before you run javadoc, make sure the following directory structure exists under the Xalan root
directory: build/docs/apidocs.
- To build the API documentation, run the JDK 1.2.2 javadoc tool from the xdocs directory:
-doclet xalanjdoc.Standard -public -overview ../src/javadocOverview.html -sourcepath ../src -group XSLT_Packages "org.apache.xalan.xslt*" -group XPath_Packages "org.apache.xalan.xpath*" org.apache.xalan.xpath org.apache.xalan.xpath.xdom org.apache.xalan.xpath.dtm org.apache.xalan.xpath.xml org.apache.xalan.xslt org.apache.xalan.xslt.trace org.apache.xalan.xslt.client org.apache.xalan.xslt.extensions -windowtitle Xalan -d ../build/docs/apidocs
|
|
| |
Your feedback is more than welcome. Offers of help are even more so! Perhaps you would like to take on an active role in the ongoing development, testing, and documentation of Xalan-Java?
Please email your comments, questions, suggestions, and offers to join the Xalan team to Xalan Development Mailing List.
|
|
|