You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-users@xmlgraphics.apache.org by Hayden Stainsby <hd...@titanemail.com> on 2009/06/19 15:19:43 UTC

fop error fetching DTDs (being blocked, can I look locally instead)

Hi everyone,

I've recently had an error with a process involving fop, upon running  
fop java throws an exception and quits, every time The exception is:

javax.xml.transform.TransformerException: java.io.IOException: Server  
returned HTTP response code: 503 for URL: http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd

The next two paragraphs are the reason and the workaround, my question  
is below.

After a bit of hunting around, it looks like the folk at W3C are  
deliberately blocking access to clients making lots of requests for  
various DTDs since their servers are being heavily loaded serving the  
same file to the same people over and over. This does make a lot of  
sense.

My work around was to hack my /etc/hosts file to point www.w3.org back  
at the local machine where I've got copies of all the DTDs that I need  
(xhtml-lat1.ent, xhtml-symbol.ent, xhtml-special.ent, and xhtml1- 
strict.dtd). Now fop thinks it's fetching the DTDs, but it's actually  
looking at a local apache instance rather than ww3.org and everyone is  
happy.

---- THE QUESTION ----
My question is, is there a way to prevent fop from fetching DTDs but  
instead look first for a local copy. I mean let's face it, the xhtml1- 
strict spec probably isn't going to change any time soon, I'd be just  
as happy to keep the file locally. I couldn't find anything in the  
archives or online regarding this, but I only use fop infrequently so  
I may be looking in the wrong place.

Thanks for your time and any help you may be able to give.

Hayden




#!/usr/bin/perl
chop($_=<>);@s=split/ /;foreach$m(@s){if($m=='*'){$z=pop@t;$x=
pop@t;$a=eval"$x$m$z";push@t,$a;}else{push@t,$m;}}print"$a\n";


______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email 
______________________________________________________________________

---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org


Re: fop error fetching DTDs (being blocked, can I look locally instead)

Posted by Chris Bowditch <bo...@hotmail.com>.
Hayden Stainsby wrote:
> Hi everyone,
> 
> I've recently had an error with a process involving fop, upon running  
> fop java throws an exception and quits, every time The exception is:
> 
> javax.xml.transform.TransformerException: java.io.IOException: Server  
> returned HTTP response code: 503 for URL: 
> http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd

Yes I recently ran into the same problem and the reason you state is 
exactly correct.

> 
> The next two paragraphs are the reason and the workaround, my question  
> is below.
> 
> After a bit of hunting around, it looks like the folk at W3C are  
> deliberately blocking access to clients making lots of requests for  
> various DTDs since their servers are being heavily loaded serving the  
> same file to the same people over and over. This does make a lot of  sense.
> 
> My work around was to hack my /etc/hosts file to point www.w3.org back  
> at the local machine where I've got copies of all the DTDs that I need  
> (xhtml-lat1.ent, xhtml-symbol.ent, xhtml-special.ent, and xhtml1- 
> strict.dtd). Now fop thinks it's fetching the DTDs, but it's actually  
> looking at a local apache instance rather than ww3.org and everyone is  
> happy.

I've used a similar hack in the past, but it is a hack and not portable.

> 
> ---- THE QUESTION ----
> My question is, is there a way to prevent fop from fetching DTDs but  
> instead look first for a local copy. I mean let's face it, the xhtml1- 
> strict spec probably isn't going to change any time soon, I'd be just  
> as happy to keep the file locally. I couldn't find anything in the  
> archives or online regarding this, but I only use fop infrequently so  I 
> may be looking in the wrong place.

First of all its not FOP looking for the DTDs but the XML Parser in use 
on your system. The XML Parser is looking for the DTD because you asked 
it to parse some XML with a reference to the DTD. There are 2 possible 
solutions:

1) remove the reference to the DTD in the XML if you can live without it
2) Setup XML Catalogs. If you are using Xerces then this is described 
here: http://xerces.apache.org/xerces2-j/faq-xcatalogs.html. Please note 
this is a little off topic for this list.

> 
> Thanks for your time and any help you may be able to give.

Regards,

Chris



---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org