<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2716.2200" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><SPAN class=945412421-16102002><FONT face=Arial color=#0000ff size=2>Have
you tried another XML parser than the one packaged in the 1.4
JRE?</FONT></SPAN></DIV>
<DIV><SPAN class=945412421-16102002><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=945412421-16102002><FONT face=Arial color=#0000ff size=2>Here's
something I plucked off the web somewhere on how to do that (replace Xalan with
Xerces, same applies):</FONT></SPAN></DIV>
<DIV><SPAN class=945412421-16102002><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=945412421-16102002>
<P>Annoyingly, the Xalan-J classes included in Java 1.4 are zipped into the
<FONT face="Courier New" size=2>rt.jar</FONT> archive so it’s hard to replace
them with a less-buggy release version of Xalan. It can be done, but you have to
put the xalan.jar file in your <FONT face="Courier New"
size=2>$JAVA_HOME/lib/endorsed</FONT> directory rather than in the normal <FONT
face="Courier New" size=2>jre/lib/ext</FONT> directory. The exact location of
$JAVA_HOME varies from system to system, but it’s probably something like <FONT
face="Courier New" size=2>C:\j2sdk1.4.0</FONT> on Windows. None of this is an
issue with Java 1.3 and earlier, which don’t bundle these classes. On these
systems you just need to install whatever jar files your XSLT engine vendor
provides in the usual locations, the same as you would any other third party
library. </P>
<P> </P>
<P><SPAN class=945412421-16102002><FONT face=Arial color=#0000ff
size=2>Frank</FONT></SPAN></P></SPAN></DIV>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<DIV class=OutlookMessageHeader dir=ltr align=left><FONT face=Tahoma
size=2>-----Original Message-----<BR><B>From:</B> Dan Temple
[mailto:Dan.Temple@wcom.com]<BR><B>Sent:</B> Wednesday, October 16, 2002 5:14
PM<BR><B>To:</B> jdom-interest@jdom.org<BR><B>Subject:</B> [jdom-interest] SAX
Parser/DTD Validation EXTREMELY slow<BR><BR></FONT></DIV>
<DIV><FONT face="Courier New" size=2>I have a DTD ELEMENT sequence that has 47
children. When I turn on SAX validation (SAXBuilder(true)) it <FONT
size=2>takes forever to build (saxBuilder.build(File)). OK, not actually
forever, but 26 hours! It takes so long that at first I thought that it was in
an infinite loop - CPU was at 100%.</FONT></FONT></DIV>
<DIV><FONT face="Courier New" size=2><FONT size=2></FONT></FONT> </DIV>
<DIV><FONT face="Courier New" size=2><FONT size=2>By playing with the XML
& DTD, I was able to narrow down the problem to just the number of entries
in the DTD ELEMENT sequence. It's falling down at about 20 entries and goes up
exponentially from there. For every additional child entry, the time it takes
to validate DOUBLES (almost exactly).</FONT></FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT> </DIV>
<DIV><FONT face="Courier New" size=2>Entries Millis<BR>=======
======<BR> 1
711<BR> 5 641<BR>
10 621<BR>
15 631<BR>
20 811<BR>
21 1031<BR>
22 1422<BR>
23 2163<BR>
24 3685<BR>
25 6709<BR> 26
12769<BR> 27 24796<BR>
28 48830<BR> 29
102367<BR> 30 206056<BR> 31
405963<BR></FONT></DIV>
<DIV><FONT face="Courier New" size=2>My largest actual test was 35 entries
& sure enough - over 1 1/2 hours. </FONT><FONT face="Courier New"
size=2>By my calculations, to process my 47 entries will take over 26 hours.
The only solution for me is to turn off SAX parser
validation.</DIV></FONT>
<DIV><FONT face="Courier New" size=2></FONT> </DIV>
<DIV><FONT face="Courier New" size=2>I am using the latest code from CVS -
Beta8 (tag: jdom_1_0_b8). I am using Java 1.4.0_02. The problem occurs on both
Windows 2000 & Solaris 8.</FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT> </DIV>
<DIV><FONT face="Courier New" size=2>Attached is XMLTest.java, test.xml, &
test.dtd. Just compile & run the XMLTest class, it's hard coded to use the
test.xml file which references the test.dtd file.</FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT> </DIV>
<DIV><FONT face="Courier New" size=2>Thanks,</FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT> </DIV>
<DIV><FONT face="Courier New" size=2>Dan Temple</FONT></DIV>
<DIV><FONT face="Courier New"
size=2></FONT> </DIV></BLOCKQUOTE></BODY></HTML>