def philips_tag(dict, key, value=None, subkey=None, subvalue=None):
    """
    Given an xml dictionary and a key, return information about the philips
    tag in the dictionary.

    :param dict: an xml dictionary.
    :param key: the key to match.
    :param value: the value to match.  None to match any value.  Ignored if
        subkey is specified.
    :param subkey: the subkey to match.  None to not match a subkey.
    :param subvalue: the value of the subkey to match.
    :returns: None if no match, otherwise a dictionary object, the index of the
        dictionary object, the tag list, the index in the tag list, and the tag
        entry or subkey entry.
    """
    dobjs = dict['DataObject']
    if not isinstance(dobjs, list):
        dobjs = [dobjs]
    for didx, dobj in enumerate(dobjs):
        taglist = dobj['Attribute']
        if not isinstance(taglist, list):
            taglist = [taglist]
        for tidx, entry in enumerate(taglist):
            if entry['Name'] == key:
                if subkey is None and (value is None or entry['text'] == value):
                    return dobjs, didx, taglist, tidx, entry
                elif 'Array' in entry:
                    subtag = philips_tag(entry['Array'], subkey, subvalue)
                    if subtag is not None:
                        return dobjs, didx, taglist, tidx, subtag
    return None