'Open an XML document at the specified I{url}.
First, the document attempted to be retrieved from
the I{object cache}.  If not found, it is downloaded and
parsed using the SAX parser.  The result is added to the
cache for the next open().
@param url: A document url.
@type url: str.
@return: The specified XML document.
@rtype: I{Document}'

def open(self, url):

    cache = self.cache()
    id = self.mangle(url, 'document')
    d = cache.get(id)
    if (d is None):
        d = self.download(url)
        cache.put(id, d)
    self.plugins.document.parsed(url=url, document=d.root())
    return d
