element->GetAttrNameAt(i, &nameSpaceID, getter_AddRefs(attr), getter_AddRefs(prefix));
element->GetAttributeNameAt(i, nameSpaceID, *getter_AddRefs(attr), *getter_AddRefs(prefix));
nsXULTemplateBuilder::AddSimpleRuleBindings(nsTemplateRule* aRule, nsIContent* aElement){    // Crawl the content tree of a "simple" rule, adding a variable    // assignment for any attribute whose value is "rdf:".    nsAutoVoidArray elements;    elements.AppendElement(aElement);    while (elements.Count()) {        // Pop the next element off the stack        PRInt32 i = elements.Count() - 1;        nsIContent* element = NS_STATIC_CAST(nsIContent*, elements[i]);        elements.RemoveElementAt(i);        // Iterate through its attributes, looking for substitutions        // that we need to add as bindings.        PRInt32 count;        element->GetAttrCount(count);        for (i = 0; i < count; ++i) {            PRInt32 nameSpaceID;            nsCOMPtr<nsIAtom> attr, prefix;            element->GetAttrNameAt(i, &nameSpaceID, getter_AddRefs(attr),                                   getter_AddRefs(prefix));            nsAutoString value;            element->GetAttr(nameSpaceID, attr, value);            // Scan the attribute for variables, adding a binding for            // each one.            ParseAttribute(value, AddBindingsFor, nsnull, aRule);        }        // Push kids onto the stack, and search them next.        element->ChildCount(count);        while (--count >= 0) {            nsCOMPtr<nsIContent> child;            element->ChildAt(count, getter_AddRefs(child));            elements.AppendElement(child);        }    }    return NS_OK;}