system identifier in document type declaration

Hi,

Trying to validate CSS linked from a XHTML document, I encountered a
problem with the online W3C CSS validator. It looks like it doesn't like
some document type declaration. In fact, looking at this mailing list's
archives, it seems that some people have allready seen that behaviour.

I may be wrong but I believe this is a bug. Sorry if this is a known
issue. My english might not be quite correct, but I'll try to be
understandable. :-)

Ok, here is what my documents contain :

    <?xml version="1.0" encoding="iso-8859-1"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                          "/path/to/dtd">

I get this message :

    org.xml.sax.SAXException:
    Please, fix your system identifier (URI) in the DOCTYPE rule

Changing the system identifier to "http://hostname/path/to/dtd" doesn't
help. And while some people have made the mistake in the past, the DTD
file do really exist in the specified location. Also looking at my Web
server's log, I don't see any attempt to read the DTD. As a side note,
while I was reading the log file I noticed that the validator loaded the
document twice. Is that a normal behaviour ?

The validator will only accept a document type declaration containing a
system identifier pointing to a DTD on w3.org, in some places that
people who wrote the validator consider "standard". For a XHTML 1.0
Strict document, this is
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd".

Reading the following mail confirmed this :
http://lists.w3.org/Archives/Public/www-validator-css/2001Jul/0096.html

So let's take a closer look at the XML specification.

http://www.w3.org/TR/REC-xml#dt-doctype

    [Definition: The XML document type declaration contains or points to
    markup declarations that provide a grammar for a class of documents.
    This grammar is known as a document type definition, or DTD. The
    document type declaration can point to an external subset (a special
    kind of external entity) containing markup declarations, or can
    contain the markup declarations directly in an internal subset, or
    can do both.  The DTD for a document consists of both subsets taken
    together.]

In our case, the declaration points to an external DTD. Then we have to
look at the external entity definition.

http://www.w3.org/TR/REC-xml#dt-extent

    ...

    [Definition: The SystemLiteral is called the entity's system
    identifier. It is a URI reference (as defined in [IETF RFC 2396],
    updated by [IETF RFC 2732]), meant to be dereferenced to obtain
    input for the XML processor to construct the entity's replacement
    text.] It is an error for a fragment identifier (beginning with a #
    character) to be part of a system identifier. Unless otherwise
    provided by information outside the scope of this specification
    (e.g. a special XML element type defined by a particular DTD, or a
    processing instruction defined by a particular application
    specification), relative URIs are relative to the location of the
    resource within which the entity declaration occurs. A URI might
    thus be relative to the document entity, to the entity containing
    the external DTD subset, or to some other external parameter entity.

    ...

    Examples of external entity declarations:

    <!ENTITY open-hatch
         SYSTEM "http://www.textuality.com/boilerplate/OpenHatch.xml">
    <!ENTITY open-hatch
         PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN"
         "http://www.textuality.com/boilerplate/OpenHatch.xml">
    <!ENTITY hatch-pic
         SYSTEM "../grafix/OpenHatch.gif"
         NDATA gif >

Then, what's wrong with "/path/to/dtd" present in the document type
declaration of my documents ?

Fernand
(please CC me replies)

Received on Sunday, 9 September 2001 12:56:55 UTC