OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

docbook-apps message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: Fall back to network DTD if local one not found


Thomas Schraitle <tom_schr <at> web.de> writes:

> 
> Hi,
> 
> On Donnerstag, 20. März 2008, John Brown wrote:
> > [...]
> >
> > I can then 'set SGML_CATALOG_FILES=catalog.xml'
> 

<snip>

> However, in your case, you seem to use *XML* catalog, so 
> SGML_CATALOG_FILES is wrong. Did you try it with the env variable 
> XML_CATALOG_FILES?
>

I did not, but these are the results:

<!-- using bogus catalog file -->

C:\Book>set XML_CATALOG_FILES=non-existent.xml 
C:\Book>set   | find "CATALOG" 
XML_CATALOG_FILES=non-existent.xml
Fri Mar 21 07:27:28 2008
C:\Book>xmllint --valid --noout book2.xml 
Fri Mar 21 07:27:37 2008
<!-- Succeeded after 9 seconds - apparently network DTD used -->

<!-- using genuine catalog file -->

C:\Book>set XML_CATALOG_FILES=catalog.xml 
C:\Book>set   | find "CATALOG" 
XML_CATALOG_FILES=catalog.xml
Fri Mar 21 07:27:37 2008
C:\Book>xmllint --valid --noout book2.xml 
Fri Mar 21 07:27:38 2008
<!-- Succeeded after 1 second - apparently local DTD used -->

<!-- hiding local DTD; hoping to fall back to network DTD --> 
C:\Book>cd \MSYS\share\xml\docbook\4.5 
C:\MSYS\share\xml\docbook\4.5>move docbookx.dtd docbookx.dtd2 
C:\MSYS\share\xml\docbook\4.5>cd \Book 
Fri Mar 21 07:27:38 2008
C:\Book>xmllint --valid --noout book2.xml 
book2.xml:3: warning: failed to load external entity
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd";
  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd";>
                                                           ^
book2.xml:5: validity error : Validation failed: no DTD found !
<book lang="en">
Fri Mar 21 07:27:38 2008
<!-- failed after 1 second - did not try to use the network DTD -->

> 
> I haven't look much in the details, but maybe debug your *XML* catalog 
> first. You can do this with xmlcatalog (one line):
> 
>  xmlcatalog PATH_TO_YOUR_XML_CATALOG \
>    "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd";
>
> The above line outputs the path to your local DTD. If you get "No entry 
> for ..." then you should look into your XML catalog again.
> 

This gives the same result as the xmllint commands above. It finds the
path to the local DTD. My problem is that, if I have followed the
instructions in Bob Stayton's tutorial correctly, then xmllint and friends
should try to fetch the DTD from the network, but they just give up.


> You can also debug the catalog processing with the environment variable 
> XML_DEBUG_CATALOGS. In this case, xmllint is a bit more verbose. :)
>

After setting XML_DEBUG_CATALOG:
C:\Book>xmllint --valid --noout book2.xml
Resolve: pubID -//OASIS//DTD DocBook XML V4.5//EN sysID http://www.oasis-open.or
g/docbook/xml/4.5/docbookx.dtd
880 Parsing catalog catalog.xml
catalog.xml added to file hash
Found system match http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd, using
 c:/msys/share/xml/docbook/4.5/docbookx.dtd
Resolve URI c:/msys/share/xml/docbook/4.5/docbookx.dtd
book2.xml:3: warning: failed to load external entity "http://www.oasis-open.org/
docbook/xml/4.5/docbookx.dtd"
  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd";>
                                                           ^
book2.xml:5: validity error : Validation failed: no DTD found !
<book lang="en">
               ^
Catalogs cleanup
Free catalog entry -//OASIS//DTD DocBook XML V4.5//EN
Free catalog entry DocbookDTD
Free catalog entry http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd

<!-- long list of catalog entries snipped -->

Free catalog entry

My XML file header:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 
  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd";>

From the above output, it maps http://www.osais-open.org/.../docbookx.dtd
to c:/msys/share/xml/docbook/4.5/docbookx.dtd. This file no longer exists,
so it reports that it cannot load the external entity 
http://www.osais-open.org/.../docbookx.dtd. However, it does not try to
use the literal value http://www.osais-open.org/.../docbookx.dtd.


C:\Book> 
> Hope these ideas help a bit,
> Tom
> 






[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]