Re: [xml] xmllint DTD troubles

Hi Michael,

Thank you for helping.

On 2012-06-06 18:27, Michael Ludwig wrote:
Lars Skjærlund schrieb am 06.06.2012 um 16:03 (+0200):

We're trying to validate XHTML documents using the following syntax:

xmllint --noout --dtdvalid /etc/xml/xhtml/xhtml1-transitional.dtd <filename>

This works - kind of: If I omit the path to the DTD, xmllint complains
that it cannot find the DTD.
The --dtdvalid switch is meant to be used with a filename argument.
If you don't need that because you're relying on the DOCTYPE of the
document, then use the --valid switch. (But maybe I got you wrong.)

I _am_ using it with a filename as the argument - because I do not want to rely on the DOCTYPE.

xmllint does not, however, load the external references in the
standard DTD: For the standard W3C, you have three external files
defining various entities such as &nbsp;.
What is the "standard DTD" and which files or URLs does xmllint fail to
If by "standard W3C DTDs" you mean the ones from the W3C servers:
That won't work, they're usually blocked.

I'm sorry I didn't make myself clear enough: Yes, I mean the DTDs from the W3C servers - and yes, I know they're usually blocked - and yes, that's why I have installed the same files locally in the catalog at /etc/xml. And that's why I'm pulling in the local file using --dtdvalid.

The DTD for XHTML Transitional is usually called "xhtml1-transitional.dtd" as in the example above. About the first thing in this file, however, is commands to pull in three more files:

   Extensible HTML version 1.0 Transitional DTD

   This is the same as HTML 4 Transitional except for
   changes due to the differences between XML and SGML.

   Namespace =

   For further information, see:

   Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
   All Rights Reserved.

   This DTD module is identified by the PUBLIC and SYSTEM identifiers:

   PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   SYSTEM "";

   $Revision: 1.27 $
   $Date: 2002/08/01 18:16:48 $


<!--================ Character mnemonic entities =========================-->

   "-//W3C//ENTITIES Latin 1 for XHTML//EN"

   "-//W3C//ENTITIES Symbols for XHTML//EN"

   "-//W3C//ENTITIES Special for XHTML//EN"

My problem is that xmllint _does_ load the primary file, but it does not pull in the three files mentioned here - even though the files are present on disk and correctly configured in the catalog file:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN"
  Comment the DTD declaration to avoid looking for it on the web.
  Alternatively we can place a copy of the DTD locally and refer to it.
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<public publicId="-//W3C//DTD XHTML 1.0 Transitional//EN" uri="xhtml/xhtml1-transitional.dtd"/> <public publicId="-//W3C//DTD XHTML 1.0 Strict//EN" uri="xhtml/xhtml1-strict.dtd"/> <public publicId="-//W3C//DTD XHTML 1.0 Frameset//EN" uri="xhtml/xhtml1-frameset.dtd"/> <public publicId="-//W3C//ENTITIES Latin 1 for XHTML//EN" uri="xhtml/xhtml-lat1.ent"/> <public publicId="-//W3C//ENTITIES Symbols for XHTML//EN" uri="xhtml/xhtml-symbol.ent"/> <public publicId="-//W3C//ENTITIES Special for XHTML//EN" uri="xhtml/xhtml-special.ent"/>

<system systemId=""; uri="xhtml/xhtml1-transitional.dtd"/> <system systemId=""; uri="xhtml/xhtml1-strict.dtd"/> <system systemId=""; uri="xhtml/xhtml1-frameset.dtd"/> <system systemId=""; uri="xhtml/xhtml-lat1.ent"/> <system systemId=""; uri="xhtml/xhtml-symbol.ent"/> <system systemId=""; uri="xhtml/xhtml-special.ent"/>

I've tested the catalog file and it works in other circumstances - like when I have a proper DOCTYPE declaration. There's also an environment variable that points to the catalog.

As a result, xmllint complains that the entities defined in the three files are invalid - which they have to be, of course, if it doesn't read the definitions.


Lars Skjærlund
Skovengen 111
2980 Kokkedal

Tlf.: +45 45 16 14 33

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

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