'Like ``xml.etree.ElementTree.Element.findall()``, except only returns children that have the specified attribs.
:param parent: Parent element in which to find.
:type parent: ``xml.etree.ElementTree.Element``
:param match: Name of child elements to find.
:type match: str
:param attribs: List of required attributes in children elements.
:type attribs: list of str
:returns: list of ``xml.etree.ElementTree.Element``'

def _findall_with_required(self, parent, match, attribs=None):

    rval = []
    if (attribs is None):
        attribs = ('id',)
    for elem in parent.findall(match):
        for attrib in attribs:
            if (attrib not in elem.attrib):
                log.warning(("required    '%s'    attribute    is    missing    from    <%s>    element" % (attrib, match)))
                break
        else:
            rval.append(elem)
    return rval
