1 /* 2 * Summary: interfaces for tree manipulation 3 * Description: this module describes the structures found in an tree resulting 4 * from an XML or HTML parsing, as well as the API provided for 5 * various processing on that tree 6 * 7 * Copy: See Copyright for the status of this software. 8 * 9 * Author: Daniel Veillard 10 */ 11 12 #ifndef __XML_TREE_H__ 13 #define __XML_TREE_H__ 14 15 #include <stdio.h> 16 #include <limits.h> 17 #include <libxml/xmlversion.h> 18 #include <libxml/xmlstring.h> 19 20 #ifdef __cplusplus 21 extern "C" { 22 #endif 23 24 /* 25 * Some of the basic types pointer to structures: 26 */ 27 /* xmlIO.h */ 28 typedef struct _xmlParserInputBuffer xmlParserInputBuffer; 29 typedef xmlParserInputBuffer *xmlParserInputBufferPtr; 30 31 typedef struct _xmlOutputBuffer xmlOutputBuffer; 32 typedef xmlOutputBuffer *xmlOutputBufferPtr; 33 34 /* parser.h */ 35 typedef struct _xmlParserInput xmlParserInput; 36 typedef xmlParserInput *xmlParserInputPtr; 37 38 typedef struct _xmlParserCtxt xmlParserCtxt; 39 typedef xmlParserCtxt *xmlParserCtxtPtr; 40 41 typedef struct _xmlSAXLocator xmlSAXLocator; 42 typedef xmlSAXLocator *xmlSAXLocatorPtr; 43 44 typedef struct _xmlSAXHandler xmlSAXHandler; 45 typedef xmlSAXHandler *xmlSAXHandlerPtr; 46 47 /* entities.h */ 48 typedef struct _xmlEntity xmlEntity; 49 typedef xmlEntity *xmlEntityPtr; 50 51 /** 52 * BASE_BUFFER_SIZE: 53 * 54 * default buffer size 4000. 55 */ 56 #define BASE_BUFFER_SIZE 4096 57 58 /** 59 * LIBXML_NAMESPACE_DICT: 60 * 61 * Defines experimental behaviour: 62 * 1) xmlNs gets an additional field @context (a xmlDoc) 63 * 2) when creating a tree, xmlNs->href is stored in the dict of xmlDoc. 64 */ 65 /* #define LIBXML_NAMESPACE_DICT */ 66 67 /** 68 * xmlBufferAllocationScheme: 69 * 70 * A buffer allocation scheme can be defined to either match exactly the 71 * need or double it's allocated size each time it is found too small. 72 */ 73 74 typedef enum { 75 XML_BUFFER_ALLOC_DOUBLEIT, /* double each time one need to grow */ 76 XML_BUFFER_ALLOC_EXACT, /* grow only to the minimal size */ 77 XML_BUFFER_ALLOC_IMMUTABLE, /* immutable buffer */ 78 XML_BUFFER_ALLOC_IO, /* special allocation scheme used for I/O */ 79 XML_BUFFER_ALLOC_HYBRID, /* exact up to a threshold, and doubleit thereafter */ 80 XML_BUFFER_ALLOC_BOUNDED /* limit the upper size of the buffer */ 81 } xmlBufferAllocationScheme; 82 83 /** 84 * xmlBuffer: 85 * 86 * A buffer structure, this old construct is limited to 2GB and 87 * is being deprecated, use API with xmlBuf instead 88 */ 89 typedef struct _xmlBuffer xmlBuffer; 90 typedef xmlBuffer *xmlBufferPtr; 91 struct _xmlBuffer { 92 xmlChar *content; /* The buffer content UTF8 */ 93 unsigned int use; /* The buffer size used */ 94 unsigned int size; /* The buffer size */ 95 xmlBufferAllocationScheme alloc; /* The realloc method */ 96 xmlChar *contentIO; /* in IO mode we may have a different base */ 97 }; 98 99 /** 100 * xmlBuf: 101 * 102 * A buffer structure, new one, the actual structure internals are not public 103 */ 104 105 typedef struct _xmlBuf xmlBuf; 106 107 /** 108 * xmlBufPtr: 109 * 110 * A pointer to a buffer structure, the actual structure internals are not 111 * public 112 */ 113 114 typedef xmlBuf *xmlBufPtr; 115 116 /* 117 * A few public routines for xmlBuf. As those are expected to be used 118 * mostly internally the bulk of the routines are internal in buf.h 119 */ 120 XMLPUBFUN xmlChar* XMLCALL xmlBufContent (const xmlBuf* buf); 121 XMLPUBFUN xmlChar* XMLCALL xmlBufEnd (xmlBufPtr buf); 122 XMLPUBFUN size_t XMLCALL xmlBufUse (const xmlBufPtr buf); 123 XMLPUBFUN size_t XMLCALL xmlBufShrink (xmlBufPtr buf, size_t len); 124 125 /* 126 * LIBXML2_NEW_BUFFER: 127 * 128 * Macro used to express that the API use the new buffers for 129 * xmlParserInputBuffer and xmlOutputBuffer. The change was 130 * introduced in 2.9.0. 131 */ 132 #define LIBXML2_NEW_BUFFER 133 134 /** 135 * XML_XML_NAMESPACE: 136 * 137 * This is the namespace for the special xml: prefix predefined in the 138 * XML Namespace specification. 139 */ 140 #define XML_XML_NAMESPACE \ 141 (const xmlChar *) "http://www.w3.org/XML/1998/namespace" 142 143 /** 144 * XML_XML_ID: 145 * 146 * This is the name for the special xml:id attribute 147 */ 148 #define XML_XML_ID (const xmlChar *) "xml:id" 149 150 /* 151 * The different element types carried by an XML tree. 152 * 153 * NOTE: This is synchronized with DOM Level1 values 154 * See http://www.w3.org/TR/REC-DOM-Level-1/ 155 * 156 * Actually this had diverged a bit, and now XML_DOCUMENT_TYPE_NODE should 157 * be deprecated to use an XML_DTD_NODE. 158 */ 159 typedef enum { 160 XML_ELEMENT_NODE= 1, 161 XML_ATTRIBUTE_NODE= 2, 162 XML_TEXT_NODE= 3, 163 XML_CDATA_SECTION_NODE= 4, 164 XML_ENTITY_REF_NODE= 5, 165 XML_ENTITY_NODE= 6, 166 XML_PI_NODE= 7, 167 XML_COMMENT_NODE= 8, 168 XML_DOCUMENT_NODE= 9, 169 XML_DOCUMENT_TYPE_NODE= 10, 170 XML_DOCUMENT_FRAG_NODE= 11, 171 XML_NOTATION_NODE= 12, 172 XML_HTML_DOCUMENT_NODE= 13, 173 XML_DTD_NODE= 14, 174 XML_ELEMENT_DECL= 15, 175 XML_ATTRIBUTE_DECL= 16, 176 XML_ENTITY_DECL= 17, 177 XML_NAMESPACE_DECL= 18, 178 XML_XINCLUDE_START= 19, 179 XML_XINCLUDE_END= 20 180 #ifdef LIBXML_DOCB_ENABLED 181 ,XML_DOCB_DOCUMENT_NODE= 21 182 #endif 183 } xmlElementType; 184 185 186 /** 187 * xmlNotation: 188 * 189 * A DTD Notation definition. 190 */ 191 192 typedef struct _xmlNotation xmlNotation; 193 typedef xmlNotation *xmlNotationPtr; 194 struct _xmlNotation { 195 const xmlChar *name; /* Notation name */ 196 const xmlChar *PublicID; /* Public identifier, if any */ 197 const xmlChar *SystemID; /* System identifier, if any */ 198 }; 199 200 /** 201 * xmlAttributeType: 202 * 203 * A DTD Attribute type definition. 204 */ 205 206 typedef enum { 207 XML_ATTRIBUTE_CDATA = 1, 208 XML_ATTRIBUTE_ID, 209 XML_ATTRIBUTE_IDREF , 210 XML_ATTRIBUTE_IDREFS, 211 XML_ATTRIBUTE_ENTITY, 212 XML_ATTRIBUTE_ENTITIES, 213 XML_ATTRIBUTE_NMTOKEN, 214 XML_ATTRIBUTE_NMTOKENS, 215 XML_ATTRIBUTE_ENUMERATION, 216 XML_ATTRIBUTE_NOTATION 217 } xmlAttributeType; 218 219 /** 220 * xmlAttributeDefault: 221 * 222 * A DTD Attribute default definition. 223 */ 224 225 typedef enum { 226 XML_ATTRIBUTE_NONE = 1, 227 XML_ATTRIBUTE_REQUIRED, 228 XML_ATTRIBUTE_IMPLIED, 229 XML_ATTRIBUTE_FIXED 230 } xmlAttributeDefault; 231 232 /** 233 * xmlEnumeration: 234 * 235 * List structure used when there is an enumeration in DTDs. 236 */ 237 238 typedef struct _xmlEnumeration xmlEnumeration; 239 typedef xmlEnumeration *xmlEnumerationPtr; 240 struct _xmlEnumeration { 241 struct _xmlEnumeration *next; /* next one */ 242 const xmlChar *name; /* Enumeration name */ 243 }; 244 245 /** 246 * xmlAttribute: 247 * 248 * An Attribute declaration in a DTD. 249 */ 250 251 typedef struct _xmlAttribute xmlAttribute; 252 typedef xmlAttribute *xmlAttributePtr; 253 struct _xmlAttribute { 254 void *_private; /* application data */ 255 xmlElementType type; /* XML_ATTRIBUTE_DECL, must be second ! */ 256 const xmlChar *name; /* Attribute name */ 257 struct _xmlNode *children; /* NULL */ 258 struct _xmlNode *last; /* NULL */ 259 struct _xmlDtd *parent; /* -> DTD */ 260 struct _xmlNode *next; /* next sibling link */ 261 struct _xmlNode *prev; /* previous sibling link */ 262 struct _xmlDoc *doc; /* the containing document */ 263 264 struct _xmlAttribute *nexth; /* next in hash table */ 265 xmlAttributeType atype; /* The attribute type */ 266 xmlAttributeDefault def; /* the default */ 267 const xmlChar *defaultValue; /* or the default value */ 268 xmlEnumerationPtr tree; /* or the enumeration tree if any */ 269 const xmlChar *prefix; /* the namespace prefix if any */ 270 const xmlChar *elem; /* Element holding the attribute */ 271 }; 272 273 /** 274 * xmlElementContentType: 275 * 276 * Possible definitions of element content types. 277 */ 278 typedef enum { 279 XML_ELEMENT_CONTENT_PCDATA = 1, 280 XML_ELEMENT_CONTENT_ELEMENT, 281 XML_ELEMENT_CONTENT_SEQ, 282 XML_ELEMENT_CONTENT_OR 283 } xmlElementContentType; 284 285 /** 286 * xmlElementContentOccur: 287 * 288 * Possible definitions of element content occurrences. 289 */ 290 typedef enum { 291 XML_ELEMENT_CONTENT_ONCE = 1, 292 XML_ELEMENT_CONTENT_OPT, 293 XML_ELEMENT_CONTENT_MULT, 294 XML_ELEMENT_CONTENT_PLUS 295 } xmlElementContentOccur; 296 297 /** 298 * xmlElementContent: 299 * 300 * An XML Element content as stored after parsing an element definition 301 * in a DTD. 302 */ 303 304 typedef struct _xmlElementContent xmlElementContent; 305 typedef xmlElementContent *xmlElementContentPtr; 306 struct _xmlElementContent { 307 xmlElementContentType type; /* PCDATA, ELEMENT, SEQ or OR */ 308 xmlElementContentOccur ocur; /* ONCE, OPT, MULT or PLUS */ 309 const xmlChar *name; /* Element name */ 310 struct _xmlElementContent *c1; /* first child */ 311 struct _xmlElementContent *c2; /* second child */ 312 struct _xmlElementContent *parent; /* parent */ 313 const xmlChar *prefix; /* Namespace prefix */ 314 }; 315 316 /** 317 * xmlElementTypeVal: 318 * 319 * The different possibilities for an element content type. 320 */ 321 322 typedef enum { 323 XML_ELEMENT_TYPE_UNDEFINED = 0, 324 XML_ELEMENT_TYPE_EMPTY = 1, 325 XML_ELEMENT_TYPE_ANY, 326 XML_ELEMENT_TYPE_MIXED, 327 XML_ELEMENT_TYPE_ELEMENT 328 } xmlElementTypeVal; 329 330 #ifdef __cplusplus 331 } 332 #endif 333 #include <libxml/xmlregexp.h> 334 #ifdef __cplusplus 335 extern "C" { 336 #endif 337 338 /** 339 * xmlElement: 340 * 341 * An XML Element declaration from a DTD. 342 */ 343 344 typedef struct _xmlElement xmlElement; 345 typedef xmlElement *xmlElementPtr; 346 struct _xmlElement { 347 void *_private; /* application data */ 348 xmlElementType type; /* XML_ELEMENT_DECL, must be second ! */ 349 const xmlChar *name; /* Element name */ 350 struct _xmlNode *children; /* NULL */ 351 struct _xmlNode *last; /* NULL */ 352 struct _xmlDtd *parent; /* -> DTD */ 353 struct _xmlNode *next; /* next sibling link */ 354 struct _xmlNode *prev; /* previous sibling link */ 355 struct _xmlDoc *doc; /* the containing document */ 356 357 xmlElementTypeVal etype; /* The type */ 358 xmlElementContentPtr content; /* the allowed element content */ 359 xmlAttributePtr attributes; /* List of the declared attributes */ 360 const xmlChar *prefix; /* the namespace prefix if any */ 361 #ifdef LIBXML_REGEXP_ENABLED 362 xmlRegexpPtr contModel; /* the validating regexp */ 363 #else 364 void *contModel; 365 #endif 366 }; 367 368 369 /** 370 * XML_LOCAL_NAMESPACE: 371 * 372 * A namespace declaration node. 373 */ 374 #define XML_LOCAL_NAMESPACE XML_NAMESPACE_DECL 375 typedef xmlElementType xmlNsType; 376 377 /** 378 * xmlNs: 379 * 380 * An XML namespace. 381 * Note that prefix == NULL is valid, it defines the default namespace 382 * within the subtree (until overridden). 383 * 384 * xmlNsType is unified with xmlElementType. 385 */ 386 387 typedef struct _xmlNs xmlNs; 388 typedef xmlNs *xmlNsPtr; 389 struct _xmlNs { 390 struct _xmlNs *next; /* next Ns link for this node */ 391 xmlNsType type; /* global or local */ 392 const xmlChar *href; /* URL for the namespace */ 393 const xmlChar *prefix; /* prefix for the namespace */ 394 void *_private; /* application data */ 395 struct _xmlDoc *context; /* normally an xmlDoc */ 396 }; 397 398 /** 399 * xmlDtd: 400 * 401 * An XML DTD, as defined by <!DOCTYPE ... There is actually one for 402 * the internal subset and for the external subset. 403 */ 404 typedef struct _xmlDtd xmlDtd; 405 typedef xmlDtd *xmlDtdPtr; 406 struct _xmlDtd { 407 void *_private; /* application data */ 408 xmlElementType type; /* XML_DTD_NODE, must be second ! */ 409 const xmlChar *name; /* Name of the DTD */ 410 struct _xmlNode *children; /* the value of the property link */ 411 struct _xmlNode *last; /* last child link */ 412 struct _xmlDoc *parent; /* child->parent link */ 413 struct _xmlNode *next; /* next sibling link */ 414 struct _xmlNode *prev; /* previous sibling link */ 415 struct _xmlDoc *doc; /* the containing document */ 416 417 /* End of common part */ 418 void *notations; /* Hash table for notations if any */ 419 void *elements; /* Hash table for elements if any */ 420 void *attributes; /* Hash table for attributes if any */ 421 void *entities; /* Hash table for entities if any */ 422 const xmlChar *ExternalID; /* External identifier for PUBLIC DTD */ 423 const xmlChar *SystemID; /* URI for a SYSTEM or PUBLIC DTD */ 424 void *pentities; /* Hash table for param entities if any */ 425 }; 426 427 /** 428 * xmlAttr: 429 * 430 * An attribute on an XML node. 431 */ 432 typedef struct _xmlAttr xmlAttr; 433 typedef xmlAttr *xmlAttrPtr; 434 struct _xmlAttr { 435 void *_private; /* application data */ 436 xmlElementType type; /* XML_ATTRIBUTE_NODE, must be second ! */ 437 const xmlChar *name; /* the name of the property */ 438 struct _xmlNode *children; /* the value of the property */ 439 struct _xmlNode *last; /* NULL */ 440 struct _xmlNode *parent; /* child->parent link */ 441 struct _xmlAttr *next; /* next sibling link */ 442 struct _xmlAttr *prev; /* previous sibling link */ 443 struct _xmlDoc *doc; /* the containing document */ 444 xmlNs *ns; /* pointer to the associated namespace */ 445 xmlAttributeType atype; /* the attribute type if validating */ 446 void *psvi; /* for type/PSVI informations */ 447 }; 448 449 /** 450 * xmlID: 451 * 452 * An XML ID instance. 453 */ 454 455 typedef struct _xmlID xmlID; 456 typedef xmlID *xmlIDPtr; 457 struct _xmlID { 458 struct _xmlID *next; /* next ID */ 459 const xmlChar *value; /* The ID name */ 460 xmlAttrPtr attr; /* The attribute holding it */ 461 const xmlChar *name; /* The attribute if attr is not available */ 462 int lineno; /* The line number if attr is not available */ 463 struct _xmlDoc *doc; /* The document holding the ID */ 464 }; 465 466 /** 467 * xmlRef: 468 * 469 * An XML IDREF instance. 470 */ 471 472 typedef struct _xmlRef xmlRef; 473 typedef xmlRef *xmlRefPtr; 474 struct _xmlRef { 475 struct _xmlRef *next; /* next Ref */ 476 const xmlChar *value; /* The Ref name */ 477 xmlAttrPtr attr; /* The attribute holding it */ 478 const xmlChar *name; /* The attribute if attr is not available */ 479 int lineno; /* The line number if attr is not available */ 480 }; 481 482 /** 483 * xmlNode: 484 * 485 * A node in an XML tree. 486 */ 487 typedef struct _xmlNode xmlNode; 488 typedef xmlNode *xmlNodePtr; 489 struct _xmlNode { 490 void *_private; /* application data */ 491 xmlElementType type; /* type number, must be second ! */ 492 const xmlChar *name; /* the name of the node, or the entity */ 493 struct _xmlNode *children; /* parent->childs link */ 494 struct _xmlNode *last; /* last child link */ 495 struct _xmlNode *parent; /* child->parent link */ 496 struct _xmlNode *next; /* next sibling link */ 497 struct _xmlNode *prev; /* previous sibling link */ 498 struct _xmlDoc *doc; /* the containing document */ 499 500 /* End of common part */ 501 xmlNs *ns; /* pointer to the associated namespace */ 502 xmlChar *content; /* the content */ 503 struct _xmlAttr *properties;/* properties list */ 504 xmlNs *nsDef; /* namespace definitions on this node */ 505 void *psvi; /* for type/PSVI informations */ 506 unsigned short line; /* line number */ 507 unsigned short extra; /* extra data for XPath/XSLT */ 508 }; 509 510 /** 511 * XML_GET_CONTENT: 512 * 513 * Macro to extract the content pointer of a node. 514 */ 515 #define XML_GET_CONTENT(n) \ 516 ((n)->type == XML_ELEMENT_NODE ? NULL : (n)->content) 517 518 /** 519 * XML_GET_LINE: 520 * 521 * Macro to extract the line number of an element node. 522 */ 523 #define XML_GET_LINE(n) \ 524 (xmlGetLineNo(n)) 525 526 /** 527 * xmlDocProperty 528 * 529 * Set of properties of the document as found by the parser 530 * Some of them are linked to similary named xmlParserOption 531 */ 532 typedef enum { 533 XML_DOC_WELLFORMED = 1<<0, /* document is XML well formed */ 534 XML_DOC_NSVALID = 1<<1, /* document is Namespace valid */ 535 XML_DOC_OLD10 = 1<<2, /* parsed with old XML-1.0 parser */ 536 XML_DOC_DTDVALID = 1<<3, /* DTD validation was successful */ 537 XML_DOC_XINCLUDE = 1<<4, /* XInclude substitution was done */ 538 XML_DOC_USERBUILT = 1<<5, /* Document was built using the API 539 and not by parsing an instance */ 540 XML_DOC_INTERNAL = 1<<6, /* built for internal processing */ 541 XML_DOC_HTML = 1<<7 /* parsed or built HTML document */ 542 } xmlDocProperties; 543 544 /** 545 * xmlDoc: 546 * 547 * An XML document. 548 */ 549 typedef struct _xmlDoc xmlDoc; 550 typedef xmlDoc *xmlDocPtr; 551 struct _xmlDoc { 552 void *_private; /* application data */ 553 xmlElementType type; /* XML_DOCUMENT_NODE, must be second ! */ 554 char *name; /* name/filename/URI of the document */ 555 struct _xmlNode *children; /* the document tree */ 556 struct _xmlNode *last; /* last child link */ 557 struct _xmlNode *parent; /* child->parent link */ 558 struct _xmlNode *next; /* next sibling link */ 559 struct _xmlNode *prev; /* previous sibling link */ 560 struct _xmlDoc *doc; /* autoreference to itself */ 561 562 /* End of common part */ 563 int compression;/* level of zlib compression */ 564 int standalone; /* standalone document (no external refs) 565 1 if standalone="yes" 566 0 if standalone="no" 567 -1 if there is no XML declaration 568 -2 if there is an XML declaration, but no 569 standalone attribute was specified */ 570 struct _xmlDtd *intSubset; /* the document internal subset */ 571 struct _xmlDtd *extSubset; /* the document external subset */ 572 struct _xmlNs *oldNs; /* Global namespace, the old way */ 573 const xmlChar *version; /* the XML version string */ 574 const xmlChar *encoding; /* external initial encoding, if any */ 575 void *ids; /* Hash table for ID attributes if any */ 576 void *refs; /* Hash table for IDREFs attributes if any */ 577 const xmlChar *URL; /* The URI for that document */ 578 int charset; /* encoding of the in-memory content 579 actually an xmlCharEncoding */ 580 struct _xmlDict *dict; /* dict used to allocate names or NULL */ 581 void *psvi; /* for type/PSVI informations */ 582 int parseFlags; /* set of xmlParserOption used to parse the 583 document */ 584 int properties; /* set of xmlDocProperties for this document 585 set at the end of parsing */ 586 }; 587 588 589 typedef struct _xmlDOMWrapCtxt xmlDOMWrapCtxt; 590 typedef xmlDOMWrapCtxt *xmlDOMWrapCtxtPtr; 591 592 /** 593 * xmlDOMWrapAcquireNsFunction: 594 * @ctxt: a DOM wrapper context 595 * @node: the context node (element or attribute) 596 * @nsName: the requested namespace name 597 * @nsPrefix: the requested namespace prefix 598 * 599 * A function called to acquire namespaces (xmlNs) from the wrapper. 600 * 601 * Returns an xmlNsPtr or NULL in case of an error. 602 */ 603 typedef xmlNsPtr (*xmlDOMWrapAcquireNsFunction) (xmlDOMWrapCtxtPtr ctxt, 604 xmlNodePtr node, 605 const xmlChar *nsName, 606 const xmlChar *nsPrefix); 607 608 /** 609 * xmlDOMWrapCtxt: 610 * 611 * Context for DOM wrapper-operations. 612 */ 613 struct _xmlDOMWrapCtxt { 614 void * _private; 615 /* 616 * The type of this context, just in case we need specialized 617 * contexts in the future. 618 */ 619 int type; 620 /* 621 * Internal namespace map used for various operations. 622 */ 623 void * namespaceMap; 624 /* 625 * Use this one to acquire an xmlNsPtr intended for node->ns. 626 * (Note that this is not intended for elem->nsDef). 627 */ 628 xmlDOMWrapAcquireNsFunction getNsForNodeFunc; 629 }; 630 631 /** 632 * xmlChildrenNode: 633 * 634 * Macro for compatibility naming layer with libxml1. Maps 635 * to "children." 636 */ 637 #ifndef xmlChildrenNode 638 #define xmlChildrenNode children 639 #endif 640 641 /** 642 * xmlRootNode: 643 * 644 * Macro for compatibility naming layer with libxml1. Maps 645 * to "children". 646 */ 647 #ifndef xmlRootNode 648 #define xmlRootNode children 649 #endif 650 651 /* 652 * Variables. 653 */ 654 655 /* 656 * Some helper functions 657 */ 658 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || \ 659 defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || \ 660 defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || \ 661 defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || \ 662 defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED) 663 XMLPUBFUN int XMLCALL 664 xmlValidateNCName (const xmlChar *value, 665 int space); 666 #endif 667 668 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) 669 XMLPUBFUN int XMLCALL 670 xmlValidateQName (const xmlChar *value, 671 int space); 672 XMLPUBFUN int XMLCALL 673 xmlValidateName (const xmlChar *value, 674 int space); 675 XMLPUBFUN int XMLCALL 676 xmlValidateNMToken (const xmlChar *value, 677 int space); 678 #endif 679 680 XMLPUBFUN xmlChar * XMLCALL 681 xmlBuildQName (const xmlChar *ncname, 682 const xmlChar *prefix, 683 xmlChar *memory, 684 int len); 685 XMLPUBFUN xmlChar * XMLCALL 686 xmlSplitQName2 (const xmlChar *name, 687 xmlChar **prefix); 688 XMLPUBFUN const xmlChar * XMLCALL 689 xmlSplitQName3 (const xmlChar *name, 690 int *len); 691 692 /* 693 * Handling Buffers, the old ones see @xmlBuf for the new ones. 694 */ 695 696 XMLPUBFUN void XMLCALL 697 xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme); 698 XMLPUBFUN xmlBufferAllocationScheme XMLCALL 699 xmlGetBufferAllocationScheme(void); 700 701 XMLPUBFUN xmlBufferPtr XMLCALL 702 xmlBufferCreate (void); 703 XMLPUBFUN xmlBufferPtr XMLCALL 704 xmlBufferCreateSize (size_t size); 705 XMLPUBFUN xmlBufferPtr XMLCALL 706 xmlBufferCreateStatic (void *mem, 707 size_t size); 708 XMLPUBFUN int XMLCALL 709 xmlBufferResize (xmlBufferPtr buf, 710 unsigned int size); 711 XMLPUBFUN void XMLCALL 712 xmlBufferFree (xmlBufferPtr buf); 713 XMLPUBFUN int XMLCALL 714 xmlBufferDump (FILE *file, 715 xmlBufferPtr buf); 716 XMLPUBFUN int XMLCALL 717 xmlBufferAdd (xmlBufferPtr buf, 718 const xmlChar *str, 719 int len); 720 XMLPUBFUN int XMLCALL 721 xmlBufferAddHead (xmlBufferPtr buf, 722 const xmlChar *str, 723 int len); 724 XMLPUBFUN int XMLCALL 725 xmlBufferCat (xmlBufferPtr buf, 726 const xmlChar *str); 727 XMLPUBFUN int XMLCALL 728 xmlBufferCCat (xmlBufferPtr buf, 729 const char *str); 730 XMLPUBFUN int XMLCALL 731 xmlBufferShrink (xmlBufferPtr buf, 732 unsigned int len); 733 XMLPUBFUN int XMLCALL 734 xmlBufferGrow (xmlBufferPtr buf, 735 unsigned int len); 736 XMLPUBFUN void XMLCALL 737 xmlBufferEmpty (xmlBufferPtr buf); 738 XMLPUBFUN const xmlChar* XMLCALL 739 xmlBufferContent (const xmlBuffer *buf); 740 XMLPUBFUN xmlChar* XMLCALL 741 xmlBufferDetach (xmlBufferPtr buf); 742 XMLPUBFUN void XMLCALL 743 xmlBufferSetAllocationScheme(xmlBufferPtr buf, 744 xmlBufferAllocationScheme scheme); 745 XMLPUBFUN int XMLCALL 746 xmlBufferLength (const xmlBuffer *buf); 747 748 /* 749 * Creating/freeing new structures. 750 */ 751 XMLPUBFUN xmlDtdPtr XMLCALL 752 xmlCreateIntSubset (xmlDocPtr doc, 753 const xmlChar *name, 754 const xmlChar *ExternalID, 755 const xmlChar *SystemID); 756 XMLPUBFUN xmlDtdPtr XMLCALL 757 xmlNewDtd (xmlDocPtr doc, 758 const xmlChar *name, 759 const xmlChar *ExternalID, 760 const xmlChar *SystemID); 761 XMLPUBFUN xmlDtdPtr XMLCALL 762 xmlGetIntSubset (const xmlDoc *doc); 763 XMLPUBFUN void XMLCALL 764 xmlFreeDtd (xmlDtdPtr cur); 765 #ifdef LIBXML_LEGACY_ENABLED 766 XMLPUBFUN xmlNsPtr XMLCALL 767 xmlNewGlobalNs (xmlDocPtr doc, 768 const xmlChar *href, 769 const xmlChar *prefix); 770 #endif /* LIBXML_LEGACY_ENABLED */ 771 XMLPUBFUN xmlNsPtr XMLCALL 772 xmlNewNs (xmlNodePtr node, 773 const xmlChar *href, 774 const xmlChar *prefix); 775 XMLPUBFUN void XMLCALL 776 xmlFreeNs (xmlNsPtr cur); 777 XMLPUBFUN void XMLCALL 778 xmlFreeNsList (xmlNsPtr cur); 779 XMLPUBFUN xmlDocPtr XMLCALL 780 xmlNewDoc (const xmlChar *version); 781 XMLPUBFUN void XMLCALL 782 xmlFreeDoc (xmlDocPtr cur); 783 XMLPUBFUN xmlAttrPtr XMLCALL 784 xmlNewDocProp (xmlDocPtr doc, 785 const xmlChar *name, 786 const xmlChar *value); 787 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \ 788 defined(LIBXML_SCHEMAS_ENABLED) 789 XMLPUBFUN xmlAttrPtr XMLCALL 790 xmlNewProp (xmlNodePtr node, 791 const xmlChar *name, 792 const xmlChar *value); 793 #endif 794 XMLPUBFUN xmlAttrPtr XMLCALL 795 xmlNewNsProp (xmlNodePtr node, 796 xmlNsPtr ns, 797 const xmlChar *name, 798 const xmlChar *value); 799 XMLPUBFUN xmlAttrPtr XMLCALL 800 xmlNewNsPropEatName (xmlNodePtr node, 801 xmlNsPtr ns, 802 xmlChar *name, 803 const xmlChar *value); 804 XMLPUBFUN void XMLCALL 805 xmlFreePropList (xmlAttrPtr cur); 806 XMLPUBFUN void XMLCALL 807 xmlFreeProp (xmlAttrPtr cur); 808 XMLPUBFUN xmlAttrPtr XMLCALL 809 xmlCopyProp (xmlNodePtr target, 810 xmlAttrPtr cur); 811 XMLPUBFUN xmlAttrPtr XMLCALL 812 xmlCopyPropList (xmlNodePtr target, 813 xmlAttrPtr cur); 814 #ifdef LIBXML_TREE_ENABLED 815 XMLPUBFUN xmlDtdPtr XMLCALL 816 xmlCopyDtd (xmlDtdPtr dtd); 817 #endif /* LIBXML_TREE_ENABLED */ 818 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) 819 XMLPUBFUN xmlDocPtr XMLCALL 820 xmlCopyDoc (xmlDocPtr doc, 821 int recursive); 822 #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */ 823 /* 824 * Creating new nodes. 825 */ 826 XMLPUBFUN xmlNodePtr XMLCALL 827 xmlNewDocNode (xmlDocPtr doc, 828 xmlNsPtr ns, 829 const xmlChar *name, 830 const xmlChar *content); 831 XMLPUBFUN xmlNodePtr XMLCALL 832 xmlNewDocNodeEatName (xmlDocPtr doc, 833 xmlNsPtr ns, 834 xmlChar *name, 835 const xmlChar *content); 836 XMLPUBFUN xmlNodePtr XMLCALL 837 xmlNewNode (xmlNsPtr ns, 838 const xmlChar *name); 839 XMLPUBFUN xmlNodePtr XMLCALL 840 xmlNewNodeEatName (xmlNsPtr ns, 841 xmlChar *name); 842 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) 843 XMLPUBFUN xmlNodePtr XMLCALL 844 xmlNewChild (xmlNodePtr parent, 845 xmlNsPtr ns, 846 const xmlChar *name, 847 const xmlChar *content); 848 #endif 849 XMLPUBFUN xmlNodePtr XMLCALL 850 xmlNewDocText (const xmlDoc *doc, 851 const xmlChar *content); 852 XMLPUBFUN xmlNodePtr XMLCALL 853 xmlNewText (const xmlChar *content); 854 XMLPUBFUN xmlNodePtr XMLCALL 855 xmlNewDocPI (xmlDocPtr doc, 856 const xmlChar *name, 857 const xmlChar *content); 858 XMLPUBFUN xmlNodePtr XMLCALL 859 xmlNewPI (const xmlChar *name, 860 const xmlChar *content); 861 XMLPUBFUN xmlNodePtr XMLCALL 862 xmlNewDocTextLen (xmlDocPtr doc, 863 const xmlChar *content, 864 int len); 865 XMLPUBFUN xmlNodePtr XMLCALL 866 xmlNewTextLen (const xmlChar *content, 867 int len); 868 XMLPUBFUN xmlNodePtr XMLCALL 869 xmlNewDocComment (xmlDocPtr doc, 870 const xmlChar *content); 871 XMLPUBFUN xmlNodePtr XMLCALL 872 xmlNewComment (const xmlChar *content); 873 XMLPUBFUN xmlNodePtr XMLCALL 874 xmlNewCDataBlock (xmlDocPtr doc, 875 const xmlChar *content, 876 int len); 877 XMLPUBFUN xmlNodePtr XMLCALL 878 xmlNewCharRef (xmlDocPtr doc, 879 const xmlChar *name); 880 XMLPUBFUN xmlNodePtr XMLCALL 881 xmlNewReference (const xmlDoc *doc, 882 const xmlChar *name); 883 XMLPUBFUN xmlNodePtr XMLCALL 884 xmlCopyNode (xmlNodePtr node, 885 int recursive); 886 XMLPUBFUN xmlNodePtr XMLCALL 887 xmlDocCopyNode (xmlNodePtr node, 888 xmlDocPtr doc, 889 int recursive); 890 XMLPUBFUN xmlNodePtr XMLCALL 891 xmlDocCopyNodeList (xmlDocPtr doc, 892 xmlNodePtr node); 893 XMLPUBFUN xmlNodePtr XMLCALL 894 xmlCopyNodeList (xmlNodePtr node); 895 #ifdef LIBXML_TREE_ENABLED 896 XMLPUBFUN xmlNodePtr XMLCALL 897 xmlNewTextChild (xmlNodePtr parent, 898 xmlNsPtr ns, 899 const xmlChar *name, 900 const xmlChar *content); 901 XMLPUBFUN xmlNodePtr XMLCALL 902 xmlNewDocRawNode (xmlDocPtr doc, 903 xmlNsPtr ns, 904 const xmlChar *name, 905 const xmlChar *content); 906 XMLPUBFUN xmlNodePtr XMLCALL 907 xmlNewDocFragment (xmlDocPtr doc); 908 #endif /* LIBXML_TREE_ENABLED */ 909 910 /* 911 * Navigating. 912 */ 913 XMLPUBFUN long XMLCALL 914 xmlGetLineNo (const xmlNode *node); 915 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) 916 XMLPUBFUN xmlChar * XMLCALL 917 xmlGetNodePath (const xmlNode *node); 918 #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) */ 919 XMLPUBFUN xmlNodePtr XMLCALL 920 xmlDocGetRootElement (const xmlDoc *doc); 921 XMLPUBFUN xmlNodePtr XMLCALL 922 xmlGetLastChild (const xmlNode *parent); 923 XMLPUBFUN int XMLCALL 924 xmlNodeIsText (const xmlNode *node); 925 XMLPUBFUN int XMLCALL 926 xmlIsBlankNode (const xmlNode *node); 927 928 /* 929 * Changing the structure. 930 */ 931 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) 932 XMLPUBFUN xmlNodePtr XMLCALL 933 xmlDocSetRootElement (xmlDocPtr doc, 934 xmlNodePtr root); 935 #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */ 936 #ifdef LIBXML_TREE_ENABLED 937 XMLPUBFUN void XMLCALL 938 xmlNodeSetName (xmlNodePtr cur, 939 const xmlChar *name); 940 #endif /* LIBXML_TREE_ENABLED */ 941 XMLPUBFUN xmlNodePtr XMLCALL 942 xmlAddChild (xmlNodePtr parent, 943 xmlNodePtr cur); 944 XMLPUBFUN xmlNodePtr XMLCALL 945 xmlAddChildList (xmlNodePtr parent, 946 xmlNodePtr cur); 947 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) 948 XMLPUBFUN xmlNodePtr XMLCALL 949 xmlReplaceNode (xmlNodePtr old, 950 xmlNodePtr cur); 951 #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */ 952 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \ 953 defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) 954 XMLPUBFUN xmlNodePtr XMLCALL 955 xmlAddPrevSibling (xmlNodePtr cur, 956 xmlNodePtr elem); 957 #endif /* LIBXML_TREE_ENABLED || LIBXML_HTML_ENABLED || LIBXML_SCHEMAS_ENABLED */ 958 XMLPUBFUN xmlNodePtr XMLCALL 959 xmlAddSibling (xmlNodePtr cur, 960 xmlNodePtr elem); 961 XMLPUBFUN xmlNodePtr XMLCALL 962 xmlAddNextSibling (xmlNodePtr cur, 963 xmlNodePtr elem); 964 XMLPUBFUN void XMLCALL 965 xmlUnlinkNode (xmlNodePtr cur); 966 XMLPUBFUN xmlNodePtr XMLCALL 967 xmlTextMerge (xmlNodePtr first, 968 xmlNodePtr second); 969 XMLPUBFUN int XMLCALL 970 xmlTextConcat (xmlNodePtr node, 971 const xmlChar *content, 972 int len); 973 XMLPUBFUN void XMLCALL 974 xmlFreeNodeList (xmlNodePtr cur); 975 XMLPUBFUN void XMLCALL 976 xmlFreeNode (xmlNodePtr cur); 977 XMLPUBFUN void XMLCALL 978 xmlSetTreeDoc (xmlNodePtr tree, 979 xmlDocPtr doc); 980 XMLPUBFUN void XMLCALL 981 xmlSetListDoc (xmlNodePtr list, 982 xmlDocPtr doc); 983 /* 984 * Namespaces. 985 */ 986 XMLPUBFUN xmlNsPtr XMLCALL 987 xmlSearchNs (xmlDocPtr doc, 988 xmlNodePtr node, 989 const xmlChar *nameSpace); 990 XMLPUBFUN xmlNsPtr XMLCALL 991 xmlSearchNsByHref (xmlDocPtr doc, 992 xmlNodePtr node, 993 const xmlChar *href); 994 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || \ 995 defined(LIBXML_SCHEMAS_ENABLED) 996 XMLPUBFUN xmlNsPtr * XMLCALL 997 xmlGetNsList (const xmlDoc *doc, 998 const xmlNode *node); 999 #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) */ 1000 1001 XMLPUBFUN void XMLCALL 1002 xmlSetNs (xmlNodePtr node, 1003 xmlNsPtr ns); 1004 XMLPUBFUN xmlNsPtr XMLCALL 1005 xmlCopyNamespace (xmlNsPtr cur); 1006 XMLPUBFUN xmlNsPtr XMLCALL 1007 xmlCopyNamespaceList (xmlNsPtr cur); 1008 1009 /* 1010 * Changing the content. 1011 */ 1012 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || \ 1013 defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) 1014 XMLPUBFUN xmlAttrPtr XMLCALL 1015 xmlSetProp (xmlNodePtr node, 1016 const xmlChar *name, 1017 const xmlChar *value); 1018 XMLPUBFUN xmlAttrPtr XMLCALL 1019 xmlSetNsProp (xmlNodePtr node, 1020 xmlNsPtr ns, 1021 const xmlChar *name, 1022 const xmlChar *value); 1023 #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || \ 1024 defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) */ 1025 XMLPUBFUN xmlChar * XMLCALL 1026 xmlGetNoNsProp (const xmlNode *node, 1027 const xmlChar *name); 1028 XMLPUBFUN xmlChar * XMLCALL 1029 xmlGetProp (const xmlNode *node, 1030 const xmlChar *name); 1031 XMLPUBFUN xmlAttrPtr XMLCALL 1032 xmlHasProp (const xmlNode *node, 1033 const xmlChar *name); 1034 XMLPUBFUN xmlAttrPtr XMLCALL 1035 xmlHasNsProp (const xmlNode *node, 1036 const xmlChar *name, 1037 const xmlChar *nameSpace); 1038 XMLPUBFUN xmlChar * XMLCALL 1039 xmlGetNsProp (const xmlNode *node, 1040 const xmlChar *name, 1041 const xmlChar *nameSpace); 1042 XMLPUBFUN xmlNodePtr XMLCALL 1043 xmlStringGetNodeList (const xmlDoc *doc, 1044 const xmlChar *value); 1045 XMLPUBFUN xmlNodePtr XMLCALL 1046 xmlStringLenGetNodeList (const xmlDoc *doc, 1047 const xmlChar *value, 1048 int len); 1049 XMLPUBFUN xmlChar * XMLCALL 1050 xmlNodeListGetString (xmlDocPtr doc, 1051 const xmlNode *list, 1052 int inLine); 1053 #ifdef LIBXML_TREE_ENABLED 1054 XMLPUBFUN xmlChar * XMLCALL 1055 xmlNodeListGetRawString (const xmlDoc *doc, 1056 const xmlNode *list, 1057 int inLine); 1058 #endif /* LIBXML_TREE_ENABLED */ 1059 XMLPUBFUN void XMLCALL 1060 xmlNodeSetContent (xmlNodePtr cur, 1061 const xmlChar *content); 1062 #ifdef LIBXML_TREE_ENABLED 1063 XMLPUBFUN void XMLCALL 1064 xmlNodeSetContentLen (xmlNodePtr cur, 1065 const xmlChar *content, 1066 int len); 1067 #endif /* LIBXML_TREE_ENABLED */ 1068 XMLPUBFUN void XMLCALL 1069 xmlNodeAddContent (xmlNodePtr cur, 1070 const xmlChar *content); 1071 XMLPUBFUN void XMLCALL 1072 xmlNodeAddContentLen (xmlNodePtr cur, 1073 const xmlChar *content, 1074 int len); 1075 XMLPUBFUN xmlChar * XMLCALL 1076 xmlNodeGetContent (const xmlNode *cur); 1077 1078 XMLPUBFUN int XMLCALL 1079 xmlNodeBufGetContent (xmlBufferPtr buffer, 1080 const xmlNode *cur); 1081 XMLPUBFUN int XMLCALL 1082 xmlBufGetNodeContent (xmlBufPtr buf, 1083 const xmlNode *cur); 1084 1085 XMLPUBFUN xmlChar * XMLCALL 1086 xmlNodeGetLang (const xmlNode *cur); 1087 XMLPUBFUN int XMLCALL 1088 xmlNodeGetSpacePreserve (const xmlNode *cur); 1089 #ifdef LIBXML_TREE_ENABLED 1090 XMLPUBFUN void XMLCALL 1091 xmlNodeSetLang (xmlNodePtr cur, 1092 const xmlChar *lang); 1093 XMLPUBFUN void XMLCALL 1094 xmlNodeSetSpacePreserve (xmlNodePtr cur, 1095 int val); 1096 #endif /* LIBXML_TREE_ENABLED */ 1097 XMLPUBFUN xmlChar * XMLCALL 1098 xmlNodeGetBase (const xmlDoc *doc, 1099 const xmlNode *cur); 1100 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) 1101 XMLPUBFUN void XMLCALL 1102 xmlNodeSetBase (xmlNodePtr cur, 1103 const xmlChar *uri); 1104 #endif 1105 1106 /* 1107 * Removing content. 1108 */ 1109 XMLPUBFUN int XMLCALL 1110 xmlRemoveProp (xmlAttrPtr cur); 1111 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) 1112 XMLPUBFUN int XMLCALL 1113 xmlUnsetNsProp (xmlNodePtr node, 1114 xmlNsPtr ns, 1115 const xmlChar *name); 1116 XMLPUBFUN int XMLCALL 1117 xmlUnsetProp (xmlNodePtr node, 1118 const xmlChar *name); 1119 #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */ 1120 1121 /* 1122 * Internal, don't use. 1123 */ 1124 XMLPUBFUN void XMLCALL 1125 xmlBufferWriteCHAR (xmlBufferPtr buf, 1126 const xmlChar *string); 1127 XMLPUBFUN void XMLCALL 1128 xmlBufferWriteChar (xmlBufferPtr buf, 1129 const char *string); 1130 XMLPUBFUN void XMLCALL 1131 xmlBufferWriteQuotedString(xmlBufferPtr buf, 1132 const xmlChar *string); 1133 1134 #ifdef LIBXML_OUTPUT_ENABLED 1135 XMLPUBFUN void xmlAttrSerializeTxtContent(xmlBufferPtr buf, 1136 xmlDocPtr doc, 1137 xmlAttrPtr attr, 1138 const xmlChar *string); 1139 #endif /* LIBXML_OUTPUT_ENABLED */ 1140 1141 #ifdef LIBXML_TREE_ENABLED 1142 /* 1143 * Namespace handling. 1144 */ 1145 XMLPUBFUN int XMLCALL 1146 xmlReconciliateNs (xmlDocPtr doc, 1147 xmlNodePtr tree); 1148 #endif 1149 1150 #ifdef LIBXML_OUTPUT_ENABLED 1151 /* 1152 * Saving. 1153 */ 1154 XMLPUBFUN void XMLCALL 1155 xmlDocDumpFormatMemory (xmlDocPtr cur, 1156 xmlChar **mem, 1157 int *size, 1158 int format); 1159 XMLPUBFUN void XMLCALL 1160 xmlDocDumpMemory (xmlDocPtr cur, 1161 xmlChar **mem, 1162 int *size); 1163 XMLPUBFUN void XMLCALL 1164 xmlDocDumpMemoryEnc (xmlDocPtr out_doc, 1165 xmlChar **doc_txt_ptr, 1166 int * doc_txt_len, 1167 const char *txt_encoding); 1168 XMLPUBFUN void XMLCALL 1169 xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc, 1170 xmlChar **doc_txt_ptr, 1171 int * doc_txt_len, 1172 const char *txt_encoding, 1173 int format); 1174 XMLPUBFUN int XMLCALL 1175 xmlDocFormatDump (FILE *f, 1176 xmlDocPtr cur, 1177 int format); 1178 XMLPUBFUN int XMLCALL 1179 xmlDocDump (FILE *f, 1180 xmlDocPtr cur); 1181 XMLPUBFUN void XMLCALL 1182 xmlElemDump (FILE *f, 1183 xmlDocPtr doc, 1184 xmlNodePtr cur); 1185 XMLPUBFUN int XMLCALL 1186 xmlSaveFile (const char *filename, 1187 xmlDocPtr cur); 1188 XMLPUBFUN int XMLCALL 1189 xmlSaveFormatFile (const char *filename, 1190 xmlDocPtr cur, 1191 int format); 1192 XMLPUBFUN size_t XMLCALL 1193 xmlBufNodeDump (xmlBufPtr buf, 1194 xmlDocPtr doc, 1195 xmlNodePtr cur, 1196 int level, 1197 int format); 1198 XMLPUBFUN int XMLCALL 1199 xmlNodeDump (xmlBufferPtr buf, 1200 xmlDocPtr doc, 1201 xmlNodePtr cur, 1202 int level, 1203 int format); 1204 1205 XMLPUBFUN int XMLCALL 1206 xmlSaveFileTo (xmlOutputBufferPtr buf, 1207 xmlDocPtr cur, 1208 const char *encoding); 1209 XMLPUBFUN int XMLCALL 1210 xmlSaveFormatFileTo (xmlOutputBufferPtr buf, 1211 xmlDocPtr cur, 1212 const char *encoding, 1213 int format); 1214 XMLPUBFUN void XMLCALL 1215 xmlNodeDumpOutput (xmlOutputBufferPtr buf, 1216 xmlDocPtr doc, 1217 xmlNodePtr cur, 1218 int level, 1219 int format, 1220 const char *encoding); 1221 1222 XMLPUBFUN int XMLCALL 1223 xmlSaveFormatFileEnc (const char *filename, 1224 xmlDocPtr cur, 1225 const char *encoding, 1226 int format); 1227 1228 XMLPUBFUN int XMLCALL 1229 xmlSaveFileEnc (const char *filename, 1230 xmlDocPtr cur, 1231 const char *encoding); 1232 1233 #endif /* LIBXML_OUTPUT_ENABLED */ 1234 /* 1235 * XHTML 1236 */ 1237 XMLPUBFUN int XMLCALL 1238 xmlIsXHTML (const xmlChar *systemID, 1239 const xmlChar *publicID); 1240 1241 /* 1242 * Compression. 1243 */ 1244 XMLPUBFUN int XMLCALL 1245 xmlGetDocCompressMode (const xmlDoc *doc); 1246 XMLPUBFUN void XMLCALL 1247 xmlSetDocCompressMode (xmlDocPtr doc, 1248 int mode); 1249 XMLPUBFUN int XMLCALL 1250 xmlGetCompressMode (void); 1251 XMLPUBFUN void XMLCALL 1252 xmlSetCompressMode (int mode); 1253 1254 /* 1255 * DOM-wrapper helper functions. 1256 */ 1257 XMLPUBFUN xmlDOMWrapCtxtPtr XMLCALL 1258 xmlDOMWrapNewCtxt (void); 1259 XMLPUBFUN void XMLCALL 1260 xmlDOMWrapFreeCtxt (xmlDOMWrapCtxtPtr ctxt); 1261 XMLPUBFUN int XMLCALL 1262 xmlDOMWrapReconcileNamespaces(xmlDOMWrapCtxtPtr ctxt, 1263 xmlNodePtr elem, 1264 int options); 1265 XMLPUBFUN int XMLCALL 1266 xmlDOMWrapAdoptNode (xmlDOMWrapCtxtPtr ctxt, 1267 xmlDocPtr sourceDoc, 1268 xmlNodePtr node, 1269 xmlDocPtr destDoc, 1270 xmlNodePtr destParent, 1271 int options); 1272 XMLPUBFUN int XMLCALL 1273 xmlDOMWrapRemoveNode (xmlDOMWrapCtxtPtr ctxt, 1274 xmlDocPtr doc, 1275 xmlNodePtr node, 1276 int options); 1277 XMLPUBFUN int XMLCALL 1278 xmlDOMWrapCloneNode (xmlDOMWrapCtxtPtr ctxt, 1279 xmlDocPtr sourceDoc, 1280 xmlNodePtr node, 1281 xmlNodePtr *clonedNode, 1282 xmlDocPtr destDoc, 1283 xmlNodePtr destParent, 1284 int deep, 1285 int options); 1286 1287 #ifdef LIBXML_TREE_ENABLED 1288 /* 1289 * 5 interfaces from DOM ElementTraversal, but different in entities 1290 * traversal. 1291 */ 1292 XMLPUBFUN unsigned long XMLCALL 1293 xmlChildElementCount (xmlNodePtr parent); 1294 XMLPUBFUN xmlNodePtr XMLCALL 1295 xmlNextElementSibling (xmlNodePtr node); 1296 XMLPUBFUN xmlNodePtr XMLCALL 1297 xmlFirstElementChild (xmlNodePtr parent); 1298 XMLPUBFUN xmlNodePtr XMLCALL 1299 xmlLastElementChild (xmlNodePtr parent); 1300 XMLPUBFUN xmlNodePtr XMLCALL 1301 xmlPreviousElementSibling (xmlNodePtr node); 1302 #endif 1303 #ifdef __cplusplus 1304 } 1305 #endif 1306 #ifndef __XML_PARSER_H__ 1307 #include <libxml/xmlmemory.h> 1308 #endif 1309 1310 #endif /* __XML_TREE_H__ */ 1311 1312