def nsuri(n: ExpandedName) -> str: """ Return the string form of the namespace URI :param n: expanded name to be returned :return: stringified URI """ # There appears to be a flaw in pyxb -- anyType comes from a different 'xsd' than int, string, etc rval = str(GAP['']) if not n.namespaceURI() else \ str(XSD['']) if n.namespaceURI() == "http://www.w3.org/2001/XMLSchema" else str(n.namespaceURI()) return rval # two steps so a breakpoint works
def testConstructor (self): ln = 'local' ns_uri = 'urn:ns' en = ExpandedName(ln) self.assertEqual(en.namespace(), None) self.assertEqual(en.localName(), ln) en2 = ExpandedName(en) self.assertEqual(en2, en) dom = pyxb.utils.domutils.StringToDOM('<ns1:%s xmlns:ns1="%s" attr="52">content</ns1:%s>' % (ln, ns_uri, ln)) en = ExpandedName(dom.documentElement) ns = pyxb.namespace.NamespaceForURI(ns_uri) self.assertTrue(ns is not None) self.assertEqual(ns, en.namespace()) self.assertEqual(ln, en.localName()) en2 = ExpandedName(ns, ln) self.assertEqual(en, en2) attr = dom.documentElement.getAttributeNodeNS(None, 'attr') self.assertTrue(attr is not None) en = ExpandedName(attr) self.assertEqual(xml.dom.EMPTY_NAMESPACE, en.namespaceURI()) self.assertEqual('attr', en.localName()) child = dom.documentElement.firstChild self.assertTrue(child is not None) self.assertEqual(xml.dom.Node.TEXT_NODE, child.nodeType) self.assertRaises(pyxb.LogicError, ExpandedName, child)