GetAttributeValueAt(aNode, index, href);
GetAttributeValueAt(aNode, index, href, sco);
HTMLContentSink::ProcessLINKTag(const nsIParserNode& aNode){  nsresult  result = NS_OK;  PRInt32   index;  PRInt32   count = aNode.GetAttributeCount();  nsAutoString href;  nsAutoString rel;   nsAutoString title;   nsAutoString type;   for (index = 0; index < count; index++) {    const nsString& key = aNode.GetKeyAt(index);    if (key.EqualsIgnoreCase("href")) {      GetAttributeValueAt(aNode, index, href);      href.StripWhitespace();    }    else if (key.EqualsIgnoreCase("rel")) {      GetAttributeValueAt(aNode, index, rel);      rel.CompressWhitespace();    }    else if (key.EqualsIgnoreCase("title")) {      GetAttributeValueAt(aNode, index, title);      title.CompressWhitespace();    }    else if (key.EqualsIgnoreCase("type")) {      GetAttributeValueAt(aNode, index, type);      type.StripWhitespace();    }  }  if (rel.EqualsIgnoreCase("stylesheet")) {    if (type.EqualsIgnoreCase("text/css")) {      nsIURL* url = nsnull;      nsIUnicharInputStream* uin = nsnull;      nsAutoString absURL;      nsIURL* docURL = mDocument->GetDocumentURL();      result = NS_MakeAbsoluteURL(docURL, mBaseHREF, href, absURL);      if (NS_OK != result) {        return result;      }      NS_RELEASE(docURL);      result = NS_NewURL(&url, nsnull, absURL);      if (NS_OK != result) {        return result;      }      PRInt32 ec;      nsIInputStream* iin = url->Open(&ec);      if (nsnull == iin) {        NS_RELEASE(url);        return (nsresult) ec;/* XXX fix url->Open */      }      result = NS_NewConverterStream(&uin, nsnull, iin);      NS_RELEASE(iin);      if (NS_OK != result) {        NS_RELEASE(url);        return result;      }      result = LoadStyleSheet(url, uin, PR_FALSE);      NS_RELEASE(uin);      NS_RELEASE(url);    }  }  return result;}