[Lxml-checkins] r47254 - in lxml/trunk: . src/lxml src/lxml/tests
scoder at codespeak.net
scoder at codespeak.net
Sun Oct 7 07:03:33 CEST 2007
Author: scoder
Date: Sun Oct 7 07:03:32 2007
New Revision: 47254
Modified:
lxml/trunk/CHANGES.txt
lxml/trunk/src/lxml/apihelpers.pxi
lxml/trunk/src/lxml/tests/test_etree.py
lxml/trunk/src/lxml/tests/test_htmlparser.py
Log:
added " and ' to the list of invalid HTML tag characters
Modified: lxml/trunk/CHANGES.txt
==============================================================================
--- lxml/trunk/CHANGES.txt (original)
+++ lxml/trunk/CHANGES.txt Sun Oct 7 07:03:32 2007
@@ -21,7 +21,7 @@
between HTML tags and XML tags based on the parser that was used to
parse or create them. HTML tags no longer reject any non-ASCII
characters in tag names but only spaces and the special characters
- '<>&/'.
+ ``<>&/"'``.
2.0alpha3 (2007-09-26)
Modified: lxml/trunk/src/lxml/apihelpers.pxi
==============================================================================
--- lxml/trunk/src/lxml/apihelpers.pxi (original)
+++ lxml/trunk/src/lxml/apihelpers.pxi Sun Oct 7 07:03:32 2007
@@ -817,6 +817,8 @@
c_name[0] == c'<' or \
c_name[0] == c'>' or \
c_name[0] == c'/' or \
+ c_name[0] == c'"' or \
+ c_name[0] == c"'" or \
c_name[0] == c'\x09' or \
c_name[0] == c'\x0A' or \
c_name[0] == c'\x0B' or \
Modified: lxml/trunk/src/lxml/tests/test_etree.py
==============================================================================
--- lxml/trunk/src/lxml/tests/test_etree.py (original)
+++ lxml/trunk/src/lxml/tests/test_etree.py Sun Oct 7 07:03:32 2007
@@ -74,6 +74,18 @@
el = Element('name')
self.assertRaises(ValueError, setattr, el, 'tag', 'p:name')
+ def test_element_name_quote(self):
+ Element = self.etree.Element
+ self.assertRaises(ValueError, Element, "p'name")
+ self.assertRaises(ValueError, Element, 'p"name')
+
+ self.assertRaises(ValueError, Element, "{test}p'name")
+ self.assertRaises(ValueError, Element, '{test}p"name')
+
+ el = Element('name')
+ self.assertRaises(ValueError, setattr, el, 'tag', "p'name")
+ self.assertRaises(ValueError, setattr, el, 'tag', 'p"name')
+
def test_element_name_space(self):
Element = self.etree.Element
self.assertRaises(ValueError, Element, ' name ')
@@ -99,6 +111,17 @@
self.assertRaises(ValueError, SubElement, el, 'p:name')
self.assertRaises(ValueError, SubElement, el, '{test}p:name')
+ def test_subelement_name_quote(self):
+ Element = self.etree.Element
+ SubElement = self.etree.SubElement
+
+ el = Element('name')
+ self.assertRaises(ValueError, SubElement, el, "p'name")
+ self.assertRaises(ValueError, SubElement, el, "{test}p'name")
+
+ self.assertRaises(ValueError, SubElement, el, 'p"name')
+ self.assertRaises(ValueError, SubElement, el, '{test}p"name')
+
def test_subelement_name_space(self):
Element = self.etree.Element
SubElement = self.etree.SubElement
Modified: lxml/trunk/src/lxml/tests/test_htmlparser.py
==============================================================================
--- lxml/trunk/src/lxml/tests/test_htmlparser.py (original)
+++ lxml/trunk/src/lxml/tests/test_htmlparser.py Sun Oct 7 07:03:32 2007
@@ -64,6 +64,20 @@
pname.tag = 'p:name'
self.assertEquals(pname.tag, 'p:name')
+ def test_html_element_name_quote(self):
+ parser = self.etree.HTMLParser()
+ Element = parser.makeelement
+
+ self.assertRaises(ValueError, Element, 'p"name')
+ self.assertRaises(ValueError, Element, "na'me")
+ self.assertRaises(ValueError, Element, '{test}"name')
+ self.assertRaises(ValueError, Element, "{test}name'")
+
+ el = Element('name')
+ self.assertRaises(ValueError, setattr, el, 'tag', "pname'")
+ self.assertRaises(ValueError, setattr, el, 'tag', '"pname')
+ self.assertEquals(el.tag, "name")
+
def test_html_element_name_space(self):
parser = self.etree.HTMLParser()
Element = parser.makeelement
@@ -74,6 +88,7 @@
el = Element('name')
self.assertRaises(ValueError, setattr, el, 'tag', ' name ')
+ self.assertEquals(el.tag, "name")
def test_html_subelement_name_empty(self):
parser = self.etree.HTMLParser()
@@ -97,6 +112,17 @@
pname = SubElement(el, '{test}p:name')
self.assertEquals(pname.tag, '{test}p:name')
+ def test_html_subelement_name_quote(self):
+ parser = self.etree.HTMLParser()
+ Element = parser.makeelement
+ SubElement = self.etree.SubElement
+
+ el = Element('name')
+ self.assertRaises(ValueError, SubElement, el, "name'")
+ self.assertRaises(ValueError, SubElement, el, 'na"me')
+ self.assertRaises(ValueError, SubElement, el, "{test}na'me")
+ self.assertRaises(ValueError, SubElement, el, '{test}"name')
+
def test_html_subelement_name_space(self):
parser = self.etree.HTMLParser()
Element = parser.makeelement
More information about the lxml-checkins
mailing list