Sjoerd writes:

When literal mode is entered it should exit automatically when the
matching close tag of the last unclosed open tag is encountered.  This
patch fixes this.
diff --git a/Lib/xmllib.py b/Lib/xmllib.py
index 06dc373..4e62ae5 100644
--- a/Lib/xmllib.py
+++ b/Lib/xmllib.py
@@ -205,7 +205,6 @@
                     if k < 0: break
                     self.lineno = self.lineno + string.count(rawdata[i:k], '\n')
                     i =  k
-                    self.literal = 0
                     continue
                 if commentopen.match(rawdata, i):
                     if self.literal:
@@ -503,11 +502,19 @@
             return -1
         res = tagfind.match(rawdata, i+2)
         if res is None:
+            if self.literal:
+                self.handle_data(rawdata[i])
+                return i+1
             self.syntax_error('no name specified in end tag')
             tag = ''
             k = i+2
         else:
             tag = res.group(0)
+            if self.literal:
+                if not self.stack or tag != self.stack[-1]:
+                    self.handle_data(rawdata[i])
+                    return i+1
+                self.literal = 0
             k = res.end(0)
         if endbracket.match(rawdata, k) is None:
             self.syntax_error('garbage in end tag')