'Accesses the textbook\'s table of contents (default name "toc.xml") at the URL self.book_url
Returns XML tree representation of the table of contents'

@lazy
def table_of_contents(self):

    toc_url = (self.book_url + 'toc.xml')
    try:
        if (toc_url in _cached_toc):
            (table_of_contents, timestamp) = _cached_toc[toc_url]
            age = (datetime.now(utc) - timestamp)
            if (age.seconds < 600):
                return table_of_contents
    except Exception as err:
        pass
    log.info('Retrieving    textbook    table    of    contents    from    %s', toc_url)
    try:
        r = requests.get(toc_url)
    except Exception as err:
        msg = ('Error    %s:    Unable    to    retrieve    textbook    table    of    contents    at    %s' % (err, toc_url))
        log.error(msg)
        raise Exception(msg)
    try:
        table_of_contents = etree.fromstring(r.text)
    except Exception as err:
        msg = ('Error    %s:    Unable    to    parse    XML    for    textbook    table    of    contents    at    %s' % (err, toc_url))
        log.error(msg)
        raise Exception(msg)
    return table_of_contents
