}
parseNextRDFToken (RDFFile f, char* token){  if (token[0] != '<')   {    if ((f->status == EXPECTING_OBJECT) && (f->depth > 1)) {      RDF_Resource u = f->stack[f->depth-2];      RDF_Resource s = f->stack[f->depth-1];      addSlotValue(f, u, s, copyStringIgnoreWhiteSpace(token), RDF_STRING_TYPE, 1);    }   } else if  (startsWith("<!--", token)) {    return;  } else if (token[1] == '?')  {    parseRDFProcessingInstruction(f, token);  } else if (token[1] == '/') {    if ((f->status != EXPECTING_OBJECT) && (f->status != EXPECTING_PROPERTY)) return;    if (f->depth > 0) f->depth--;    f->status = (f->status == EXPECTING_OBJECT ? EXPECTING_PROPERTY : EXPECTING_OBJECT);  } else if ((f->status == 0) && startsWith("<RDF:RDF>", token)) {      f->status = EXPECTING_OBJECT;  } else if (startsWith("<RelatedLinks", token)) {	f->stack[f->depth++] = f->top;	f->status = EXPECTING_PROPERTY;  } else {    PRBool emptyElementp = (token[strlen(token)-2] == '/');    char* attlist[2*MAX_ATTRIBUTES+1];    char* elementName;    if ((f->status != EXPECTING_OBJECT) && (f->status != EXPECTING_PROPERTY)) return;    tokenizeElement(token, attlist, &elementName);    if ((f->status == EXPECTING_PROPERTY) && (knownObjectElement(elementName))) return;    if (f->status == EXPECTING_OBJECT) {      char* url = NULL;      RDF_Resource obj;      uint16 count = 0;            url = getHref(attlist);      if (url == NULL) url = getAttributeValue(attlist, "id");       if (url) url = possiblyMakeAbsolute(f, url);      obj =  ResourceFromElementName(f, url);      if (url) freeMem(url);      addToResourceList(f, obj);      addElementProps (attlist, elementName, f, obj) ;      if (!tagEquals(f, elementName, "RDF:Description")) {        if (containerTagp(f, elementName)) {          setContainerp(obj, 1);        } else {          RDF_Resource eln = ResourceFromElementName(f, elementName);          addSlotValue(f, obj, gCoreVocab->RDF_instanceOf, eln, RDF_RESOURCE_TYPE, 1);        }      }      if (f->depth > 1) {        addSlotValue(f, f->stack[f->depth-2], f->stack[f->depth-1], obj,                      RDF_RESOURCE_TYPE, 1);      }      if (!emptyElementp) {        f->stack[f->depth++] = obj;        f->status = EXPECTING_PROPERTY;      }    } else if (f->status == EXPECTING_PROPERTY) {      char* url;      RDF_Resource obj;      uint16 count = 0;      url = getHref(attlist) ;            if (url) {        RDF_Resource eln = ResourceFromElementName(f, elementName);        url = possiblyMakeAbsolute(f, url);        obj =  ResourceFromElementName(f, url);        freeMem(url);        addElementProps (attlist, elementName, f, obj) ;        addToResourceList(f, obj);        addSlotValue(f, f->stack[f->depth-1], eln,obj,RDF_RESOURCE_TYPE, 1);      }      if (!emptyElementp) {        f->stack[f->depth++] = ResourceFromElementName(f, elementName);        f->status = EXPECTING_OBJECT;      }    }  }}	