- From: Matej Vela <vela@debian.org>
- Date: Thu, 21 Dec 2000 11:18:22 -0500 (EST)
- To: html-tidy@w3.org
- Cc: Frederic Seraphine <Frederic.Seraphine@inrialpes.fr>, 75554-forwarded@bugs.debian.org
On Wed, Oct 25, 2000 at 04:04:26PM +0200, Frederic Seraphine wrote:
> When tidy adds a doctype declaration it adds it BEFORE the
> <?xml version="1.0" ?> declaration, failing conformance to
> the xml specification.
Here's an example of the bug:
$ tidy -quiet --output-xhtml yes
<?xml version="1.0">
<p>Some bad XHTML code...
line 2 column 1 - Warning: inserting missing 'title' element
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<?xml version="1.0"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content="HTML Tidy, see www.w3.org" />
<title></title>
</head>
<body>
<p>Some bad XHTML code...</p>
</body>
</html>
HTML & CSS specifications are available from http://www.w3.org/
To learn more about Tidy see http://www.w3.org/People/Raggett/tidy/
Please send bug reports to Dave Raggett care of <html-tidy@w3.org>
Lobby your company to join W3C, see http://www.w3.org/Consortium
The problem is in SetXHTMLDocType() in lexer.c; it should check for
the XML declaration:
--- tidy4aug00.orig/lexer.c Fri Aug 4 18:21:05 2000
+++ tidy4aug00/lexer.c Tue Dec 19 02:49:02 2000
@@ -1019,10 +1019,22 @@
{
doctype = NewNode();
doctype->type = DocTypeTag;
- doctype->next = root->content;
doctype->parent = root;
- doctype->prev = null;
- root->content = doctype;
+ if (root->content && root->content->type == ProcInsTag &&
+ strncmp(&lexer->lexbuf[root->content->start], "xml", 3) == 0)
+ {
+ doctype->next = root->content->next;
+ doctype->prev = root->content;
+ root->content->next = doctype;
+ doctype->next->prev = doctype;
+ }
+ else
+ {
+ doctype->next = root->content;
+ doctype->prev = null;
+ doctype->next->prev = doctype;
+ root->content = doctype;
+ }
}
if (doctype_mode == doctype_user && doctype_str)
Thanks,
Matej
Received on Thursday, 21 December 2000 11:39:58 UTC