[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