def test_dtd_file(self): parse = etree.parse tree = parse(fileInTestDir("test.xml")) root = tree.getroot() dtd = etree.DTD(fileInTestDir("test.dtd")) self.assert_(dtd.validate(root))
def test_dtd_file(self): parse = etree.parse tree = parse(fileInTestDir("test.xml")) root = tree.getroot() dtd = etree.DTD(fileInTestDir("test.dtd")) self.assertTrue(dtd.validate(root))
def test_dtd_attrs(self): dtd = etree.DTD(fileInTestDir("test.dtd")) # Test DTD.system_url attribute self.assertTrue(dtd.system_url.endswith("test.dtd")) # Test elements and their attributes a = dtd.elements()[0] self.assertEqual(a.name, "a") self.assertEqual(a.type, "element") self.assertEqual(a.content.name, "b") self.assertEqual(a.content.type, "element") self.assertEqual(a.content.occur, "once") aattr = a.attributes()[0] self.assertEqual(aattr.name, "default") self.assertEqual(aattr.type, "enumeration") self.assertEqual(aattr.values(), ["valueA", "valueB"]) self.assertEqual(aattr.default_value, "valueA") b = dtd.elements()[1] self.assertEqual(b.name, "b") self.assertEqual(b.type, "empty") self.assertEqual(b.content, None) # Test entities and their attributes c = dtd.entities()[0] self.assertEqual(c.name, "c") self.assertEqual(c.orig, "*") self.assertEqual(c.content, "*") # Test DTD.name attribute root = etree.XML( _bytes(''' <!DOCTYPE a SYSTEM "none" [ <!ELEMENT a EMPTY> ]> <a/> ''')) dtd = etree.ElementTree(root).docinfo.internalDTD self.assertEqual(dtd.name, "a") # Test DTD.name and DTD.systemID attributes parser = etree.XMLParser(dtd_validation=True) xml = '<!DOCTYPE a SYSTEM "test.dtd"><a><b/></a>' root = etree.fromstring(xml, parser=parser, base_url=fileInTestDir("test.xml")) dtd = root.getroottree().docinfo.internalDTD self.assertEqual(dtd.name, "a") self.assertEqual(dtd.system_url, "test.dtd")
def test_dtd_attrs(self): dtd = etree.DTD(fileInTestDir("test.dtd")) # Test DTD.system_url attribute self.assert_(dtd.system_url.endswith("test.dtd")) # Test elements and their attributes a = dtd.elements()[0] self.assertEqual(a.name, "a") self.assertEqual(a.type, "element") self.assertEqual(a.content.name, "b") self.assertEqual(a.content.type, "element") self.assertEqual(a.content.occur, "once") aattr = a.attributes()[0] self.assertEqual(aattr.name, "default") self.assertEqual(aattr.type, "enumeration") self.assertEqual(aattr.values(), ["valueA", "valueB"]) self.assertEqual(aattr.default_value, "valueA") b = dtd.elements()[1] self.assertEqual(b.name, "b") self.assertEqual(b.type, "empty") self.assertEqual(b.content, None) # Test entities and their attributes c = dtd.entities()[0] self.assertEqual(c.name, "c") self.assertEqual(c.orig, "*") self.assertEqual(c.content, "*") # Test DTD.name attribute root = etree.XML(_bytes(''' <!DOCTYPE a SYSTEM "none" [ <!ELEMENT a EMPTY> ]> <a/> ''')) dtd = etree.ElementTree(root).docinfo.internalDTD self.assertEqual(dtd.name, "a") # Test DTD.name and DTD.systemID attributes parser = etree.XMLParser(dtd_validation=True) xml = '<!DOCTYPE a SYSTEM "test.dtd"><a><b/></a>' root = etree.fromstring(xml, parser=parser, base_url=fileInTestDir("test.xml")) dtd = root.getroottree().docinfo.internalDTD self.assertEqual(dtd.name, "a") self.assertEqual(dtd.system_url, "test.dtd")
def test_dtd_parse_invalid(self): fromstring = etree.fromstring parser = etree.XMLParser(dtd_validation=True) xml = _bytes('<!DOCTYPE b SYSTEM "%s"><b><a/></b>' % fileInTestDir("test.dtd")) self.assertRaises(etree.XMLSyntaxError, fromstring, xml, parser=parser)
def test_xmlschema_file(self): # this will only work if we access the file through path or # file object.. f = open(fileInTestDir('test.xsd'), 'rb') schema = etree.XMLSchema(file=f) tree_valid = self.parse('<a><b></b></a>') self.assert_(schema.validate(tree_valid))
def test_xslt_document_parse_allow(self): access_control = etree.XSLTAccessControl(read_file=True) xslt = etree.XSLT(etree.parse(fileInTestDir("test-document.xslt")), access_control=access_control) result = xslt(etree.XML("<a/>")) root = result.getroot() self.assertEquals(root.tag, "test") self.assertEquals(root[0].tag, "{http://www.w3.org/1999/XSL/Transform}stylesheet")
def test_iterparse_file_dtd_end(self): iterparse = etree.iterparse iterator = iterparse(fileInTestDir("test.xml"), events=('end', ), attribute_defaults=True) attributes = [element.get("default") for event, element in iterator] self.assertEqual(["valueB", "valueA"], attributes)
def test_xslt_document_elementtree(self): # make sure document('') works from loaded files xslt = etree.XSLT(etree.ElementTree(file=fileInTestDir("test-document.xslt"))) result = xslt(etree.XML("<a/>")) root = result.getroot() self.assertEquals(root.tag, "test") self.assertEquals(root[0].tag, "{http://www.w3.org/1999/XSL/Transform}stylesheet")
def test_xmlschema_import_file(self): # this will only work if we access the file through path or # file object.. schema = etree.XMLSchema(file=fileInTestDir('test_import.xsd')) tree_valid = self.parse( '<a:x xmlns:a="http://codespeak.net/lxml/schema/ns1"><b></b></a:x>') self.assertTrue(schema.validate(tree_valid))
def test_relaxng_compact_file_obj(self): with open(fileInTestDir('test.rnc'), 'r') as f: schema = etree.RelaxNG(file=f) tree_valid = self.parse('<a><b>B</b><c>C</c></a>') tree_invalid = self.parse('<a><b></b></a>') self.assertTrue(schema.validate(tree_valid)) self.assertFalse(schema.validate(tree_invalid))
def test_parse_file_dtd(self): parser = etree.XMLParser(attribute_defaults=True) tree = etree.parse(fileInTestDir('test.xml'), parser) root = tree.getroot() self.assertEqual("valueA", root.get("default")) self.assertEqual("valueB", root[0].get("default"))
def test_relaxng_include(self): # this will only work if we access the file through path or # file object.. f = open(fileInTestDir('test1.rng'), 'rb') try: schema = etree.RelaxNG(file=f) finally: f.close()
def test_xslt_document_parse(self): # make sure document('') works from loaded files xslt = etree.XSLT(etree.parse(fileInTestDir("test-document.xslt"))) result = xslt(etree.XML('<a/>')) root = result.getroot() self.assertEquals(root.tag, 'test') self.assertEquals(root[0].tag, '{http://www.w3.org/1999/XSL/Transform}stylesheet')
def test_xslt_document_elementtree(self): # make sure document('') works from loaded files xslt = etree.XSLT(etree.ElementTree(file=fileInTestDir("test-document.xslt"))) result = xslt(etree.XML('<a/>')) root = result.getroot() self.assertEquals(root.tag, 'test') self.assertEquals(root[0].tag, '{http://www.w3.org/1999/XSL/Transform}stylesheet')
def test_iterparse_file_dtd(self): iterparse = etree.iterparse iterator = iterparse(fileInTestDir("test.xml"), events=("start",), attribute_defaults=True) attributes = [ element.get("default") for event, element in iterator ] self.assertEquals( ["valueA", "valueB"], attributes)
def test_xmlschema_file(self): # this will only work if we access the file through path or # file object.. f = open(fileInTestDir('test.xsd'), 'rb') try: schema = etree.XMLSchema(file=f) finally: f.close() tree_valid = self.parse('<a><b></b></a>') self.assert_(schema.validate(tree_valid))
def test_xmlschema_file(self): # this will only work if we access the file through path or # file object.. f = open(fileInTestDir("test.xsd"), "rb") try: schema = etree.XMLSchema(file=f) finally: f.close() tree_valid = self.parse("<a><b></b></a>") self.assert_(schema.validate(tree_valid))
def test_xslt_document_parse_allow(self): access_control = etree.XSLTAccessControl(read_file=True) xslt = etree.XSLT(etree.parse(fileInTestDir("test-document.xslt")), access_control = access_control) result = xslt(etree.XML('<a/>')) root = result.getroot() self.assertEquals(root.tag, 'test') self.assertEquals(root[0].tag, '{http://www.w3.org/1999/XSL/Transform}stylesheet')
def test_html_iterparse_file(self): iterparse = self.etree.iterparse iterator = iterparse(fileInTestDir("css_shakespear.html"), html=True) self.assertEquals(None, iterator.root) events = list(iterator) root = iterator.root self.assert_(root is not None) self.assertEquals(249, len(events)) self.assertEquals( [], [event for (event, element) in events if event != 'end'])
def test_html_iterparse_file(self): iterparse = self.etree.iterparse iterator = iterparse(fileInTestDir("shakespeare.html"), html=True) self.assertEqual(None, iterator.root) events = list(iterator) root = iterator.root self.assertTrue(root is not None) self.assertEqual(249, len(events)) self.assertFalse( [event for (event, element) in events if event != 'end'])
def test_xslt_pi(self): tree = self.parse('''\ <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="%s"?> <a> <b>B</b> <c>C</c> </a>''' % fileInTestDir("test1.xslt")) style_root = tree.getroot().getprevious().parseXSL().getroot() self.assertEquals("{http://www.w3.org/1999/XSL/Transform}stylesheet", style_root.tag)
def test_parse_file_dtd(self): parser = etree.XMLParser(attribute_defaults=True) tree = etree.parse(fileInTestDir('test.xml'), parser) root = tree.getroot() self.assertEquals( "valueA", root.get("default")) self.assertEquals( "valueB", root[0].get("default"))
def test_dtd_parse_file_not_found(self): fromstring = etree.fromstring dtd_filename = fileInTestDir("__nosuch.dtd") parser = etree.XMLParser(dtd_validation=True) xml = _bytes('<!DOCTYPE b SYSTEM "%s"><b><a/></b>' % dtd_filename) self.assertRaises(etree.XMLSyntaxError, fromstring, xml, parser=parser) errors = None try: fromstring(xml, parser=parser) except etree.XMLSyntaxError: e = sys.exc_info()[1] errors = [ entry.message for entry in e.error_log if dtd_filename in entry.message ] self.assert_(errors)
def test_relaxng_compact_file_obj(self): f = open(fileInTestDir('test.rnc'), 'rb') try: schema = etree.RelaxNG(file=f) finally: f.close()
def test_relaxng_compact(self): tree_valid = self.parse('<a><b>B</b><c>C</c></a>') tree_invalid = self.parse('<a><b></b></a>') schema = etree.RelaxNG(file=fileInTestDir('test.rnc')) self.assertTrue(schema.validate(tree_valid)) self.assertFalse(schema.validate(tree_invalid))
def test_xslt_include_from_filelike(self): f = open(fileInTestDir('test1.xslt'), 'rb') tree = etree.parse(f) f.close() st = etree.XSLT(tree)
def test_xslt_include(self): tree = etree.parse(fileInTestDir('test1.xslt')) st = etree.XSLT(tree)
def test_dtd_parse_valid(self): parser = etree.XMLParser(dtd_validation=True) xml = '<!DOCTYPE a SYSTEM "%s"><a><b/></a>' % fileInTestDir("test.dtd") root = etree.fromstring(xml, parser=parser)
def test_schematron_from_file(self): schematron = isoschematron.Schematron(file=fileInTestDir('test.sch')) self.assertTrue(isinstance(schematron, isoschematron.Schematron))
def test_dtd_parse_valid_relative(self): parser = etree.XMLParser(dtd_validation=True) xml = '<!DOCTYPE a SYSTEM "test.dtd"><a><b/></a>' root = etree.fromstring(xml, parser=parser, base_url=fileInTestDir("test.xml"))
def test_xslt_document_parse_deny_all(self): access_control = etree.XSLTAccessControl.DENY_ALL xslt = etree.XSLT(etree.parse(fileInTestDir("test-document.xslt")), access_control = access_control) self.assertRaises(etree.XSLTApplyError, xslt, etree.XML('<a/>'))
def test_xslt_document_parse_deny(self): access_control = etree.XSLTAccessControl(read_file=False) xslt = etree.XSLT(etree.parse(fileInTestDir("test-document.xslt")), access_control=access_control) self.assertRaises(etree.XSLTApplyError, xslt, etree.XML("<a/>"))