Subjects
Home
Xalan extension functions
Fomatting question serializing DOM with pretty print
xalan with pull parser
Cannot find the declaration
Apache Xalan drop support to run on JRE 1 1 x
Why does Doctype change processing of a document
Node set to XML string via Java extensions in Xalan J: possible?
Templates/Transformers + thread safety???
Problem evaluating xpath with muliple prefix with different namespace
remove an arbitrary attribute from xsl output
Xalan3 XSLT 2 0 XPath 2 0 support?
Problem using compiled translets with Xalan !!
Xalan and jstl 1 1 problem with transform tag
NullPointer in DOM2DTM getLocalName
URIResolvers base parameter with xsltc and cascaded imports
Performance problem for Xalan J on intel dual core
Standard libraries in JAXP?
Serializing a DOM tree to XML file, customize entities replacement
Library Conflict Involving BCEL Library
A question on how users are using <xsl:message >
Kevin Cormier as a new Apache Xalan J committer
Struggling to iterate over tokenized string
Xalan count() trouble
Problem with recursive xpath
Error when switching to java 1 5
document( ' ')
Problem with Xalan2 7 0 transformation
cr/lf options
entity encoded XML
can xalan transform 2 xml using one xslt?
Xalan J JIRA defect review Monday October 16, 2006 from 2:00 to 3:30 pm ED
xsl transform with cdata section elements
xslt parameters not expanded
Weird behavior of XPath evaluate()
How to avoid <xsl:message > instruction prints stylesheet file informations ?
Cannot find SimpleTransform subdirectory after installing Xalan J
recover from document not found exceptions
jdk1 5 and Xalan jar differences?
Performance Issue
Error/Bug adding floating point numbers
XPathAPI: eval exp using nodes with default namespace
modifying xalan to output invalid XML
NullPointerException
mege two separate xml nodes into one
Is this a XALAN document identification bug?
is StylesheetRoot really java io Serializable ?
transform() fails for DOMSource but succeeds for StreamSource
Thoughts on Transformer parameter passing
HELP, Xalan and jstl 1 1 problem with transformer
Problem with XPath namespace axis?
string utils:replace deleting search string if replacement string is an HTML
help with enumeration values pls
xalan 2 5 1 vs 2 7 performance question
How to insert/update in XML document
HTML Serialization and Handling of Ampersands in HREF Attributes
XHTML link tag stripping
SystemId Unknown; Line #24; Column #49; java lang NullPointerException
xpath text() help
Apostrophe problem with xalan 2 7 0
How to set variables in XML document?
Links
Home
Oracle database error code ...
 
Search:  
Power your search with and, or, +, -, or "some phrase" operators.
Performace questions and possible bug

Performace questions and possible bug

2003-09-08       - By hernando.borda@(protected)

I've been doing some performance testing of Xalan-Java and Xalan-C++ for
processing files that range from a few hundred Kbytes to a few hundred
Mbytes. For the tests, I used Xalan-J 2.5.1 with JDK 1.4.2_01 and Xalan-C++
1.5 on a Dual Pentium III PC with 1 GByte of memory running Windows 2K
Professional.

I'm a bit surprised with the results as Xalan-C++ performance is linear with
respect to the XML input size while Xalan-J performance is exponential.

To give a bit more context, the kind of transformations we're mostly
interested are flattening XML into relational structures. The attached ZIP
contains three stylesheets that extract data out of the input XML document
at different nesting levels and a few sample documents along with an Excel
spreadsheet that details the tests results.

The structure of the input documents looks like:
<?xml version="1.0"?>
<customers>
 <customer id="0" name="Acme, Inc.">
   <orders>
     <order order_no="0">
       <items>
         <item item_no="12" quantity="260" />
         ...
       </items>
     </order>
     ...
   </orders>
   <addresses>
     <address street="645 Lake Blvd." city="Boston" state="MA" zip="01011"
/>
     ...
   </addresses>
 </customer>
</customers>

