You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1343 lines
38 KiB
1343 lines
38 KiB
/* |
|
* legacy.c: set of deprecated routines, not to be used anymore but |
|
* kept purely for ABI compatibility |
|
* |
|
* See Copyright for the status of this software. |
|
* |
|
* daniel@veillard.com |
|
*/ |
|
|
|
#define IN_LIBXML |
|
#include "libxml.h" |
|
|
|
#ifdef LIBXML_LEGACY_ENABLED |
|
#include <string.h> |
|
|
|
#include <libxml/tree.h> |
|
#include <libxml/entities.h> |
|
#include <libxml/SAX.h> |
|
#include <libxml/parserInternals.h> |
|
#include <libxml/HTMLparser.h> |
|
|
|
void xmlUpgradeOldNs(xmlDocPtr doc); |
|
|
|
/************************************************************************ |
|
* * |
|
* Deprecated functions kept for compatibility * |
|
* * |
|
************************************************************************/ |
|
|
|
#ifdef LIBXML_HTML_ENABLED |
|
xmlChar *htmlDecodeEntities(htmlParserCtxtPtr ctxt, int len, xmlChar end, |
|
xmlChar end2, xmlChar end3); |
|
|
|
/** |
|
* htmlDecodeEntities: |
|
* @ctxt: the parser context |
|
* @len: the len to decode (in bytes !), -1 for no size limit |
|
* @end: an end marker xmlChar, 0 if none |
|
* @end2: an end marker xmlChar, 0 if none |
|
* @end3: an end marker xmlChar, 0 if none |
|
* |
|
* Substitute the HTML entities by their value |
|
* |
|
* DEPRECATED !!!! |
|
* |
|
* Returns A newly allocated string with the substitution done. The caller |
|
* must deallocate it ! |
|
*/ |
|
xmlChar * |
|
htmlDecodeEntities(htmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED, |
|
int len ATTRIBUTE_UNUSED, xmlChar end ATTRIBUTE_UNUSED, |
|
xmlChar end2 ATTRIBUTE_UNUSED, |
|
xmlChar end3 ATTRIBUTE_UNUSED) |
|
{ |
|
static int deprecated = 0; |
|
|
|
if (!deprecated) { |
|
xmlGenericError(xmlGenericErrorContext, |
|
"htmlDecodeEntities() deprecated function reached\n"); |
|
deprecated = 1; |
|
} |
|
return (NULL); |
|
} |
|
#endif |
|
|
|
/** |
|
* xmlInitializePredefinedEntities: |
|
* |
|
* Set up the predefined entities. |
|
* Deprecated call |
|
*/ |
|
void |
|
xmlInitializePredefinedEntities(void) |
|
{ |
|
} |
|
|
|
/** |
|
* xmlCleanupPredefinedEntities: |
|
* |
|
* Cleanup up the predefined entities table. |
|
* Deprecated call |
|
*/ |
|
void |
|
xmlCleanupPredefinedEntities(void) |
|
{ |
|
} |
|
|
|
static const char *xmlFeaturesList[] = { |
|
"validate", |
|
"load subset", |
|
"keep blanks", |
|
"disable SAX", |
|
"fetch external entities", |
|
"substitute entities", |
|
"gather line info", |
|
"user data", |
|
"is html", |
|
"is standalone", |
|
"stop parser", |
|
"document", |
|
"is well formed", |
|
"is valid", |
|
"SAX block", |
|
"SAX function internalSubset", |
|
"SAX function isStandalone", |
|
"SAX function hasInternalSubset", |
|
"SAX function hasExternalSubset", |
|
"SAX function resolveEntity", |
|
"SAX function getEntity", |
|
"SAX function entityDecl", |
|
"SAX function notationDecl", |
|
"SAX function attributeDecl", |
|
"SAX function elementDecl", |
|
"SAX function unparsedEntityDecl", |
|
"SAX function setDocumentLocator", |
|
"SAX function startDocument", |
|
"SAX function endDocument", |
|
"SAX function startElement", |
|
"SAX function endElement", |
|
"SAX function reference", |
|
"SAX function characters", |
|
"SAX function ignorableWhitespace", |
|
"SAX function processingInstruction", |
|
"SAX function comment", |
|
"SAX function warning", |
|
"SAX function error", |
|
"SAX function fatalError", |
|
"SAX function getParameterEntity", |
|
"SAX function cdataBlock", |
|
"SAX function externalSubset", |
|
}; |
|
|
|
/** |
|
* xmlGetFeaturesList: |
|
* @len: the length of the features name array (input/output) |
|
* @result: an array of string to be filled with the features name. |
|
* |
|
* Copy at most *@len feature names into the @result array |
|
* |
|
* Returns -1 in case or error, or the total number of features, |
|
* len is updated with the number of strings copied, |
|
* strings must not be deallocated |
|
*/ |
|
int |
|
xmlGetFeaturesList(int *len, const char **result) |
|
{ |
|
int ret, i; |
|
|
|
ret = sizeof(xmlFeaturesList) / sizeof(xmlFeaturesList[0]); |
|
if ((len == NULL) || (result == NULL)) |
|
return (ret); |
|
if ((*len < 0) || (*len >= 1000)) |
|
return (-1); |
|
if (*len > ret) |
|
*len = ret; |
|
for (i = 0; i < *len; i++) |
|
result[i] = xmlFeaturesList[i]; |
|
return (ret); |
|
} |
|
|
|
/** |
|
* xmlGetFeature: |
|
* @ctxt: an XML/HTML parser context |
|
* @name: the feature name |
|
* @result: location to store the result |
|
* |
|
* Read the current value of one feature of this parser instance |
|
* |
|
* Returns -1 in case or error, 0 otherwise |
|
*/ |
|
int |
|
xmlGetFeature(xmlParserCtxtPtr ctxt, const char *name, void *result) |
|
{ |
|
if ((ctxt == NULL) || (name == NULL) || (result == NULL)) |
|
return (-1); |
|
|
|
if (!strcmp(name, "validate")) { |
|
*((int *) result) = ctxt->validate; |
|
} else if (!strcmp(name, "keep blanks")) { |
|
*((int *) result) = ctxt->keepBlanks; |
|
} else if (!strcmp(name, "disable SAX")) { |
|
*((int *) result) = ctxt->disableSAX; |
|
} else if (!strcmp(name, "fetch external entities")) { |
|
*((int *) result) = ctxt->loadsubset; |
|
} else if (!strcmp(name, "substitute entities")) { |
|
*((int *) result) = ctxt->replaceEntities; |
|
} else if (!strcmp(name, "gather line info")) { |
|
*((int *) result) = ctxt->record_info; |
|
} else if (!strcmp(name, "user data")) { |
|
*((void **) result) = ctxt->userData; |
|
} else if (!strcmp(name, "is html")) { |
|
*((int *) result) = ctxt->html; |
|
} else if (!strcmp(name, "is standalone")) { |
|
*((int *) result) = ctxt->standalone; |
|
} else if (!strcmp(name, "document")) { |
|
*((xmlDocPtr *) result) = ctxt->myDoc; |
|
} else if (!strcmp(name, "is well formed")) { |
|
*((int *) result) = ctxt->wellFormed; |
|
} else if (!strcmp(name, "is valid")) { |
|
*((int *) result) = ctxt->valid; |
|
} else if (!strcmp(name, "SAX block")) { |
|
*((xmlSAXHandlerPtr *) result) = ctxt->sax; |
|
} else if (!strcmp(name, "SAX function internalSubset")) { |
|
*((internalSubsetSAXFunc *) result) = ctxt->sax->internalSubset; |
|
} else if (!strcmp(name, "SAX function isStandalone")) { |
|
*((isStandaloneSAXFunc *) result) = ctxt->sax->isStandalone; |
|
} else if (!strcmp(name, "SAX function hasInternalSubset")) { |
|
*((hasInternalSubsetSAXFunc *) result) = |
|
ctxt->sax->hasInternalSubset; |
|
} else if (!strcmp(name, "SAX function hasExternalSubset")) { |
|
*((hasExternalSubsetSAXFunc *) result) = |
|
ctxt->sax->hasExternalSubset; |
|
} else if (!strcmp(name, "SAX function resolveEntity")) { |
|
*((resolveEntitySAXFunc *) result) = ctxt->sax->resolveEntity; |
|
} else if (!strcmp(name, "SAX function getEntity")) { |
|
*((getEntitySAXFunc *) result) = ctxt->sax->getEntity; |
|
} else if (!strcmp(name, "SAX function entityDecl")) { |
|
*((entityDeclSAXFunc *) result) = ctxt->sax->entityDecl; |
|
} else if (!strcmp(name, "SAX function notationDecl")) { |
|
*((notationDeclSAXFunc *) result) = ctxt->sax->notationDecl; |
|
} else if (!strcmp(name, "SAX function attributeDecl")) { |
|
*((attributeDeclSAXFunc *) result) = ctxt->sax->attributeDecl; |
|
} else if (!strcmp(name, "SAX function elementDecl")) { |
|
*((elementDeclSAXFunc *) result) = ctxt->sax->elementDecl; |
|
} else if (!strcmp(name, "SAX function unparsedEntityDecl")) { |
|
*((unparsedEntityDeclSAXFunc *) result) = |
|
ctxt->sax->unparsedEntityDecl; |
|
} else if (!strcmp(name, "SAX function setDocumentLocator")) { |
|
*((setDocumentLocatorSAXFunc *) result) = |
|
ctxt->sax->setDocumentLocator; |
|
} else if (!strcmp(name, "SAX function startDocument")) { |
|
*((startDocumentSAXFunc *) result) = ctxt->sax->startDocument; |
|
} else if (!strcmp(name, "SAX function endDocument")) { |
|
*((endDocumentSAXFunc *) result) = ctxt->sax->endDocument; |
|
} else if (!strcmp(name, "SAX function startElement")) { |
|
*((startElementSAXFunc *) result) = ctxt->sax->startElement; |
|
} else if (!strcmp(name, "SAX function endElement")) { |
|
*((endElementSAXFunc *) result) = ctxt->sax->endElement; |
|
} else if (!strcmp(name, "SAX function reference")) { |
|
*((referenceSAXFunc *) result) = ctxt->sax->reference; |
|
} else if (!strcmp(name, "SAX function characters")) { |
|
*((charactersSAXFunc *) result) = ctxt->sax->characters; |
|
} else if (!strcmp(name, "SAX function ignorableWhitespace")) { |
|
*((ignorableWhitespaceSAXFunc *) result) = |
|
ctxt->sax->ignorableWhitespace; |
|
} else if (!strcmp(name, "SAX function processingInstruction")) { |
|
*((processingInstructionSAXFunc *) result) = |
|
ctxt->sax->processingInstruction; |
|
} else if (!strcmp(name, "SAX function comment")) { |
|
*((commentSAXFunc *) result) = ctxt->sax->comment; |
|
} else if (!strcmp(name, "SAX function warning")) { |
|
*((warningSAXFunc *) result) = ctxt->sax->warning; |
|
} else if (!strcmp(name, "SAX function error")) { |
|
*((errorSAXFunc *) result) = ctxt->sax->error; |
|
} else if (!strcmp(name, "SAX function fatalError")) { |
|
*((fatalErrorSAXFunc *) result) = ctxt->sax->fatalError; |
|
} else if (!strcmp(name, "SAX function getParameterEntity")) { |
|
*((getParameterEntitySAXFunc *) result) = |
|
ctxt->sax->getParameterEntity; |
|
} else if (!strcmp(name, "SAX function cdataBlock")) { |
|
*((cdataBlockSAXFunc *) result) = ctxt->sax->cdataBlock; |
|
} else if (!strcmp(name, "SAX function externalSubset")) { |
|
*((externalSubsetSAXFunc *) result) = ctxt->sax->externalSubset; |
|
} else { |
|
return (-1); |
|
} |
|
return (0); |
|
} |
|
|
|
/** |
|
* xmlSetFeature: |
|
* @ctxt: an XML/HTML parser context |
|
* @name: the feature name |
|
* @value: pointer to the location of the new value |
|
* |
|
* Change the current value of one feature of this parser instance |
|
* |
|
* Returns -1 in case or error, 0 otherwise |
|
*/ |
|
int |
|
xmlSetFeature(xmlParserCtxtPtr ctxt, const char *name, void *value) |
|
{ |
|
if ((ctxt == NULL) || (name == NULL) || (value == NULL)) |
|
return (-1); |
|
|
|
if (!strcmp(name, "validate")) { |
|
int newvalidate = *((int *) value); |
|
|
|
if ((!ctxt->validate) && (newvalidate != 0)) { |
|
if (ctxt->vctxt.warning == NULL) |
|
ctxt->vctxt.warning = xmlParserValidityWarning; |
|
if (ctxt->vctxt.error == NULL) |
|
ctxt->vctxt.error = xmlParserValidityError; |
|
ctxt->vctxt.nodeMax = 0; |
|
} |
|
ctxt->validate = newvalidate; |
|
} else if (!strcmp(name, "keep blanks")) { |
|
ctxt->keepBlanks = *((int *) value); |
|
} else if (!strcmp(name, "disable SAX")) { |
|
ctxt->disableSAX = *((int *) value); |
|
} else if (!strcmp(name, "fetch external entities")) { |
|
ctxt->loadsubset = *((int *) value); |
|
} else if (!strcmp(name, "substitute entities")) { |
|
ctxt->replaceEntities = *((int *) value); |
|
} else if (!strcmp(name, "gather line info")) { |
|
ctxt->record_info = *((int *) value); |
|
} else if (!strcmp(name, "user data")) { |
|
ctxt->userData = *((void **) value); |
|
} else if (!strcmp(name, "is html")) { |
|
ctxt->html = *((int *) value); |
|
} else if (!strcmp(name, "is standalone")) { |
|
ctxt->standalone = *((int *) value); |
|
} else if (!strcmp(name, "document")) { |
|
ctxt->myDoc = *((xmlDocPtr *) value); |
|
} else if (!strcmp(name, "is well formed")) { |
|
ctxt->wellFormed = *((int *) value); |
|
} else if (!strcmp(name, "is valid")) { |
|
ctxt->valid = *((int *) value); |
|
} else if (!strcmp(name, "SAX block")) { |
|
ctxt->sax = *((xmlSAXHandlerPtr *) value); |
|
} else if (!strcmp(name, "SAX function internalSubset")) { |
|
ctxt->sax->internalSubset = *((internalSubsetSAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function isStandalone")) { |
|
ctxt->sax->isStandalone = *((isStandaloneSAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function hasInternalSubset")) { |
|
ctxt->sax->hasInternalSubset = |
|
*((hasInternalSubsetSAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function hasExternalSubset")) { |
|
ctxt->sax->hasExternalSubset = |
|
*((hasExternalSubsetSAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function resolveEntity")) { |
|
ctxt->sax->resolveEntity = *((resolveEntitySAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function getEntity")) { |
|
ctxt->sax->getEntity = *((getEntitySAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function entityDecl")) { |
|
ctxt->sax->entityDecl = *((entityDeclSAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function notationDecl")) { |
|
ctxt->sax->notationDecl = *((notationDeclSAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function attributeDecl")) { |
|
ctxt->sax->attributeDecl = *((attributeDeclSAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function elementDecl")) { |
|
ctxt->sax->elementDecl = *((elementDeclSAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function unparsedEntityDecl")) { |
|
ctxt->sax->unparsedEntityDecl = |
|
*((unparsedEntityDeclSAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function setDocumentLocator")) { |
|
ctxt->sax->setDocumentLocator = |
|
*((setDocumentLocatorSAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function startDocument")) { |
|
ctxt->sax->startDocument = *((startDocumentSAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function endDocument")) { |
|
ctxt->sax->endDocument = *((endDocumentSAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function startElement")) { |
|
ctxt->sax->startElement = *((startElementSAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function endElement")) { |
|
ctxt->sax->endElement = *((endElementSAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function reference")) { |
|
ctxt->sax->reference = *((referenceSAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function characters")) { |
|
ctxt->sax->characters = *((charactersSAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function ignorableWhitespace")) { |
|
ctxt->sax->ignorableWhitespace = |
|
*((ignorableWhitespaceSAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function processingInstruction")) { |
|
ctxt->sax->processingInstruction = |
|
*((processingInstructionSAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function comment")) { |
|
ctxt->sax->comment = *((commentSAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function warning")) { |
|
ctxt->sax->warning = *((warningSAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function error")) { |
|
ctxt->sax->error = *((errorSAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function fatalError")) { |
|
ctxt->sax->fatalError = *((fatalErrorSAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function getParameterEntity")) { |
|
ctxt->sax->getParameterEntity = |
|
*((getParameterEntitySAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function cdataBlock")) { |
|
ctxt->sax->cdataBlock = *((cdataBlockSAXFunc *) value); |
|
} else if (!strcmp(name, "SAX function externalSubset")) { |
|
ctxt->sax->externalSubset = *((externalSubsetSAXFunc *) value); |
|
} else { |
|
return (-1); |
|
} |
|
return (0); |
|
} |
|
|
|
/** |
|
* xmlDecodeEntities: |
|
* @ctxt: the parser context |
|
* @len: the len to decode (in bytes !), -1 for no size limit |
|
* @what: combination of XML_SUBSTITUTE_REF and XML_SUBSTITUTE_PEREF |
|
* @end: an end marker xmlChar, 0 if none |
|
* @end2: an end marker xmlChar, 0 if none |
|
* @end3: an end marker xmlChar, 0 if none |
|
* |
|
* This function is deprecated, we now always process entities content |
|
* through xmlStringDecodeEntities |
|
* |
|
* TODO: remove it in next major release. |
|
* |
|
* [67] Reference ::= EntityRef | CharRef |
|
* |
|
* [69] PEReference ::= '%' Name ';' |
|
* |
|
* Returns A newly allocated string with the substitution done. The caller |
|
* must deallocate it ! |
|
*/ |
|
xmlChar * |
|
xmlDecodeEntities(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED, |
|
int len ATTRIBUTE_UNUSED, int what ATTRIBUTE_UNUSED, |
|
xmlChar end ATTRIBUTE_UNUSED, |
|
xmlChar end2 ATTRIBUTE_UNUSED, |
|
xmlChar end3 ATTRIBUTE_UNUSED) |
|
{ |
|
static int deprecated = 0; |
|
|
|
if (!deprecated) { |
|
xmlGenericError(xmlGenericErrorContext, |
|
"xmlDecodeEntities() deprecated function reached\n"); |
|
deprecated = 1; |
|
} |
|
return (NULL); |
|
} |
|
|
|
/** |
|
* xmlNamespaceParseNCName: |
|
* @ctxt: an XML parser context |
|
* |
|
* parse an XML namespace name. |
|
* |
|
* TODO: this seems not in use anymore, the namespace handling is done on |
|
* top of the SAX interfaces, i.e. not on raw input. |
|
* |
|
* [NS 3] NCName ::= (Letter | '_') (NCNameChar)* |
|
* |
|
* [NS 4] NCNameChar ::= Letter | Digit | '.' | '-' | '_' | |
|
* CombiningChar | Extender |
|
* |
|
* Returns the namespace name or NULL |
|
*/ |
|
|
|
xmlChar * |
|
xmlNamespaceParseNCName(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED) |
|
{ |
|
static int deprecated = 0; |
|
|
|
if (!deprecated) { |
|
xmlGenericError(xmlGenericErrorContext, |
|
"xmlNamespaceParseNCName() deprecated function reached\n"); |
|
deprecated = 1; |
|
} |
|
return (NULL); |
|
} |
|
|
|
/** |
|
* xmlNamespaceParseQName: |
|
* @ctxt: an XML parser context |
|
* @prefix: a xmlChar ** |
|
* |
|
* TODO: this seems not in use anymore, the namespace handling is done on |
|
* top of the SAX interfaces, i.e. not on raw input. |
|
* |
|
* parse an XML qualified name |
|
* |
|
* [NS 5] QName ::= (Prefix ':')? LocalPart |
|
* |
|
* [NS 6] Prefix ::= NCName |
|
* |
|
* [NS 7] LocalPart ::= NCName |
|
* |
|
* Returns the local part, and prefix is updated |
|
* to get the Prefix if any. |
|
*/ |
|
|
|
xmlChar * |
|
xmlNamespaceParseQName(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED, |
|
xmlChar ** prefix ATTRIBUTE_UNUSED) |
|
{ |
|
|
|
static int deprecated = 0; |
|
|
|
if (!deprecated) { |
|
xmlGenericError(xmlGenericErrorContext, |
|
"xmlNamespaceParseQName() deprecated function reached\n"); |
|
deprecated = 1; |
|
} |
|
return (NULL); |
|
} |
|
|
|
/** |
|
* xmlNamespaceParseNSDef: |
|
* @ctxt: an XML parser context |
|
* |
|
* parse a namespace prefix declaration |
|
* |
|
* TODO: this seems not in use anymore, the namespace handling is done on |
|
* top of the SAX interfaces, i.e. not on raw input. |
|
* |
|
* [NS 1] NSDef ::= PrefixDef Eq SystemLiteral |
|
* |
|
* [NS 2] PrefixDef ::= 'xmlns' (':' NCName)? |
|
* |
|
* Returns the namespace name |
|
*/ |
|
|
|
xmlChar * |
|
xmlNamespaceParseNSDef(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED) |
|
{ |
|
static int deprecated = 0; |
|
|
|
if (!deprecated) { |
|
xmlGenericError(xmlGenericErrorContext, |
|
"xmlNamespaceParseNSDef() deprecated function reached\n"); |
|
deprecated = 1; |
|
} |
|
return (NULL); |
|
} |
|
|
|
/** |
|
* xmlParseQuotedString: |
|
* @ctxt: an XML parser context |
|
* |
|
* Parse and return a string between quotes or doublequotes |
|
* |
|
* TODO: Deprecated, to be removed at next drop of binary compatibility |
|
* |
|
* Returns the string parser or NULL. |
|
*/ |
|
xmlChar * |
|
xmlParseQuotedString(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED) |
|
{ |
|
static int deprecated = 0; |
|
|
|
if (!deprecated) { |
|
xmlGenericError(xmlGenericErrorContext, |
|
"xmlParseQuotedString() deprecated function reached\n"); |
|
deprecated = 1; |
|
} |
|
return (NULL); |
|
} |
|
|
|
/** |
|
* xmlParseNamespace: |
|
* @ctxt: an XML parser context |
|
* |
|
* xmlParseNamespace: parse specific PI '<?namespace ...' constructs. |
|
* |
|
* This is what the older xml-name Working Draft specified, a bunch of |
|
* other stuff may still rely on it, so support is still here as |
|
* if it was declared on the root of the Tree:-( |
|
* |
|
* TODO: remove from library |
|
* |
|
* To be removed at next drop of binary compatibility |
|
*/ |
|
|
|
void |
|
xmlParseNamespace(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED) |
|
{ |
|
static int deprecated = 0; |
|
|
|
if (!deprecated) { |
|
xmlGenericError(xmlGenericErrorContext, |
|
"xmlParseNamespace() deprecated function reached\n"); |
|
deprecated = 1; |
|
} |
|
} |
|
|
|
/** |
|
* xmlScanName: |
|
* @ctxt: an XML parser context |
|
* |
|
* Trickery: parse an XML name but without consuming the input flow |
|
* Needed for rollback cases. Used only when parsing entities references. |
|
* |
|
* TODO: seems deprecated now, only used in the default part of |
|
* xmlParserHandleReference |
|
* |
|
* [4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | |
|
* CombiningChar | Extender |
|
* |
|
* [5] Name ::= (Letter | '_' | ':') (NameChar)* |
|
* |
|
* [6] Names ::= Name (S Name)* |
|
* |
|
* Returns the Name parsed or NULL |
|
*/ |
|
|
|
xmlChar * |
|
xmlScanName(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED) |
|
{ |
|
static int deprecated = 0; |
|
|
|
if (!deprecated) { |
|
xmlGenericError(xmlGenericErrorContext, |
|
"xmlScanName() deprecated function reached\n"); |
|
deprecated = 1; |
|
} |
|
return (NULL); |
|
} |
|
|
|
/** |
|
* xmlParserHandleReference: |
|
* @ctxt: the parser context |
|
* |
|
* TODO: Remove, now deprecated ... the test is done directly in the |
|
* content parsing |
|
* routines. |
|
* |
|
* [67] Reference ::= EntityRef | CharRef |
|
* |
|
* [68] EntityRef ::= '&' Name ';' |
|
* |
|
* [ WFC: Entity Declared ] |
|
* the Name given in the entity reference must match that in an entity |
|
* declaration, except that well-formed documents need not declare any |
|
* of the following entities: amp, lt, gt, apos, quot. |
|
* |
|
* [ WFC: Parsed Entity ] |
|
* An entity reference must not contain the name of an unparsed entity |
|
* |
|
* [66] CharRef ::= '&#' [0-9]+ ';' | |
|
* '&#x' [0-9a-fA-F]+ ';' |
|
* |
|
* A PEReference may have been detected in the current input stream |
|
* the handling is done accordingly to |
|
* http://www.w3.org/TR/REC-xml#entproc |
|
*/ |
|
void |
|
xmlParserHandleReference(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED) |
|
{ |
|
static int deprecated = 0; |
|
|
|
if (!deprecated) { |
|
xmlGenericError(xmlGenericErrorContext, |
|
"xmlParserHandleReference() deprecated function reached\n"); |
|
deprecated = 1; |
|
} |
|
|
|
return; |
|
} |
|
|
|
/** |
|
* xmlHandleEntity: |
|
* @ctxt: an XML parser context |
|
* @entity: an XML entity pointer. |
|
* |
|
* Default handling of defined entities, when should we define a new input |
|
* stream ? When do we just handle that as a set of chars ? |
|
* |
|
* OBSOLETE: to be removed at some point. |
|
*/ |
|
|
|
void |
|
xmlHandleEntity(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED, |
|
xmlEntityPtr entity ATTRIBUTE_UNUSED) |
|
{ |
|
static int deprecated = 0; |
|
|
|
if (!deprecated) { |
|
xmlGenericError(xmlGenericErrorContext, |
|
"xmlHandleEntity() deprecated function reached\n"); |
|
deprecated = 1; |
|
} |
|
} |
|
|
|
/** |
|
* xmlNewGlobalNs: |
|
* @doc: the document carrying the namespace |
|
* @href: the URI associated |
|
* @prefix: the prefix for the namespace |
|
* |
|
* Creation of a Namespace, the old way using PI and without scoping |
|
* DEPRECATED !!! |
|
* Returns NULL this functionality had been removed |
|
*/ |
|
xmlNsPtr |
|
xmlNewGlobalNs(xmlDocPtr doc ATTRIBUTE_UNUSED, |
|
const xmlChar * href ATTRIBUTE_UNUSED, |
|
const xmlChar * prefix ATTRIBUTE_UNUSED) |
|
{ |
|
static int deprecated = 0; |
|
|
|
if (!deprecated) { |
|
xmlGenericError(xmlGenericErrorContext, |
|
"xmlNewGlobalNs() deprecated function reached\n"); |
|
deprecated = 1; |
|
} |
|
return (NULL); |
|
} |
|
|
|
/** |
|
* xmlUpgradeOldNs: |
|
* @doc: a document pointer |
|
* |
|
* Upgrade old style Namespaces (PI) and move them to the root of the document. |
|
* DEPRECATED |
|
*/ |
|
void |
|
xmlUpgradeOldNs(xmlDocPtr doc ATTRIBUTE_UNUSED) |
|
{ |
|
static int deprecated = 0; |
|
|
|
if (!deprecated) { |
|
xmlGenericError(xmlGenericErrorContext, |
|
"xmlUpgradeOldNs() deprecated function reached\n"); |
|
deprecated = 1; |
|
} |
|
} |
|
|
|
/** |
|
* xmlEncodeEntities: |
|
* @doc: the document containing the string |
|
* @input: A string to convert to XML. |
|
* |
|
* TODO: remove xmlEncodeEntities, once we are not afraid of breaking binary |
|
* compatibility |
|
* |
|
* People must migrate their code to xmlEncodeEntitiesReentrant ! |
|
* This routine will issue a warning when encountered. |
|
* |
|
* Returns NULL |
|
*/ |
|
const xmlChar * |
|
xmlEncodeEntities(xmlDocPtr doc ATTRIBUTE_UNUSED, |
|
const xmlChar * input ATTRIBUTE_UNUSED) |
|
{ |
|
static int warning = 1; |
|
|
|
if (warning) { |
|
xmlGenericError(xmlGenericErrorContext, |
|
"Deprecated API xmlEncodeEntities() used\n"); |
|
xmlGenericError(xmlGenericErrorContext, |
|
" change code to use xmlEncodeEntitiesReentrant()\n"); |
|
warning = 0; |
|
} |
|
return (NULL); |
|
} |
|
|
|
/************************************************************************ |
|
* * |
|
* Old set of SAXv1 functions * |
|
* * |
|
************************************************************************/ |
|
static int deprecated_v1_msg = 0; |
|
|
|
#define DEPRECATED(n) \ |
|
if (deprecated_v1_msg == 0) \ |
|
xmlGenericError(xmlGenericErrorContext, \ |
|
"Use of deprecated SAXv1 function %s\n", n); \ |
|
deprecated_v1_msg++; |
|
|
|
/** |
|
* getPublicId: |
|
* @ctx: the user data (XML parser context) |
|
* |
|
* Provides the public ID e.g. "-//SGMLSOURCE//DTD DEMO//EN" |
|
* DEPRECATED: use xmlSAX2GetPublicId() |
|
* |
|
* Returns a xmlChar * |
|
*/ |
|
const xmlChar * |
|
getPublicId(void *ctx) |
|
{ |
|
DEPRECATED("getPublicId") |
|
return (xmlSAX2GetPublicId(ctx)); |
|
} |
|
|
|
/** |
|
* getSystemId: |
|
* @ctx: the user data (XML parser context) |
|
* |
|
* Provides the system ID, basically URL or filename e.g. |
|
* http://www.sgmlsource.com/dtds/memo.dtd |
|
* DEPRECATED: use xmlSAX2GetSystemId() |
|
* |
|
* Returns a xmlChar * |
|
*/ |
|
const xmlChar * |
|
getSystemId(void *ctx) |
|
{ |
|
DEPRECATED("getSystemId") |
|
return (xmlSAX2GetSystemId(ctx)); |
|
} |
|
|
|
/** |
|
* getLineNumber: |
|
* @ctx: the user data (XML parser context) |
|
* |
|
* Provide the line number of the current parsing point. |
|
* DEPRECATED: use xmlSAX2GetLineNumber() |
|
* |
|
* Returns an int |
|
*/ |
|
int |
|
getLineNumber(void *ctx) |
|
{ |
|
DEPRECATED("getLineNumber") |
|
return (xmlSAX2GetLineNumber(ctx)); |
|
} |
|
|
|
/** |
|
* getColumnNumber: |
|
* @ctx: the user data (XML parser context) |
|
* |
|
* Provide the column number of the current parsing point. |
|
* DEPRECATED: use xmlSAX2GetColumnNumber() |
|
* |
|
* Returns an int |
|
*/ |
|
int |
|
getColumnNumber(void *ctx) |
|
{ |
|
DEPRECATED("getColumnNumber") |
|
return (xmlSAX2GetColumnNumber(ctx)); |
|
} |
|
|
|
/** |
|
* isStandalone: |
|
* @ctx: the user data (XML parser context) |
|
* |
|
* Is this document tagged standalone ? |
|
* DEPRECATED: use xmlSAX2IsStandalone() |
|
* |
|
* Returns 1 if true |
|
*/ |
|
int |
|
isStandalone(void *ctx) |
|
{ |
|
DEPRECATED("isStandalone") |
|
return (xmlSAX2IsStandalone(ctx)); |
|
} |
|
|
|
/** |
|
* hasInternalSubset: |
|
* @ctx: the user data (XML parser context) |
|
* |
|
* Does this document has an internal subset |
|
* DEPRECATED: use xmlSAX2HasInternalSubset() |
|
* |
|
* Returns 1 if true |
|
*/ |
|
int |
|
hasInternalSubset(void *ctx) |
|
{ |
|
DEPRECATED("hasInternalSubset") |
|
return (xmlSAX2HasInternalSubset(ctx)); |
|
} |
|
|
|
/** |
|
* hasExternalSubset: |
|
* @ctx: the user data (XML parser context) |
|
* |
|
* Does this document has an external subset |
|
* DEPRECATED: use xmlSAX2HasExternalSubset() |
|
* |
|
* Returns 1 if true |
|
*/ |
|
int |
|
hasExternalSubset(void *ctx) |
|
{ |
|
DEPRECATED("hasExternalSubset") |
|
return (xmlSAX2HasExternalSubset(ctx)); |
|
} |
|
|
|
/** |
|
* internalSubset: |
|
* @ctx: the user data (XML parser context) |
|
* @name: the root element name |
|
* @ExternalID: the external ID |
|
* @SystemID: the SYSTEM ID (e.g. filename or URL) |
|
* |
|
* Callback on internal subset declaration. |
|
* DEPRECATED: use xmlSAX2InternalSubset() |
|
*/ |
|
void |
|
internalSubset(void *ctx, const xmlChar * name, |
|
const xmlChar * ExternalID, const xmlChar * SystemID) |
|
{ |
|
DEPRECATED("internalSubset") |
|
xmlSAX2InternalSubset(ctx, name, ExternalID, SystemID); |
|
} |
|
|
|
/** |
|
* externalSubset: |
|
* @ctx: the user data (XML parser context) |
|
* @name: the root element name |
|
* @ExternalID: the external ID |
|
* @SystemID: the SYSTEM ID (e.g. filename or URL) |
|
* |
|
* Callback on external subset declaration. |
|
* DEPRECATED: use xmlSAX2ExternalSubset() |
|
*/ |
|
void |
|
externalSubset(void *ctx, const xmlChar * name, |
|
const xmlChar * ExternalID, const xmlChar * SystemID) |
|
{ |
|
DEPRECATED("externalSubset") |
|
xmlSAX2ExternalSubset(ctx, name, ExternalID, SystemID); |
|
} |
|
|
|
/** |
|
* resolveEntity: |
|
* @ctx: the user data (XML parser context) |
|
* @publicId: The public ID of the entity |
|
* @systemId: The system ID of the entity |
|
* |
|
* The entity loader, to control the loading of external entities, |
|
* the application can either: |
|
* - override this resolveEntity() callback in the SAX block |
|
* - or better use the xmlSetExternalEntityLoader() function to |
|
* set up it's own entity resolution routine |
|
* DEPRECATED: use xmlSAX2ResolveEntity() |
|
* |
|
* Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour. |
|
*/ |
|
xmlParserInputPtr |
|
resolveEntity(void *ctx, const xmlChar * publicId, |
|
const xmlChar * systemId) |
|
{ |
|
DEPRECATED("resolveEntity") |
|
return (xmlSAX2ResolveEntity(ctx, publicId, systemId)); |
|
} |
|
|
|
/** |
|
* getEntity: |
|
* @ctx: the user data (XML parser context) |
|
* @name: The entity name |
|
* |
|
* Get an entity by name |
|
* DEPRECATED: use xmlSAX2GetEntity() |
|
* |
|
* Returns the xmlEntityPtr if found. |
|
*/ |
|
xmlEntityPtr |
|
getEntity(void *ctx, const xmlChar * name) |
|
{ |
|
DEPRECATED("getEntity") |
|
return (xmlSAX2GetEntity(ctx, name)); |
|
} |
|
|
|
/** |
|
* getParameterEntity: |
|
* @ctx: the user data (XML parser context) |
|
* @name: The entity name |
|
* |
|
* Get a parameter entity by name |
|
* DEPRECATED: use xmlSAX2GetParameterEntity() |
|
* |
|
* Returns the xmlEntityPtr if found. |
|
*/ |
|
xmlEntityPtr |
|
getParameterEntity(void *ctx, const xmlChar * name) |
|
{ |
|
DEPRECATED("getParameterEntity") |
|
return (xmlSAX2GetParameterEntity(ctx, name)); |
|
} |
|
|
|
|
|
/** |
|
* entityDecl: |
|
* @ctx: the user data (XML parser context) |
|
* @name: the entity name |
|
* @type: the entity type |
|
* @publicId: The public ID of the entity |
|
* @systemId: The system ID of the entity |
|
* @content: the entity value (without processing). |
|
* |
|
* An entity definition has been parsed |
|
* DEPRECATED: use xmlSAX2EntityDecl() |
|
*/ |
|
void |
|
entityDecl(void *ctx, const xmlChar * name, int type, |
|
const xmlChar * publicId, const xmlChar * systemId, |
|
xmlChar * content) |
|
{ |
|
DEPRECATED("entityDecl") |
|
xmlSAX2EntityDecl(ctx, name, type, publicId, systemId, content); |
|
} |
|
|
|
/** |
|
* attributeDecl: |
|
* @ctx: the user data (XML parser context) |
|
* @elem: the name of the element |
|
* @fullname: the attribute name |
|
* @type: the attribute type |
|
* @def: the type of default value |
|
* @defaultValue: the attribute default value |
|
* @tree: the tree of enumerated value set |
|
* |
|
* An attribute definition has been parsed |
|
* DEPRECATED: use xmlSAX2AttributeDecl() |
|
*/ |
|
void |
|
attributeDecl(void *ctx, const xmlChar * elem, const xmlChar * fullname, |
|
int type, int def, const xmlChar * defaultValue, |
|
xmlEnumerationPtr tree) |
|
{ |
|
DEPRECATED("attributeDecl") |
|
xmlSAX2AttributeDecl(ctx, elem, fullname, type, def, defaultValue, |
|
tree); |
|
} |
|
|
|
/** |
|
* elementDecl: |
|
* @ctx: the user data (XML parser context) |
|
* @name: the element name |
|
* @type: the element type |
|
* @content: the element value tree |
|
* |
|
* An element definition has been parsed |
|
* DEPRECATED: use xmlSAX2ElementDecl() |
|
*/ |
|
void |
|
elementDecl(void *ctx, const xmlChar * name, int type, |
|
xmlElementContentPtr content) |
|
{ |
|
DEPRECATED("elementDecl") |
|
xmlSAX2ElementDecl(ctx, name, type, content); |
|
} |
|
|
|
/** |
|
* notationDecl: |
|
* @ctx: the user data (XML parser context) |
|
* @name: The name of the notation |
|
* @publicId: The public ID of the entity |
|
* @systemId: The system ID of the entity |
|
* |
|
* What to do when a notation declaration has been parsed. |
|
* DEPRECATED: use xmlSAX2NotationDecl() |
|
*/ |
|
void |
|
notationDecl(void *ctx, const xmlChar * name, |
|
const xmlChar * publicId, const xmlChar * systemId) |
|
{ |
|
DEPRECATED("notationDecl") |
|
xmlSAX2NotationDecl(ctx, name, publicId, systemId); |
|
} |
|
|
|
/** |
|
* unparsedEntityDecl: |
|
* @ctx: the user data (XML parser context) |
|
* @name: The name of the entity |
|
* @publicId: The public ID of the entity |
|
* @systemId: The system ID of the entity |
|
* @notationName: the name of the notation |
|
* |
|
* What to do when an unparsed entity declaration is parsed |
|
* DEPRECATED: use xmlSAX2UnparsedEntityDecl() |
|
*/ |
|
void |
|
unparsedEntityDecl(void *ctx, const xmlChar * name, |
|
const xmlChar * publicId, const xmlChar * systemId, |
|
const xmlChar * notationName) |
|
{ |
|
DEPRECATED("unparsedEntityDecl") |
|
xmlSAX2UnparsedEntityDecl(ctx, name, publicId, systemId, |
|
notationName); |
|
} |
|
|
|
/** |
|
* setDocumentLocator: |
|
* @ctx: the user data (XML parser context) |
|
* @loc: A SAX Locator |
|
* |
|
* Receive the document locator at startup, actually xmlDefaultSAXLocator |
|
* Everything is available on the context, so this is useless in our case. |
|
* DEPRECATED |
|
*/ |
|
void |
|
setDocumentLocator(void *ctx ATTRIBUTE_UNUSED, |
|
xmlSAXLocatorPtr loc ATTRIBUTE_UNUSED) |
|
{ |
|
DEPRECATED("setDocumentLocator") |
|
} |
|
|
|
/** |
|
* startDocument: |
|
* @ctx: the user data (XML parser context) |
|
* |
|
* called when the document start being processed. |
|
* DEPRECATED: use xmlSAX2StartDocument() |
|
*/ |
|
void |
|
startDocument(void *ctx) |
|
{ |
|
/* don't be too painful for glade users */ |
|
/* DEPRECATED("startDocument") */ |
|
xmlSAX2StartDocument(ctx); |
|
} |
|
|
|
/** |
|
* endDocument: |
|
* @ctx: the user data (XML parser context) |
|
* |
|
* called when the document end has been detected. |
|
* DEPRECATED: use xmlSAX2EndDocument() |
|
*/ |
|
void |
|
endDocument(void *ctx) |
|
{ |
|
DEPRECATED("endDocument") |
|
xmlSAX2EndDocument(ctx); |
|
} |
|
|
|
/** |
|
* attribute: |
|
* @ctx: the user data (XML parser context) |
|
* @fullname: The attribute name, including namespace prefix |
|
* @value: The attribute value |
|
* |
|
* Handle an attribute that has been read by the parser. |
|
* The default handling is to convert the attribute into an |
|
* DOM subtree and past it in a new xmlAttr element added to |
|
* the element. |
|
* DEPRECATED: use xmlSAX2Attribute() |
|
*/ |
|
void |
|
attribute(void *ctx ATTRIBUTE_UNUSED, |
|
const xmlChar * fullname ATTRIBUTE_UNUSED, |
|
const xmlChar * value ATTRIBUTE_UNUSED) |
|
{ |
|
DEPRECATED("attribute") |
|
} |
|
|
|
/** |
|
* startElement: |
|
* @ctx: the user data (XML parser context) |
|
* @fullname: The element name, including namespace prefix |
|
* @atts: An array of name/value attributes pairs, NULL terminated |
|
* |
|
* called when an opening tag has been processed. |
|
* DEPRECATED: use xmlSAX2StartElement() |
|
*/ |
|
void |
|
startElement(void *ctx, const xmlChar * fullname, const xmlChar ** atts) |
|
{ |
|
xmlSAX2StartElement(ctx, fullname, atts); |
|
} |
|
|
|
/** |
|
* endElement: |
|
* @ctx: the user data (XML parser context) |
|
* @name: The element name |
|
* |
|
* called when the end of an element has been detected. |
|
* DEPRECATED: use xmlSAX2EndElement() |
|
*/ |
|
void |
|
endElement(void *ctx, const xmlChar * name ATTRIBUTE_UNUSED) |
|
{ |
|
DEPRECATED("endElement") |
|
xmlSAX2EndElement(ctx, name); |
|
} |
|
|
|
/** |
|
* reference: |
|
* @ctx: the user data (XML parser context) |
|
* @name: The entity name |
|
* |
|
* called when an entity reference is detected. |
|
* DEPRECATED: use xmlSAX2Reference() |
|
*/ |
|
void |
|
reference(void *ctx, const xmlChar * name) |
|
{ |
|
DEPRECATED("reference") |
|
xmlSAX2Reference(ctx, name); |
|
} |
|
|
|
/** |
|
* characters: |
|
* @ctx: the user data (XML parser context) |
|
* @ch: a xmlChar string |
|
* @len: the number of xmlChar |
|
* |
|
* receiving some chars from the parser. |
|
* DEPRECATED: use xmlSAX2Characters() |
|
*/ |
|
void |
|
characters(void *ctx, const xmlChar * ch, int len) |
|
{ |
|
DEPRECATED("characters") |
|
xmlSAX2Characters(ctx, ch, len); |
|
} |
|
|
|
/** |
|
* ignorableWhitespace: |
|
* @ctx: the user data (XML parser context) |
|
* @ch: a xmlChar string |
|
* @len: the number of xmlChar |
|
* |
|
* receiving some ignorable whitespaces from the parser. |
|
* UNUSED: by default the DOM building will use characters |
|
* DEPRECATED: use xmlSAX2IgnorableWhitespace() |
|
*/ |
|
void |
|
ignorableWhitespace(void *ctx ATTRIBUTE_UNUSED, |
|
const xmlChar * ch ATTRIBUTE_UNUSED, |
|
int len ATTRIBUTE_UNUSED) |
|
{ |
|
DEPRECATED("ignorableWhitespace") |
|
} |
|
|
|
/** |
|
* processingInstruction: |
|
* @ctx: the user data (XML parser context) |
|
* @target: the target name |
|
* @data: the PI data's |
|
* |
|
* A processing instruction has been parsed. |
|
* DEPRECATED: use xmlSAX2ProcessingInstruction() |
|
*/ |
|
void |
|
processingInstruction(void *ctx, const xmlChar * target, |
|
const xmlChar * data) |
|
{ |
|
DEPRECATED("processingInstruction") |
|
xmlSAX2ProcessingInstruction(ctx, target, data); |
|
} |
|
|
|
/** |
|
* globalNamespace: |
|
* @ctx: the user data (XML parser context) |
|
* @href: the namespace associated URN |
|
* @prefix: the namespace prefix |
|
* |
|
* An old global namespace has been parsed. |
|
* DEPRECATED |
|
*/ |
|
void |
|
globalNamespace(void *ctx ATTRIBUTE_UNUSED, |
|
const xmlChar * href ATTRIBUTE_UNUSED, |
|
const xmlChar * prefix ATTRIBUTE_UNUSED) |
|
{ |
|
DEPRECATED("globalNamespace") |
|
} |
|
|
|
/** |
|
* setNamespace: |
|
* @ctx: the user data (XML parser context) |
|
* @name: the namespace prefix |
|
* |
|
* Set the current element namespace. |
|
* DEPRECATED |
|
*/ |
|
|
|
void |
|
setNamespace(void *ctx ATTRIBUTE_UNUSED, |
|
const xmlChar * name ATTRIBUTE_UNUSED) |
|
{ |
|
DEPRECATED("setNamespace") |
|
} |
|
|
|
/** |
|
* getNamespace: |
|
* @ctx: the user data (XML parser context) |
|
* |
|
* Get the current element namespace. |
|
* DEPRECATED |
|
* |
|
* Returns the xmlNsPtr or NULL if none |
|
*/ |
|
|
|
xmlNsPtr |
|
getNamespace(void *ctx ATTRIBUTE_UNUSED) |
|
{ |
|
DEPRECATED("getNamespace") |
|
return (NULL); |
|
} |
|
|
|
/** |
|
* checkNamespace: |
|
* @ctx: the user data (XML parser context) |
|
* @namespace: the namespace to check against |
|
* |
|
* Check that the current element namespace is the same as the |
|
* one read upon parsing. |
|
* DEPRECATED |
|
* |
|
* Returns 1 if true 0 otherwise |
|
*/ |
|
|
|
int |
|
checkNamespace(void *ctx ATTRIBUTE_UNUSED, |
|
xmlChar * namespace ATTRIBUTE_UNUSED) |
|
{ |
|
DEPRECATED("checkNamespace") |
|
return (0); |
|
} |
|
|
|
/** |
|
* namespaceDecl: |
|
* @ctx: the user data (XML parser context) |
|
* @href: the namespace associated URN |
|
* @prefix: the namespace prefix |
|
* |
|
* A namespace has been parsed. |
|
* DEPRECATED |
|
*/ |
|
void |
|
namespaceDecl(void *ctx ATTRIBUTE_UNUSED, |
|
const xmlChar * href ATTRIBUTE_UNUSED, |
|
const xmlChar * prefix ATTRIBUTE_UNUSED) |
|
{ |
|
DEPRECATED("namespaceDecl") |
|
} |
|
|
|
/** |
|
* comment: |
|
* @ctx: the user data (XML parser context) |
|
* @value: the comment content |
|
* |
|
* A comment has been parsed. |
|
* DEPRECATED: use xmlSAX2Comment() |
|
*/ |
|
void |
|
comment(void *ctx, const xmlChar * value) |
|
{ |
|
DEPRECATED("comment") |
|
xmlSAX2Comment(ctx, value); |
|
} |
|
|
|
/** |
|
* cdataBlock: |
|
* @ctx: the user data (XML parser context) |
|
* @value: The pcdata content |
|
* @len: the block length |
|
* |
|
* called when a pcdata block has been parsed |
|
* DEPRECATED: use xmlSAX2CDataBlock() |
|
*/ |
|
void |
|
cdataBlock(void *ctx, const xmlChar * value, int len) |
|
{ |
|
DEPRECATED("cdataBlock") |
|
xmlSAX2CDataBlock(ctx, value, len); |
|
} |
|
#define bottom_legacy |
|
#include "elfgcchack.h" |
|
#endif /* LIBXML_LEGACY_ENABLED */ |
|
|
|
|