/** * xmlNewEntity: * @doc: the document * @name: the entity name * @type: the entity type XML_xxx_yyy_ENTITY * @ExternalID: the entity external ID if available * @SystemID: the entity system ID if available * @content: the entity content * * Create a new entity, this differs from xmlAddDocEntity() that if * the document is NULL or has no internal subset defined, then an * unlinked entity structure will be returned, it is then the responsability * of the caller to link it to the document later or free it when not needed * anymore. * * Returns a pointer to the entity or NULL in case of error */ xmlEntityPtr xmlNewEntity(xmlDocPtr doc, const xmlChar *name, int type, const xmlChar *ExternalID, const xmlChar *SystemID, const xmlChar *content) { xmlEntityPtr ret; xmlDictPtr dict; if ((doc != NULL) && (doc->intSubset != NULL)) { return(xmlAddDocEntity(doc, name, type, ExternalID, SystemID, content)); } if (doc != NULL) dict = doc->dict; else dict = NULL; ret = xmlCreateEntity(dict, name, type, ExternalID, SystemID, content); if (ret == NULL) return(NULL); ret->doc = doc; return(ret); }
void Document::DeclareEntity(const string &name, EntityType type, const string &publicID, const string &systemID, const string &value) { if ( xmlAddDocEntity(xml(), name.utf8(), static_cast<int>(type), publicID.utf8(), systemID.utf8(), value.utf8()) == nullptr ) throw InternalError(std::string("Unable to add entity declaration for ") + name.c_str()); }