W3C home > Mailing lists > Public > html-tidy@w3.org > July to September 1999

Problems with mapping OL to BLOCKQUOTE.

From: Gary Deschaines <garyd.deschaines@netmechanic.com>
Date: Fri, 20 Aug 1999 16:59:05 -0500
Message-ID: <37BDCFA9.23E6DE0E@netmechanic.com>
To: html-tidy@w3.org
Dave,

The following invalid content HTML script will cause an infinite looping
problem discarding
unexpected </OL> at line 11 when processed by the 26th July 1999 version
of HTML Tidy.

<HTML>
<HEAD>
<TITLE>The Title</TITLE>
</HEAD>
<BODY>
<OL>
<FONT color="blue"><B>Blue Bold Text
<LI>Item 1</LI>
<LI>Item 2</LI>
</B></FONT>
</OL>
</BODY>
</HTML>

The infinite looping problem can be prevented with the following code
patch for the ParseBlock
routine in the parser.c file.

Orignal source code (starting around line 550 in parce.c):
...
else /* things like list items */
{
     ...

    UngetToken(lexer);

    if (node->tag->model & CM_LIST)
    {
        if (element->parent->tag == tag_ul || element->parent->tag ==
tag_ol)
        {
         ...
         }

         node = InferredTag(lex,"ul");
    }
    else if ( node->tag->model & CM_DEFLIST)
    {
     ...

Modified source code:
...
else /* things like list items */
{
    ...

    UngetToken(lexer);

    if (node->tag->model & CM_LIST)
    {
        if (element->parent->tag == tag_ul || element->parent->tag ==
tag_ol)
        {
         ...
         }

         if ( element->was == tag_ol )
        {
             node = InferredTag(lex,"ol");
         }
         else
         {
             node = InferredTag(lex,"ul");
         }
    }
    else if ( node->tag->model & CM_DEFLIST)
    {
     ...

The repaired HTML script produced by HTML Tidy with the above code patch
is as follows.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>The Title</TITLE>
</HEAD>
<BODY>
<BLOCKQUOTE><FONT color="blue"><B>Blue Bold Text</B></FONT>
<OL>
<LI><FONT color="blue"><B>Item 1</B></FONT></LI>
<LI><FONT color="blue"><B>Item 2</B></FONT></LI>
</OL>
</BLOCKQUOTE>
</BODY>
</HTML>

Although the code patch fixes the infinite looping problem and correctly
repairs the invalid HTML script presented above, I am not certain the
code patch is %100 correct.

Respectfully,
Gary Deschaines
Received on Friday, 20 August 1999 18:01:29 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 3 April 2012 06:13:42 GMT