Example #1
0
    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))
Example #2
0
    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))
Example #3
0
    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")
Example #4
0
    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, "&#42;")
        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")
Example #5
0
 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)
Example #6
0
 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))
Example #7
0
 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")
Example #8
0
 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)
Example #9
0
 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")
Example #10
0
 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))
Example #11
0
 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))
Example #12
0
 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)
Example #13
0
    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))
Example #14
0
    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"))
Example #15
0
 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()
Example #16
0
 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')
Example #17
0
 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')
Example #18
0
 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)
Example #19
0
 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))
Example #21
0
 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')
Example #22
0
    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'])
Example #23
0
    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'])
Example #24
0
    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)
Example #25
0
    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"))
Example #26
0
 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)
Example #27
0
 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)
Example #28
0
 def test_relaxng_compact_file_obj(self):
     f = open(fileInTestDir('test.rnc'), 'rb')
     try:
         schema = etree.RelaxNG(file=f)
     finally:
         f.close()
Example #29
0
 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))
Example #30
0
 def test_xslt_include_from_filelike(self):
     f = open(fileInTestDir('test1.xslt'), 'rb')
     tree = etree.parse(f)
     f.close()
     st = etree.XSLT(tree)
Example #31
0
 def test_xslt_include(self):
     tree = etree.parse(fileInTestDir('test1.xslt'))
     st = etree.XSLT(tree)
Example #32
0
 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))
Example #33
0
 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)
Example #34
0
 def test_schematron_from_file(self):
     schematron = isoschematron.Schematron(file=fileInTestDir('test.sch'))
     self.assertTrue(isinstance(schematron, isoschematron.Schematron))
Example #35
0
 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"))
Example #36
0
 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)
Example #37
0
 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"))
Example #38
0
 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/>'))
Example #39
0
 def test_relaxng_compact_file_obj(self):
     f = open(fileInTestDir('test.rnc'), 'rb')
     try:
         schema = etree.RelaxNG(file=f)
     finally:
         f.close()
Example #40
0
 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/>"))