'SAX processing, called per node in the config stream.'

def startElement(self, tag, attributes):

    if (tag == 'site'):
        if self._in_site:
            output.Error('Can    not    nest    Site    entries    in    the    configuration.')
        else:
            self._in_site = True
            if (not ValidateAttributes('SITE', attributes, ('verbose', 'default_encoding', 'base_url', 'store_into', 'suppress_search_engine_notify'))):
                return
            verbose = attributes.get('verbose', 0)
            if verbose:
                output.SetVerbose(verbose)
            self._default_enc = attributes.get('default_encoding')
            self._base_url = attributes.get('base_url')
            self._store_into = attributes.get('store_into')
            if (not self._suppress):
                self._suppress = attributes.get('suppress_search_engine_notify', False)
            self.ValidateBasicConfig()
    elif (tag == 'filter'):
        self._filters.append(Filter(attributes))
    elif (tag == 'url'):
        self._inputs.append(InputURL(attributes))
    elif (tag == 'urllist'):
        for attributeset in ExpandPathAttribute(attributes, 'path'):
            self._inputs.append(InputURLList(attributeset))
    elif (tag == 'directory'):
        self._inputs.append(InputDirectory(attributes, self._base_url))
    elif (tag == 'accesslog'):
        for attributeset in ExpandPathAttribute(attributes, 'path'):
            self._inputs.append(InputAccessLog(attributeset))
    elif (tag == 'sitemap'):
        for attributeset in ExpandPathAttribute(attributes, 'path'):
            self._inputs.append(InputSitemap(attributeset))
    else:
        output.Error(('Unrecognized    tag    in    the    configuration:    %s' % tag))
