@@ -80,9 +80,11 @@ def hilite(self, encoding):
8080 setattr (self .dom , 'hilite' , method )
8181 return self
8282
83- def doctypeClass (self ,name ):
83+ def insertDoctype (self , name ):
8484 domimpl = minidom .getDOMImplementation ()
85- return NodeBuilder (domimpl .createDocumentType (name ,None ,None ))
85+ doctype = domimpl .createDocumentType (name ,None ,None )
86+ self .document .appendChild (NodeBuilder (doctype ))
87+ doctype .ownerDocument = self .dom
8688
8789 def elementClass (self , name ):
8890 return NodeBuilder (self .dom .createElement (name ))
@@ -126,8 +128,8 @@ def serializeElement(element, indent=0):
126128 if element .nodeType == Node .DOCUMENT_TYPE_NODE :
127129 rv .append ("|%s<!DOCTYPE %s>" % (' ' * indent , element .name ))
128130 elif element .nodeType == Node .DOCUMENT_NODE :
129- rv .append ("#document" )
130- elif element .nodeType == Node .DOCUMENT_FRAGMENT_NODE :
131+ rv .append ("#document" )
132+ elif element .nodeType == Node .DOCUMENT_FRAGMENT_NODE :
131133 rv .append ("#document-fragment" )
132134 elif element .nodeType == Node .COMMENT_NODE :
133135 rv .append ("|%s<!-- %s -->" % (' ' * indent , element .nodeValue ))
@@ -215,10 +217,10 @@ def dom2sax(node, handler, nsmap={'xml':XML_NAMESPACE}):
215217 elif node .nodeType == Node .DOCUMENT_NODE :
216218 handler .startDocument ()
217219 for child in node .childNodes : dom2sax (child , handler , nsmap )
218- handler .endDocument ()
219-
220- elif node .nodeType == Node .DOCUMENT_FRAGMENT_NODE :
221- for child in node .childNodes : dom2sax (child , handler , nsmap )
220+ handler .endDocument ()
221+
222+ elif node .nodeType == Node .DOCUMENT_FRAGMENT_NODE :
223+ for child in node .childNodes : dom2sax (child , handler , nsmap )
222224
223225 else :
224226 # ATTRIBUTE_NODE
0 commit comments