| /* | 
 |  * 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 */ | 
 |  |