- From: Randy Waki <rwaki@flipdog.com>
- Date: Fri, 14 Apr 2000 15:34:22 -0600
- To: <html-tidy@w3.org>, <dsr@w3.org>
13-Jan-2000 Tidy doesn't complain about illegal attribute names
beginning with '-', '.', or a digit. The problem is in
IsValidAttrName() in lexer.c where the first character isn't being
distinguished. The following fix works for us.
In html.h, add a new lexer char type:
#define firstnamechar 128
In lexer.c, InitMap(), make ':', '_', and letters firstnamechars by
changing:
MapStr("-.:_", namechar);
to
MapStr("-.", namechar);
MapStr(":_", namechar|firstnamechar);
and
MapStr("abcdefghijklmnopqrstuvwxyz", lowercase|letter|namechar);
MapStr("ABCDEFGHIJKLMNOPQRSTUVWXYZ", uppercase|letter|namechar);
to
MapStr("abcdefghijklmnopqrstuvwxyz",
lowercase|letter|namechar|firstnamechar);
MapStr("ABCDEFGHIJKLMNOPQRSTUVWXYZ",
uppercase|letter|namechar|firstnamechar);
In lexer.c, IsValidAttrName(), check for an illegal first character:
int i = 0; // Existing line, unchanged
if (wstrlen(attr) > 0)
{
c = attr[0];
map = MAP(c);
if ((map & firstnamechar) == 0)
return false;
}
for( i = 0; i < wstrlen(attr); i++) // Existing line, unchanged
Thanks,
Randy
Received on Friday, 14 April 2000 17:36:19 UTC