'Load full info for a lexical unit from its xml file.
This should only be called when accessing corpus annotations
(which are not included in frame files).'

def _handle_lexunit_elt(self, elt, ignorekeys):

    luinfo = self._load_xml_attributes(AttrDict(), elt)
    luinfo[u'_type'] = u'lu'
    luinfo[u'definition'] = u''
    luinfo[u'definitionMarkup'] = u''
    luinfo[u'subCorpus'] = PrettyList()
    luinfo[u'lexemes'] = PrettyList()
    luinfo[u'semTypes'] = PrettyList()
    for k in ignorekeys:
        if (k in luinfo):
            del luinfo[k]
    for sub in elt:
        if sub.tag.endswith(u'header'):
            continue
        elif sub.tag.endswith(u'valences'):
            continue
        elif (sub.tag.endswith(u'definition') and (u'definition' not in ignorekeys)):
            luinfo[u'definitionMarkup'] = sub.text
            luinfo[u'definition'] = self._strip_tags(sub.text)
        elif (sub.tag.endswith(u'subCorpus') and (u'subCorpus' not in ignorekeys)):
            sc = self._handle_lusubcorpus_elt(sub)
            if (sc is not None):
                luinfo[u'subCorpus'].append(sc)
        elif (sub.tag.endswith(u'lexeme') and (u'lexeme' not in ignorekeys)):
            luinfo[u'lexemes'].append(self._load_xml_attributes(PrettyDict(), sub))
        elif (sub.tag.endswith(u'semType') and (u'semType' not in ignorekeys)):
            semtypeinfo = self._load_xml_attributes(AttrDict(), sub)
            luinfo[u'semTypes'].append(self.semtype(semtypeinfo.ID))
    return luinfo
