Пример #1
0
    def test_dtd_attrs(self):
        dtd = etree.DTD(fileUrlInTestDir("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=fileUrlInTestDir("test.xml"))

        dtd = root.getroottree().docinfo.internalDTD
        self.assertEqual(dtd.name, "a")
        self.assertEqual(dtd.system_url, "test.dtd")
Пример #2
0
    def test_dtd_attrs(self):
        dtd = etree.DTD(fileUrlInTestDir("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, "&#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=fileUrlInTestDir("test.xml"))

        dtd = root.getroottree().docinfo.internalDTD
        self.assertEqual(dtd.name, "a")
        self.assertEqual(dtd.system_url, "test.dtd")
Пример #3
0
 def test_dtd_parse_file_not_found(self):
     fromstring = etree.fromstring
     dtd_filename = fileUrlInTestDir("__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]
         self.assertTrue(e.error_log)
         self.assertTrue(parser.error_log)
         errors = [entry.message for entry in e.error_log
                   if dtd_filename in entry.message]
     self.assertTrue(errors)
Пример #4
0
 def test_dtd_parse_file_not_found(self):
     fromstring = etree.fromstring
     dtd_filename = fileUrlInTestDir("__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]
         self.assertTrue(e.error_log)
         self.assertTrue(parser.error_log)
         errors = [entry.message for entry in e.error_log
                   if dtd_filename in entry.message]
     self.assertTrue(errors)
Пример #5
0
 def test_dtd_parse_valid_relative_file_url(self):
     parser = etree.XMLParser(dtd_validation=True)
     xml = '<!DOCTYPE a SYSTEM "test.dtd"><a><b/></a>'
     root = etree.fromstring(xml,
                             parser=parser,
                             base_url=fileUrlInTestDir("test.xml"))
Пример #6
0
 def test_dtd_parse_valid_file_url(self):
     parser = etree.XMLParser(dtd_validation=True)
     xml = ('<!DOCTYPE a SYSTEM "%s"><a><b/></a>' %
            fileUrlInTestDir("test.dtd"))
     root = etree.fromstring(xml, parser=parser)
Пример #7
0
 def test_dtd_parse_valid_relative_file_url(self):
     parser = etree.XMLParser(dtd_validation=True)
     xml = '<!DOCTYPE a SYSTEM "test.dtd"><a><b/></a>'
     root = etree.fromstring(
         xml, parser=parser, base_url=fileUrlInTestDir("test.xml"))
Пример #8
0
 def test_dtd_parse_valid_file_url(self):
     parser = etree.XMLParser(dtd_validation=True)
     xml = ('<!DOCTYPE a SYSTEM "%s"><a><b/></a>' %
            fileUrlInTestDir("test.dtd"))
     root = etree.fromstring(xml, parser=parser)