8000 Fix liberal XHTML support for <br/> · awesome-python/html5lib-python@9b21b2a · GitHub
[go: up one dir, main page]

Skip to content

Commit 9b21b2a

Browse files
committed
Fix liberal XHTML support for <br/>
--HG-- extra : convert_revision : svn%3Aacbfec75-9323-0410-a652-858a13e371e0/trunk%40802
1 parent 064aa9c commit 9b21b2a

File tree

2 files changed

+16
-14
lines changed

2 files changed

+16
-14
lines changed

src/liberalxmlparser.py

Lines changed: 16 additions & 9 deletions
-
not self.tree.openElements[-1].hasContent():
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import gettext
2020
_ = gettext.gettext
2121

22+
from xml.dom import XHTML_NAMESPACE
23+
2224
class XMLParser(html5parser.HTMLParser):
2325
""" liberal XML parser """
2426

@@ -66,16 +68,21 @@ def normalizeToken(self, token):
6668

6769
# ensure that non-void XHTML elements have content so that separate
6870
# open and close tags are emitted
69-
if token["type"] == "EndTag" and \
70-
token["name"] not in voidElements and \
71-
token["name"] == self.tree.openElements[-1].name and \
72
73-
for e in self.tree.openElements:
74-
if 'xmlns' in e.attributes.keys():
75-
if e.attributes['xmlns'] <> 'http://www.w3.org/1999/xhtml':
76-
break
71+
if token["type"] == "EndTag":
72+
if token["name"] in voidElements:
73+
if not self.tree.openElements or \
74+
self.tree.openElements[-1].name != token["name"]:
75+
token["type"] = "EmptyTag"
76+
if not token.has_key("data"): token["data"] = {}
7777
else:
78-
self.tree.insertText('')
78+
if token["name"] == self.tree.openElements[-1].name and \
79+
not self.tree.openElements[-1].hasContent():
80+
for e in self.tree.openElements:
81+
if 'xmlns' in e.attributes.keys():
82+
if e.attributes['xmlns'] != XHTML_NAMESPACE:
83+
break
84+
else:
85+
self.tree.insertText('')
7986

8087
return token
8188

tests/test_lxp.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -196,11 +196,6 @@ def test_br(self):
196196
<head><title>XLINK</title></head>
197197
<body>
198198
<br/>
199-
</body></html>""",
200-
"""<html xmlns="http://www.w3.org/1999/xhtml">
201-
<head><title>XLINK</title></head>
202-
<body>
203-
<br/><br/>
204199
</body></html>""")
205200

206201
def test_strong(self):

0 commit comments

Comments
 (0)
0