def test_namespace_collector_with_overlaping_shortcuts(self): ns = namespace('ns', 'ns') ns1 = namespace('ns1', 'ns') tag = (ns.tag, ('tag1',), (ns1.tag2, (ns.tag3,))) with self.assertRaises(ValueError) as err: NamespaceCollector().visit(tag).namespaces
def test_namespace_collector_with_tags(self): ns = namespace('ns', 'ns') ns1 = namespace('ns1', 'ns1') tag = (ns.tag, ('tag1',), (ns1.tag2, (ns.tag3,))) self.assertEqual(NamespaceCollector().visit(tag).namespaces, {'xmlns:ns':'ns', 'xmlns:ns1':'ns1'})
def test_namespace_collector_with_tags_and_attrs(self): ns = namespace('ns', 'ns') ns1 = namespace('ns1', 'ns1') ns3 = namespace('ns3', 'ns3') tag = (ns.tag, ('tag1',), 'text', (ns1.tag2, {ns3.attr: 'value'}, (ns.tag3,))) self.assertEqual(NamespaceCollector().visit(tag).namespaces, {'xmlns:ns':'ns', 'xmlns:ns1':'ns1', 'xmlns:ns3':'ns3'})
def test_encode_xml_with_namespaces(self): ns = namespace('ns', 'ns') ns1 = namespace('ns1', 'ns1') ns3 = namespace('ns3', 'ns3') tag = (ns.tag, ('tag1',), 'text', (ns1.tag2, {ns3.attr: 'value'}, (ns.tag3,))) self.assertEqual(encode(tag, indent=2), '<?xml version="1.0"?>\n' '<ns:tag xmlns:ns="ns" xmlns:ns1="ns1" xmlns:ns3="ns3">\n' ' <tag1/>text\n' ' <ns1:tag2 ns3:attr="value">\n' ' <ns:tag3/>\n' ' </ns1:tag2>\n' '</ns:tag>')
def test_namespace(self): xsd = namespace('http://www.w3.org/2001/XMLSchema', 'xsd') self.assertTrue(isinstance(xsd('element'), qname)) self.assertTrue(isinstance(xsd('element'), unicode)) self.assertEqual(xsd('element'), u'xsd:element') self.assertEqual(xsd.element, u'xsd:element') self.assertEqual(xsd('element').uri, 'http://www.w3.org/2001/XMLSchema') self.assertEqual(xsd('element').prefix, 'xsd') self.assertEqual(xsd(u'имя-тега'), u'xsd:имя-тега') self.assertEqual(repr(xsd('element')), "<qname u'xsd:element' " "uri='http://www.w3.org/2001/XMLSchema'>")
def test_qname_using_lxml(self): ns = namespace('urn:n', 'ns0') self.assertEqual(etree.tostring(to_etree(('a', ns.tag), impl=etree)), '<a xmlns:ns0="urn:n">ns0:tag</a>')
def test_qname_using_ElementTree(self): ns = namespace('urn:n', 'ns0') with self.assertRaisesRegexp(ValueError, 'does not support'): ElementTree.tostring(to_etree(('a', ns.tag)))
def test_to_etree_tag_with_ns(self): ns = namespace('ns', 'ns') self.assertEqualEtree(to_etree((ns.a,)), ElementTree.fromstring('<ns:a xmlns:ns="ns"/>'))