0001
0002
0003"""Namespace handling."""
0004
0005__revision__ = "$Rev: 492 $"
0006__date__ = "$Date: 2007-07-06 21:38:45 -0400 (Fri, 06 Jul 2007) $"
0007__author__ = "Ryan Tomayko (rtomayko@gmail.com)"
0008__copyright__ = "Copyright 2004-2005, Ryan Tomayko"
0009__license__ = "MIT <http://www.opensource.org/licenses/mit-license.php>"
0010
0011__all__ = ['Namespace', 'xml', 'xhtml', 'atom', 'rdf', 'rss', 'nons']
0012
0013
0014namespaces = {}
0015
0016class Namespace(object):
0017 def __init__(self, uri, prefix=None):
0018 self.uri = uri
0019 self.prefix = prefix
0020 if prefix:
0021 namespaces[uri] = prefix
0022
0023 def qname(self, name):
0024 if self.prefix:
0025 return '%s:%s' % (self.prefix, name)
0026 else:
0027 return name
0028
0029 def clarkname(self, name):
0030 if self.uri:
0031 return '{%s}%s' % (self.uri, name)
0032 else:
0033 return name
0034
0035 __getattr__ = clarkname
0036 __getitem__ = clarkname
0037
0038 def __str__(self):
0039 return self.uri
0040
0041 def __unicode__(self):
0042 return unicode(self.uri)
0043
0044 def __repr__(self):
0045 return 'Namespace(%r, %r)' % (self.uri, self.prefix)
0046
0047 def __equals__(self, other):
0048 if isinstance(other, basestring):
0049 return self.uri == other
0050 elif isinstance(other, Namespace):
0051 return self.uri == other.uri
0052 else:
0053 return False
0054
0055xml = Namespace('http://www.w3.org/XML/1998/namespace', 'xml')
0056xhtml = Namespace('http://www.w3.org/1999/xhtml', 'html')
0057atom = Namespace('http://purl.org/atom/ns#', 'atom')
0058rdf = Namespace('http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'rdf')
0059rss = Namespace('http://purl.org/rss/1.0/', 'rss')
0060nons = Namespace(None, None)