def test_xmlschema_illegal_validation_error(self): schema = self.parse(''' <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="a" type="xsd:string"/> </xsd:schema> ''') schema = etree.XMLSchema(schema) root = etree.Element('a') root.text = 'TEST' self.assertTrue(schema(root)) self.assertRaises(ValueError, schema, etree.Comment('TEST')) self.assertRaises(ValueError, schema, etree.PI('a', 'text')) self.assertRaises(ValueError, schema, etree.Entity('text'))
def test_buffering(self): with etree.xmlfile(self._file, buffered=False) as xf: with xf.element('test'): self.assertXml("<test>") xf.write('toast') self.assertXml("<test>toast") with xf.element('taste'): self.assertXml("<test>toast<taste>") xf.write('some', etree.Element("more"), "toast") self.assertXml("<test>toast<taste>some<more/>toast") self.assertXml("<test>toast<taste>some<more/>toast</taste>") xf.write('end') self.assertXml("<test>toast<taste>some<more/>toast</taste>end") self.assertXml( "<test>toast<taste>some<more/>toast</taste>end</test>") self.assertXml("<test>toast<taste>some<more/>toast</taste>end</test>")
def test_void_elements(self): # http://www.w3.org/TR/html5/syntax.html#elements-0 void_elements = set([ "area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr" ]) # FIXME: These don't get serialized as void elements. void_elements.difference_update( ['area', 'embed', 'keygen', 'source', 'track', 'wbr']) for tag in sorted(void_elements): with etree.htmlfile(self._file) as xf: xf.write(etree.Element(tag)) self.assertXml('<%s>' % tag) self._file = BytesIO()
def test_create_element_default(self): bluff_dict = {None: self.bluff_class} self.Namespace('ns30').update(bluff_dict) maeh_dict = {'maeh': self.maeh_class} self.Namespace(None).update(maeh_dict) el = etree.Element("{ns30}bluff") etree.SubElement(el, "maeh") self.assertTrue(hasattr(el, 'bluff')) self.assertTrue(hasattr(el[0], 'maeh')) self.assertEqual(el.bluff(), 'bluff') self.assertEqual(el[0].maeh(), 'maeh') self.Namespace(None).clear() self.Namespace('ns30').clear()
def test_xml_mode_write_inside_html(self): elt = etree.Element("foo", attrib={'selected': 'bar'}) with etree.htmlfile(self._file) as xf: with xf.element("root"): xf.write(elt) # 1 assert elt.text is None xf.write(elt, method='xml') # 2 elt.text = "" xf.write(elt, method='xml') # 3 self.assertXml('<root>' '<foo selected></foo>' # 1 '<foo selected="bar"/>' # 2 '<foo selected="bar"></foo>' # 3 '</root>') self._file = BytesIO()
def test_set_decl_system(self): doc = etree.Element('test').getroottree() doc.docinfo.system_url = 'baz' self.assertEqual(doc.docinfo.doctype, '<!DOCTYPE test SYSTEM "baz">') self.assertEqual(etree.tostring(doc), _bytes('<!DOCTYPE test SYSTEM "baz">\n<test/>'))
def execute(self, context, self_node, input_node, output_parent): child = etree.Element(self_node.text) child.text = 'X' output_parent.append(child)
def test_unicode_attr(self): el = etree.Element('foo', {'bar': uni}) self.assertEquals(uni, el.attrib['bar'])
def test_unicode_nstag(self): tag = _str("{http://abc/}%s") % uni el = etree.Element(tag) self.assertEquals(tag, el.tag)
def test_unicode_tag(self): el = etree.Element(uni) self.assertEquals(uni, el.tag)
def test_unicode_repr1(self): x = etree.Element(_str('å')) # must not raise UnicodeEncodeError repr(x)
def test_write_Element(self): with etree.xmlfile(self._file) as xf: xf.write(etree.Element('test')) self.assertXml('<test/>')
def test_write_namespaced_element(self): with etree.htmlfile(self._file) as xf: xf.write(etree.Element('{some_ns}some_tag')) self.assertXml('<ns0:some_tag xmlns:ns0="some_ns"></ns0:some_tag>')
def test_unicode_nstag(self): tag = _str("{%s}%s") % (uni, uni) el = etree.Element(tag) self.assertEquals(tag, el.tag)