Index: src/html5lib/treebuilders/dom.py =================================================================== --- src/html5lib/treebuilders/dom.py (revision 1118) +++ src/html5lib/treebuilders/dom.py (working copy) @@ -137,16 +137,21 @@ rv = [] def serializeElement(element, indent=0): if element.nodeType == Node.DOCUMENT_TYPE_NODE: - if element.name: - rv.append("|%s"%(' '*indent, element.name)) + if element.publicId: + if element.systemId: + rv.append('|%s'%(' '*indent, element.name or "", element.publicId, element.systemId)) + else: + rv.append('|%s'%(' '*indent, element.name or "", element.publicId)) + elif element.systemId: + rv.append('|%s'%(' '*indent, element.name or "", element.systemId)) else: - rv.append("|%s"%(' '*indent,)) + rv.append("|%s"%(' '*indent, element.name or "")) elif element.nodeType == Node.DOCUMENT_NODE: rv.append("#document") elif element.nodeType == Node.DOCUMENT_FRAGMENT_NODE: rv.append("#document-fragment") elif element.nodeType == Node.COMMENT_NODE: - rv.append("|%s"%(' '*indent, element.nodeValue)) + rv.append("|%s"%(' '*indent, element.nodeValue)) elif element.nodeType == Node.TEXT_NODE: rv.append("|%s\"%s\"" %(' '*indent, element.nodeValue)) else: Index: src/html5lib/treebuilders/etree.py =================================================================== --- src/html5lib/treebuilders/etree.py (revision 1118) +++ src/html5lib/treebuilders/etree.py (working copy) @@ -169,7 +169,15 @@ if not(hasattr(element, "tag")): element = element.getroot() if element.tag == "": - rv.append("|%s"%(' '*indent, element.text)) + if element.get("publicId"): + if element.get("systemId"): + rv.append('|%s'%(' '*indent, element.text, element.get("publicId"), element.get("systemId"))) + else: + rv.append('|%s'%(' '*indent, element.text, element.get("publicId"))) + elif element.get("systemId"): + rv.append('|%s'%(' '*indent, element.text, element.get("systemId"))) + else: + rv.append("|%s"%(' '*indent, element.text)) elif element.tag == "": rv.append("#document") if element.text: @@ -177,7 +185,7 @@ if element.tail: finalText = element.tail elif type(element.tag) == type(ElementTree.Comment): - rv.append("|%s"%(' '*indent, element.text)) + rv.append("|%s"%(' '*indent, element.text)) else: rv.append("|%s<%s>"%(' '*indent, element.tag)) if hasattr(element, "attrib"): Index: src/html5lib/treebuilders/etree_lxml.py =================================================================== --- src/html5lib/treebuilders/etree_lxml.py (revision 1118) +++ src/html5lib/treebuilders/etree_lxml.py (working copy) @@ -50,12 +50,19 @@ if not hasattr(element, "tag"): rv.append("#document") if element.docinfo.internalDTD: - if not (element.docinfo.public_id or element.docinfo.system_url): + if element.docinfo.public_id: + if element.docinfo.system_url: + dtd_str = """"""%( + element.docinfo.root_name, element.docinfo.public_id, + element.docinfo.system_url) + else: + dtd_str = """"""%( + element.docinfo.root_name, element.docinfo.public_id) + elif element.docinfo.system_url: + dtd_str = """"""%( + element.docinfo.root_name, element.docinfo.system_url) + else: dtd_str = ""%element.docinfo.root_name - else: - dtd_str = """"""%( - element.docinfo.root_name, element.docinfo.public_id, - element.docinfo.system_url) rv.append("|%s%s"%(' '*(indent+2), dtd_str)) next_element = element.getroot() while next_element.getprevious() is not None: @@ -64,7 +71,7 @@ serializeElement(next_element, indent+2) next_element = next_element.getnext() elif type(element.tag) == type(etree.Comment): - rv.append("|%s"%(' '*indent, element.text)) + rv.append("|%s"%(' '*indent, element.text)) else: rv.append("|%s<%s>"%(' '*indent, element.tag)) if hasattr(element, "attrib"): Index: src/html5lib/treebuilders/simpletree.py =================================================================== --- src/html5lib/treebuilders/simpletree.py (revision 1118) +++ src/html5lib/treebuilders/simpletree.py (working copy) @@ -112,7 +112,15 @@ self.systemId = u"" def __unicode__(self): - return u"" % self.name + if self.publicId: + if self.systemId: + return u''%(self.name, self.publicId, self.systemId) + else: + return u''%(self.name, self.publicId) + elif self.systemId: + return u''%(self.name, self.systemId) + else: + return u""%self.name toxml = __unicode__ @@ -186,7 +194,7 @@ self.data = data def __unicode__(self): - return "" % self.data + return u"" % self.data def toxml(self): return "" % self.data Index: tests/support.py =================================================================== --- tests/support.py (revision 1118) +++ tests/support.py (working copy) @@ -11,10 +11,10 @@ #Define the location of the tests as this changes in release versions #RELEASE remove -test_dir = os.path.join(os.path.pardir,os.path.pardir,'testdata') +test_dir = os.path.join(os.path.pardir,os.path.pardir,os.path.pardir,'html5-tests') #END RELEASE #RELEASE add -#test_dir = './testdata' +#test_dir = './html5-tests' #END RELEASE try: