1 * Summary: The DTD validation 2 * Description: API for the DTD handling and the validity checking 3 * 4 * Copy: See Copyright for the status of this software. 5 * 6 * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. 7 8 /if not defined(XML_VALID_H__) 9 /define XML_VALID_H__ 10 11 /include "libxmlrpg/xmlversion" 12 /include "libxmlrpg/xmlTypesC" 13 /include "libxmlrpg/xmlerror" 14 /include "libxmlrpg/tree" 15 /include "libxmlrpg/list" 16 /include "libxmlrpg/xmlautomata" 17 /include "libxmlrpg/xmlregexp" 18 19 * Validation state added for non-determinist content model. 20 21 d xmlValidStatePtr... 22 d s * based(######typedef######) 23 24 * xmlValidityErrorFunc: 25 * @ctx: usually an xmlValidCtxtPtr to a validity error context, 26 * but comes from ctxt->userData (which normally contains such 27 * a pointer); ctxt->userData can be changed by the user. 28 * @msg: the string to format *printf like vararg 29 * @...: remaining arguments to the format 30 * 31 * Callback called when a validity error is found. This is a message 32 * oriented function similar to an *printf function. 33 34 d xmlValidityErrorFunc... 35 d s * based(######typedef######) 36 d procptr 37 38 * xmlValidityWarningFunc: 39 * @ctx: usually an xmlValidCtxtPtr to a validity error context, 40 * but comes from ctxt->userData (which normally contains such 41 * a pointer); ctxt->userData can be changed by the user. 42 * @msg: the string to format *printf like vararg 43 * @...: remaining arguments to the format 44 * 45 * Callback called when a validity warning is found. This is a message 46 * oriented function similar to an *printf function. 47 48 d xmlValidityWarningFunc... 49 d s * based(######typedef######) 50 d procptr 51 52 * xmlValidCtxt: 53 * An xmlValidCtxt is used for error reporting when validating. 54 55 d xmlValidCtxtPtr... 56 d s * based(######typedef######) 57 58 d xmlValidCtxt ds based(xmlValidCtxtPtr) 59 d align qualified 60 d userdata * void * 61 d error like(xmlValidityErrorFunc) Error callback 62 d warning like(xmlValidityWarningFunc) Warning callback 63 * 64 * Node analysis stack used when validating within entities 65 * 66 d node like(xmlNodePtr) Current parsed Node 67 d nodeNr like(xmlCint) Parsing stack depth 68 d nodeMax like(xmlCint) Max stack depth 69 d nodeTab * xmlNodePtr * 70 * 71 d finishDtd like(xmlCuint) 72 d doc like(xmlDocPtr) The document 73 d valid like(xmlCint) Temp check result 74 * 75 * state state used for non-determinist content validation 76 * 77 d vstate * xmlValidState * 78 d vstateNr like(xmlCint) Validat. stack depth 79 d vstateMax like(xmlCint) Max stack depth 80 d vstateTab * xmlValidState * 81 * 82 /if defined(LIBXML_REGEXP_ENABLED) 83 d am like(xmlAutomataPtr) The automata 84 d state like(xmlAutomataStatePtr) Automata build state 85 /else 86 d am * 87 d state * 88 /endif 89 90 * ALL notation declarations are stored in a table. 91 * There is one table per DTD. 92 93 d xmlNotationTablePtr... 94 d s * based(######typedef######) 95 96 * ALL element declarations are stored in a table. 97 * There is one table per DTD. 98 99 d xmlElementTablePtr... 100 d s * based(######typedef######) 101 102 * ALL attribute declarations are stored in a table. 103 * There is one table per DTD. 104 105 d xmlAttributeTablePtr... 106 d s * based(######typedef######) 107 108 * ALL IDs attributes are stored in a table. 109 * There is one table per document. 110 111 d xmlIDTablePtr s * based(######typedef######) 112 113 * ALL Refs attributes are stored in a table. 114 * There is one table per document. 115 116 d xmlRefTablePtr s * based(######typedef######) 117 118 * Notation 119 120 d xmlAddNotationDecl... 121 d pr extproc('xmlAddNotationDecl') 122 d like(xmlNotationPtr) 123 d ctxt value like(xmlValidCtxtPtr) 124 d dtd value like(xmlDtdPtr) 125 d name * value options(*string) const xmlChar * 126 d PublicID * value options(*string) const xmlChar * 127 d SystemID * value options(*string) const xmlChar * 128 129 /if defined(LIBXML_TREE_ENABLED) 130 d xmlCopyNotationTable... 131 d pr extproc('xmlCopyNotationTable') 132 d like(xmlNotationPtr) 133 d table value like(xmlNotationTablePtr) 134 /endif LIBXML_TREE_ENABLED 135 136 d xmlFreeNotationTable... 137 d pr extproc('xmlFreeNotationTable') 138 d table value like(xmlNotationTablePtr) 139 140 /if defined(LIBXML_OUTPUT_ENABLED) 141 d xmlDumpNotationDecl... 142 d pr extproc('xmlDumpNotationDecl') 143 d buf value like(xmlBufferPtr) 144 d nota value like(xmlNotationPtr) 145 146 d xmlDumpNotationTable... 147 d pr extproc('xmlDumpNotationTable') 148 d buf value like(xmlBufferPtr) 149 d table value like(xmlNotationTablePtr) 150 /endif LIBXML_OUTPUT_ENABLD 151 152 * Element Content 153 * the non Doc version are being deprecated 154 155 d xmlNewElementContent... 156 d pr extproc('xmlNewElementContent') 157 d like(xmlElementContentPtr) 158 d name * value const xmlChar * 159 d type value like(xmlElementContentType) 160 161 d xmlCopyElementContent... 162 d pr extproc('xmlCopyElementContent') 163 d like(xmlElementContentPtr) 164 d content value like(xmlElementContentPtr) 165 166 d xmlFreeElementContent... 167 d pr extproc('xmlFreeElementContent') 168 d cur value like(xmlElementContentPtr) 169 170 * the new versions with doc argument 171 172 d xmlNewDocElementContent... 173 d pr extproc('xmlNewDocElementContent') 174 d like(xmlElementContentPtr) 175 d doc value like(xmlDocPtr) 176 d name * value const xmlChar * 177 d type value like(xmlElementContentType) 178 179 d xmlCopyDocElementContent... 180 d pr extproc('xmlCopyDocElementContent') 181 d like(xmlElementContentPtr) 182 d doc value like(xmlDocPtr) 183 d content value like(xmlElementContentPtr) 184 185 d xmlFreeDocElementContent... 186 d pr extproc('xmlFreeDocElementContent') 187 d doc value like(xmlDocPtr) 188 d cur value like(xmlElementContentPtr) 189 190 d xmlSnprintfElementContent... 191 d pr extproc('xmlSnprintfElementContent') 192 d buf 65535 options(*varsize) 193 d size value like(xmlCint) 194 d content value like(xmlElementContentPtr) 195 d englob value like(xmlCint) 196 197 /if defined(LIBXML_OUTPUT_ENABLED) 198 * DEPRECATED 199 d xmlSprintfElementContent... 200 d pr extproc('xmlSprintfElementContent') 201 d buf 65535 options(*varsize) 202 d content value like(xmlElementContentPtr) 203 d englob value like(xmlCint) 204 /endif LIBXML_OUTPUT_ENABLD 205 206 * DEPRECATED 207 208 * Element 209 210 d xmlAddElementDecl... 211 d pr extproc('xmlAddElementDecl') 212 d like(xmlElementPtr) 213 d ctxt value like(xmlValidCtxtPtr) 214 d dtd value like(xmlDtdPtr) 215 d name * value options(*string) const xmlChar * 216 d type value like(xmlElementTypeVal) 217 d content value like(xmlElementContentPtr) 218 219 /if defined(LIBXML_TREE_ENABLED) 220 d xmlCopyElementTable... 221 d pr extproc('xmlCopyElementTable') 222 d like(xmlElementTablePtr) 223 d table value like(xmlElementTablePtr) 224 /endif LIBXML_TREE_ENABLED 225 226 d xmlFreeElementTable... 227 d pr extproc('xmlFreeElementTable') 228 d table value like(xmlElementTablePtr) 229 230 /if defined(LIBXML_OUTPUT_ENABLED) 231 d xmlDumpElementTable... 232 d pr extproc('xmlDumpElementTable') 233 d buf value like(xmlBufferPtr) 234 d table value like(xmlElementTablePtr) 235 236 d xmlDumpElementDecl... 237 d pr extproc('xmlDumpElementDecl') 238 d buf value like(xmlBufferPtr) 239 d elem value like(xmlElementPtr) 240 /endif LIBXML_OUTPUT_ENABLD 241 242 * Enumeration 243 244 d xmlCreateEnumeration... 245 d pr extproc('xmlCreateEnumeration') 246 d like(xmlEnumerationPtr) 247 d name * value options(*string) const xmlChar * 248 249 d xmlFreeEnumeration... 250 d pr extproc('xmlFreeEnumeration') 251 d cur value like(xmlEnumerationPtr) 252 253 /if defined(LIBXML_TREE_ENABLED) 254 d xmlCopyEnumeration... 255 d pr extproc('xmlCopyEnumeration') 256 d like(xmlEnumerationPtr) 257 d cur value like(xmlEnumerationPtr) 258 /endif LIBXML_TREE_ENABLED 259 260 * Attribute 261 262 d xmlAddAttributeDecl... 263 d pr extproc('xmlAddAttributeDecl') 264 d like(xmlAttributePtr) 265 d ctxt value like(xmlValidCtxtPtr) 266 d dtd value like(xmlDtdPtr) 267 d elem * value options(*string) const xmlChar * 268 d name * value options(*string) const xmlChar * 269 d ns * value options(*string) const xmlChar * 270 d type value like(xmlAttributeType) 271 d def value like(xmlAttributeDefault) 272 d defaultValue * value options(*string) const xmlChar * 273 d tree value like(xmlEnumerationPtr) 274 275 /if defined(LIBXML_TREE_ENABLED) 276 d xmlCopyAttributeTable... 277 d pr extproc('xmlCopyAttributeTable') 278 d like(xmlAttributeTablePtr) 279 d table value like(xmlAttributeTablePtr) 280 /endif LIBXML_TREE_ENABLED 281 282 d xmlFreeAttributeTable... 283 d pr extproc('xmlFreeAttributeTable') 284 d table value like(xmlAttributeTablePtr) 285 286 /if defined(LIBXML_OUTPUT_ENABLED) 287 d xmlDumpAttributeTable... 288 d pr extproc('xmlDumpAttributeTable') 289 d buf value like(xmlBufferPtr) 290 d table value like(xmlAttributeTablePtr) 291 292 d xmlDumpAttributeDecl... 293 d pr extproc('xmlDumpAttributeDecl') 294 d buf value like(xmlBufferPtr) 295 d attr value like(xmlAttributePtr) 296 /endif LIBXML_OUTPUT_ENABLD 297 298 * IDs 299 300 d xmlAddID pr extproc('xmlAddID') 301 d like(xmlIDPtr) 302 d ctxt value like(xmlValidCtxtPtr) 303 d doc value like(xmlDocPtr) 304 d value * value options(*string) const xmlChar * 305 d attr value like(xmlAttrPtr) 306 307 d xmlFreeIdTable pr extproc('xmlFreeIDTable') 308 d table value like(xmlIDTablePtr) 309 310 d xmlGetID pr extproc('xmlGetID') 311 d like(xmlAttrPtr) 312 d doc value like(xmlDocPtr) 313 d ID * value options(*string) const xmlChar * 314 315 d xmlIsID pr extproc('xmlIsID') 316 d like(xmlCint) 317 d doc value like(xmlDocPtr) 318 d node value like(xmlNodePtr) 319 d attr value like(xmlAttrPtr) 320 321 d xmlRemoveID pr extproc('xmlRemoveID') 322 d like(xmlCint) 323 d doc value like(xmlDocPtr) 324 d attr value like(xmlAttrPtr) 325 326 * IDREFs 327 328 d xmlAddRef pr extproc('xmlAddRef') 329 d like(xmlRefPtr) 330 d ctxt value like(xmlValidCtxtPtr) 331 d doc value like(xmlDocPtr) 332 d value * value options(*string) const xmlChar * 333 d attr value like(xmlAttrPtr) 334 335 d xmlFreeRefTable... 336 d pr extproc('xmlFreeRefTable') 337 d table value like(xmlRefTablePtr) 338 339 d xmlIsRef pr extproc('xmlIsRef') 340 d like(xmlCint) 341 d doc value like(xmlDocPtr) 342 d node value like(xmlNodePtr) 343 d attr value like(xmlAttrPtr) 344 345 d xmlRemoveRef pr extproc('xmlRemoveRef') 346 d like(xmlCint) 347 d doc value like(xmlDocPtr) 348 d attr value like(xmlAttrPtr) 349 350 d xmlGetRefs pr extproc('xmlGetRefs') 351 d like(xmlListPtr) 352 d doc value like(xmlDocPtr) 353 d ID * value options(*string) const xmlChar * 354 355 * The public function calls related to validity checking. 356 357 /if defined(LIBXML_VALID_ENABLED) 358 * Allocate/Release Validation Contexts 359 360 d xmlNewValidCtxt... 361 d pr extproc('xmlNewValidCtxt') 362 d like(xmlValidCtxtPtr) 363 364 d xmlFreeValidCtxt... 365 d pr extproc('xmlFreeValidCtxt') 366 d ctxt value like(xmlValidCtxtPtr) 367 368 d xmlValidateRoot... 369 d pr extproc('xmlValidateRoot') 370 d like(xmlCint) 371 d ctxt value like(xmlValidCtxtPtr) 372 d doc value like(xmlDocPtr) 373 374 d xmlValidateElementDecl... 375 d pr extproc('xmlValidateElementDecl') 376 d like(xmlCint) 377 d ctxt value like(xmlValidCtxtPtr) 378 d doc value like(xmlDocPtr) 379 d elem value like(xmlElementPtr) 380 381 d xmlValidNormalizeAttributeValue... 382 d pr * extproc( xmlChar * 383 d 'xmlValidNormalizeAttributeValue') 384 d doc value like(xmlDocPtr) 385 d elem value like(xmlNodePtr) 386 d name * value options(*string) const xmlChar * 387 d value * value options(*string) const xmlChar * 388 389 d xmlValidCtxtNormalizeAttributeValue... 390 d pr * extproc('xmlValidCtxt+ xmlChar * 391 d NormalizeAttributeValue') 392 d ctxt value like(xmlValidCtxtPtr) 393 d doc value like(xmlDocPtr) 394 d elem value like(xmlNodePtr) 395 d name * value options(*string) const xmlChar * 396 d value * value options(*string) const xmlChar * 397 398 d xmlValidateAttributeDecl... 399 d pr extproc('xmlValidateAttributeDecl') 400 d like(xmlCint) 401 d ctxt value like(xmlValidCtxtPtr) 402 d doc value like(xmlDocPtr) 403 d attr value like(xmlAttributePtr) 404 405 d xmlValidateAttributeValue... 406 d pr extproc('xmlValidateAttributeValue') 407 d like(xmlCint) 408 d type value like(xmlAttributeType) 409 d value * value options(*string) const xmlChar * 410 411 d xmlValidateNotationDecl... 412 d pr extproc('xmlValidateNotationDecl') 413 d like(xmlCint) 414 d ctxt value like(xmlValidCtxtPtr) 415 d doc value like(xmlDocPtr) 416 d nota value like(xmlNotationPtr) 417 418 d xmlValidateDtd pr extproc('xmlValidateDtd') 419 d like(xmlCint) 420 d ctxt value like(xmlValidCtxtPtr) 421 d doc value like(xmlDocPtr) 422 d dtd value like(xmlDtdPtr) 423 424 d xmlValidateDtdFinal... 425 d pr extproc('xmlValidateDtdFinal') 426 d like(xmlCint) 427 d ctxt value like(xmlValidCtxtPtr) 428 d doc value like(xmlDocPtr) 429 430 d xmlValidateDocument... 431 d pr extproc('xmlValidateDocument') 432 d like(xmlCint) 433 d ctxt value like(xmlValidCtxtPtr) 434 d doc value like(xmlDocPtr) 435 436 d xmlValidateElement... 437 d pr extproc('xmlValidateElement') 438 d like(xmlCint) 439 d ctxt value like(xmlValidCtxtPtr) 440 d doc value like(xmlDocPtr) 441 d elem value like(xmlNodePtr) 442 443 d xmlValidateOneElement... 444 d pr extproc('xmlValidateOneElement') 445 d like(xmlCint) 446 d ctxt value like(xmlValidCtxtPtr) 447 d doc value like(xmlDocPtr) 448 d elem value like(xmlNodePtr) 449 450 d xmlValidateOneAttribute... 451 d pr extproc('xmlValidateOneAttribute') 452 d like(xmlCint) 453 d ctxt value like(xmlValidCtxtPtr) 454 d doc value like(xmlDocPtr) 455 d elem value like(xmlNodePtr) 456 d attr value like(xmlAttrPtr) 457 d value * value options(*string) const xmlChar * 458 459 d xmlValidateOneNamespace... 460 d pr extproc('xmlValidateOneNamespace') 461 d like(xmlCint) 462 d ctxt value like(xmlValidCtxtPtr) 463 d doc value like(xmlDocPtr) 464 d elem value like(xmlNodePtr) 465 d prefix * value options(*string) const xmlChar * 466 d ns value like(xmlNsPtr) 467 d value * value options(*string) const xmlChar * 468 469 d xmlValidateDocumentFinal... 470 d pr extproc('xmlValidateDocumentFinal') 471 d like(xmlCint) 472 d ctxt value like(xmlValidCtxtPtr) 473 d doc value like(xmlDocPtr) 474 /endif LIBXML_VALID_ENABLED 475 476 /undefine XML_TESTVAL 477 /if defined(LIBXML_VALID_ENABLED) 478 /define XML_TESTVAL 479 /elseif defined(LIBXML_SCHEMAS_ENABLED) 480 /define XML_TESTVAL 481 /endif 482 /if defined(XML_TESTVAL) 483 d xmlValidateNotationUse... 484 d pr extproc('xmlValidateNotationUse') 485 d like(xmlCint) 486 d ctxt value like(xmlValidCtxtPtr) 487 d doc value like(xmlDocPtr) 488 d notationName * value options(*string) const xmlChar * 489 490 /undefine XML_TESTVAL 491 /endif 492 493 d xmlIsMixedElement... 494 d pr extproc('xmlIsMixedElement') 495 d like(xmlCint) 496 d doc value like(xmlDocPtr) 497 d name * value options(*string) const xmlChar * 498 499 d xmlGetDtdAttrDesc... 500 d pr extproc('xmlGetDtdAttrDesc') 501 d like(xmlAttributePtr) 502 d dtd value like(xmlDtdPtr) 503 d elem * value options(*string) const xmlChar * 504 d name * value options(*string) const xmlChar * 505 506 d xmlGetDtdQAttrDesc... 507 d pr extproc('xmlGetDtdQAttrDesc') 508 d like(xmlAttributePtr) 509 d dtd value like(xmlDtdPtr) 510 d elem * value options(*string) const xmlChar * 511 d name * value options(*string) const xmlChar * 512 d prefix * value options(*string) const xmlChar * 513 514 d xmlGetDtdNotationDesc... 515 d pr extproc('xmlGetDtdNotationDesc') 516 d like(xmlNotationPtr) 517 d dtd value like(xmlDtdPtr) 518 d name * value options(*string) const xmlChar * 519 520 d xmlGetDtdQElementDesc... 521 d pr extproc('xmlGetDtdQElementDesc') 522 d like(xmlElementPtr) 523 d dtd value like(xmlDtdPtr) 524 d name * value options(*string) const xmlChar * 525 d prefix * value options(*string) const xmlChar * 526 527 d xmlGetDtdElementDesc... 528 d pr extproc('xmlGetDtdElementDesc') 529 d like(xmlElementPtr) 530 d dtd value like(xmlDtdPtr) 531 d name * value options(*string) const xmlChar * 532 533 /if defined(LIBXML_VALID_ENABLED) 534 d xmlValidGetPotentialChildren... 535 d pr extproc( 536 d 'xmlValidGetPotentialChildren') 537 d like(xmlCint) 538 d ctree * value xmlElementContent * 539 d names * const xmlChar *(*) 540 d len like(xmlCint) 541 d max value like(xmlCint) 542 543 d xmlValidGetValidElements... 544 d pr extproc('xmlValidGetValidElements') 545 d like(xmlCint) 546 d prev like(xmlNodePtr) 547 d next like(xmlNodePtr) 548 d names * const xmlChar *(*) 549 d max value like(xmlCint) 550 551 d xmlValidateNameValue... 552 d pr extproc('xmlValidateNameValue') 553 d like(xmlCint) 554 d value * value options(*string) const xmlChar * 555 556 d xmlValidateNamesValue... 557 d pr extproc('xmlValidateNamesValue') 558 d like(xmlCint) 559 d value * value options(*string) const xmlChar * 560 561 d xmlValidateNmtokenValue... 562 d pr extproc('xmlValidateNmtokenValue') 563 d like(xmlCint) 564 d value * value options(*string) const xmlChar * 565 566 d xmlValidateNmtokensValue... 567 d pr extproc('xmlValidateNmtokensValue') 568 d like(xmlCint) 569 d value * value options(*string) const xmlChar * 570 571 /if defined(LIBXML_REGEXP_ENABLED) 572 * Validation based on the regexp support 573 574 d xmlValidBuildContentModel... 575 d pr extproc('xmlValidBuildContentModel') 576 d like(xmlCint) 577 d ctxt value like(xmlValidCtxtPtr) 578 d elem value like(xmlElementPtr) 579 580 d xmlValidatePushElement... 581 d pr extproc('xmlValidatePushElement') 582 d like(xmlCint) 583 d ctxt value like(xmlValidCtxtPtr) 584 d doc value like(xmlDocPtr) 585 d elem value like(xmlNodePtr) 586 d qname * value options(*string) const xmlChar * 587 588 d xmlValidatePushCData... 589 d pr extproc('xmlValidatePushCData') 590 d like(xmlCint) 591 d ctxt value like(xmlValidCtxtPtr) 592 d data * value options(*string) const xmlChar * 593 d len value like(xmlCint) 594 595 d xmlValidatePopElement... 596 d pr extproc('xmlValidatePopElement') 597 d like(xmlCint) 598 d ctxt value like(xmlValidCtxtPtr) 599 d doc value like(xmlDocPtr) 600 d elem value like(xmlNodePtr) 601 d qname * value options(*string) const xmlChar * 602 603 /endif LIBXML_REGEXP_ENABLD 604 /endif LIBXML_VALID_ENABLED 605 /endif XML_VALID_H__ 606