@@ -169,7 +169,13 @@ def serializeElement(element, indent=0):
169169 if not (hasattr (element , "tag" )):
170170 element = element .getroot ()
171171 if element .tag == "<!DOCTYPE>" :
172- rv .append ("|%s<!DOCTYPE %s>" % (' ' * indent , element .text ))
172+ if element .get ("publicId" ) or element .get ("systemId" ):
173+ publicId = element .get ("publicId" ) or ""
174+ systemId = element .get ("systemId" ) or ""
175+ rv .append ( """<!DOCTYPE %s PUBLIC "%s" "%s">""" % (
176+ element .text , publicId , systemId ))
177+ else :
178+ rv .append ("<!DOCTYPE %s>" % (element .text ,))
173179 elif element .tag == "<DOCUMENT_ROOT>" :
174180 rv .append ("#document" )
175181 if element .text :
@@ -206,7 +212,13 @@ def serializeElement(element):
206212 element = element .getroot ()
207213
208214 if element .tag == "<!DOCTYPE>" :
209- rv .append ("<!DOCTYPE %s>" % (element .text ,))
215+ if element .get ("publicId" ) or element .get ("systemId" ):
216+ publicId = element .get ("publicId" ) or ""
217+ systemId = element .get ("systemId" ) or ""
218+ rv .append ( """<!DOCTYPE %s PUBLIC "%s" "%s">""" % (
219+ element .text , publicId , systemId ))
220+ else :
221+ rv .append ("<!DOCTYPE %s>" % (element .text ,))
210222 elif element .tag == "<DOCUMENT_ROOT>" :
211223 if element .text :
212224 rv .append (element .text )
0 commit comments