Some statistics:
-   All documents contain 50 customer elements
-   The count of order elements ranges from 1000 to 441439
-   The count of item elements ranges from 2960 to 1323687
-   The number of address elements is almost constant around 100
instances

and the three transformations extract:
-   The addresses of a customer
-   The orders of a customer
-   The items of an order

In all three tests (Xalan-Java, XSLTC and Xalan-C++) I'm sending to output
to the std out and redirecting the results to a file.

I tested using both the interpreted version of the XSLT processor and XSLTC
and the results are very similar although XSLTC performs a little better as
the size of the input increases. As far as java is concerned, I had to
increase the maximum java heap size to 1 GByte (-Xmx option). I also played
a little with the initial heap size (-Xms option) and got some improvement
but as the size of input file approached the upper end of the tests
performance degraded dramatically (the results are included in the attached
spreadsheet). One interesting detail I got using the -Xprof profiling option
of java is that the java.util.Vector.ensureCapacityHelper method seems to be
taking most of the execution time (anywhere from 40 to 87% as the size of
the file increases).

I'm interested in getting comments from other people about their experience
with performance. Is this behavior typical of the kind of transformation I'm
doing?

Additionally, I had a problem using the translet that extracts all item
elements. Starting with a document that contains 296380 item elements the
transformation aborted with a "Translet errors:No more DTM IDs are
available" error. I looked through the FAQ and mailing lists and didn't find
anything about this apart from an issue that existed in previous versions of
Xalan-J that is no longer present in version 2.5.1.

My environment is as follows:
#---- BEGIN writeEnvironmentReport($Revision: 1.20 $): Useful stuff found:
----
version.DOM.draftlevel=2.0fd
java.class.path=d:/xalan-j_2_5_1/bin/xalan.jar;d:/xalan-j_2_5_1/bin/xml-apis
.jar;d:/xalan-j_2_5_1/bin/xercesImpl.jar;.;d:/j2sdk1.4.2_01/lib;d:/j2sdk1.4.
2_01/jre/lib
version.JAXP=1.1 or higher
java.ext.dirs=d:\j2sdk1.4.2_01\jre\lib\ext
#---- BEGIN Listing XML-related jars in: foundclasses.sun.boot.class.path
----
xalan.jar-path=d:\j2sdk1.4.2_01\jre\lib\endorsed\xalan.jar
xercesImpl.jar-apparent.version=xercesImpl.jar from xalan-j_2_5_0 from
xerces-2_4
xercesImpl.jar-path=d:\j2sdk1.4.2_01\jre\lib\endorsed\xercesImpl.jar
xml-apis.jar-apparent.version=xml-apis.jar present-unknown-version
xml-apis.jar-path=d:\j2sdk1.4.2_01\jre\lib\endorsed\xml-apis.jar
#----- END Listing XML-related jars in: foundclasses.sun.boot.class.path
-----
version.xerces2=Xerces-J 2.4.0
version.xerces1=not-present
version.xalan2_2=Xalan Java 2.5.1
version.xalan1=not-present
version.ant=not-present
java.version=1.4.2_01
version.DOM=2.0
version.crimson=present-unknown-version
sun.boot.class.path=d:\j2sdk1.4.2_01\jre\lib\endorsed\xalan.jar;d:\j2sdk1.4.
2_01\jre\lib\endorsed\xercesImpl.jar;d:\j2sdk1.4.2_01\jre\lib\endorsed\xml-a
pis.jar;d:\j2sdk1.4.2_01\jre\lib\rt.jar;d:\j2sdk1.4.2_01\jre\lib\i18n.jar;d:
\j2sdk1.4.2_01\jre\lib\sunrsasign.jar;d:\j2sdk1.4.2_01\jre\lib\jsse.jar;d:\j
2sdk1.4.2_01\jre\lib\jce.jar;d:\j2sdk1.4.2_01\jre\lib\charsets.jar;d:\j2sdk1
.4.2_01\jre\classes
#---- BEGIN Listing XML-related jars in: foundclasses.java.class.path ----
xalan.jar-path=d:\xalan-j_2_5_1\bin\xalan.jar
xml-apis.jar-apparent.version=xml-apis.jar present-unknown-version
xml-apis.jar-path=d:\xalan-j_2_5_1\bin\xml-apis.jar
xercesImpl.jar-apparent.version=xercesImpl.jar from xalan-j_2_5_0 from
xerces-2_4
xercesImpl.jar-path=d:\xalan-j_2_5_1\bin\xercesImpl.jar
#----- END Listing XML-related jars in: foundclasses.java.class.path -----
version.SAX=2.0
version.xalan2x=Xalan Java 2.5.1
#----- END writeEnvironmentReport: Useful properties found: -----
# YAHOO! Your environment seems to be OK.

