def handle_startendtag(self, tag, attrs):
        """
        Called when Cssparser finds a tag that does not have a
        closing tag, such as <meta>, or <link>. These tags have
        no data, so we just pass them forward.
        @param <string> tag
            The HTML tag we're currently parsing
        @param <tuple> attrs
           A tuple of HTML element attributes such as 'class', 'id',
           'style', etc. The tuple is of the form ('html_attribute',
           'attr1', 'attr2', 'attr3' ... 'attrN')
        """
        dattrs = dict(attrs)
        if tag.lower() == 'link':
            #print "Found link"
            if all (k in dattrs for k in ('rel', 'href', 'type')):
                if ( dattrs['rel'].lower() == 'stylesheet' and 
                     dattrs['type'].lower() == 'text/css' ):
                    #try to open the url...
                    #print "Trying to read %s"  % dattrs['href']
                    if (dattrs['href'][:5].lower() == 'http:' or 
                       dattrs['href'][:6].lower() == 'https:'):
                        self.linked_sheets.append(dattrs['href'])
                    else:
                        self.linked_sheets.append(self.url_root+dattrs['href'])
        self.append_styles(tag, attrs)
Called when Cssparser finds a tag that does not have a
        closing tag, such as <meta>, or <link>. These tags have
        no data, so we just pass them forward.
        @param <string> tag
            The HTML tag we're currently parsing
        @param <tuple> attrs
           A tuple of HTML element attributes such as 'class', 'id',
           'style', etc. The tuple is of the form ('html_attribute',
           'attr1', 'attr2', 'attr3' ... 'attrN')