1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 """Utility functions related to U{XML Namespaces<http://www.w3.org/TR/2006/REC-xml-names-20060816/index.html>}."""
16
17 import pyxb
18 import pyxb.namespace
19
31
33 """Given a URI, provide the L{Namespace} instance corresponding to it.
34
35 This can only be used to lookup or create real namespaces. To create
36 absent namespaces, use L{CreateAbsentNamespace}.
37
38 @param uri: The URI that identifies the namespace
39 @type uri: A non-empty C{str} or C{unicode} string
40 @keyword create_if_missing: If C{True}, a namespace for the given URI is
41 created if one has not already been registered. Default is C{False}.
42 @type create_if_missing: C{bool}
43 @return: The Namespace corresponding to C{uri}, if available
44 @rtype: L{Namespace} or C{None}
45 @raise pyxb.LogicError: The uri is not a non-empty string
46 """
47 if not isinstance(uri, (str, unicode)):
48 raise pyxb.LogicError('Cannot lookup absent namespaces')
49 if 0 == len(uri):
50 raise pyxb.LogicError('Namespace URIs must not be empty strings')
51 rv = pyxb.namespace.Namespace._NamespaceForURI(uri)
52 if (rv is None) and create_if_missing:
53 rv = pyxb.namespace.Namespace(uri)
54 return rv
55
57 """Create an absent namespace.
58
59 Use this when you need a namespace for declarations in a schema with no
60 target namespace. Absent namespaces are not stored in the infrastructure;
61 it is your responsibility to hold on to the reference you get from this,
62 because you won't be able to look it up."""
63 return pyxb.namespace.Namespace.CreateAbsentNamespace()
64
68