Thanks,
Hernando Borda
Software Developer
Ascential Software Corp.

<<perf.ZIP>>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2653.12">
<TITLE>Performace questions and possible bug</TITLE>
</HEAD>
<BODY>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">I've been doing some performance
testing of Xalan-Java and Xalan-C++ for processing files that range from a few
hundred Kbytes to a few hundred Mbytes. For the</FONT> <FONT SIZE=2 FACE="Arial
">test</FONT><FONT SIZE=2 FACE="Arial">s,</FONT><FONT SIZE=2 FACE="Arial"> I
used Xalan-J 2.5.1 with JDK 1.4.2_01 and Xalan-C++ 1.5 on a Dual Pentium III PC
with 1 GByte of memory running Windows 2K Professional.</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">I'm a bit surprised with the results as
Xalan-C++ performance is linear with respect to the XML input size while Xalan
-J performance is exponential.</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">To give a bit more context</FONT><FONT
SIZE=2 FACE="Arial">,</FONT><FONT SIZE=2 FACE="Arial"> the kind of
transformations we're mostly interested are flattening XML into relational
structures. The attached ZIP contains three stylesheets that extract data out
of the input XML document at different nesting levels and a few sample
documents along with an Excel spreadsheet that details the tests results.</FONT
></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">The structure of the input documents
looks like:</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">&lt;?xml version=&quot;1.0&quot;?&gt;<
/FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">&lt;customers&gt;</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">&nbsp; &lt;customer id=&quot;0&quot;
name=&quot;Acme, Inc.&quot;&gt;</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; &lt;orders&gt;</FONT
></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt
;order order_no=&quot;0&quot;&gt;</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp; &lt;items&gt;</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &lt;item item_no=&quot;12&quot; quantity=&quot;260&quot; /&gt
;</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=2 FACE="Arial">...</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp; &lt;/items&gt;</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;
/order&gt;</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT>
<FONT SIZE=2 FACE="Arial">...</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; &lt;/orders&gt;<
/FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; &lt;addresses&gt;<
/FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt
;address street=&quot;645 Lake Blvd.&quot; city=&quot;Boston&quot; state=&quot
;MA&quot; zip=&quot;01011&quot; /&gt;</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<
/FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; &lt;/addresses&gt;<
/FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">&nbsp; &lt;/customer&gt;</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">&lt;/customers&gt;</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">Some statistics:</FONT></P>

<P><FONT SIZE=2 FACE="Times New Roman">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<
/FONT> <FONT SIZE=2 FACE="Arial">All documents contain 50 customer elements<
/FONT>
<BR><FONT SIZE=2 FACE="Times New Roman">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<
/FONT> <FONT SIZE=2 FACE="Arial">The count of order elements ranges from 1000 to
441439</FONT>
<BR><FONT SIZE=2 FACE="Times New Roman">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<
/FONT> <FONT SIZE=2 FACE="Arial">The count of item elements ranges from 2960 to<
/FONT><FONT SIZE=2 FACE="Arial"></FONT> <FONT SIZE=2 FACE="Arial">1323687</FONT>
<BR><FONT SIZE=2 FACE="Times New Roman">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<
/FONT> <FONT SIZE=2 FACE="Arial">The</FONT> <FONT SIZE=2 FACE="Arial">number<
/FONT> <FONT SIZE=2 FACE="Arial">of address elements</FONT> <FONT SIZE=2 FACE=
"Arial">is almost constant around 100 instances</FONT>
</P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">and the three transformations extract:<
/FONT></P>

