[Python-Dev] PEP html display in IE

David Goodger goodger@python.org
Mon, 11 Nov 2002 20:48:31 -0500

Thomas Heller wrote:
> Some PEPs, probably those formatted with reST, do not display any more
> in my IE 6 (Version 6.0.2600.0000), for example
> http://www.python.org/peps/pep-0301.html
> and
> http://www.python.org/peps/pep-0258.html.
> It says:
>     Use of default namespace declaration attribute in DTD not
>     supported. Error processing resource
>     'http://www.python.org/peps/pep-0258.html'. Line 8, Position 17
>     <html lang="en">

I've put (truncated) variations of PEP 258 on the web with DOCTYPE,
comment, and/or "<?xml?>" removed.  Please take a look at each
variation and tell me the results (any errors or differences seen):

A) http://www.python.org/peps/pep-0258.html
B) http://www.python.org/peps/pep-0258-moved-comment.html
C) http://www.python.org/peps/pep-0258-no-comment.html
D) http://www.python.org/peps/pep-0258-no-doctype.html
E) http://www.python.org/peps/pep-0258-no-xml.html
F) http://www.python.org/peps/pep-0258-no-nothing.html
G) http://docutils.sf.net/spec/pep-0258.html (to compare servers)

I don't have MSIE6 at home, and MacOS/MSIE5.1 has no problem with the
HTML, so I'm depending on reports.

The only thing I've done recently is to add an "AUTO-GENERATED HTML;
DO NOT EDIT!" comment to PEPs.  I did the same thing to plaintext PEPs
though (PEP 0, PEP 1).  Plaintext PEPs don't have the "<?xml?>"
processing instruction at the top, so it may be an interaction.

When I look at the PEP from the web (Win2K, MSIE 5.00.3315.1000), I'm
shown the XHTML source (*not* the rendered page), but no error.  When
I look at the exact same HTML & stylesheet from my local HD, there's
no problem at all; I get the page rendered properly.

I ran http://www.python.org/peps/pep-0258.html through the XML
validator at http://www.stg.brown.edu/service/xmlvalid/ and it spewed
out a bunch of errors related to the XHTML DTD, and a couple for
pep-0258.html itself.  The latter (marginwidth and marginheight
attributes not allowed on <body>) were easy to fix on both reST and
plaintext PEPs.  The W3C XHTML DTD errors are not so easy to fix ;).
ReStructuredText PEPs use the following DOCTYPE line:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

Then I tried http://www.python.org/peps/pep-0001.html, a plaintext
PEP, and the results from XML validator were even worse.  The DOCTYPE
for plaintext PEPs is:

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"

That's an SGML-based DTD though, not XML, so I'd expect the XML
validator to barf.

The W3C validator, http://validator.w3.org/, reported only the
document errors, no DTD errors.  From all this I'm doubtful that the
DTD errors (or validator bugs and/or over-strictness) are the culprit.
I did a Google search for "Use of default namespace declaration
attribute in DTD not supported" and got a bunch of hits.  Short form:
this appears to be an MSIE/MSXML bug.  Highlights:

>From http://www.biglist.com/lists/xsl-list/archives/200011/msg00135.html:

    From: Dimitre Novatchev

    In case you use msxml.dll version 8.0.5226.0 (from W2K SP1), then
    you'll get the error message "Use of default namespace declaration
    attribute in DTD not supported".

>From http://www.biglist.com/lists/xsl-list/archives/200011/msg00266.html:

    Subject: IE5 xmlns DTD attribute BUG was Re: Use of default
             namespace declaration
    From: "Jonathan Borden" <jborden@mediaone.net>
    Date: Mon, 6 Nov 2000 15:10:40 -0500

    Joshua Allen <joshuaa@microsoft.com> wrote:
    > I think this was lax conformance on part of the earlier parser,
    > and has since been tightened.  See
    > http://www.rpbourret.com/xml/NamespacesFAQ.htm#q7_2.

    Err... no. This is a BUG. Explicitly an xmlns attribute can be
    defaulted in a DTD (see section 4.3 in the article you quote
    above.) This error message from IE5 is a non-conformance. See
    http://www.w3.org/TR/REC-xml-names Namespace Constraint: Prefix
    Declared if a question remains.

    Another BUG in IE5s handling of DTDs ... parsing of DTDs (using
    the Sept MSXML3) hangs the browser when the SYSTEM ID is a URI of
    the form http://...  but not when the same DTD file is located on
    the local disc. (This behavior is not constant but reproducable
    across multiple installations and people in multiple organizations
    ... i.e. I am not the only one having this problem).

So what's the solution?  Ignore the browser bug or work around it?

-- David Goodger  <goodger@python.org>  http://www.python.org/peps/
   Python Enhancement Proposal (PEP) Editor
   (Please cc: all PEP correspondence to <peps@python.org>.)