| OLD | NEW |
| (Empty) |
| 1 /* | |
| 2 * legacy.c: set of deprecated routines, not to be used anymore but | |
| 3 * kept purely for ABI compatibility | |
| 4 * | |
| 5 * See Copyright for the status of this software. | |
| 6 * | |
| 7 * daniel@veillard.com | |
| 8 */ | |
| 9 | |
| 10 #define IN_LIBXML | |
| 11 #include "libxml.h" | |
| 12 | |
| 13 #ifdef LIBXML_LEGACY_ENABLED | |
| 14 #include <string.h> | |
| 15 | |
| 16 #include <libxml/tree.h> | |
| 17 #include <libxml/entities.h> | |
| 18 #include <libxml/SAX.h> | |
| 19 #include <libxml/parserInternals.h> | |
| 20 #include <libxml/HTMLparser.h> | |
| 21 | |
| 22 void xmlUpgradeOldNs(xmlDocPtr doc); | |
| 23 | |
| 24 /************************************************************************ | |
| 25 * * | |
| 26 * Deprecated functions kept for compatibility * | |
| 27 * * | |
| 28 ************************************************************************/ | |
| 29 | |
| 30 #ifdef LIBXML_HTML_ENABLED | |
| 31 xmlChar *htmlDecodeEntities(htmlParserCtxtPtr ctxt, int len, xmlChar end, | |
| 32 xmlChar end2, xmlChar end3); | |
| 33 | |
| 34 /** | |
| 35 * htmlDecodeEntities: | |
| 36 * @ctxt: the parser context | |
| 37 * @len: the len to decode (in bytes !), -1 for no size limit | |
| 38 * @end: an end marker xmlChar, 0 if none | |
| 39 * @end2: an end marker xmlChar, 0 if none | |
| 40 * @end3: an end marker xmlChar, 0 if none | |
| 41 * | |
| 42 * Substitute the HTML entities by their value | |
| 43 * | |
| 44 * DEPRECATED !!!! | |
| 45 * | |
| 46 * Returns A newly allocated string with the substitution done. The caller | |
| 47 * must deallocate it ! | |
| 48 */ | |
| 49 xmlChar * | |
| 50 htmlDecodeEntities(htmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED, | |
| 51 int len ATTRIBUTE_UNUSED, xmlChar end ATTRIBUTE_UNUSED, | |
| 52 xmlChar end2 ATTRIBUTE_UNUSED, | |
| 53 xmlChar end3 ATTRIBUTE_UNUSED) | |
| 54 { | |
| 55 static int deprecated = 0; | |
| 56 | |
| 57 if (!deprecated) { | |
| 58 xmlGenericError(xmlGenericErrorContext, | |
| 59 "htmlDecodeEntities() deprecated function reached\n"); | |
| 60 deprecated = 1; | |
| 61 } | |
| 62 return (NULL); | |
| 63 } | |
| 64 #endif | |
| 65 | |
| 66 /** | |
| 67 * xmlInitializePredefinedEntities: | |
| 68 * | |
| 69 * Set up the predefined entities. | |
| 70 * Deprecated call | |
| 71 */ | |
| 72 void | |
| 73 xmlInitializePredefinedEntities(void) | |
| 74 { | |
| 75 } | |
| 76 | |
| 77 /** | |
| 78 * xmlCleanupPredefinedEntities: | |
| 79 * | |
| 80 * Cleanup up the predefined entities table. | |
| 81 * Deprecated call | |
| 82 */ | |
| 83 void | |
| 84 xmlCleanupPredefinedEntities(void) | |
| 85 { | |
| 86 } | |
| 87 | |
| 88 static const char *xmlFeaturesList[] = { | |
| 89 "validate", | |
| 90 "load subset", | |
| 91 "keep blanks", | |
| 92 "disable SAX", | |
| 93 "fetch external entities", | |
| 94 "substitute entities", | |
| 95 "gather line info", | |
| 96 "user data", | |
| 97 "is html", | |
| 98 "is standalone", | |
| 99 "stop parser", | |
| 100 "document", | |
| 101 "is well formed", | |
| 102 "is valid", | |
| 103 "SAX block", | |
| 104 "SAX function internalSubset", | |
| 105 "SAX function isStandalone", | |
| 106 "SAX function hasInternalSubset", | |
| 107 "SAX function hasExternalSubset", | |
| 108 "SAX function resolveEntity", | |
| 109 "SAX function getEntity", | |
| 110 "SAX function entityDecl", | |
| 111 "SAX function notationDecl", | |
| 112 "SAX function attributeDecl", | |
| 113 "SAX function elementDecl", | |
| 114 "SAX function unparsedEntityDecl", | |
| 115 "SAX function setDocumentLocator", | |
| 116 "SAX function startDocument", | |
| 117 "SAX function endDocument", | |
| 118 "SAX function startElement", | |
| 119 "SAX function endElement", | |
| 120 "SAX function reference", | |
| 121 "SAX function characters", | |
| 122 "SAX function ignorableWhitespace", | |
| 123 "SAX function processingInstruction", | |
| 124 "SAX function comment", | |
| 125 "SAX function warning", | |
| 126 "SAX function error", | |
| 127 "SAX function fatalError", | |
| 128 "SAX function getParameterEntity", | |
| 129 "SAX function cdataBlock", | |
| 130 "SAX function externalSubset", | |
| 131 }; | |
| 132 | |
| 133 /** | |
| 134 * xmlGetFeaturesList: | |
| 135 * @len: the length of the features name array (input/output) | |
| 136 * @result: an array of string to be filled with the features name. | |
| 137 * | |
| 138 * Copy at most *@len feature names into the @result array | |
| 139 * | |
| 140 * Returns -1 in case or error, or the total number of features, | |
| 141 * len is updated with the number of strings copied, | |
| 142 * strings must not be deallocated | |
| 143 */ | |
| 144 int | |
| 145 xmlGetFeaturesList(int *len, const char **result) | |
| 146 { | |
| 147 int ret, i; | |
| 148 | |
| 149 ret = sizeof(xmlFeaturesList) / sizeof(xmlFeaturesList[0]); | |
| 150 if ((len == NULL) || (result == NULL)) | |
| 151 return (ret); | |
| 152 if ((*len < 0) || (*len >= 1000)) | |
| 153 return (-1); | |
| 154 if (*len > ret) | |
| 155 *len = ret; | |
| 156 for (i = 0; i < *len; i++) | |
| 157 result[i] = xmlFeaturesList[i]; | |
| 158 return (ret); | |
| 159 } | |
| 160 | |
| 161 /** | |
| 162 * xmlGetFeature: | |
| 163 * @ctxt: an XML/HTML parser context | |
| 164 * @name: the feature name | |
| 165 * @result: location to store the result | |
| 166 * | |
| 167 * Read the current value of one feature of this parser instance | |
| 168 * | |
| 169 * Returns -1 in case or error, 0 otherwise | |
| 170 */ | |
| 171 int | |
| 172 xmlGetFeature(xmlParserCtxtPtr ctxt, const char *name, void *result) | |
| 173 { | |
| 174 if ((ctxt == NULL) || (name == NULL) || (result == NULL)) | |
| 175 return (-1); | |
| 176 | |
| 177 if (!strcmp(name, "validate")) { | |
| 178 *((int *) result) = ctxt->validate; | |
| 179 } else if (!strcmp(name, "keep blanks")) { | |
| 180 *((int *) result) = ctxt->keepBlanks; | |
| 181 } else if (!strcmp(name, "disable SAX")) { | |
| 182 *((int *) result) = ctxt->disableSAX; | |
| 183 } else if (!strcmp(name, "fetch external entities")) { | |
| 184 *((int *) result) = ctxt->loadsubset; | |
| 185 } else if (!strcmp(name, "substitute entities")) { | |
| 186 *((int *) result) = ctxt->replaceEntities; | |
| 187 } else if (!strcmp(name, "gather line info")) { | |
| 188 *((int *) result) = ctxt->record_info; | |
| 189 } else if (!strcmp(name, "user data")) { | |
| 190 *((void **) result) = ctxt->userData; | |
| 191 } else if (!strcmp(name, "is html")) { | |
| 192 *((int *) result) = ctxt->html; | |
| 193 } else if (!strcmp(name, "is standalone")) { | |
| 194 *((int *) result) = ctxt->standalone; | |
| 195 } else if (!strcmp(name, "document")) { | |
| 196 *((xmlDocPtr *) result) = ctxt->myDoc; | |
| 197 } else if (!strcmp(name, "is well formed")) { | |
| 198 *((int *) result) = ctxt->wellFormed; | |
| 199 } else if (!strcmp(name, "is valid")) { | |
| 200 *((int *) result) = ctxt->valid; | |
| 201 } else if (!strcmp(name, "SAX block")) { | |
| 202 *((xmlSAXHandlerPtr *) result) = ctxt->sax; | |
| 203 } else if (!strcmp(name, "SAX function internalSubset")) { | |
| 204 *((internalSubsetSAXFunc *) result) = ctxt->sax->internalSubset; | |
| 205 } else if (!strcmp(name, "SAX function isStandalone")) { | |
| 206 *((isStandaloneSAXFunc *) result) = ctxt->sax->isStandalone; | |
| 207 } else if (!strcmp(name, "SAX function hasInternalSubset")) { | |
| 208 *((hasInternalSubsetSAXFunc *) result) = | |
| 209 ctxt->sax->hasInternalSubset; | |
| 210 } else if (!strcmp(name, "SAX function hasExternalSubset")) { | |
| 211 *((hasExternalSubsetSAXFunc *) result) = | |
| 212 ctxt->sax->hasExternalSubset; | |
| 213 } else if (!strcmp(name, "SAX function resolveEntity")) { | |
| 214 *((resolveEntitySAXFunc *) result) = ctxt->sax->resolveEntity; | |
| 215 } else if (!strcmp(name, "SAX function getEntity")) { | |
| 216 *((getEntitySAXFunc *) result) = ctxt->sax->getEntity; | |
| 217 } else if (!strcmp(name, "SAX function entityDecl")) { | |
| 218 *((entityDeclSAXFunc *) result) = ctxt->sax->entityDecl; | |
| 219 } else if (!strcmp(name, "SAX function notationDecl")) { | |
| 220 *((notationDeclSAXFunc *) result) = ctxt->sax->notationDecl; | |
| 221 } else if (!strcmp(name, "SAX function attributeDecl")) { | |
| 222 *((attributeDeclSAXFunc *) result) = ctxt->sax->attributeDecl; | |
| 223 } else if (!strcmp(name, "SAX function elementDecl")) { | |
| 224 *((elementDeclSAXFunc *) result) = ctxt->sax->elementDecl; | |
| 225 } else if (!strcmp(name, "SAX function unparsedEntityDecl")) { | |
| 226 *((unparsedEntityDeclSAXFunc *) result) = | |
| 227 ctxt->sax->unparsedEntityDecl; | |
| 228 } else if (!strcmp(name, "SAX function setDocumentLocator")) { | |
| 229 *((setDocumentLocatorSAXFunc *) result) = | |
| 230 ctxt->sax->setDocumentLocator; | |
| 231 } else if (!strcmp(name, "SAX function startDocument")) { | |
| 232 *((startDocumentSAXFunc *) result) = ctxt->sax->startDocument; | |
| 233 } else if (!strcmp(name, "SAX function endDocument")) { | |
| 234 *((endDocumentSAXFunc *) result) = ctxt->sax->endDocument; | |
| 235 } else if (!strcmp(name, "SAX function startElement")) { | |
| 236 *((startElementSAXFunc *) result) = ctxt->sax->startElement; | |
| 237 } else if (!strcmp(name, "SAX function endElement")) { | |
| 238 *((endElementSAXFunc *) result) = ctxt->sax->endElement; | |
| 239 } else if (!strcmp(name, "SAX function reference")) { | |
| 240 *((referenceSAXFunc *) result) = ctxt->sax->reference; | |
| 241 } else if (!strcmp(name, "SAX function characters")) { | |
| 242 *((charactersSAXFunc *) result) = ctxt->sax->characters; | |
| 243 } else if (!strcmp(name, "SAX function ignorableWhitespace")) { | |
| 244 *((ignorableWhitespaceSAXFunc *) result) = | |
| 245 ctxt->sax->ignorableWhitespace; | |
| 246 } else if (!strcmp(name, "SAX function processingInstruction")) { | |
| 247 *((processingInstructionSAXFunc *) result) = | |
| 248 ctxt->sax->processingInstruction; | |
| 249 } else if (!strcmp(name, "SAX function comment")) { | |
| 250 *((commentSAXFunc *) result) = ctxt->sax->comment; | |
| 251 } else if (!strcmp(name, "SAX function warning")) { | |
| 252 *((warningSAXFunc *) result) = ctxt->sax->warning; | |
| 253 } else if (!strcmp(name, "SAX function error")) { | |
| 254 *((errorSAXFunc *) result) = ctxt->sax->error; | |
| 255 } else if (!strcmp(name, "SAX function fatalError")) { | |
| 256 *((fatalErrorSAXFunc *) result) = ctxt->sax->fatalError; | |
| 257 } else if (!strcmp(name, "SAX function getParameterEntity")) { | |
| 258 *((getParameterEntitySAXFunc *) result) = | |
| 259 ctxt->sax->getParameterEntity; | |
| 260 } else if (!strcmp(name, "SAX function cdataBlock")) { | |
| 261 *((cdataBlockSAXFunc *) result) = ctxt->sax->cdataBlock; | |
| 262 } else if (!strcmp(name, "SAX function externalSubset")) { | |
| 263 *((externalSubsetSAXFunc *) result) = ctxt->sax->externalSubset; | |
| 264 } else { | |
| 265 return (-1); | |
| 266 } | |
| 267 return (0); | |
| 268 } | |
| 269 | |
| 270 /** | |
| 271 * xmlSetFeature: | |
| 272 * @ctxt: an XML/HTML parser context | |
| 273 * @name: the feature name | |
| 274 * @value: pointer to the location of the new value | |
| 275 * | |
| 276 * Change the current value of one feature of this parser instance | |
| 277 * | |
| 278 * Returns -1 in case or error, 0 otherwise | |
| 279 */ | |
| 280 int | |
| 281 xmlSetFeature(xmlParserCtxtPtr ctxt, const char *name, void *value) | |
| 282 { | |
| 283 if ((ctxt == NULL) || (name == NULL) || (value == NULL)) | |
| 284 return (-1); | |
| 285 | |
| 286 if (!strcmp(name, "validate")) { | |
| 287 int newvalidate = *((int *) value); | |
| 288 | |
| 289 if ((!ctxt->validate) && (newvalidate != 0)) { | |
| 290 if (ctxt->vctxt.warning == NULL) | |
| 291 ctxt->vctxt.warning = xmlParserValidityWarning; | |
| 292 if (ctxt->vctxt.error == NULL) | |
| 293 ctxt->vctxt.error = xmlParserValidityError; | |
| 294 ctxt->vctxt.nodeMax = 0; | |
| 295 } | |
| 296 ctxt->validate = newvalidate; | |
| 297 } else if (!strcmp(name, "keep blanks")) { | |
| 298 ctxt->keepBlanks = *((int *) value); | |
| 299 } else if (!strcmp(name, "disable SAX")) { | |
| 300 ctxt->disableSAX = *((int *) value); | |
| 301 } else if (!strcmp(name, "fetch external entities")) { | |
| 302 ctxt->loadsubset = *((int *) value); | |
| 303 } else if (!strcmp(name, "substitute entities")) { | |
| 304 ctxt->replaceEntities = *((int *) value); | |
| 305 } else if (!strcmp(name, "gather line info")) { | |
| 306 ctxt->record_info = *((int *) value); | |
| 307 } else if (!strcmp(name, "user data")) { | |
| 308 ctxt->userData = *((void **) value); | |
| 309 } else if (!strcmp(name, "is html")) { | |
| 310 ctxt->html = *((int *) value); | |
| 311 } else if (!strcmp(name, "is standalone")) { | |
| 312 ctxt->standalone = *((int *) value); | |
| 313 } else if (!strcmp(name, "document")) { | |
| 314 ctxt->myDoc = *((xmlDocPtr *) value); | |
| 315 } else if (!strcmp(name, "is well formed")) { | |
| 316 ctxt->wellFormed = *((int *) value); | |
| 317 } else if (!strcmp(name, "is valid")) { | |
| 318 ctxt->valid = *((int *) value); | |
| 319 } else if (!strcmp(name, "SAX block")) { | |
| 320 ctxt->sax = *((xmlSAXHandlerPtr *) value); | |
| 321 } else if (!strcmp(name, "SAX function internalSubset")) { | |
| 322 ctxt->sax->internalSubset = *((internalSubsetSAXFunc *) value); | |
| 323 } else if (!strcmp(name, "SAX function isStandalone")) { | |
| 324 ctxt->sax->isStandalone = *((isStandaloneSAXFunc *) value); | |
| 325 } else if (!strcmp(name, "SAX function hasInternalSubset")) { | |
| 326 ctxt->sax->hasInternalSubset = | |
| 327 *((hasInternalSubsetSAXFunc *) value); | |
| 328 } else if (!strcmp(name, "SAX function hasExternalSubset")) { | |
| 329 ctxt->sax->hasExternalSubset = | |
| 330 *((hasExternalSubsetSAXFunc *) value); | |
| 331 } else if (!strcmp(name, "SAX function resolveEntity")) { | |
| 332 ctxt->sax->resolveEntity = *((resolveEntitySAXFunc *) value); | |
| 333 } else if (!strcmp(name, "SAX function getEntity")) { | |
| 334 ctxt->sax->getEntity = *((getEntitySAXFunc *) value); | |
| 335 } else if (!strcmp(name, "SAX function entityDecl")) { | |
| 336 ctxt->sax->entityDecl = *((entityDeclSAXFunc *) value); | |
| 337 } else if (!strcmp(name, "SAX function notationDecl")) { | |
| 338 ctxt->sax->notationDecl = *((notationDeclSAXFunc *) value); | |
| 339 } else if (!strcmp(name, "SAX function attributeDecl")) { | |
| 340 ctxt->sax->attributeDecl = *((attributeDeclSAXFunc *) value); | |
| 341 } else if (!strcmp(name, "SAX function elementDecl")) { | |
| 342 ctxt->sax->elementDecl = *((elementDeclSAXFunc *) value); | |
| 343 } else if (!strcmp(name, "SAX function unparsedEntityDecl")) { | |
| 344 ctxt->sax->unparsedEntityDecl = | |
| 345 *((unparsedEntityDeclSAXFunc *) value); | |
| 346 } else if (!strcmp(name, "SAX function setDocumentLocator")) { | |
| 347 ctxt->sax->setDocumentLocator = | |
| 348 *((setDocumentLocatorSAXFunc *) value); | |
| 349 } else if (!strcmp(name, "SAX function startDocument")) { | |
| 350 ctxt->sax->startDocument = *((startDocumentSAXFunc *) value); | |
| 351 } else if (!strcmp(name, "SAX function endDocument")) { | |
| 352 ctxt->sax->endDocument = *((endDocumentSAXFunc *) value); | |
| 353 } else if (!strcmp(name, "SAX function startElement")) { | |
| 354 ctxt->sax->startElement = *((startElementSAXFunc *) value); | |
| 355 } else if (!strcmp(name, "SAX function endElement")) { | |
| 356 ctxt->sax->endElement = *((endElementSAXFunc *) value); | |
| 357 } else if (!strcmp(name, "SAX function reference")) { | |
| 358 ctxt->sax->reference = *((referenceSAXFunc *) value); | |
| 359 } else if (!strcmp(name, "SAX function characters")) { | |
| 360 ctxt->sax->characters = *((charactersSAXFunc *) value); | |
| 361 } else if (!strcmp(name, "SAX function ignorableWhitespace")) { | |
| 362 ctxt->sax->ignorableWhitespace = | |
| 363 *((ignorableWhitespaceSAXFunc *) value); | |
| 364 } else if (!strcmp(name, "SAX function processingInstruction")) { | |
| 365 ctxt->sax->processingInstruction = | |
| 366 *((processingInstructionSAXFunc *) value); | |
| 367 } else if (!strcmp(name, "SAX function comment")) { | |
| 368 ctxt->sax->comment = *((commentSAXFunc *) value); | |
| 369 } else if (!strcmp(name, "SAX function warning")) { | |
| 370 ctxt->sax->warning = *((warningSAXFunc *) value); | |
| 371 } else if (!strcmp(name, "SAX function error")) { | |
| 372 ctxt->sax->error = *((errorSAXFunc *) value); | |
| 373 } else if (!strcmp(name, "SAX function fatalError")) { | |
| 374 ctxt->sax->fatalError = *((fatalErrorSAXFunc *) value); | |
| 375 } else if (!strcmp(name, "SAX function getParameterEntity")) { | |
| 376 ctxt->sax->getParameterEntity = | |
| 377 *((getParameterEntitySAXFunc *) value); | |
| 378 } else if (!strcmp(name, "SAX function cdataBlock")) { | |
| 379 ctxt->sax->cdataBlock = *((cdataBlockSAXFunc *) value); | |
| 380 } else if (!strcmp(name, "SAX function externalSubset")) { | |
| 381 ctxt->sax->externalSubset = *((externalSubsetSAXFunc *) value); | |
| 382 } else { | |
| 383 return (-1); | |
| 384 } | |
| 385 return (0); | |
| 386 } | |
| 387 | |
| 388 /** | |
| 389 * xmlDecodeEntities: | |
| 390 * @ctxt: the parser context | |
| 391 * @len: the len to decode (in bytes !), -1 for no size limit | |
| 392 * @what: combination of XML_SUBSTITUTE_REF and XML_SUBSTITUTE_PEREF | |
| 393 * @end: an end marker xmlChar, 0 if none | |
| 394 * @end2: an end marker xmlChar, 0 if none | |
| 395 * @end3: an end marker xmlChar, 0 if none | |
| 396 * | |
| 397 * This function is deprecated, we now always process entities content | |
| 398 * through xmlStringDecodeEntities | |
| 399 * | |
| 400 * TODO: remove it in next major release. | |
| 401 * | |
| 402 * [67] Reference ::= EntityRef | CharRef | |
| 403 * | |
| 404 * [69] PEReference ::= '%' Name ';' | |
| 405 * | |
| 406 * Returns A newly allocated string with the substitution done. The caller | |
| 407 * must deallocate it ! | |
| 408 */ | |
| 409 xmlChar * | |
| 410 xmlDecodeEntities(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED, | |
| 411 int len ATTRIBUTE_UNUSED, int what ATTRIBUTE_UNUSED, | |
| 412 xmlChar end ATTRIBUTE_UNUSED, | |
| 413 xmlChar end2 ATTRIBUTE_UNUSED, | |
| 414 xmlChar end3 ATTRIBUTE_UNUSED) | |
| 415 { | |
| 416 static int deprecated = 0; | |
| 417 | |
| 418 if (!deprecated) { | |
| 419 xmlGenericError(xmlGenericErrorContext, | |
| 420 "xmlDecodeEntities() deprecated function reached\n"); | |
| 421 deprecated = 1; | |
| 422 } | |
| 423 return (NULL); | |
| 424 } | |
| 425 | |
| 426 /** | |
| 427 * xmlNamespaceParseNCName: | |
| 428 * @ctxt: an XML parser context | |
| 429 * | |
| 430 * parse an XML namespace name. | |
| 431 * | |
| 432 * TODO: this seems not in use anymore, the namespace handling is done on | |
| 433 * top of the SAX interfaces, i.e. not on raw input. | |
| 434 * | |
| 435 * [NS 3] NCName ::= (Letter | '_') (NCNameChar)* | |
| 436 * | |
| 437 * [NS 4] NCNameChar ::= Letter | Digit | '.' | '-' | '_' | | |
| 438 * CombiningChar | Extender | |
| 439 * | |
| 440 * Returns the namespace name or NULL | |
| 441 */ | |
| 442 | |
| 443 xmlChar * | |
| 444 xmlNamespaceParseNCName(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED) | |
| 445 { | |
| 446 static int deprecated = 0; | |
| 447 | |
| 448 if (!deprecated) { | |
| 449 xmlGenericError(xmlGenericErrorContext, | |
| 450 "xmlNamespaceParseNCName() deprecated function reached\n
"); | |
| 451 deprecated = 1; | |
| 452 } | |
| 453 return (NULL); | |
| 454 } | |
| 455 | |
| 456 /** | |
| 457 * xmlNamespaceParseQName: | |
| 458 * @ctxt: an XML parser context | |
| 459 * @prefix: a xmlChar ** | |
| 460 * | |
| 461 * TODO: this seems not in use anymore, the namespace handling is done on | |
| 462 * top of the SAX interfaces, i.e. not on raw input. | |
| 463 * | |
| 464 * parse an XML qualified name | |
| 465 * | |
| 466 * [NS 5] QName ::= (Prefix ':')? LocalPart | |
| 467 * | |
| 468 * [NS 6] Prefix ::= NCName | |
| 469 * | |
| 470 * [NS 7] LocalPart ::= NCName | |
| 471 * | |
| 472 * Returns the local part, and prefix is updated | |
| 473 * to get the Prefix if any. | |
| 474 */ | |
| 475 | |
| 476 xmlChar * | |
| 477 xmlNamespaceParseQName(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED, | |
| 478 xmlChar ** prefix ATTRIBUTE_UNUSED) | |
| 479 { | |
| 480 | |
| 481 static int deprecated = 0; | |
| 482 | |
| 483 if (!deprecated) { | |
| 484 xmlGenericError(xmlGenericErrorContext, | |
| 485 "xmlNamespaceParseQName() deprecated function reached\n"
); | |
| 486 deprecated = 1; | |
| 487 } | |
| 488 return (NULL); | |
| 489 } | |
| 490 | |
| 491 /** | |
| 492 * xmlNamespaceParseNSDef: | |
| 493 * @ctxt: an XML parser context | |
| 494 * | |
| 495 * parse a namespace prefix declaration | |
| 496 * | |
| 497 * TODO: this seems not in use anymore, the namespace handling is done on | |
| 498 * top of the SAX interfaces, i.e. not on raw input. | |
| 499 * | |
| 500 * [NS 1] NSDef ::= PrefixDef Eq SystemLiteral | |
| 501 * | |
| 502 * [NS 2] PrefixDef ::= 'xmlns' (':' NCName)? | |
| 503 * | |
| 504 * Returns the namespace name | |
| 505 */ | |
| 506 | |
| 507 xmlChar * | |
| 508 xmlNamespaceParseNSDef(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED) | |
| 509 { | |
| 510 static int deprecated = 0; | |
| 511 | |
| 512 if (!deprecated) { | |
| 513 xmlGenericError(xmlGenericErrorContext, | |
| 514 "xmlNamespaceParseNSDef() deprecated function reached\n"
); | |
| 515 deprecated = 1; | |
| 516 } | |
| 517 return (NULL); | |
| 518 } | |
| 519 | |
| 520 /** | |
| 521 * xmlParseQuotedString: | |
| 522 * @ctxt: an XML parser context | |
| 523 * | |
| 524 * Parse and return a string between quotes or doublequotes | |
| 525 * | |
| 526 * TODO: Deprecated, to be removed at next drop of binary compatibility | |
| 527 * | |
| 528 * Returns the string parser or NULL. | |
| 529 */ | |
| 530 xmlChar * | |
| 531 xmlParseQuotedString(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED) | |
| 532 { | |
| 533 static int deprecated = 0; | |
| 534 | |
| 535 if (!deprecated) { | |
| 536 xmlGenericError(xmlGenericErrorContext, | |
| 537 "xmlParseQuotedString() deprecated function reached\n"); | |
| 538 deprecated = 1; | |
| 539 } | |
| 540 return (NULL); | |
| 541 } | |
| 542 | |
| 543 /** | |
| 544 * xmlParseNamespace: | |
| 545 * @ctxt: an XML parser context | |
| 546 * | |
| 547 * xmlParseNamespace: parse specific PI '<?namespace ...' constructs. | |
| 548 * | |
| 549 * This is what the older xml-name Working Draft specified, a bunch of | |
| 550 * other stuff may still rely on it, so support is still here as | |
| 551 * if it was declared on the root of the Tree:-( | |
| 552 * | |
| 553 * TODO: remove from library | |
| 554 * | |
| 555 * To be removed at next drop of binary compatibility | |
| 556 */ | |
| 557 | |
| 558 void | |
| 559 xmlParseNamespace(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED) | |
| 560 { | |
| 561 static int deprecated = 0; | |
| 562 | |
| 563 if (!deprecated) { | |
| 564 xmlGenericError(xmlGenericErrorContext, | |
| 565 "xmlParseNamespace() deprecated function reached\n"); | |
| 566 deprecated = 1; | |
| 567 } | |
| 568 } | |
| 569 | |
| 570 /** | |
| 571 * xmlScanName: | |
| 572 * @ctxt: an XML parser context | |
| 573 * | |
| 574 * Trickery: parse an XML name but without consuming the input flow | |
| 575 * Needed for rollback cases. Used only when parsing entities references. | |
| 576 * | |
| 577 * TODO: seems deprecated now, only used in the default part of | |
| 578 * xmlParserHandleReference | |
| 579 * | |
| 580 * [4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | | |
| 581 * CombiningChar | Extender | |
| 582 * | |
| 583 * [5] Name ::= (Letter | '_' | ':') (NameChar)* | |
| 584 * | |
| 585 * [6] Names ::= Name (S Name)* | |
| 586 * | |
| 587 * Returns the Name parsed or NULL | |
| 588 */ | |
| 589 | |
| 590 xmlChar * | |
| 591 xmlScanName(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED) | |
| 592 { | |
| 593 static int deprecated = 0; | |
| 594 | |
| 595 if (!deprecated) { | |
| 596 xmlGenericError(xmlGenericErrorContext, | |
| 597 "xmlScanName() deprecated function reached\n"); | |
| 598 deprecated = 1; | |
| 599 } | |
| 600 return (NULL); | |
| 601 } | |
| 602 | |
| 603 /** | |
| 604 * xmlParserHandleReference: | |
| 605 * @ctxt: the parser context | |
| 606 * | |
| 607 * TODO: Remove, now deprecated ... the test is done directly in the | |
| 608 * content parsing | |
| 609 * routines. | |
| 610 * | |
| 611 * [67] Reference ::= EntityRef | CharRef | |
| 612 * | |
| 613 * [68] EntityRef ::= '&' Name ';' | |
| 614 * | |
| 615 * [ WFC: Entity Declared ] | |
| 616 * the Name given in the entity reference must match that in an entity | |
| 617 * declaration, except that well-formed documents need not declare any | |
| 618 * of the following entities: amp, lt, gt, apos, quot. | |
| 619 * | |
| 620 * [ WFC: Parsed Entity ] | |
| 621 * An entity reference must not contain the name of an unparsed entity | |
| 622 * | |
| 623 * [66] CharRef ::= '&#' [0-9]+ ';' | | |
| 624 * '&#x' [0-9a-fA-F]+ ';' | |
| 625 * | |
| 626 * A PEReference may have been detected in the current input stream | |
| 627 * the handling is done accordingly to | |
| 628 * http://www.w3.org/TR/REC-xml#entproc | |
| 629 */ | |
| 630 void | |
| 631 xmlParserHandleReference(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED) | |
| 632 { | |
| 633 static int deprecated = 0; | |
| 634 | |
| 635 if (!deprecated) { | |
| 636 xmlGenericError(xmlGenericErrorContext, | |
| 637 "xmlParserHandleReference() deprecated function reached\
n"); | |
| 638 deprecated = 1; | |
| 639 } | |
| 640 | |
| 641 return; | |
| 642 } | |
| 643 | |
| 644 /** | |
| 645 * xmlHandleEntity: | |
| 646 * @ctxt: an XML parser context | |
| 647 * @entity: an XML entity pointer. | |
| 648 * | |
| 649 * Default handling of defined entities, when should we define a new input | |
| 650 * stream ? When do we just handle that as a set of chars ? | |
| 651 * | |
| 652 * OBSOLETE: to be removed at some point. | |
| 653 */ | |
| 654 | |
| 655 void | |
| 656 xmlHandleEntity(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED, | |
| 657 xmlEntityPtr entity ATTRIBUTE_UNUSED) | |
| 658 { | |
| 659 static int deprecated = 0; | |
| 660 | |
| 661 if (!deprecated) { | |
| 662 xmlGenericError(xmlGenericErrorContext, | |
| 663 "xmlHandleEntity() deprecated function reached\n"); | |
| 664 deprecated = 1; | |
| 665 } | |
| 666 } | |
| 667 | |
| 668 /** | |
| 669 * xmlNewGlobalNs: | |
| 670 * @doc: the document carrying the namespace | |
| 671 * @href: the URI associated | |
| 672 * @prefix: the prefix for the namespace | |
| 673 * | |
| 674 * Creation of a Namespace, the old way using PI and without scoping | |
| 675 * DEPRECATED !!! | |
| 676 * Returns NULL this functionality had been removed | |
| 677 */ | |
| 678 xmlNsPtr | |
| 679 xmlNewGlobalNs(xmlDocPtr doc ATTRIBUTE_UNUSED, | |
| 680 const xmlChar * href ATTRIBUTE_UNUSED, | |
| 681 const xmlChar * prefix ATTRIBUTE_UNUSED) | |
| 682 { | |
| 683 static int deprecated = 0; | |
| 684 | |
| 685 if (!deprecated) { | |
| 686 xmlGenericError(xmlGenericErrorContext, | |
| 687 "xmlNewGlobalNs() deprecated function reached\n"); | |
| 688 deprecated = 1; | |
| 689 } | |
| 690 return (NULL); | |
| 691 } | |
| 692 | |
| 693 /** | |
| 694 * xmlUpgradeOldNs: | |
| 695 * @doc: a document pointer | |
| 696 * | |
| 697 * Upgrade old style Namespaces (PI) and move them to the root of the document. | |
| 698 * DEPRECATED | |
| 699 */ | |
| 700 void | |
| 701 xmlUpgradeOldNs(xmlDocPtr doc ATTRIBUTE_UNUSED) | |
| 702 { | |
| 703 static int deprecated = 0; | |
| 704 | |
| 705 if (!deprecated) { | |
| 706 xmlGenericError(xmlGenericErrorContext, | |
| 707 "xmlUpgradeOldNs() deprecated function reached\n"); | |
| 708 deprecated = 1; | |
| 709 } | |
| 710 } | |
| 711 | |
| 712 /** | |
| 713 * xmlEncodeEntities: | |
| 714 * @doc: the document containing the string | |
| 715 * @input: A string to convert to XML. | |
| 716 * | |
| 717 * TODO: remove xmlEncodeEntities, once we are not afraid of breaking binary | |
| 718 * compatibility | |
| 719 * | |
| 720 * People must migrate their code to xmlEncodeEntitiesReentrant ! | |
| 721 * This routine will issue a warning when encountered. | |
| 722 * | |
| 723 * Returns NULL | |
| 724 */ | |
| 725 const xmlChar * | |
| 726 xmlEncodeEntities(xmlDocPtr doc ATTRIBUTE_UNUSED, | |
| 727 const xmlChar * input ATTRIBUTE_UNUSED) | |
| 728 { | |
| 729 static int warning = 1; | |
| 730 | |
| 731 if (warning) { | |
| 732 xmlGenericError(xmlGenericErrorContext, | |
| 733 "Deprecated API xmlEncodeEntities() used\n"); | |
| 734 xmlGenericError(xmlGenericErrorContext, | |
| 735 " change code to use xmlEncodeEntitiesReentrant()\n"); | |
| 736 warning = 0; | |
| 737 } | |
| 738 return (NULL); | |
| 739 } | |
| 740 | |
| 741 /************************************************************************ | |
| 742 * * | |
| 743 * Old set of SAXv1 functions * | |
| 744 * * | |
| 745 ************************************************************************/ | |
| 746 static int deprecated_v1_msg = 0; | |
| 747 | |
| 748 #define DEPRECATED(n) \ | |
| 749 if (deprecated_v1_msg == 0) \ | |
| 750 xmlGenericError(xmlGenericErrorContext, \ | |
| 751 "Use of deprecated SAXv1 function %s\n", n); \ | |
| 752 deprecated_v1_msg++; | |
| 753 | |
| 754 /** | |
| 755 * getPublicId: | |
| 756 * @ctx: the user data (XML parser context) | |
| 757 * | |
| 758 * Provides the public ID e.g. "-//SGMLSOURCE//DTD DEMO//EN" | |
| 759 * DEPRECATED: use xmlSAX2GetPublicId() | |
| 760 * | |
| 761 * Returns a xmlChar * | |
| 762 */ | |
| 763 const xmlChar * | |
| 764 getPublicId(void *ctx) | |
| 765 { | |
| 766 DEPRECATED("getPublicId") | |
| 767 return (xmlSAX2GetPublicId(ctx)); | |
| 768 } | |
| 769 | |
| 770 /** | |
| 771 * getSystemId: | |
| 772 * @ctx: the user data (XML parser context) | |
| 773 * | |
| 774 * Provides the system ID, basically URL or filename e.g. | |
| 775 * http://www.sgmlsource.com/dtds/memo.dtd | |
| 776 * DEPRECATED: use xmlSAX2GetSystemId() | |
| 777 * | |
| 778 * Returns a xmlChar * | |
| 779 */ | |
| 780 const xmlChar * | |
| 781 getSystemId(void *ctx) | |
| 782 { | |
| 783 DEPRECATED("getSystemId") | |
| 784 return (xmlSAX2GetSystemId(ctx)); | |
| 785 } | |
| 786 | |
| 787 /** | |
| 788 * getLineNumber: | |
| 789 * @ctx: the user data (XML parser context) | |
| 790 * | |
| 791 * Provide the line number of the current parsing point. | |
| 792 * DEPRECATED: use xmlSAX2GetLineNumber() | |
| 793 * | |
| 794 * Returns an int | |
| 795 */ | |
| 796 int | |
| 797 getLineNumber(void *ctx) | |
| 798 { | |
| 799 DEPRECATED("getLineNumber") | |
| 800 return (xmlSAX2GetLineNumber(ctx)); | |
| 801 } | |
| 802 | |
| 803 /** | |
| 804 * getColumnNumber: | |
| 805 * @ctx: the user data (XML parser context) | |
| 806 * | |
| 807 * Provide the column number of the current parsing point. | |
| 808 * DEPRECATED: use xmlSAX2GetColumnNumber() | |
| 809 * | |
| 810 * Returns an int | |
| 811 */ | |
| 812 int | |
| 813 getColumnNumber(void *ctx) | |
| 814 { | |
| 815 DEPRECATED("getColumnNumber") | |
| 816 return (xmlSAX2GetColumnNumber(ctx)); | |
| 817 } | |
| 818 | |
| 819 /** | |
| 820 * isStandalone: | |
| 821 * @ctx: the user data (XML parser context) | |
| 822 * | |
| 823 * Is this document tagged standalone ? | |
| 824 * DEPRECATED: use xmlSAX2IsStandalone() | |
| 825 * | |
| 826 * Returns 1 if true | |
| 827 */ | |
| 828 int | |
| 829 isStandalone(void *ctx) | |
| 830 { | |
| 831 DEPRECATED("isStandalone") | |
| 832 return (xmlSAX2IsStandalone(ctx)); | |
| 833 } | |
| 834 | |
| 835 /** | |
| 836 * hasInternalSubset: | |
| 837 * @ctx: the user data (XML parser context) | |
| 838 * | |
| 839 * Does this document has an internal subset | |
| 840 * DEPRECATED: use xmlSAX2HasInternalSubset() | |
| 841 * | |
| 842 * Returns 1 if true | |
| 843 */ | |
| 844 int | |
| 845 hasInternalSubset(void *ctx) | |
| 846 { | |
| 847 DEPRECATED("hasInternalSubset") | |
| 848 return (xmlSAX2HasInternalSubset(ctx)); | |
| 849 } | |
| 850 | |
| 851 /** | |
| 852 * hasExternalSubset: | |
| 853 * @ctx: the user data (XML parser context) | |
| 854 * | |
| 855 * Does this document has an external subset | |
| 856 * DEPRECATED: use xmlSAX2HasExternalSubset() | |
| 857 * | |
| 858 * Returns 1 if true | |
| 859 */ | |
| 860 int | |
| 861 hasExternalSubset(void *ctx) | |
| 862 { | |
| 863 DEPRECATED("hasExternalSubset") | |
| 864 return (xmlSAX2HasExternalSubset(ctx)); | |
| 865 } | |
| 866 | |
| 867 /** | |
| 868 * internalSubset: | |
| 869 * @ctx: the user data (XML parser context) | |
| 870 * @name: the root element name | |
| 871 * @ExternalID: the external ID | |
| 872 * @SystemID: the SYSTEM ID (e.g. filename or URL) | |
| 873 * | |
| 874 * Callback on internal subset declaration. | |
| 875 * DEPRECATED: use xmlSAX2InternalSubset() | |
| 876 */ | |
| 877 void | |
| 878 internalSubset(void *ctx, const xmlChar * name, | |
| 879 const xmlChar * ExternalID, const xmlChar * SystemID) | |
| 880 { | |
| 881 DEPRECATED("internalSubset") | |
| 882 xmlSAX2InternalSubset(ctx, name, ExternalID, SystemID); | |
| 883 } | |
| 884 | |
| 885 /** | |
| 886 * externalSubset: | |
| 887 * @ctx: the user data (XML parser context) | |
| 888 * @name: the root element name | |
| 889 * @ExternalID: the external ID | |
| 890 * @SystemID: the SYSTEM ID (e.g. filename or URL) | |
| 891 * | |
| 892 * Callback on external subset declaration. | |
| 893 * DEPRECATED: use xmlSAX2ExternalSubset() | |
| 894 */ | |
| 895 void | |
| 896 externalSubset(void *ctx, const xmlChar * name, | |
| 897 const xmlChar * ExternalID, const xmlChar * SystemID) | |
| 898 { | |
| 899 DEPRECATED("externalSubset") | |
| 900 xmlSAX2ExternalSubset(ctx, name, ExternalID, SystemID); | |
| 901 } | |
| 902 | |
| 903 /** | |
| 904 * resolveEntity: | |
| 905 * @ctx: the user data (XML parser context) | |
| 906 * @publicId: The public ID of the entity | |
| 907 * @systemId: The system ID of the entity | |
| 908 * | |
| 909 * The entity loader, to control the loading of external entities, | |
| 910 * the application can either: | |
| 911 * - override this resolveEntity() callback in the SAX block | |
| 912 * - or better use the xmlSetExternalEntityLoader() function to | |
| 913 * set up it's own entity resolution routine | |
| 914 * DEPRECATED: use xmlSAX2ResolveEntity() | |
| 915 * | |
| 916 * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour. | |
| 917 */ | |
| 918 xmlParserInputPtr | |
| 919 resolveEntity(void *ctx, const xmlChar * publicId, | |
| 920 const xmlChar * systemId) | |
| 921 { | |
| 922 DEPRECATED("resolveEntity") | |
| 923 return (xmlSAX2ResolveEntity(ctx, publicId, systemId)); | |
| 924 } | |
| 925 | |
| 926 /** | |
| 927 * getEntity: | |
| 928 * @ctx: the user data (XML parser context) | |
| 929 * @name: The entity name | |
| 930 * | |
| 931 * Get an entity by name | |
| 932 * DEPRECATED: use xmlSAX2GetEntity() | |
| 933 * | |
| 934 * Returns the xmlEntityPtr if found. | |
| 935 */ | |
| 936 xmlEntityPtr | |
| 937 getEntity(void *ctx, const xmlChar * name) | |
| 938 { | |
| 939 DEPRECATED("getEntity") | |
| 940 return (xmlSAX2GetEntity(ctx, name)); | |
| 941 } | |
| 942 | |
| 943 /** | |
| 944 * getParameterEntity: | |
| 945 * @ctx: the user data (XML parser context) | |
| 946 * @name: The entity name | |
| 947 * | |
| 948 * Get a parameter entity by name | |
| 949 * DEPRECATED: use xmlSAX2GetParameterEntity() | |
| 950 * | |
| 951 * Returns the xmlEntityPtr if found. | |
| 952 */ | |
| 953 xmlEntityPtr | |
| 954 getParameterEntity(void *ctx, const xmlChar * name) | |
| 955 { | |
| 956 DEPRECATED("getParameterEntity") | |
| 957 return (xmlSAX2GetParameterEntity(ctx, name)); | |
| 958 } | |
| 959 | |
| 960 | |
| 961 /** | |
| 962 * entityDecl: | |
| 963 * @ctx: the user data (XML parser context) | |
| 964 * @name: the entity name | |
| 965 * @type: the entity type | |
| 966 * @publicId: The public ID of the entity | |
| 967 * @systemId: The system ID of the entity | |
| 968 * @content: the entity value (without processing). | |
| 969 * | |
| 970 * An entity definition has been parsed | |
| 971 * DEPRECATED: use xmlSAX2EntityDecl() | |
| 972 */ | |
| 973 void | |
| 974 entityDecl(void *ctx, const xmlChar * name, int type, | |
| 975 const xmlChar * publicId, const xmlChar * systemId, | |
| 976 xmlChar * content) | |
| 977 { | |
| 978 DEPRECATED("entityDecl") | |
| 979 xmlSAX2EntityDecl(ctx, name, type, publicId, systemId, content); | |
| 980 } | |
| 981 | |
| 982 /** | |
| 983 * attributeDecl: | |
| 984 * @ctx: the user data (XML parser context) | |
| 985 * @elem: the name of the element | |
| 986 * @fullname: the attribute name | |
| 987 * @type: the attribute type | |
| 988 * @def: the type of default value | |
| 989 * @defaultValue: the attribute default value | |
| 990 * @tree: the tree of enumerated value set | |
| 991 * | |
| 992 * An attribute definition has been parsed | |
| 993 * DEPRECATED: use xmlSAX2AttributeDecl() | |
| 994 */ | |
| 995 void | |
| 996 attributeDecl(void *ctx, const xmlChar * elem, const xmlChar * fullname, | |
| 997 int type, int def, const xmlChar * defaultValue, | |
| 998 xmlEnumerationPtr tree) | |
| 999 { | |
| 1000 DEPRECATED("attributeDecl") | |
| 1001 xmlSAX2AttributeDecl(ctx, elem, fullname, type, def, defaultValue, | |
| 1002 tree); | |
| 1003 } | |
| 1004 | |
| 1005 /** | |
| 1006 * elementDecl: | |
| 1007 * @ctx: the user data (XML parser context) | |
| 1008 * @name: the element name | |
| 1009 * @type: the element type | |
| 1010 * @content: the element value tree | |
| 1011 * | |
| 1012 * An element definition has been parsed | |
| 1013 * DEPRECATED: use xmlSAX2ElementDecl() | |
| 1014 */ | |
| 1015 void | |
| 1016 elementDecl(void *ctx, const xmlChar * name, int type, | |
| 1017 xmlElementContentPtr content) | |
| 1018 { | |
| 1019 DEPRECATED("elementDecl") | |
| 1020 xmlSAX2ElementDecl(ctx, name, type, content); | |
| 1021 } | |
| 1022 | |
| 1023 /** | |
| 1024 * notationDecl: | |
| 1025 * @ctx: the user data (XML parser context) | |
| 1026 * @name: The name of the notation | |
| 1027 * @publicId: The public ID of the entity | |
| 1028 * @systemId: The system ID of the entity | |
| 1029 * | |
| 1030 * What to do when a notation declaration has been parsed. | |
| 1031 * DEPRECATED: use xmlSAX2NotationDecl() | |
| 1032 */ | |
| 1033 void | |
| 1034 notationDecl(void *ctx, const xmlChar * name, | |
| 1035 const xmlChar * publicId, const xmlChar * systemId) | |
| 1036 { | |
| 1037 DEPRECATED("notationDecl") | |
| 1038 xmlSAX2NotationDecl(ctx, name, publicId, systemId); | |
| 1039 } | |
| 1040 | |
| 1041 /** | |
| 1042 * unparsedEntityDecl: | |
| 1043 * @ctx: the user data (XML parser context) | |
| 1044 * @name: The name of the entity | |
| 1045 * @publicId: The public ID of the entity | |
| 1046 * @systemId: The system ID of the entity | |
| 1047 * @notationName: the name of the notation | |
| 1048 * | |
| 1049 * What to do when an unparsed entity declaration is parsed | |
| 1050 * DEPRECATED: use xmlSAX2UnparsedEntityDecl() | |
| 1051 */ | |
| 1052 void | |
| 1053 unparsedEntityDecl(void *ctx, const xmlChar * name, | |
| 1054 const xmlChar * publicId, const xmlChar * systemId, | |
| 1055 const xmlChar * notationName) | |
| 1056 { | |
| 1057 DEPRECATED("unparsedEntityDecl") | |
| 1058 xmlSAX2UnparsedEntityDecl(ctx, name, publicId, systemId, | |
| 1059 notationName); | |
| 1060 } | |
| 1061 | |
| 1062 /** | |
| 1063 * setDocumentLocator: | |
| 1064 * @ctx: the user data (XML parser context) | |
| 1065 * @loc: A SAX Locator | |
| 1066 * | |
| 1067 * Receive the document locator at startup, actually xmlDefaultSAXLocator | |
| 1068 * Everything is available on the context, so this is useless in our case. | |
| 1069 * DEPRECATED | |
| 1070 */ | |
| 1071 void | |
| 1072 setDocumentLocator(void *ctx ATTRIBUTE_UNUSED, | |
| 1073 xmlSAXLocatorPtr loc ATTRIBUTE_UNUSED) | |
| 1074 { | |
| 1075 DEPRECATED("setDocumentLocator") | |
| 1076 } | |
| 1077 | |
| 1078 /** | |
| 1079 * startDocument: | |
| 1080 * @ctx: the user data (XML parser context) | |
| 1081 * | |
| 1082 * called when the document start being processed. | |
| 1083 * DEPRECATED: use xmlSAX2StartDocument() | |
| 1084 */ | |
| 1085 void | |
| 1086 startDocument(void *ctx) | |
| 1087 { | |
| 1088 /* don't be too painful for glade users */ | |
| 1089 /* DEPRECATED("startDocument") */ | |
| 1090 xmlSAX2StartDocument(ctx); | |
| 1091 } | |
| 1092 | |
| 1093 /** | |
| 1094 * endDocument: | |
| 1095 * @ctx: the user data (XML parser context) | |
| 1096 * | |
| 1097 * called when the document end has been detected. | |
| 1098 * DEPRECATED: use xmlSAX2EndDocument() | |
| 1099 */ | |
| 1100 void | |
| 1101 endDocument(void *ctx) | |
| 1102 { | |
| 1103 DEPRECATED("endDocument") | |
| 1104 xmlSAX2EndDocument(ctx); | |
| 1105 } | |
| 1106 | |
| 1107 /** | |
| 1108 * attribute: | |
| 1109 * @ctx: the user data (XML parser context) | |
| 1110 * @fullname: The attribute name, including namespace prefix | |
| 1111 * @value: The attribute value | |
| 1112 * | |
| 1113 * Handle an attribute that has been read by the parser. | |
| 1114 * The default handling is to convert the attribute into an | |
| 1115 * DOM subtree and past it in a new xmlAttr element added to | |
| 1116 * the element. | |
| 1117 * DEPRECATED: use xmlSAX2Attribute() | |
| 1118 */ | |
| 1119 void | |
| 1120 attribute(void *ctx ATTRIBUTE_UNUSED, | |
| 1121 const xmlChar * fullname ATTRIBUTE_UNUSED, | |
| 1122 const xmlChar * value ATTRIBUTE_UNUSED) | |
| 1123 { | |
| 1124 DEPRECATED("attribute") | |
| 1125 } | |
| 1126 | |
| 1127 /** | |
| 1128 * startElement: | |
| 1129 * @ctx: the user data (XML parser context) | |
| 1130 * @fullname: The element name, including namespace prefix | |
| 1131 * @atts: An array of name/value attributes pairs, NULL terminated | |
| 1132 * | |
| 1133 * called when an opening tag has been processed. | |
| 1134 * DEPRECATED: use xmlSAX2StartElement() | |
| 1135 */ | |
| 1136 void | |
| 1137 startElement(void *ctx, const xmlChar * fullname, const xmlChar ** atts) | |
| 1138 { | |
| 1139 xmlSAX2StartElement(ctx, fullname, atts); | |
| 1140 } | |
| 1141 | |
| 1142 /** | |
| 1143 * endElement: | |
| 1144 * @ctx: the user data (XML parser context) | |
| 1145 * @name: The element name | |
| 1146 * | |
| 1147 * called when the end of an element has been detected. | |
| 1148 * DEPRECATED: use xmlSAX2EndElement() | |
| 1149 */ | |
| 1150 void | |
| 1151 endElement(void *ctx, const xmlChar * name ATTRIBUTE_UNUSED) | |
| 1152 { | |
| 1153 DEPRECATED("endElement") | |
| 1154 xmlSAX2EndElement(ctx, name); | |
| 1155 } | |
| 1156 | |
| 1157 /** | |
| 1158 * reference: | |
| 1159 * @ctx: the user data (XML parser context) | |
| 1160 * @name: The entity name | |
| 1161 * | |
| 1162 * called when an entity reference is detected. | |
| 1163 * DEPRECATED: use xmlSAX2Reference() | |
| 1164 */ | |
| 1165 void | |
| 1166 reference(void *ctx, const xmlChar * name) | |
| 1167 { | |
| 1168 DEPRECATED("reference") | |
| 1169 xmlSAX2Reference(ctx, name); | |
| 1170 } | |
| 1171 | |
| 1172 /** | |
| 1173 * characters: | |
| 1174 * @ctx: the user data (XML parser context) | |
| 1175 * @ch: a xmlChar string | |
| 1176 * @len: the number of xmlChar | |
| 1177 * | |
| 1178 * receiving some chars from the parser. | |
| 1179 * DEPRECATED: use xmlSAX2Characters() | |
| 1180 */ | |
| 1181 void | |
| 1182 characters(void *ctx, const xmlChar * ch, int len) | |
| 1183 { | |
| 1184 DEPRECATED("characters") | |
| 1185 xmlSAX2Characters(ctx, ch, len); | |
| 1186 } | |
| 1187 | |
| 1188 /** | |
| 1189 * ignorableWhitespace: | |
| 1190 * @ctx: the user data (XML parser context) | |
| 1191 * @ch: a xmlChar string | |
| 1192 * @len: the number of xmlChar | |
| 1193 * | |
| 1194 * receiving some ignorable whitespaces from the parser. | |
| 1195 * UNUSED: by default the DOM building will use characters | |
| 1196 * DEPRECATED: use xmlSAX2IgnorableWhitespace() | |
| 1197 */ | |
| 1198 void | |
| 1199 ignorableWhitespace(void *ctx ATTRIBUTE_UNUSED, | |
| 1200 const xmlChar * ch ATTRIBUTE_UNUSED, | |
| 1201 int len ATTRIBUTE_UNUSED) | |
| 1202 { | |
| 1203 DEPRECATED("ignorableWhitespace") | |
| 1204 } | |
| 1205 | |
| 1206 /** | |
| 1207 * processingInstruction: | |
| 1208 * @ctx: the user data (XML parser context) | |
| 1209 * @target: the target name | |
| 1210 * @data: the PI data's | |
| 1211 * | |
| 1212 * A processing instruction has been parsed. | |
| 1213 * DEPRECATED: use xmlSAX2ProcessingInstruction() | |
| 1214 */ | |
| 1215 void | |
| 1216 processingInstruction(void *ctx, const xmlChar * target, | |
| 1217 const xmlChar * data) | |
| 1218 { | |
| 1219 DEPRECATED("processingInstruction") | |
| 1220 xmlSAX2ProcessingInstruction(ctx, target, data); | |
| 1221 } | |
| 1222 | |
| 1223 /** | |
| 1224 * globalNamespace: | |
| 1225 * @ctx: the user data (XML parser context) | |
| 1226 * @href: the namespace associated URN | |
| 1227 * @prefix: the namespace prefix | |
| 1228 * | |
| 1229 * An old global namespace has been parsed. | |
| 1230 * DEPRECATED | |
| 1231 */ | |
| 1232 void | |
| 1233 globalNamespace(void *ctx ATTRIBUTE_UNUSED, | |
| 1234 const xmlChar * href ATTRIBUTE_UNUSED, | |
| 1235 const xmlChar * prefix ATTRIBUTE_UNUSED) | |
| 1236 { | |
| 1237 DEPRECATED("globalNamespace") | |
| 1238 } | |
| 1239 | |
| 1240 /** | |
| 1241 * setNamespace: | |
| 1242 * @ctx: the user data (XML parser context) | |
| 1243 * @name: the namespace prefix | |
| 1244 * | |
| 1245 * Set the current element namespace. | |
| 1246 * DEPRECATED | |
| 1247 */ | |
| 1248 | |
| 1249 void | |
| 1250 setNamespace(void *ctx ATTRIBUTE_UNUSED, | |
| 1251 const xmlChar * name ATTRIBUTE_UNUSED) | |
| 1252 { | |
| 1253 DEPRECATED("setNamespace") | |
| 1254 } | |
| 1255 | |
| 1256 /** | |
| 1257 * getNamespace: | |
| 1258 * @ctx: the user data (XML parser context) | |
| 1259 * | |
| 1260 * Get the current element namespace. | |
| 1261 * DEPRECATED | |
| 1262 * | |
| 1263 * Returns the xmlNsPtr or NULL if none | |
| 1264 */ | |
| 1265 | |
| 1266 xmlNsPtr | |
| 1267 getNamespace(void *ctx ATTRIBUTE_UNUSED) | |
| 1268 { | |
| 1269 DEPRECATED("getNamespace") | |
| 1270 return (NULL); | |
| 1271 } | |
| 1272 | |
| 1273 /** | |
| 1274 * checkNamespace: | |
| 1275 * @ctx: the user data (XML parser context) | |
| 1276 * @namespace: the namespace to check against | |
| 1277 * | |
| 1278 * Check that the current element namespace is the same as the | |
| 1279 * one read upon parsing. | |
| 1280 * DEPRECATED | |
| 1281 * | |
| 1282 * Returns 1 if true 0 otherwise | |
| 1283 */ | |
| 1284 | |
| 1285 int | |
| 1286 checkNamespace(void *ctx ATTRIBUTE_UNUSED, | |
| 1287 xmlChar * namespace ATTRIBUTE_UNUSED) | |
| 1288 { | |
| 1289 DEPRECATED("checkNamespace") | |
| 1290 return (0); | |
| 1291 } | |
| 1292 | |
| 1293 /** | |
| 1294 * namespaceDecl: | |
| 1295 * @ctx: the user data (XML parser context) | |
| 1296 * @href: the namespace associated URN | |
| 1297 * @prefix: the namespace prefix | |
| 1298 * | |
| 1299 * A namespace has been parsed. | |
| 1300 * DEPRECATED | |
| 1301 */ | |
| 1302 void | |
| 1303 namespaceDecl(void *ctx ATTRIBUTE_UNUSED, | |
| 1304 const xmlChar * href ATTRIBUTE_UNUSED, | |
| 1305 const xmlChar * prefix ATTRIBUTE_UNUSED) | |
| 1306 { | |
| 1307 DEPRECATED("namespaceDecl") | |
| 1308 } | |
| 1309 | |
| 1310 /** | |
| 1311 * comment: | |
| 1312 * @ctx: the user data (XML parser context) | |
| 1313 * @value: the comment content | |
| 1314 * | |
| 1315 * A comment has been parsed. | |
| 1316 * DEPRECATED: use xmlSAX2Comment() | |
| 1317 */ | |
| 1318 void | |
| 1319 comment(void *ctx, const xmlChar * value) | |
| 1320 { | |
| 1321 DEPRECATED("comment") | |
| 1322 xmlSAX2Comment(ctx, value); | |
| 1323 } | |
| 1324 | |
| 1325 /** | |
| 1326 * cdataBlock: | |
| 1327 * @ctx: the user data (XML parser context) | |
| 1328 * @value: The pcdata content | |
| 1329 * @len: the block length | |
| 1330 * | |
| 1331 * called when a pcdata block has been parsed | |
| 1332 * DEPRECATED: use xmlSAX2CDataBlock() | |
| 1333 */ | |
| 1334 void | |
| 1335 cdataBlock(void *ctx, const xmlChar * value, int len) | |
| 1336 { | |
| 1337 DEPRECATED("cdataBlock") | |
| 1338 xmlSAX2CDataBlock(ctx, value, len); | |
| 1339 } | |
| 1340 #define bottom_legacy | |
| 1341 #include "elfgcchack.h" | |
| 1342 #endif /* LIBXML_LEGACY_ENABLED */ | |
| 1343 | |
| OLD | NEW |