<P><FONT SIZE=2 FACE="Times New Roman">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<
/FONT> <FONT SIZE=2 FACE="Arial">The addresses of a customer</FONT>
<BR><FONT SIZE=2 FACE="Times New Roman">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<
/FONT> <FONT SIZE=2 FACE="Arial">The orders of a customer</FONT>
<BR><FONT SIZE=2 FACE="Times New Roman">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<
/FONT> <FONT SIZE=2 FACE="Arial">The items of an order</FONT>
</P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">In all three test</FONT><FONT SIZE=2
FACE="Arial">s (Xalan-Java, XSLTC and</FONT> <FONT SIZE=2 FACE="Arial">Xalan-C+
+) I</FONT><FONT SIZE=2 FACE="Arial">'</FONT><FONT SIZE=2 FACE="Arial">m sending
to output to the std out and redirecting the results to a file.</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">I tested using both the interpreted
version of the XSLT processor and XSLTC and the results are very similar
although XSLTC performs a little better as the size of the input increases.<
/FONT><FONT SIZE=2 FACE="Arial"> As far as java is concerned</FONT><FONT SIZE=2
FACE="Arial">,</FONT><FONT SIZE=2 FACE="Arial"> I had to increase the maximum<
/FONT> <FONT SIZE=2 FACE="Arial">java heap size to 1 GByte</FONT><FONT SIZE=2
FACE="Arial"> (-Xmx option). I also played a little with the initial heap size<
/FONT> <FONT SIZE=2 FACE="Arial">(-Xms option)</FONT> <FONT SIZE=2 FACE="Arial"
>and got</FONT><FONT SIZE=2 FACE="Arial"> some</FONT><FONT SIZE=2 FACE="Arial"><
/FONT> <FONT SIZE=2 FACE="Arial">improvement but as the size of input file
approach</FONT><FONT SIZE=2 FACE="Arial">ed</FONT><FONT SIZE=2 FACE="Arial">
the upper end of the tests performance degraded dramatically</FONT><FONT SIZE=2
FACE="Arial"> (the results are included in the</FONT> <FONT SIZE=2 FACE="Arial"
>attach</FONT><FONT SIZE=2 FACE="Arial">ed spreadsheet)</FONT><FONT SIZE=2 FACE=
"Arial">.</FONT><FONT SIZE=2 FACE="Arial"> One interesting detail I got using
the -Xprof profiling option of java is that</FONT> <FONT SIZE=2 FACE="Arial"
>the</FONT> <FONT SIZE=2 FACE="Arial">java.util.Vector.ensureCapacityHelper<
/FONT><FONT SIZE=2 FACE="Arial"> method seems to be taking most of the execution
time</FONT> <FONT SIZE=2 FACE="Arial">(anywhere from 40 to 87% as the size of
the file increases).</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">I'm interested in getting comments from
other people about their experience with performance. Is this behavior typical
of the kind of transformation I'm doing?</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">Additionally, I had</FONT> <FONT SIZE=2
FACE="Arial">a</FONT> <FONT SIZE=2 FACE="Arial">problem using the translet that
extracts all item elements. Starting with a document that contains</FONT> <FONT
SIZE=2 FACE="Arial">296380</FONT><FONT SIZE=2 FACE="Arial"> item elements the
transformation aborted with a "</FONT><FONT SIZE=2 FACE="Arial">Translet errors
:No more DTM IDs are available</FONT><FONT SIZE=2 FACE="Arial">" error. I looked
through the FAQ and mailing lists and didn't find anything about this apart
from an issue that existed in previous versions of Xalan-J that is no longer
present in version 2.5.1.</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">My environment is as follows:</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">#---- BEGIN writeEnvironmentReport(
$Revision: 1.20 $): Useful stuff found: ----</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">version.DOM.draftlevel=2.0fd</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">java.class.path=d:/xalan-j_2_5_1/bin
/xalan.jar;d:/xalan-j_2_5_1/bin/xml-apis.jar;d:/xalan-j_2_5_1/bin/xercesImpl.jar
;.;d:/j2sdk1.4.2_01/lib;d:/j2sdk1.4.2_01/jre/lib</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">version.JAXP=1.1 or higher</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">java.ext.dirs=d:\j2sdk1.4.2_01\jre\lib
\ext</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">#---- BEGIN Listing XML-related jars in
: foundclasses.sun.boot.class.path ----</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">xalan.jar-path=d:\j2sdk1.4.2_01\jre\lib
\endorsed\xalan.jar</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">xercesImpl.jar-apparent.version
=xercesImpl.jar from xalan-j_2_5_0 from xerces-2_4</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">xercesImpl.jar-path=d:\j2sdk1.4.2_01
\jre\lib\endorsed\xercesImpl.jar</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">xml-apis.jar-apparent.version=xml-apis
.jar present-unknown-version</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">xml-apis.jar-path=d:\j2sdk1.4.2_01\jre
\lib\endorsed\xml-apis.jar</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">#----- END Listing XML-related jars in:
foundclasses.sun.boot.class.path -----</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">version.xerces2=Xerces-J 2.4.0</FONT><
/P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">version.xerces1=not-present</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">version.xalan2_2=Xalan Java 2.5.1</FONT
></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">version.xalan1=not-present</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">version.ant=not-present</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">java.version=1.4.2_01</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">version.DOM=2.0</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">version.crimson=present-unknown-version
</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">sun.boot.class.path=d:\j2sdk1.4.2_01
\jre\lib\endorsed\xalan.jar;d:\j2sdk1.4.2_01\jre\lib\endorsed\xercesImpl.jar;d:
\j2sdk1.4.2_01\jre\lib\endorsed\xml-apis.jar;d:\j2sdk1.4.2_01\jre\lib\rt.jar;d:
\j2sdk1.4.2_01\jre\lib\i18n.jar;d:\j2sdk1.4.2_01\jre\lib\sunrsasign.jar;d:
\j2sdk1.4.2_01\jre\lib\jsse.jar;d:\j2sdk1.4.2_01\jre\lib\jce.jar;d:\j2sdk1.4.2
_01\jre\lib\charsets.jar;d:\j2sdk1.4.2_01\jre\classes</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">#---- BEGIN Listing XML-related jars in
: foundclasses.java.class.path ----</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">xalan.jar-path=d:\xalan-j_2_5_1\bin
\xalan.jar</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">xml-apis.jar-apparent.version=xml-apis
.jar present-unknown-version</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">xml-apis.jar-path=d:\xalan-j_2_5_1\bin
\xml-apis.jar</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">xercesImpl.jar-apparent.version
=xercesImpl.jar from xalan-j_2_5_0 from xerces-2_4</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">xercesImpl.jar-path=d:\xalan-j_2_5_1
\bin\xercesImpl.jar</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">#----- END Listing XML-related jars in:
foundclasses.java.class.path -----</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">version.SAX=2.0</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">version.xalan2x=Xalan Java 2.5.1</FONT>
</P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">#----- END writeEnvironmentReport:
Useful properties found: -----</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial"># YAHOO! Your environment seems to be
OK.</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">Thanks,</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">Hernando Borda</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">Software Developer</FONT></P>

<P ALIGN=LEFT><FONT SIZE=2 FACE="Arial">Ascential Software Corp.</FONT></P>

<P ALIGN=LEFT><FONT FACE="Arial" SIZE=2 COLOR="#000000"> &lt;&lt;perf.ZIP&gt;
&gt; </FONT></P>

</BODY>
</HTML>