[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: xml DOCTYPE and validation question



Graham Wilson <bob@decoy.wox.org> writes:

> $ xmllint --noout --valid --catalogs docbook41.xml; echo $?
> docbook41.xml:2: error: failed to load external entity "docbook.dtd"
> <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1//EN" "docbook.dtd">
>                                                                            ^
> docbook41.xml:3: validity error: Validation failed: no DTD found !

Herm.  I don't know why the one would work and the other wouldn't.

> an interesting thing to note about the docbook42.xml file is that it
> doesnt matter what the system identifier says, the document will still
> validate. im assuming that libxml2 is matches the public identifier
> first and does not worry about the system identifier.

It should in both cases.  I have "OVERRIDE YES" in both docbook-xml
4.1 and 4.2 (SGML) catalog files. This says use the value in the
catalog matched against the formal public identifier (FPI) rather than
the system identifier (SI).
> 
> in the case using the docbook41.xml file, setting the system identifier
> to a valid url of the docbook 4.1 dtd causes the file to validate
> properly. the causes me to think that libxml2 cannot match the public
> identifier, and tries to match the system identifier only.

Indeed, that would seem to be so.  BTW, I can confirm your findings.
It's either my bug (docbook-xml pkg) or else some bizarre xmllint
thing, which I doubt.

> so, a couple of questions.
> 
> what is the system identifier supposed to mean if it is a relative url,
> which is apparently allowed by the specification?

Relative to the directory where it was references.  Whether that is a
catalog, an XML file, whatever.

> also, shouldnt the case 4.1 case work similar to the 4.2 case? what
> exactly am i missing?

I haven't figured that out yet.

-- 
.....Adam Di Carlo....adam@debian.org.....<URL:http://www.debian.org/>



Reply to: