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: