if (aCount) ++(*aCount);
RDFContentSinkImpl::AddProperties(const nsIParserNode& aNode,                                  nsIRDFResource* aSubject,                                  PRInt32* aCount){    // Initialize the out parameter to zero, if they've asked for us    // to count properties we've added...    if (aCount)        *aCount = 0;    // Add tag attributes to the content attributes    PRInt32 count = aNode.GetAttributeCount();    for (PRInt32 i = 0; i < count; i++) {        // Get upper-cased key        const nsAReadableString& key = aNode.GetKeyAt(i);        // skip 'xmlns' directives, these are "meta" information        if (IsXMLNSDirective(key))            continue;        const char* nameSpaceURI;        nsCOMPtr<nsIAtom> attr;        ParseAttributeString(key, &nameSpaceURI, getter_AddRefs(attr));        // skip `about', `ID', and `resource' attributes (either with        // or without the `rdf:' prefix); these are all "special" and        // should've been dealt with by the caller.        if ((!nameSpaceURI || 0 == PL_strcmp(nameSpaceURI, kRDFNameSpaceURI)) &&            (attr.get() == kAboutAtom ||             attr.get() == kIdAtom ||             attr.get() == kResourceAtom))            continue;        nsAutoString v(aNode.GetValueAt(i));        nsRDFParserUtils::StripAndConvert(v);        nsCAutoString propertyStr(nameSpaceURI);        const PRUnichar* attrName;        attr->GetUnicode(&attrName);        propertyStr += NS_ConvertUCS2toUTF8(attrName);        // Add the assertion to RDF        nsCOMPtr<nsIRDFResource> property;        gRDFService->GetResource(propertyStr, getter_AddRefs(property));        nsCOMPtr<nsIRDFLiteral> target;        gRDFService->GetLiteral(v.GetUnicode(), getter_AddRefs(target));        mDataSource->Assert(aSubject, property, target, PR_TRUE);        // If the caller cares, let 'em know that we've added another        // property.        if (aCount)            ++(*aCount);    }    return NS_OK;}