@@ -314,16 +314,20 @@ def processComment(self, data):
314
314
315
315
def processDoctype (self , name , publicId , systemId , correct ):
316
316
nameLower = name .translate (asciiUpper2Lower )
317
- if nameLower != "html" or publicId != None or \
318
- systemId != None :
317
+ if ( nameLower != "html" or publicId != None or
318
+ systemId != None ) :
319
319
self .parser .parseError ("unknown-doctype" )
320
- # XXX need to update DOCTYPE tokens
321
- self .tree .insertDoctype (name , publicId , systemId )
322
320
323
- if publicId == None :
324
- publicId = ""
321
+ if publicId is None :
322
+ publicId = ""
323
+ if systemId is None :
324
+ systemId = ""
325
+
326
+ self .tree .insertDoctype (name , publicId , systemId )
327
+
325
328
if publicId != "" :
326
- publicId = publicId .translate (asciiUpper2Lower )
329
+ publicId = publicId .translate (asciiUpper2Lower )
330
+
327
331
328
332
if (not correct ) or nameLower != "html" \
329
333
or publicId in \
@@ -1064,14 +1068,18 @@ def endTagBlock(self, name):
1064
1068
node = self .tree .openElements .pop ()
1065
1069
1066
1070
def endTagForm (self , name ):
1067
- if self .tree .elementInScope (name ):
1068
- self .tree .generateImpliedEndTags ()
1069
- if self .tree .openElements [- 1 ].name != name :
1070
- self .parser .parseError ("end-tag-too-early-ignored" ,
1071
- {"name" : "form" })
1072
- else :
1073
- self .tree .openElements .pop ()
1074
1071
self .tree .formPointer = None
1072
+ if not self .tree .elementInScope (name ):
1073
+ self .parser .parseError ("unexpected-end-tag" ,
1074
+ {"name" :"form" })
1075
+ else :
1076
+ self .tree .generateImpliedEndTags ()
1077
+ if self .tree .openElements [- 1 ].name != name :
1078
+ self .parser .parseError ("end-tag-too-early-ignored" ,
1079
+ {"name" : "form" })
1080
+ node = self .tree .openElements .pop ()
1081
+ while node .name != name :
1082
+ node = self .tree .openElements .pop ()
1075
1083
1076
1084
def endTagListItem (self , name ):
1077
1085
# AT Could merge this with the Block case
0 commit comments