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: