tree.inc 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810
  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. {$IFDEF POINTER}
  12. xmlBufferPtr = ^xmlBuffer;
  13. xmlNotationPtr = ^xmlNotation;
  14. xmlEnumerationPtr = ^xmlEnumeration;
  15. xmlAttributePtr = ^xmlAttribute;
  16. xmlElementContentPtr = ^xmlElementContent;
  17. xmlElementPtr = ^xmlElement;
  18. xmlNsPtr = ^xmlNs;
  19. xmlNsPtrPtr = ^xmlNsPtr;
  20. xmlNodePtr = ^xmlNode;
  21. xmlNodePtrPtr = ^xmlNodePtr;
  22. xmlDtdPtr = ^xmlDtd;
  23. xmlAttrPtr = ^xmlAttr;
  24. xmlIDPtr = ^xmlID;
  25. xmlRefPtr = ^xmlRef;
  26. xmlDocPtr = ^xmlDoc;
  27. xmlDOMWrapCtxtPtr = ^xmlDOMWrapCtxt;
  28. xmlBufferAllocationSchemePtr = ^xmlBufferAllocationScheme;
  29. {$ENDIF}
  30. (*
  31. * Some of the basic types pointer to structures:
  32. *)
  33. {$IFDEF CONST}
  34. (**
  35. * BASE_BUFFER_SIZE:
  36. *
  37. * default buffer size 4000.
  38. *)
  39. BASE_BUFFER_SIZE = 4096;
  40. (**
  41. * LIBXML_NAMESPACE_DICT:
  42. *
  43. * Defines experimental behaviour:
  44. * 1) xmlNs gets an additional field @context (a xmlDoc)
  45. * 2) when creating a tree, xmlNs->href is stored in the dict of xmlDoc.
  46. *)
  47. {.$DEFINE LIBXML_NAMESPACE_DICT}
  48. (**
  49. * LIBXML_XML_NAMESPACE:
  50. *
  51. * This is the namespace for the special xml: prefix predefined in the
  52. * XML Namespace specification.
  53. *)
  54. LIBXML_XML_NAMESPACE: xmlCharPtr = 'http://www.w3.org/XML/1998/namespace';
  55. (**
  56. * XML_XML_ID:
  57. *
  58. * This is the name for the special xml:id attribute
  59. *)
  60. LIBXML_XML_ID: xmlCharPtr = 'xml:id';
  61. {$ENDIF}
  62. {$IFDEF TYPE}
  63. (**
  64. * xmlBufferAllocationScheme:
  65. *
  66. * A buffer allocation scheme can be defined to either match exactly the
  67. * need or double it's allocated size each time it is found too small.
  68. *)
  69. xmlBufferAllocationScheme = (
  70. XML_BUFFER_ALLOC_DOUBLEIT,
  71. XML_BUFFER_ALLOC_EXACT,
  72. XML_BUFFER_ALLOC_IMMUTABLE
  73. );
  74. (**
  75. * xmlBuffer:
  76. *
  77. * A buffer structure.
  78. *)
  79. xmlBuffer = record
  80. content : xmlCharPtr; (* The buffer content UTF8 *)
  81. use : cuint; (* The buffer size used *)
  82. size : cuint; (* The buffer size *)
  83. alloc : xmlBufferAllocationScheme; (* The realloc method *)
  84. end;
  85. (*
  86. * The different element types carried by an XML tree.
  87. *
  88. * NOTE: This is synchronized with DOM Level1 values
  89. * See http://www.w3.org/TR/REC-DOM-Level-1/
  90. *
  91. * Actually this had diverged a bit, and now XML_DOCUMENT_TYPE_NODE should
  92. * be deprecated to use an XML_DTD_NODE.
  93. *)
  94. xmlElementType = (
  95. XML_ELEMENT_NODE= 1,
  96. XML_ATTRIBUTE_NODE= 2,
  97. XML_TEXT_NODE= 3,
  98. XML_CDATA_SECTION_NODE= 4,
  99. XML_ENTITY_REF_NODE= 5,
  100. XML_ENTITY_NODE= 6,
  101. XML_PI_NODE= 7,
  102. XML_COMMENT_NODE= 8,
  103. XML_DOCUMENT_NODE= 9,
  104. XML_DOCUMENT_TYPE_NODE= 10,
  105. XML_DOCUMENT_FRAG_NODE= 11,
  106. XML_NOTATION_NODE= 12,
  107. XML_HTML_DOCUMENT_NODE= 13,
  108. XML_DTD_NODE= 14,
  109. XML_ELEMENT_DECL= 15,
  110. XML_ATTRIBUTE_DECL= 16,
  111. XML_ENTITY_DECL= 17,
  112. XML_NAMESPACE_DECL= 18,
  113. XML_XINCLUDE_START= 19,
  114. XML_XINCLUDE_END= 20
  115. {$IFDEF LIBXML_DOCB_ENABLED}
  116. ,XML_DOCB_DOCUMENT_NODE= 21
  117. {$ENDIF}
  118. );
  119. (**
  120. * xmlNotation:
  121. *
  122. * A DTD Notation definition.
  123. *)
  124. xmlNotation = record
  125. name : xmlCharPtr; (* Notation name *)
  126. PublicID : xmlCharPtr; (* Public identifier, if any *)
  127. SystemID : xmlCharPtr; (* System identifier, if any *)
  128. end;
  129. (**
  130. * xmlAttributeType:
  131. *
  132. * A DTD Attribute type definition.
  133. *)
  134. xmlAttributeType = (
  135. XML_ATTRIBUTE_CDATA = 1,
  136. XML_ATTRIBUTE_ID,
  137. XML_ATTRIBUTE_IDREF ,
  138. XML_ATTRIBUTE_IDREFS,
  139. XML_ATTRIBUTE_ENTITY,
  140. XML_ATTRIBUTE_ENTITIES,
  141. XML_ATTRIBUTE_NMTOKEN,
  142. XML_ATTRIBUTE_NMTOKENS,
  143. XML_ATTRIBUTE_ENUMERATION,
  144. XML_ATTRIBUTE_NOTATION
  145. );
  146. (**
  147. * xmlAttributeDefault:
  148. *
  149. * A DTD Attribute default definition.
  150. *)
  151. xmlAttributeDefault = (
  152. XML_ATTRIBUTE_NONE = 1,
  153. XML_ATTRIBUTE_REQUIRED,
  154. XML_ATTRIBUTE_IMPLIED,
  155. XML_ATTRIBUTE_FIXED
  156. );
  157. (**
  158. * xmlEnumeration:
  159. *
  160. * List structure used when there is an enumeration in DTDs.
  161. *)
  162. xmlEnumeration = record
  163. next: xmlEnumerationPtr; (* next one *)
  164. name: xmlCharPtr;
  165. end;
  166. (**
  167. * xmlAttribute:
  168. *
  169. * An Attribute declaration in a DTD.
  170. *)
  171. xmlAttribute = record
  172. _private : pointer; (* application data *)
  173. _type : xmlElementType; (* XML_ATTRIBUTE_DECL, must be second ! *)
  174. name : xmlCharPtr; (* Attribute name *)
  175. children : xmlNodePtr; (* NULL *)
  176. last : xmlNodePtr; (* NULL *)
  177. parent : xmlDtdPtr; (* -> DTD *)
  178. next : xmlNodePtr; (* next sibling link *)
  179. prev : xmlNodePtr; (* previous sibling link *)
  180. doc : xmlDocPtr; (* the containing document *)
  181. nexth : xmlAttributePtr; (* next in hash table *)
  182. atype : xmlAttributeType; (* The attribute type *)
  183. def : xmlAttributeDefault; (* the default *)
  184. defaultValue : xmlCharPtr; (* or the default value *)
  185. tree : xmlEnumerationPtr; (* or the enumeration tree if any *)
  186. prefix : xmlCharPtr; (* the namespace prefix if any *)
  187. elem : xmlCharPtr; (* Element holding the attribute *)
  188. end;
  189. (**
  190. * xmlElementContentType:
  191. *
  192. * Possible definitions of element content types.
  193. *)
  194. xmlElementContentType = (
  195. XML_ELEMENT_CONTENT_PCDATA = 1,
  196. XML_ELEMENT_CONTENT_ELEMENT,
  197. XML_ELEMENT_CONTENT_SEQ,
  198. XML_ELEMENT_CONTENT_OR
  199. );
  200. (**
  201. * xmlElementContentOccur:
  202. *
  203. * Possible definitions of element content occurrences.
  204. *)
  205. xmlElementContentOccur = (
  206. XML_ELEMENT_CONTENT_ONCE = 1,
  207. XML_ELEMENT_CONTENT_OPT,
  208. XML_ELEMENT_CONTENT_MULT,
  209. XML_ELEMENT_CONTENT_PLUS
  210. );
  211. (**
  212. * xmlElementContent:
  213. *
  214. * An XML Element content as stored after parsing an element definition
  215. * in a DTD.
  216. *)
  217. xmlElementContent = record
  218. _type : xmlElementContentType; (* PCDATA, ELEMENT, SEQ or OR *)
  219. ocur : xmlElementContentOccur; (* ONCE, OPT, MULT or PLUS *)
  220. name : xmlCharPtr; (* Element name *)
  221. c1 : xmlElementContentPtr; (* first child *)
  222. c2 : xmlElementContentPtr; (* second child *)
  223. parent : xmlElementContentPtr; (* parent *)
  224. prefix : xmlCharPtr; (* Namespace prefix *)
  225. end;
  226. (**
  227. * xmlElementTypeVal:
  228. *
  229. * The different possibilities for an element content type.
  230. *)
  231. xmlElementTypeVal = (
  232. XML_ELEMENT_TYPE_UNDEFINED = 0,
  233. XML_ELEMENT_TYPE_EMPTY = 1,
  234. XML_ELEMENT_TYPE_ANY,
  235. XML_ELEMENT_TYPE_MIXED,
  236. XML_ELEMENT_TYPE_ELEMENT
  237. );
  238. (**
  239. * xmlElement:
  240. *
  241. * An XML Element declaration from a DTD.
  242. *)
  243. xmlElement = record
  244. _private : pointer; (* application data *)
  245. _type : xmlElementType; (* XML_ELEMENT_DECL, must be second ! *)
  246. name : xmlCharPtr; (* Element name *)
  247. children : xmlNodePtr; (* NULL *)
  248. last : xmlNodePtr; (* NULL *)
  249. parent : xmlDtdPtr; (* -> DTD *)
  250. next : xmlNodePtr; (* next sibling link *)
  251. prev : xmlNodePtr; (* previous sibling link *)
  252. doc : xmlDocPtr; (* the containing document *)
  253. etype : xmlElementTypeVal; (* The type *)
  254. content : xmlElementContentPtr; (* the allowed element content *)
  255. attributes : xmlAttributePtr; (* List of the declared attributes *)
  256. prefix : xmlCharPtr; (* the namespace prefix if any *)
  257. {$IFDEF LIBXML_REGEXP_ENABLED}
  258. contModel : xmlRegexpPtr; (* the validating regexp *)
  259. {$ELSE}
  260. contModel : pointer;
  261. {$ENDIF}
  262. end;
  263. (**
  264. * XML_LOCAL_NAMESPACE:
  265. *
  266. * A namespace declaration node.
  267. *)
  268. {$ENDIF}
  269. {$IFDEF CONST}
  270. XML_LOCAL_NAMESPACE = XML_NAMESPACE_DECL;
  271. {$ENDIF}
  272. {$IFDEF TYPE}
  273. xmlNsType = xmlElementType;
  274. (**
  275. * xmlNs:
  276. *
  277. * An XML namespace.
  278. * Note that prefix == NULL is valid, it defines the default namespace
  279. * within the subtree (until overridden).
  280. *
  281. * xmlNsType is unified with xmlElementType.
  282. *)
  283. xmlNs = record
  284. next : xmlNsPtr; (* next Ns link for this node *)
  285. _type : xmlNsType; (* global or local *)
  286. href : xmlCharPtr; (* URL for the namespace *)
  287. prefix : xmlCharPtr; (* prefix for the namespace *)
  288. _private : pointer; (* application data *)
  289. context : xmlDocPtr; (* normally an xmlDoc *)
  290. end;
  291. (**
  292. * xmlDtd:
  293. *
  294. * An XML DTD, as defined by <!DOCTYPE ... There is actually one for
  295. * the internal subset and for the external subset.
  296. *)
  297. xmlDtd = record
  298. _private : pointer; (* application data *)
  299. _type : xmlElementType; (* XML_DTD_NODE, must be second ! *)
  300. name : xmlCharPtr; (* Name of the DTD *)
  301. children : xmlNodePtr; (* the value of the property link *)
  302. last : xmlNodePtr; (* last child link *)
  303. parent : xmlDocPtr; (* child->parent link *)
  304. next : xmlNodePtr; (* next sibling link *)
  305. prev : xmlNodePtr; (* previous sibling link *)
  306. doc : xmlDocPtr; (* the containing document *)
  307. (* End of common part *)
  308. notations : pointer; (* Hash table for notations if any *)
  309. elements : pointer; (* Hash table for elements if any *)
  310. attributes : pointer; (* Hash table for attributes if any *)
  311. entities : pointer; (* Hash table for entities if any *)
  312. ExternalID : xmlCharPtr; (* External identifier for PUBLIC DTD *)
  313. SystemID : xmlCharPtr; (* URI for a SYSTEM or PUBLIC DTD *)
  314. pentities : pointer; (* Hash table for param entities if any *)
  315. end;
  316. (**
  317. * xmlAttr:
  318. *
  319. * An attribute on an XML node.
  320. *)
  321. xmlAttr = record
  322. _private : pointer; (* application data *)
  323. _type : xmlElementType; (* XML_ATTRIBUTE_NODE, must be second ! *)
  324. name : xmlCharPtr; (* the name of the property *)
  325. children : xmlNodePtr; (* the value of the property *)
  326. last : xmlNodePtr; (* NULL *)
  327. parent : xmlNodePtr; (* child->parent link *)
  328. next : xmlAttrPtr; (* next sibling link *)
  329. prev : xmlAttrPtr; (* previous sibling link *)
  330. doc : xmlDocPtr; (* the containing document *)
  331. ns : xmlNsPtr; (* pointer to the associated namespace *)
  332. atype : xmlAttributeType; (* the attribute type if validating *)
  333. psvi : pointer; (* for type/PSVI informations *)
  334. end;
  335. (**
  336. * xmlID:
  337. *
  338. * An XML ID instance.
  339. *)
  340. xmlID = record
  341. next : xmlIDPtr; (* next ID *)
  342. value : xmlCharPtr; (* The ID name *)
  343. attr : xmlAttrPtr; (* The attribute holding it *)
  344. name : xmlCharPtr; (* The attribute if attr is not available *)
  345. lineno : cint; (* The line number if attr is not available *)
  346. doc : xmlDocPtr; (* The document holding the ID *)
  347. end;
  348. (**
  349. * xmlRef:
  350. *
  351. * An XML IDREF instance.
  352. *)
  353. xmlRef = record
  354. next : xmlRefPtr; (* next Ref *)
  355. value : xmlCharPtr; (* The Ref name *)
  356. attr : xmlAttrPtr; (* The attribute holding it *)
  357. name : xmlCharPtr; (* The attribute if attr is not available *)
  358. lineno : cint; (* The line number if attr is not available *)
  359. end;
  360. (**
  361. * xmlNode:
  362. *
  363. * A node in an XML tree.
  364. *)
  365. xmlNode = record
  366. _private : pointer; (* application data *)
  367. _type : xmlElementType; (* type number, must be second ! *)
  368. name : xmlCharPtr; (* the name of the node, or the entity *)
  369. children : xmlNodePtr; (* parent->childs link *)
  370. last : xmlNodePtr; (* last child link *)
  371. parent : xmlNodePtr; (* child->parent link *)
  372. next : xmlNodePtr; (* next sibling link *)
  373. prev : xmlNodePtr; (* previous sibling link *)
  374. doc : xmlDocPtr; (* the containing document *)
  375. (* End of common part *)
  376. ns : xmlNsPtr; (* pointer to the associated namespace *)
  377. content : xmlCharPtr; (* the content *)
  378. properties : xmlAttrPtr;(* properties list *)
  379. nsDef : xmlNsPtr; (* namespace definitions on this node *)
  380. psvi : pointer; (* for type/PSVI informations *)
  381. line : cushort; (* line number *)
  382. extra : cushort; (* extra data for XPath/XSLT *)
  383. end;
  384. {$ENDIF}
  385. {$IFDEF FUNCTION}
  386. (**
  387. * XML_GET_CONTENT:
  388. *
  389. * Macro to extract the content pointer of a node.
  390. *)
  391. function XML_GET_CONTENT(n: pointer): xmlCharPtr;
  392. (**
  393. * XML_GET_LINE:
  394. *
  395. * Macro to extract the line number of an element node.
  396. *)
  397. {#define XML_GET_LINE(n) \
  398. (xmlGetLineNo(n))}
  399. {$ENDIF}
  400. {$IFDEF TYPE}
  401. (**
  402. * xmlDoc:
  403. *
  404. * An XML document.
  405. *)
  406. xmlDoc = record
  407. _private : pointer; (* application data *)
  408. _type : xmlElementType; (* XML_DOCUMENT_NODE, must be second ! *)
  409. name : pchar; (* name/filename/URI of the document *)
  410. children : xmlCharPtr; (* the document tree *)
  411. last : xmlCharPtr; (* last child link *)
  412. parent : xmlCharPtr; (* child->parent link *)
  413. next : xmlCharPtr; (* next sibling link *)
  414. prev : xmlCharPtr; (* previous sibling link *)
  415. doc : xmlDocPtr; (* autoreference to itself *)
  416. (* End of common part *)
  417. compression : cint; (* level of zlib compression *)
  418. standalone : cint; (* standalone document (no external refs)
  419. 1 if standalone="yes"
  420. 0 if standalone="no"
  421. -1 if there is no XML declaration
  422. -2 if there is an XML declaration, but no
  423. standalone attribute was specified *)
  424. intSubset : xmlDtdPtr; (* the document internal subset *)
  425. extSubset : xmlDtdPtr; (* the document external subset *)
  426. oldNs : xmlNsPtr; (* Global namespace, the old way *)
  427. version : xmlCharPtr; (* the XML version string *)
  428. encoding : xmlCharPtr; (* external initial encoding, if any *)
  429. ids : pointer; (* Hash table for ID attributes if any *)
  430. refs : pointer; (* Hash table for IDREFs attributes if any *)
  431. URL : xmlCharPtr; (* The URI for that document *)
  432. charset : cint; (* encoding of the in-memory content
  433. actually an xmlCharEncoding *)
  434. dict : xmlDictPtr; (* dict used to allocate names or NULL *)
  435. psvi : pointer; (* for type/PSVI informations *)
  436. end;
  437. (**
  438. * xmlDOMWrapAcquireNsFunction:
  439. * @ctxt: a DOM wrapper context
  440. * @node: the context node (element or attribute)
  441. * @nsName: the requested namespace name
  442. * @nsPrefix: the requested namespace prefix
  443. *
  444. * A function called to acquire namespaces (xmlNs) from the wrapper.
  445. *
  446. * Returns an xmlNsPtr or NULL in case of an error.
  447. *)
  448. xmlDOMWrapAcquireNsFunction = function (ctxt: xmlDOMWrapCtxtPtr; node: xmlNodePtr; nsName, nsPrefix: xmlCharPtr): xmlNsPtr; EXTDECL;
  449. (**
  450. * xmlDOMWrapCtxt:
  451. *
  452. * Context for DOM wrapper-operations.
  453. *)
  454. xmlDOMWrapCtxt = record
  455. _private: pointer;
  456. (*
  457. * The type of this context, just in case we need specialized
  458. * contexts in the future.
  459. *)
  460. _type: cint;
  461. (*
  462. * Internal namespace map used for various operations.
  463. *)
  464. namespaceMap: pointer;
  465. (*
  466. * Use this one to acquire an xmlNsPtr intended for node->ns.
  467. * (Note that this is not intended for elem->nsDef).
  468. *)
  469. getNsForNodeFunc: xmlDOMWrapAcquireNsFunction;
  470. end;
  471. (**
  472. * xmlChildrenNode:
  473. *
  474. * Macro for compatibility naming layer with libxml1. Maps
  475. * to "children."
  476. *)
  477. {#ifndef xmlChildrenNode
  478. #define xmlChildrenNode children
  479. #endif}
  480. (**
  481. * xmlRootNode:
  482. *
  483. * Macro for compatibility naming layer with libxml1. Maps
  484. * to "children".
  485. *)
  486. {#ifndef xmlRootNode
  487. #define xmlRootNode children
  488. #endif}
  489. {$ENDIF}
  490. {$IFDEF FUNCTION}
  491. (*
  492. * Variables.
  493. *)
  494. (*
  495. * Some helper functions
  496. *)
  497. {$IF defined(LIBXML_TREE_ENABLED) or defined(LIBXML_XPATH_ENABLED) or defined(LIBXML_SCHEMAS_ENABLED) or
  498. defined(LIBXML_DEBUG_ENABLED) or defined (LIBXML_HTML_ENABLED) or defined(LIBXML_SAX1_ENABLED) or
  499. defined(LIBXML_HTML_ENABLED) or defined(LIBXML_WRITER_ENABLED) or defined(LIBXML_DOCB_ENABLED)}
  500. function xmlValidateNCName(value: xmlCharPtr; space: cint): cint; EXTDECL; external xml2lib;
  501. {$ENDIF}
  502. {$IF defined(LIBXML_TREE_ENABLED) or defined(LIBXML_SCHEMAS_ENABLED)}
  503. function xmlValidateQName(value: xmlCharPtr; space: cint): cint; EXTDECL; external xml2lib;
  504. function xmlValidateName(value: xmlCharPtr; space: cint): cint; EXTDECL; external xml2lib;
  505. function xmlValidateNMToken(value: xmlCharPtr; space: cint): cint; EXTDECL; external xml2lib;
  506. {$ENDIF}
  507. function xmlValidateQName(ncname, prefix, memory: xmlCharPtr; len: cint): xmlCharPtr; EXTDECL; external xml2lib;
  508. function xmlSplitQName2(name: xmlCharPtr; var prefix: xmlCharPtr): xmlCharPtr; EXTDECL; external xml2lib;
  509. function xmlSplitQName3(name: xmlCharPtr; var prefix: xmlCharPtr; var len: cint): xmlCharPtr; EXTDECL; external xml2lib;
  510. (*
  511. * Handling Buffers.
  512. *)
  513. procedure xmlSetBufferAllocationScheme(scheme: xmlBufferAllocationScheme); EXTDECL; external xml2lib;
  514. function xmlGetBufferAllocationScheme: xmlBufferAllocationScheme; EXTDECL; external xml2lib;
  515. function xmlBufferCreate: xmlBufferPtr; EXTDECL; external xml2lib;
  516. function xmlBufferCreateSize(size: csize_t): xmlBufferPtr; EXTDECL; external xml2lib;
  517. function xmlBufferCreateStatic(mem: pointer; size: csize_t): xmlBufferPtr; EXTDECL; external xml2lib;
  518. function xmlBufferResize(buf: xmlBufferPtr; size: cuint): cint; EXTDECL; external xml2lib;
  519. procedure xmlBufferFree(buf: xmlBufferPtr); EXTDECL; external xml2lib;
  520. procedure xmlBufferDump(fp: PFILE; buf: xmlBufferPtr); EXTDECL; external xml2lib;
  521. function xmlBufferAdd(buf: xmlBufferPtr; str: xmlCharPtr; len: cint): cint; EXTDECL; external xml2lib;
  522. function xmlBufferAddHead(buf: xmlBufferPtr; str: xmlCharPtr; len: cint): cint; EXTDECL; external xml2lib;
  523. function xmlBufferCat(buf: xmlBufferPtr; str: xmlCharPtr): cint; EXTDECL; external xml2lib;
  524. function xmlBufferCCat(buf: xmlBufferPtr; str: pchar): cint; EXTDECL; external xml2lib;
  525. function xmlBufferShrink(buf: xmlBufferPtr; len: cuint): cint; EXTDECL; external xml2lib;
  526. function xmlBufferGrow(buf: xmlBufferPtr; len: cuint): cint; EXTDECL; external xml2lib;
  527. procedure xmlBufferEmpty(buf: xmlBufferPtr); EXTDECL; external xml2lib;
  528. function xmlBufferContent(buf: xmlBufferPtr): xmlCharPtr; EXTDECL; external xml2lib;
  529. procedure xmlBufferSetAllocationScheme(buf: xmlBufferPtr; scheme: xmlBufferAllocationScheme); EXTDECL; external xml2lib;
  530. function xmlBufferLength(buf: xmlBufferPtr): cint; EXTDECL; external xml2lib;
  531. (*
  532. * Creating/freeing new structures.
  533. *)
  534. function xmlCreateIntSubset(doc: xmlDocPtr; name, ExternalID, SystemID: xmlCharPtr): xmlDtdPtr; EXTDECL; external xml2lib;
  535. function xmlNewDtd(doc: xmlDocPtr; name, ExternalID, SystemID: xmlCharPtr): xmlDtdPtr; EXTDECL; external xml2lib;
  536. function xmlGetIntSubset(doc: xmlDocPtr): xmlDtdPtr; EXTDECL; external xml2lib;
  537. procedure xmlFreeDtd(cur: xmlDtdPtr); EXTDECL; external xml2lib;
  538. {$IFDEF LIBXML_LEGACY_ENABLED}
  539. function xmlNewGlobalNs(doc: xmlDocPtr; href, prefix: xmlCharPtr): xmlNsPtr; EXTDECL; external xml2lib;
  540. {$ENDIF} (* LIBXML_LEGACY_ENABLED *)
  541. function xmlNewNs(node: xmlNodePtr; href, prefix: xmlCharPtr): xmlNsPtr; EXTDECL; external xml2lib;
  542. procedure xmlFreeNs(cur: xmlNsPtr); EXTDECL; external xml2lib;
  543. procedure xmlFreeNsList(cur: xmlNsPtr); EXTDECL; external xml2lib;
  544. function xmlNewDoc(version: xmlCharPtr): xmlDocPtr; EXTDECL; external xml2lib;
  545. procedure xmlFreeDoc(cur: xmlDocPtr); EXTDECL; external xml2lib;
  546. function xmlNewDocProp(doc: xmlDocPtr; name, value: xmlCharPtr): xmlAttrPtr; EXTDECL; external xml2lib;
  547. {$IF defined(LIBXML_TREE_ENABLED) or defined(LIBXML_HTML_ENABLED) or defined(LIBXML_SCHEMAS_ENABLED)}
  548. function xmlNewProp(node: xmlNodePtr; name, value: xmlCharPtr): xmlAttrPtr; EXTDECL; external xml2lib;
  549. {$ENDIF}
  550. function xmlNewNsProp(node: xmlNodePtr; ns: xmlNsPtr; name, value: xmlCharPtr): xmlAttrPtr; EXTDECL; external xml2lib;
  551. function xmlNewNsPropEatName(node: xmlNodePtr; ns: xmlNsPtr; name, value: xmlCharPtr): xmlAttrPtr; EXTDECL; external xml2lib;
  552. procedure xmlFreePropList(cur: xmlAttrPtr); EXTDECL; external xml2lib;
  553. procedure xmlFreeProp(cur: xmlAttrPtr); EXTDECL; external xml2lib;
  554. function xmlCopyProp(target: xmlNodePtr; cur: xmlAttrPtr): xmlAttrPtr; EXTDECL; external xml2lib;
  555. function xmlCopyPropList(target: xmlNodePtr; cur: xmlAttrPtr): xmlAttrPtr; EXTDECL; external xml2lib;
  556. {$IFDEF LIBXML_TREE_ENABLED}
  557. function xmlCopyDtd(dtd: xmlDtdPtr): xmlDtdPtr; EXTDECL; external xml2lib;
  558. {$ENDIF} (* LIBXML_TREE_ENABLED *)
  559. {$IF defined(LIBXML_TREE_ENABLED) or defined(LIBXML_SCHEMAS_ENABLED)}
  560. function xmlCopyDoc(doc: xmlDocPtr; recursive: cint): xmlDocPtr; EXTDECL; external xml2lib;
  561. {$ENDIF} (* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) *)
  562. (*
  563. * Creating new nodes.
  564. *)
  565. function xmlNewDocNode(doc: xmlDocPtr; ns: xmlNsPtr; name, content: xmlCharPtr): xmlNodePtr; EXTDECL; external xml2lib;
  566. function xmlNewDocNodeEatName(doc: xmlDocPtr; ns: xmlNsPtr; name, content: xmlCharPtr): xmlNodePtr; EXTDECL; external xml2lib;
  567. function xmlNewNode(ns: xmlNsPtr; name: xmlCharPtr): xmlNodePtr; EXTDECL; external xml2lib;
  568. function xmlNewNodeEatName(ns: xmlNsPtr; name: xmlCharPtr): xmlNodePtr; EXTDECL; external xml2lib;
  569. {$IF defined(LIBXML_TREE_ENABLED) or defined(LIBXML_SCHEMAS_ENABLED)}
  570. function xmlNewChild(parent: xmlNodePtr; ns: xmlNsPtr; name, content: xmlCharPtr): xmlNodePtr; EXTDECL; external xml2lib;
  571. {$ENDIF}
  572. function xmlNewDocText(doc: xmlDocPtr; content: xmlCharPtr): xmlNodePtr; EXTDECL; external xml2lib;
  573. function xmlNewText(content: xmlCharPtr): xmlNodePtr; EXTDECL; external xml2lib;
  574. function xmlNewDocPI(doc: xmlDocPtr; name, content: xmlCharPtr): xmlNodePtr; EXTDECL; external xml2lib;
  575. function xmlNewPI(name, content: xmlCharPtr): xmlNodePtr; EXTDECL; external xml2lib;
  576. function xmlNewDocTextLen(doc: xmlDocPtr; content: xmlCharPtr; len: cint): xmlNodePtr; EXTDECL; external xml2lib;
  577. function xmlNewTextLen(content: xmlCharPtr; len: cint): xmlNodePtr; EXTDECL; external xml2lib;
  578. function xmlNewDocComment(doc: xmlDocPtr; content: xmlCharPtr): xmlNodePtr; EXTDECL; external xml2lib;
  579. function xmlNewComment(content: xmlCharPtr): xmlNodePtr; EXTDECL; external xml2lib;
  580. function xmlNewCDataBlock(doc: xmlDocPtr; content: xmlCharPtr; len: cint): xmlNodePtr; EXTDECL; external xml2lib;
  581. function xmlNewCharRef(doc: xmlDocPtr; name: xmlCharPtr): xmlNodePtr; EXTDECL; external xml2lib;
  582. function xmlNewReference(doc: xmlDocPtr; name: xmlCharPtr): xmlNodePtr; EXTDECL; external xml2lib;
  583. function xmlCopyNode(node: xmlNodePtr; recursive: cint): xmlNodePtr; EXTDECL; external xml2lib;
  584. function xmlDocCopyNode(node: xmlNodePtr; doc: xmlDocPtr; recursive: cint): xmlNodePtr; EXTDECL; external xml2lib;
  585. function xmlDocCopyNodeList(doc: xmlDocPtr; node: xmlNodePtr): xmlNodePtr; EXTDECL; external xml2lib;
  586. function xmlCopyNodeList(node: xmlNodePtr): xmlNodePtr; EXTDECL; external xml2lib;
  587. {$IFDEF LIBXML_TREE_ENABLED}
  588. function xmlNewTextChild(parent: xmlNodePtr; ns: xmlNsPtr; name, content: xmlCharPtr): xmlNodePtr; EXTDECL; external xml2lib;
  589. function xmlNewDocRawNode(doc: xmlDocPtr; ns: xmlNsPtr; name, content: xmlCharPtr): xmlNodePtr; EXTDECL; external xml2lib;
  590. function xmlNewDocFragment(doc: xmlDocPtr): xmlNodePtr; EXTDECL; external xml2lib;
  591. {$ENDIF} (* LIBXML_TREE_ENABLED *)
  592. (*
  593. * Navigating.
  594. *)
  595. function xmlGetLineNo(node: xmlNodePtr): clong; EXTDECL; external xml2lib;
  596. {$IF defined(LIBXML_TREE_ENABLED) or defined(LIBXML_DEBUG_ENABLED)}
  597. function xmlGetNodePath(node: xmlNodePtr): xmlCharPtr; EXTDECL; external xml2lib;
  598. {$ENDIF} (* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) *)
  599. function xmlDocGetRootElement(doc: xmlDocPtr): xmlNodePtr; EXTDECL; external xml2lib;
  600. function xmlGetLastChild(parent: xmlNodePtr): xmlNodePtr; EXTDECL; external xml2lib;
  601. function xmlNodeIsText(node: xmlNodePtr): cint; EXTDECL; external xml2lib;
  602. function xmlIsBlankNode(node: xmlNodePtr): cint; EXTDECL; external xml2lib;
  603. (*
  604. * Changing the structure.
  605. *)
  606. {$IF defined(LIBXML_TREE_ENABLED) or defined(LIBXML_WRITER_ENABLED)}
  607. function xmlDocSetRootElement(doc: xmlDocPtr; root: xmlNodePtr): xmlNodePtr; EXTDECL; external xml2lib;
  608. {$ENDIF} (* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) *)
  609. {$IFDEF LIBXML_TREE_ENABLED}
  610. procedure xmlNodeSetName(cur: xmlNodePtr; name: xmlCharPtr); EXTDECL; external xml2lib;
  611. {$ENDIF} (* LIBXML_TREE_ENABLED *)
  612. function xmlAddChild(parent, cur: xmlNodePtr): xmlNodePtr; EXTDECL; external xml2lib;
  613. function xmlAddChildList(parent, cur: xmlNodePtr): xmlNodePtr; EXTDECL; external xml2lib;
  614. {$IF defined(LIBXML_TREE_ENABLED) or defined(LIBXML_WRITER_ENABLED)}
  615. function xmlReplaceNode(old, cur: xmlNodePtr): xmlNodePtr; EXTDECL; external xml2lib;
  616. {$ENDIF} (* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) *)
  617. {$IF defined(LIBXML_TREE_ENABLED) or defined(LIBXML_HTML_ENABLED) or defined(LIBXML_SCHEMAS_ENABLED)}
  618. function xmlAddPrevSibling(cur, elem: xmlNodePtr): xmlNodePtr; EXTDECL; external xml2lib;
  619. {$ENDIF} (* LIBXML_TREE_ENABLED || LIBXML_HTML_ENABLED || LIBXML_SCHEMAS_ENABLED *)
  620. function xmlAddSibling(cur, elem: xmlNodePtr): xmlNodePtr; EXTDECL; external xml2lib;
  621. function xmlAddNextSibling(cur, elem: xmlNodePtr): xmlNodePtr; EXTDECL; external xml2lib;
  622. procedure xmlUnlinkNode(cur: xmlNodePtr); EXTDECL; external xml2lib;
  623. function xmlTextMerge(first, second: xmlNodePtr): xmlNodePtr; EXTDECL; external xml2lib;
  624. function xmlTextConcat(node: xmlNodePtr; name: xmlCharPtr; len: cint): cint; EXTDECL; external xml2lib;
  625. procedure xmlFreeNodeList(cur: xmlNodePtr); EXTDECL; external xml2lib;
  626. procedure xmlFreeNode(cur: xmlNodePtr); EXTDECL; external xml2lib;
  627. procedure xmlSetTreeDoc(tree: xmlNodePtr; doc: xmlDocPtr); EXTDECL; external xml2lib;
  628. procedure xmlSetListDoc(list: xmlNodePtr; doc: xmlDocPtr); EXTDECL; external xml2lib;
  629. (*
  630. * Namespaces.
  631. *)
  632. function xmlSearchNs(doc: xmlDocPtr; node: xmlNodePtr; nameSpace: xmlCharPtr): xmlNsPtr; EXTDECL; external xml2lib;
  633. function xmlSearchNsByHref(doc: xmlDocPtr; node: xmlNodePtr; href: xmlCharPtr): xmlNsPtr; EXTDECL; external xml2lib;
  634. {$IF defined(LIBXML_TREE_ENABLED) or defined(LIBXML_XPATH_ENABLED) or defined(LIBXML_SCHEMAS_ENABLED)}
  635. function xmlGetNsList(doc: xmlDocPtr; node: xmlNodePtr): xmlNsPtr; EXTDECL; external xml2lib;
  636. {$ENDIF} (* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) *)
  637. procedure xmlSetNs(node: xmlNodePtr; ns: xmlNsPtr); EXTDECL; external xml2lib;
  638. function xmlCopyNamespace(cur: xmlNsPtr): xmlNsPtr; EXTDECL; external xml2lib;
  639. function xmlCopyNamespaceList(cur: xmlNsPtr): xmlNsPtr; EXTDECL; external xml2lib;
  640. (*
  641. * Changing the content.
  642. *)
  643. {$IF defined(LIBXML_TREE_ENABLED) or defined(LIBXML_XINCLUDE_ENABLED) or defined(LIBXML_SCHEMAS_ENABLED) or defined(LIBXML_HTML_ENABLED)}
  644. function xmlSetProp(node: xmlNodePtr; name, value: xmlCharPtr): xmlAttrPtr; EXTDECL; external xml2lib;
  645. function xmlSetNsProp(node: xmlNodePtr; ns: xmlNsPtr; name, value: xmlCharPtr): xmlAttrPtr; EXTDECL; external xml2lib;
  646. {$ENDIF} (* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) *)
  647. function xmlGetNoNsProp(node: xmlNodePtr; name: xmlCharPtr): xmlCharPtr; EXTDECL; external xml2lib;
  648. function xmlGetProp(node: xmlNodePtr; name: xmlCharPtr): xmlCharPtr; EXTDECL; external xml2lib;
  649. function xmlHasProp(node: xmlNodePtr; name: xmlCharPtr): xmlAttrPtr; EXTDECL; external xml2lib;
  650. function xmlHasNsProp(node: xmlNodePtr; name, nameSpace: xmlCharPtr): xmlAttrPtr; EXTDECL; external xml2lib;
  651. function xmlGetNsProp(node: xmlNodePtr; name, nameSpace: xmlCharPtr): xmlCharPtr; EXTDECL; external xml2lib;
  652. function xmlStringGetNodeList(doc: xmlDocPtr; value: xmlCharPtr): xmlNodePtr; EXTDECL; external xml2lib;
  653. function xmlStringLenGetNodeList(doc: xmlDocPtr; value: xmlCharPtr; len: cint): xmlNodePtr; EXTDECL; external xml2lib;
  654. function xmlNodeListGetString(doc: xmlDocPtr; list: xmlNodePtr; _inLine: cint): xmlCharPtr; EXTDECL; external xml2lib;
  655. {$IFDEF LIBXML_TREE_ENABLED}
  656. function xmlNodeListGetRawString(doc: xmlDocPtr; list: xmlNodePtr; _inLine: cint): xmlCharPtr; EXTDECL; external xml2lib;
  657. {$ENDIF} (* LIBXML_TREE_ENABLED *)
  658. procedure xmlNodeSetContent(node: xmlNodePtr; content: xmlCharPtr); EXTDECL; external xml2lib;
  659. {$IFDEF LIBXML_TREE_ENABLED}
  660. procedure xmlNodeSetContentLen(node: xmlNodePtr; content: xmlCharPtr; len: cint); EXTDECL; external xml2lib;
  661. {$ENDIF} (* LIBXML_TREE_ENABLED *)
  662. procedure xmlNodeAddContent(cur: xmlNodePtr; content: xmlCharPtr); EXTDECL; external xml2lib;
  663. procedure xmlNodeAddContentLen(cur: xmlNodePtr; content: xmlCharPtr; len: cint); EXTDECL; external xml2lib;
  664. function xmlNodeGetContent(cur: xmlNodePtr): xmlCharPtr; EXTDECL; external xml2lib;
  665. function xmlNodeBufGetContent(buffer: xmlBufferPtr; cur: xmlNodePtr): cint; EXTDECL; external xml2lib;
  666. function xmlNodeGetLang(cur: xmlNodePtr): xmlCharPtr; EXTDECL; external xml2lib;
  667. function xmlNodeGetSpacePreserve(cur: xmlNodePtr): cint; EXTDECL; external xml2lib;
  668. {$IFDEF LIBXML_TREE_ENABLED}
  669. procedure xmlNodeSetLang(cur: xmlNodePtr; lang: xmlCharPtr); EXTDECL; external xml2lib;
  670. procedure xmlNodeSetSpacePreserve(cur: xmlNodePtr; val: cint); EXTDECL; external xml2lib;
  671. {$ENDIF} (* LIBXML_TREE_ENABLED *)
  672. function xmlNodeGetBase(doc: xmlDocPtr; cur: xmlNodePtr): xmlCharPtr; EXTDECL; external xml2lib;
  673. {$IF defined(LIBXML_TREE_ENABLED) or defined(LIBXML_XINCLUDE_ENABLED)}
  674. procedure xmlNodeSetBase(cur: xmlNodePtr; uri: xmlCharPtr); EXTDECL; external xml2lib;
  675. {$ENDIF}
  676. (*
  677. * Removing content.
  678. *)
  679. function xmlRemoveProp(cur: xmlAttrPtr): cint; EXTDECL; external xml2lib;
  680. {$IF defined(LIBXML_TREE_ENABLED) or defined(LIBXML_SCHEMAS_ENABLED)}
  681. function xmlUnsetNsProp(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr): cint; EXTDECL; external xml2lib;
  682. function xmlUnsetProp(node: xmlNodePtr; name: xmlCharPtr): cint; EXTDECL; external xml2lib;
  683. {$ENDIF} (* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) *)
  684. (*
  685. * Internal, don't use.
  686. *)
  687. {external xml2lib void EXTDECL
  688. xmlBufferWriteCHAR (xmlBufferPtr buf,
  689. xmlChar *string);
  690. external xml2lib void EXTDECL
  691. xmlBufferWriteChar (xmlBufferPtr buf,
  692. char *string);
  693. external xml2lib void EXTDECL
  694. xmlBufferWriteQuotedString(xmlBufferPtr buf,
  695. xmlChar *string);
  696. }
  697. {$IFDEF LIBXML_OUTPUT_ENABLED}
  698. {external xml2lib void xmlAttrSerializeTxtContent(xmlBufferPtr buf,
  699. xmlDocPtr doc,
  700. xmlAttrPtr attr,
  701. xmlChar *string);}
  702. {$ENDIF} (* LIBXML_OUTPUT_ENABLED *)
  703. {$IFDEF LIBXML_TREE_ENABLED}
  704. (*
  705. * Namespace handling.
  706. *)
  707. function xmlReconciliateNs(doc: xmlDocPtr; tree: xmlNodePtr): cint; EXTDECL; external xml2lib;
  708. {$ENDIF}
  709. {$IFDEF LIBXML_OUTPUT_ENABLED}
  710. (*
  711. * Saving.
  712. *)
  713. procedure xmlDocDumpFormatMemory(cur: xmlDocPtr; var mem: xmlCharPtr; var size: cint; format: cint); EXTDECL; external xml2lib;
  714. procedure xmlDocDumpMemory(cur: xmlDocPtr; var mem: xmlCharPtr; var size: cint); EXTDECL; external xml2lib;
  715. procedure xmlDocDumpMemoryEnc(out_doc: xmlDocPtr; var doc_txt_ptr: xmlCharPtr; var doc_txt_len: cint; txt_encoding: pchar); EXTDECL; external xml2lib;
  716. procedure xmlDocDumpFormatMemoryEnc(out_doc: xmlDocPtr; var doc_txt_ptr: xmlCharPtr; var doc_txt_len: cint; txt_encoding: pchar; format: cint); EXTDECL; external xml2lib;
  717. function xmlDocFormatDump(f: PFILE; cur: xmlDocPtr; format: cint): cint; EXTDECL; external xml2lib;
  718. function xmlDocDump(f: PFILE; cur: xmlDocPtr): cint; EXTDECL; external xml2lib;
  719. function xmlElemDump(f: PFILE; doc: xmlDocPtr; cur: xmlNodePtr): cint; EXTDECL; external xml2lib;
  720. function xmlSaveFormatFile(filename: pchar; cur: xmlDocPtr; format: cint): cint; EXTDECL; external xml2lib;
  721. function xmlSaveFile(filename: pchar; cur: xmlDocPtr): cint; EXTDECL; external xml2lib;
  722. function xmlNodeDump(buf: xmlBufferPtr; doc: xmlDocPtr; cur: xmlNodePtr; level, format: cint): cint; EXTDECL; external xml2lib;
  723. function xmlSaveFileTo(buf: xmlOutputBufferPtr; cur: xmlDocPtr; encoding: pchar): cint; EXTDECL; external xml2lib;
  724. function xmlSaveFormatFileTo(buf: xmlOutputBufferPtr; cur: xmlDocPtr; encoding: pchar; format: cint): cint; EXTDECL; external xml2lib;
  725. procedure xmlNodeDumpOutput(buf: xmlBufferPtr; doc: xmlDocPtr; cur: xmlNodePtr; level, format: cint; encoding: pchar); EXTDECL; external xml2lib;
  726. function xmlSaveFormatFileEnc(filename: pchar; cur: xmlDocPtr; encoding: pchar; format: cint): cint; EXTDECL; external xml2lib;
  727. function xmlSaveFileEnc(filename: pchar; cur: xmlDocPtr; encoding: pchar): cint; EXTDECL; external xml2lib;
  728. {$ENDIF} (* LIBXML_OUTPUT_ENABLED *)
  729. (*
  730. * XHTML
  731. *)
  732. function xmlIsXHTML(systemID, publicID: xmlCharPtr): cint; EXTDECL; external xml2lib;
  733. (*
  734. * Compression.
  735. *)
  736. function xmlGetDocCompressMode(doc: xmlDocPtr): cint; EXTDECL; external xml2lib;
  737. procedure xmlSetDocCompressMode(ctxt: xmlDOMWrapCtxtPtr; mode: cint); EXTDECL; external xml2lib;
  738. function xmlGetCompressMode: cint; EXTDECL; external xml2lib;
  739. procedure xmlSetCompressMode(mode: cint); EXTDECL; external xml2lib;
  740. (*
  741. * DOM-wrapper helper functions.
  742. *)
  743. function xmlDOMWrapNewCtxt: xmlDOMWrapCtxtPtr; EXTDECL; external xml2lib;
  744. procedure xmlDOMWrapNewCtxt(ctxt: xmlDOMWrapCtxtPtr); EXTDECL; external xml2lib;
  745. function xmlDOMWrapReconcileNamespaces(ctxt: xmlDOMWrapCtxtPtr; elem: xmlNodePtr; options: cint): cint; EXTDECL; external xml2lib;
  746. function xmlDOMWrapAdoptNode(ctxt: xmlDOMWrapCtxtPtr; sourceDoc: xmlDocPtr; node: xmlNodePtr; destDoc: xmlDocPtr; destParent: xmlNodePtr; options: cint): cint; EXTDECL; external xml2lib;
  747. function xmlDOMWrapRemoveNode(ctxt: xmlDOMWrapCtxtPtr; doc: xmlDocPtr; node: xmlNodePtr; options: cint): cint; EXTDECL; external xml2lib;
  748. function xmlDOMWrapCloneNode(ctxt: xmlDOMWrapCtxtPtr; sourceDoc: xmlDocPtr; node: xmlNodePtr; var clonedNode: xmlNodePtr; destDoc: xmlDocPtr; destParent: xmlNodePtr; deep, options: cint): cint; EXTDECL; external xml2lib;
  749. {$ENDIF}