@@ -53,8 +53,8 @@ def __init__(self, strict = False, tree=simpletree.TreeBuilder,
53
53
self .tokenizer_class = tokenizer
54
54
self .errors = []
55
55
56
- # "quirks" / "almost-standards " / "standards "
57
- self .quirksMode = "standards "
56
+ # "quirks" / "limited-quirks " / "no-quirks "
57
+ self .compatMode = "no-quirks "
58
58
59
59
self .phases = {
60
60
"initial" : InitialPhase (self , self .tree ),
@@ -304,6 +304,7 @@ class InitialPhase(Phase):
304
304
# this.
305
305
def processEOF (self ):
306
306
self .parser .parseError ("expected-doctype-but-got-eof" )
307
+ self .compatMode = "quirks"
307
308
self .parser .phase = self .parser .phases ["beforeHtml" ]
308
309
self .parser .phase .processEOF ()
309
310
@@ -323,11 +324,8 @@ def processDoctype(self, name, publicId, systemId, correct):
323
324
if publicId != "" :
324
325
publicId = publicId .translate (asciiUpper2Lower )
325
326
326
- if nameLower != "html" :
327
- # XXX quirks mode
328
- pass
329
- else :
330
- if publicId in \
327
+ if not correct or nameLower != "html" \
328
+ or publicId in \
331
329
("+//silmaril//dtd html pro v0r11 19970101//en" ,
332
330
"-//advasoft ltd//dtd html 3.0 aswedit + extensions//en" ,
333
331
"-//as//dtd html 3.0 aswedit + extensions//en" ,
@@ -397,13 +395,19 @@ def processDoctype(self, name, publicId, systemId, correct):
397
395
"-//webtechs//dtd mozilla html//en" ,
398
396
"-/w3c/dtd html 4.0 transitional/en" ,
399
397
"html" )\
400
- or (publicId in \
398
+ or (publicId in \
401
399
("-//w3c//dtd html 4.01 frameset//EN" ,
402
400
"-//w3c//dtd html 4.01 transitional//EN" ) and systemId == None )\
403
- or (systemId != None and \
401
+ or (systemId != None and \
404
402
systemId == "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd" ):
405
- #XXX quirks mode
406
- pass
403
+ self .compatMode = "quirks"
404
+ elif publicId in \
405
+ ("-//w3c//dtd xhtml 1.0 frameset//EN" ,
406
+ "-//w3c//dtd xhtml 1.0 transitional//EN" )\
407
+ or (publicId in \
408
+ ("-//w3c//dtd html 4.01 frameset//EN" ,
409
+ "-//w3c//dtd html 4.01 transitional//EN" ) and systemId == None ):
410
+ self .compatMode = "limited-quirks"
407
411
408
412
self .parser .phase = self .parser .phases ["beforeHtml" ]
409
413
@@ -412,18 +416,21 @@ def processSpaceCharacters(self, data):
412
416
413
417
def processCharacters (self , data ):
414
418
self .parser .parseError ("expected-doctype-but-got-chars" )
419
+ self .compatMode = "quirks"
415
420
self .parser .phase = self .parser .phases ["beforeHtml" ]
416
421
self .parser .phase .processCharacters (data )
417
422
418
423
def processStartTag (self , name , attributes ):
419
424
self .parser .parseError ("expected-doctype-but-got-start-tag" ,
420
425
{"name" : name })
426
+ self .compatMode = "quirks"
421
427
self .parser .phase = self .parser .phases ["beforeHtml" ]
422
428
self .parser .phase .processStartTag (name , attributes )
423
429
424
430
def processEndTag (self , name ):
425
431
self .parser .parseError ("expected-doctype-but-got-end-tag" ,
426
432
{"name" : name })
433
+ self .compatMode = "quirks"
427
434
self .parser .phase = self .parser .phases ["beforeHtml" ]
428
435
self .parser .phase .processEndTag (name )
429
436
0 commit comments