PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /opt/cpanel/ea-libxml2/include/libxml2/libxml
Viewing File: /opt/cpanel/ea-libxml2/include/libxml2/libxml/tree.h
/** * @file * * @brief Document tree API * * Data structures and functions to build, modify, query and * serialize XML and HTML document trees. Also contains the * buffer API. * * @copyright See Copyright for the status of this software. * * @author Daniel Veillard */ #ifndef XML_TREE_INTERNALS /* * Emulate circular dependency for backward compatibility */ #include <libxml/parser.h> #else /* XML_TREE_INTERNALS */ #ifndef __XML_TREE_H__ /** @cond ignore */ #define __XML_TREE_H__ /** @endcond */ #include <stdio.h> #include <limits.h> #include <libxml/xmlversion.h> #include <libxml/xmlstring.h> #include <libxml/xmlmemory.h> #include <libxml/xmlregexp.h> #ifdef __cplusplus extern "C" { #endif /* * Backward compatibility */ /** @cond ignore */ #define xmlBufferAllocScheme XML_BUFFER_ALLOC_EXACT #define xmlDefaultBufferSize 4096 #define XML_GET_CONTENT(n) \ ((n)->type == XML_ELEMENT_NODE ? NULL : (n)->content) #define XML_GET_LINE(n) xmlGetLineNo(n) /** @endcond */ /* * Some of the basic types pointer to structures: */ /* xmlIO.h */ /** * Parser input buffer * * This struct and all related functions should ultimately * be removed from the public interface. */ typedef struct _xmlParserInputBuffer xmlParserInputBuffer; typedef xmlParserInputBuffer *xmlParserInputBufferPtr; /** Output buffer */ typedef struct _xmlOutputBuffer xmlOutputBuffer; typedef xmlOutputBuffer *xmlOutputBufferPtr; /* parser.h */ /** Parser input */ typedef struct _xmlParserInput xmlParserInput; typedef xmlParserInput *xmlParserInputPtr; /** Parser context */ typedef struct _xmlParserCtxt xmlParserCtxt; typedef xmlParserCtxt *xmlParserCtxtPtr; /** SAX locator */ typedef struct _xmlSAXLocator xmlSAXLocator; typedef xmlSAXLocator *xmlSAXLocatorPtr; /** SAX handler */ typedef struct _xmlSAXHandler xmlSAXHandler; typedef xmlSAXHandler *xmlSAXHandlerPtr; /* entities.h */ /** Entity declaration */ typedef struct _xmlEntity xmlEntity; typedef xmlEntity *xmlEntityPtr; /** * Removed, buffers always use XML_BUFFER_ALLOC_IO now. */ typedef enum { XML_BUFFER_ALLOC_DOUBLEIT, /* double each time one need to grow */ XML_BUFFER_ALLOC_EXACT, /* grow only to the minimal size */ XML_BUFFER_ALLOC_IMMUTABLE, /* immutable buffer, deprecated */ XML_BUFFER_ALLOC_IO, /* special allocation scheme used for I/O */ XML_BUFFER_ALLOC_HYBRID, /* exact up to a threshold, and doubleit thereafter */ XML_BUFFER_ALLOC_BOUNDED /* limit the upper size of the buffer */ } xmlBufferAllocationScheme; /** Buffer type */ typedef struct _xmlBuffer xmlBuffer; typedef xmlBuffer *xmlBufferPtr; /** * A buffer structure, this old construct is limited to 2GB and * is being deprecated, use API with xmlBuf instead. */ struct _xmlBuffer { /** * @deprecated Use #xmlBufferContent * * The buffer content UTF8 */ xmlChar *content XML_DEPRECATED_MEMBER; /** * @deprecated Use #xmlBufferLength * * The buffer size used */ unsigned int use XML_DEPRECATED_MEMBER; /* The buffer size */ unsigned int size XML_DEPRECATED_MEMBER; /* The realloc method */ xmlBufferAllocationScheme alloc XML_DEPRECATED_MEMBER; /* in IO mode we may have a different base */ xmlChar *contentIO XML_DEPRECATED_MEMBER; }; /** Buffer with 64-bit support */ typedef struct _xmlBuf xmlBuf; typedef xmlBuf *xmlBufPtr; /** * Macro used to express that the API use the new buffers for * xmlParserInputBuffer and xmlOutputBuffer. The change was * introduced in 2.9.0. */ #define LIBXML2_NEW_BUFFER /** * This is the namespace for the special xml: prefix predefined in the * XML Namespace specification. */ #define XML_XML_NAMESPACE \ (const xmlChar *) "http://www.w3.org/XML/1998/namespace" /** * This is the name for the special xml:id attribute */ #define XML_XML_ID (const xmlChar *) "xml:id" /** * The different element types carried by an XML tree. * * NOTE: This is synchronized with DOM Level 1 values. * See http://www.w3.org/TR/REC-DOM-Level-1/ * * Actually this had diverged a bit, and XML_DTD_NODE is used instead * of XML_DOCUMENT_TYPE_NODE. */ typedef enum { /** * An element. * * Objects of this type are an xmlNode. */ XML_ELEMENT_NODE= 1, /** * An attribute. * * Objects of this type are an xmlAttr. */ XML_ATTRIBUTE_NODE= 2, /** * A text node. * * Objects of this type are an xmlNode. */ XML_TEXT_NODE= 3, /** * A CDATA section. * * Objects of this type are an xmlNode. */ XML_CDATA_SECTION_NODE= 4, /** * An entity reference. * * Objects of this type are an xmlNode. The `children` member * points to the entity declaration if available. */ XML_ENTITY_REF_NODE= 5, /** unused */ XML_ENTITY_NODE= 6, /** * A processing instruction. * * Objects of this type are an xmlNode. */ XML_PI_NODE= 7, /** * A comment. * * Objects of this type are an xmlNode. */ XML_COMMENT_NODE= 8, /** * A document. * * Objects of this type are an xmlDoc. */ XML_DOCUMENT_NODE= 9, /** unused */ XML_DOCUMENT_TYPE_NODE= 10, /** * A document fragment. * * Objects of this type are an xmlNode. */ XML_DOCUMENT_FRAG_NODE= 11, /** A notation, unused */ XML_NOTATION_NODE= 12, /** * An HTML document. * * Objects of this type are an xmlDoc. */ XML_HTML_DOCUMENT_NODE= 13, /** * A document type definition. * * Objects of this type are an xmlDtd. */ XML_DTD_NODE= 14, /** * An element declaration. * * Objects of this type are an xmlElement. */ XML_ELEMENT_DECL= 15, /** * An attribute declaration. * * Objects of this type are an xmlAttribute. */ XML_ATTRIBUTE_DECL= 16, /** * An entity declaration. * * Objects of this type are an xmlEntity. */ XML_ENTITY_DECL= 17, /** * An XPath namespace node. * * Can only be returned by the XPath engine. Objects of this * type are an xmlNs which has a completely different layout * than xmlNode. The `next` member contains a pointer to the * xmlNode element to which the namespace applies. * * Nodes of this type must be handled with extreme care to * avoid type confusion bugs. */ XML_NAMESPACE_DECL= 18, /** * An XInclude start marker. * * Objects of this type are an xmlNode. Inserted as preceding * sibling of XIncluded content. */ XML_XINCLUDE_START= 19, /** * An XInclude end marker. * * Objects of this type are an xmlNode. Inserted as following * sibling of XIncluded content. */ XML_XINCLUDE_END= 20 /* XML_DOCB_DOCUMENT_NODE= 21 */ /* removed */ } xmlElementType; /** @cond IGNORE */ /* For backward compatibility */ #define XML_DOCB_DOCUMENT_NODE 21 /** @endcond */ /** Notation declaration */ typedef struct _xmlNotation xmlNotation; typedef xmlNotation *xmlNotationPtr; /** * A DTD Notation definition. * * Should be treated as opaque. Accessing members directly * is deprecated. */ struct _xmlNotation { /** Notation name */ const xmlChar *name; /** Public identifier, if any */ const xmlChar *PublicID; /** System identifier, if any */ const xmlChar *SystemID; }; /** * A DTD Attribute type definition. */ typedef enum { XML_ATTRIBUTE_CDATA = 1, XML_ATTRIBUTE_ID, XML_ATTRIBUTE_IDREF , XML_ATTRIBUTE_IDREFS, XML_ATTRIBUTE_ENTITY, XML_ATTRIBUTE_ENTITIES, XML_ATTRIBUTE_NMTOKEN, XML_ATTRIBUTE_NMTOKENS, XML_ATTRIBUTE_ENUMERATION, XML_ATTRIBUTE_NOTATION } xmlAttributeType; /** * A DTD Attribute default definition. */ typedef enum { XML_ATTRIBUTE_NONE = 1, XML_ATTRIBUTE_REQUIRED, XML_ATTRIBUTE_IMPLIED, XML_ATTRIBUTE_FIXED } xmlAttributeDefault; /** Enumeration in a DTD */ typedef struct _xmlEnumeration xmlEnumeration; typedef xmlEnumeration *xmlEnumerationPtr; /** * List structure used when there is an enumeration in DTDs. * * Should be treated as opaque. Accessing members directly * is deprecated. */ struct _xmlEnumeration { /** next enumeration */ struct _xmlEnumeration *next XML_DEPRECATED_MEMBER; /** value */ const xmlChar *name XML_DEPRECATED_MEMBER; }; /** Attribute declaration */ typedef struct _xmlAttribute xmlAttribute; typedef xmlAttribute *xmlAttributePtr; /** * An Attribute declaration in a DTD. * * Should be treated as opaque. Accessing members directly * is deprecated. */ struct _xmlAttribute { /** application data */ void *_private; /** XML_ATTRIBUTE_DECL */ xmlElementType type; /** attribute name */ const xmlChar *name; /** NULL */ struct _xmlNode *children; /** NULL */ struct _xmlNode *last; /** DTD */ struct _xmlDtd *parent; /** next sibling */ struct _xmlNode *next; /** previous sibling */ struct _xmlNode *prev; /** containing document */ struct _xmlDoc *doc; /** next in hash table */ struct _xmlAttribute *nexth; /** attribute type */ xmlAttributeType atype; /** attribute default */ xmlAttributeDefault def; /** default value */ xmlChar *defaultValue; /** enumeration tree if any */ xmlEnumeration *tree XML_DEPRECATED_MEMBER; /** namespace prefix if any */ const xmlChar *prefix; /** element name */ const xmlChar *elem; }; /** * Possible definitions of element content types. */ typedef enum { XML_ELEMENT_CONTENT_PCDATA = 1, XML_ELEMENT_CONTENT_ELEMENT, XML_ELEMENT_CONTENT_SEQ, XML_ELEMENT_CONTENT_OR } xmlElementContentType; /** * Possible definitions of element content occurrences. */ typedef enum { XML_ELEMENT_CONTENT_ONCE = 1, XML_ELEMENT_CONTENT_OPT, XML_ELEMENT_CONTENT_MULT, XML_ELEMENT_CONTENT_PLUS } xmlElementContentOccur; /** Element content in element declarations */ typedef struct _xmlElementContent xmlElementContent; typedef xmlElementContent *xmlElementContentPtr; /** * An XML Element content as stored after parsing an element definition * in a DTD. * * Should be treated as opaque. Accessing members directly * is deprecated. */ struct _xmlElementContent { /** PCDATA, ELEMENT, SEQ or OR */ xmlElementContentType type XML_DEPRECATED_MEMBER; /** ONCE, OPT, MULT or PLUS */ xmlElementContentOccur ocur XML_DEPRECATED_MEMBER; /** element name */ const xmlChar *name XML_DEPRECATED_MEMBER; /** first child */ struct _xmlElementContent *c1 XML_DEPRECATED_MEMBER; /** second child */ struct _xmlElementContent *c2 XML_DEPRECATED_MEMBER; /** parent */ struct _xmlElementContent *parent XML_DEPRECATED_MEMBER; /** namespace prefix */ const xmlChar *prefix XML_DEPRECATED_MEMBER; }; /** * The different possibilities for an element content type. */ typedef enum { XML_ELEMENT_TYPE_UNDEFINED = 0, XML_ELEMENT_TYPE_EMPTY = 1, XML_ELEMENT_TYPE_ANY, XML_ELEMENT_TYPE_MIXED, XML_ELEMENT_TYPE_ELEMENT } xmlElementTypeVal; /** Element declaration */ typedef struct _xmlElement xmlElement; typedef xmlElement *xmlElementPtr; /** * An XML Element declaration from a DTD. * * Should be treated as opaque. Accessing members directly * is deprecated. */ struct _xmlElement { /** application data */ void *_private; /** XML_ELEMENT_DECL */ xmlElementType type; /** element name */ const xmlChar *name; /** NULL */ struct _xmlNode *children; /** NULL */ struct _xmlNode *last; /** -> DTD */ struct _xmlDtd *parent; /** next sibling */ struct _xmlNode *next; /** previous sibling */ struct _xmlNode *prev; /** containing document */ struct _xmlDoc *doc; /** element type */ xmlElementTypeVal etype; /** allowed element content */ xmlElementContent *content; /** list of declared attributes */ xmlAttribute *attributes; /** namespace prefix if any */ const xmlChar *prefix; #ifdef LIBXML_REGEXP_ENABLED /** validating regexp */ xmlRegexp *contModel XML_DEPRECATED_MEMBER; #else void *contModel XML_DEPRECATED_MEMBER; #endif }; /** * A namespace declaration node. */ #define XML_LOCAL_NAMESPACE XML_NAMESPACE_DECL typedef xmlElementType xmlNsType; /** Namespace declaration */ typedef struct _xmlNs xmlNs; typedef xmlNs *xmlNsPtr; /** * An XML namespace. * Note that prefix == NULL is valid, it defines the default namespace * within the subtree (until overridden). * * xmlNsType is unified with xmlElementType. * * Note that the XPath engine returns XPath namespace nodes as * xmlNs cast to xmlNode. This is a terrible design decision that * can easily cause type confusion errors. In this case, the `next` * member points to the xmlNode element to which the namespace * node belongs. */ struct _xmlNs { /** next namespace */ struct _xmlNs *next; /** XML_NAMESPACE_DECL */ xmlNsType type; /** namespace URI */ const xmlChar *href; /** namespace prefix */ const xmlChar *prefix; /** application data */ void *_private; /** normally an xmlDoc */ struct _xmlDoc *context XML_DEPRECATED_MEMBER; }; /** Document type definition (DTD) */ typedef struct _xmlDtd xmlDtd; typedef xmlDtd *xmlDtdPtr; /** * An XML DTD, as defined by <!DOCTYPE ... There is actually one for * the internal subset and for the external subset. * * Should be treated as opaque. Accessing members directly * is deprecated. */ struct _xmlDtd { /** application data */ void *_private; /** XML_DTD_NODE */ xmlElementType type; /** name of the DTD */ const xmlChar *name; /** first child */ struct _xmlNode *children; /** last child */ struct _xmlNode *last; /** parent node */ struct _xmlDoc *parent; /** next sibling */ struct _xmlNode *next; /** previous sibling */ struct _xmlNode *prev; /** containing document */ struct _xmlDoc *doc; /* End of common part */ /** hash table for notations if any */ void *notations; /** hash table for elements if any */ void *elements; /** hash table for attributes if any */ void *attributes; /** hash table for entities if any */ void *entities; /** public identifier */ xmlChar *ExternalID; /** system identifier */ xmlChar *SystemID; /** hash table for parameter entities if any */ void *pentities; }; /** Attribute of an element */ typedef struct _xmlAttr xmlAttr; typedef xmlAttr *xmlAttrPtr; /** * An attribute of element. */ struct _xmlAttr { /** application data */ void *_private; /** XML_ATTRIBUTE_NODE */ xmlElementType type; /** local name */ const xmlChar *name; /** first child */ struct _xmlNode *children; /** last child */ struct _xmlNode *last; /** parent node */ struct _xmlNode *parent; /** next sibling */ struct _xmlAttr *next; /** previous sibling */ struct _xmlAttr *prev; /** containing document */ struct _xmlDoc *doc; /** namespace if any */ xmlNs *ns; /** attribute type if validating */ xmlAttributeType atype; /** for type/PSVI information */ void *psvi; /** ID struct if any */ struct _xmlID *id XML_DEPRECATED_MEMBER; }; /** Extra data for ID attributes */ typedef struct _xmlID xmlID; typedef xmlID *xmlIDPtr; /** * An XML ID instance. * * Should be treated as opaque. Accessing members directly * is deprecated. */ struct _xmlID { /* next ID */ struct _xmlID *next XML_DEPRECATED_MEMBER; /* The ID name */ xmlChar *value XML_DEPRECATED_MEMBER; /* The attribute holding it */ xmlAttr *attr XML_DEPRECATED_MEMBER; /* The attribute if attr is not available */ const xmlChar *name XML_DEPRECATED_MEMBER; /* The line number if attr is not available */ int lineno XML_DEPRECATED_MEMBER; /* The document holding the ID */ struct _xmlDoc *doc XML_DEPRECATED_MEMBER; }; /** @cond ignore */ typedef struct _xmlRef xmlRef; typedef xmlRef *xmlRefPtr; /* * An XML IDREF instance. */ struct _xmlRef { /* next Ref */ struct _xmlRef *next XML_DEPRECATED_MEMBER; /* The Ref name */ const xmlChar *value XML_DEPRECATED_MEMBER; /* The attribute holding it */ xmlAttr *attr XML_DEPRECATED_MEMBER; /* The attribute if attr is not available */ const xmlChar *name XML_DEPRECATED_MEMBER; /* The line number if attr is not available */ int lineno XML_DEPRECATED_MEMBER; }; /** @endcond */ /** Generic node type in an XML or HTML tree */ typedef struct _xmlNode xmlNode; typedef xmlNode *xmlNodePtr; /** * Generic node type in an XML or HTML tree. * * This is used for * * - XML_ELEMENT_NODE * - XML_TEXT_NODE * - XML_CDATA_SECTION_NODE * - XML_ENTITY_REF_NODE * - XML_PI_NODE * - XML_COMMENT_NODE * - XML_DOCUMENT_FRAG_NODE * - XML_XINCLUDE_START_NODE * - XML_XINCLUDE_END_NODE * * Other node types have a different struct layout than xmlNode, * see xmlElementType. Except for XML_NAMESPACE_DECL all nodes * share the following members at the same offset: * * - `_private` * - `type` (also for XML_NAMESPACE_DECL) * - `name` * - `children` * - `last` * - `parent` * - `next` * - `prev` * - `doc` * * xmlNode and xmlAttr also share the `ns` member. */ struct _xmlNode { /** Application data. Often used by language bindings. */ void *_private; /** Type enum, an xmlElementType value */ xmlElementType type; /** * Name of the node. * * - Local name of elements or attributes. As a corner case, * this can also contain Names which are invalid QNames in * non-namespace-wellformed documents. * - Name of entity references * - Target of processing instructions * - Fixed string for text and comments * - Unused otherwise */ const xmlChar *name; /** First child. Entity declaration of entity references. */ struct _xmlNode *children; /** Last child */ struct _xmlNode *last; /** Parent node. NULL for documents or unlinked root nodes. */ struct _xmlNode *parent; /** Next sibling */ struct _xmlNode *next; /** Previous sibling */ struct _xmlNode *prev; /** * Associated document. * * Used to access DTDs, entities, ID tables, dictionary or * other document properties. All children of a node share the * same document. */ struct _xmlDoc *doc; /* End of common part */ /** Namespace of element if any */ xmlNs *ns; /** * Content of text, comment, PI nodes. * * Sort index for elements after calling #xmlXPathOrderDocElems. * Content of internal entities for entity references. */ xmlChar *content; /** * First attribute of element. * * Also used to store small strings with XML_PARSE_COMPACT. */ struct _xmlAttr *properties; /** First namespace definition of element */ xmlNs *nsDef; /** For type/PSVI information */ void *psvi; /** Line number */ unsigned short line; /** Extra data for XPath/XSLT */ unsigned short extra; }; /** * Set of properties of the document as found by the parser. * Some of them are linked to similarly named xmlParserOption. */ typedef enum { /** document is XML well formed */ XML_DOC_WELLFORMED = 1<<0, /** document is Namespace valid */ XML_DOC_NSVALID = 1<<1, /** parsed with old XML-1.0 parser */ XML_DOC_OLD10 = 1<<2, /** DTD validation was successful */ XML_DOC_DTDVALID = 1<<3, /** XInclude substitution was done */ XML_DOC_XINCLUDE = 1<<4, /** Document was built using the API and not by parsing an instance */ XML_DOC_USERBUILT = 1<<5, /** built for internal processing */ XML_DOC_INTERNAL = 1<<6, /** parsed or built HTML document */ XML_DOC_HTML = 1<<7 } xmlDocProperties; /** XML or HTML document */ typedef struct _xmlDoc xmlDoc; typedef xmlDoc *xmlDocPtr; /** * An XML or HTML document. */ struct _xmlDoc { /** application data */ void *_private; /** XML_DOCUMENT_NODE or XML_HTML_DOCUMENT_NODE */ xmlElementType type; /** NULL */ char *name; /** first child */ struct _xmlNode *children; /** last child */ struct _xmlNode *last; /** parent node */ struct _xmlNode *parent; /** next sibling */ struct _xmlNode *next; /** previous sibling */ struct _xmlNode *prev; /** reference to itself */ struct _xmlDoc *doc; /* End of common part */ /** level of zlib compression */ int compression; /** * standalone document (no external refs) * * - 1 if standalone="yes", * - 0 if standalone="no", * - -1 if there is no XML declaration, * - -2 if there is an XML declaration, but no * standalone attribute was specified */ int standalone; /** internal subset */ struct _xmlDtd *intSubset; /** external subset */ struct _xmlDtd *extSubset; /** used to hold the XML namespace if needed */ struct _xmlNs *oldNs; /** version string from XML declaration */ xmlChar *version; /** actual encoding if any */ xmlChar *encoding; /** hash table for ID attributes if any */ void *ids; /** hash table for IDREFs attributes if any */ void *refs XML_DEPRECATED_MEMBER; /** URI of the document */ xmlChar *URL; /** unused */ int charset; /** dict used to allocate names if any */ struct _xmlDict *dict; /** for type/PSVI information */ void *psvi; /** xmlParserOption enum used to parse the document */ int parseFlags; /** xmlDocProperties of the document */ int properties; }; /** Context for DOM wrapper operations */ typedef struct _xmlDOMWrapCtxt xmlDOMWrapCtxt; typedef xmlDOMWrapCtxt *xmlDOMWrapCtxtPtr; /** * A function called to acquire namespaces (xmlNs) from the wrapper. * * @param ctxt a DOM wrapper context * @param node the context node (element or attribute) * @param nsName the requested namespace name * @param nsPrefix the requested namespace prefix * @returns an xmlNs or NULL in case of an error. */ typedef xmlNs *(*xmlDOMWrapAcquireNsFunction) (xmlDOMWrapCtxt *ctxt, xmlNode *node, const xmlChar *nsName, const xmlChar *nsPrefix); /** * Context for DOM wrapper-operations. */ struct _xmlDOMWrapCtxt { void * _private; /* * The type of this context, just in case we need specialized * contexts in the future. */ int type; /* * Internal namespace map used for various operations. */ void * namespaceMap; /* * Use this one to acquire an xmlNs intended for node->ns. * (Note that this is not intended for elem->nsDef). */ xmlDOMWrapAcquireNsFunction getNsForNodeFunc; }; /** * Signature for the registration callback of a created node * * @param node the current node */ typedef void (*xmlRegisterNodeFunc) (xmlNode *node); /** * Signature for the deregistration callback of a discarded node * * @param node the current node */ typedef void (*xmlDeregisterNodeFunc) (xmlNode *node); /** * Macro for compatibility naming layer with libxml1. Maps * to "children." */ #ifndef xmlChildrenNode #define xmlChildrenNode children #endif /** * Macro for compatibility naming layer with libxml1. Maps * to "children". */ #ifndef xmlRootNode #define xmlRootNode children #endif /* * Variables. */ /** @cond ignore */ XML_DEPRECATED XMLPUBFUN xmlRegisterNodeFunc *__xmlRegisterNodeDefaultValue(void); XML_DEPRECATED XMLPUBFUN xmlDeregisterNodeFunc *__xmlDeregisterNodeDefaultValue(void); #ifndef XML_GLOBALS_NO_REDEFINITION #define xmlRegisterNodeDefaultValue \ (*__xmlRegisterNodeDefaultValue()) #define xmlDeregisterNodeDefaultValue \ (*__xmlDeregisterNodeDefaultValue()) #endif /** @endcond */ /* * Some helper functions */ XMLPUBFUN int xmlValidateNCName (const xmlChar *value, int space); XMLPUBFUN int xmlValidateQName (const xmlChar *value, int space); XMLPUBFUN int xmlValidateName (const xmlChar *value, int space); XMLPUBFUN int xmlValidateNMToken (const xmlChar *value, int space); XMLPUBFUN xmlChar * xmlBuildQName (const xmlChar *ncname, const xmlChar *prefix, xmlChar *memory, int len); XMLPUBFUN xmlChar * xmlSplitQName2 (const xmlChar *name, xmlChar **prefix); XMLPUBFUN const xmlChar * xmlSplitQName3 (const xmlChar *name, int *len); /* * Creating/freeing new structures. */ XMLPUBFUN xmlDtd * xmlCreateIntSubset (xmlDoc *doc, const xmlChar *name, const xmlChar *publicId, const xmlChar *systemId); XMLPUBFUN xmlDtd * xmlNewDtd (xmlDoc *doc, const xmlChar *name, const xmlChar *publicId, const xmlChar *systemId); XMLPUBFUN xmlDtd * xmlGetIntSubset (const xmlDoc *doc); XMLPUBFUN void xmlFreeDtd (xmlDtd *cur); XMLPUBFUN xmlNs * xmlNewNs (xmlNode *node, const xmlChar *href, const xmlChar *prefix); XMLPUBFUN void xmlFreeNs (xmlNs *cur); XMLPUBFUN void xmlFreeNsList (xmlNs *cur); XMLPUBFUN xmlDoc * xmlNewDoc (const xmlChar *version); XMLPUBFUN void xmlFreeDoc (xmlDoc *cur); XMLPUBFUN xmlAttr * xmlNewDocProp (xmlDoc *doc, const xmlChar *name, const xmlChar *value); XMLPUBFUN xmlAttr * xmlNewProp (xmlNode *node, const xmlChar *name, const xmlChar *value); XMLPUBFUN xmlAttr * xmlNewNsProp (xmlNode *node, xmlNs *ns, const xmlChar *name, const xmlChar *value); XMLPUBFUN xmlAttr * xmlNewNsPropEatName (xmlNode *node, xmlNs *ns, xmlChar *name, const xmlChar *value); XMLPUBFUN void xmlFreePropList (xmlAttr *cur); XMLPUBFUN void xmlFreeProp (xmlAttr *cur); XMLPUBFUN xmlAttr * xmlCopyProp (xmlNode *target, xmlAttr *cur); XMLPUBFUN xmlAttr * xmlCopyPropList (xmlNode *target, xmlAttr *cur); XMLPUBFUN xmlDtd * xmlCopyDtd (xmlDtd *dtd); XMLPUBFUN xmlDoc * xmlCopyDoc (xmlDoc *doc, int recursive); /* * Creating new nodes. */ XMLPUBFUN xmlNode * xmlNewDocNode (xmlDoc *doc, xmlNs *ns, const xmlChar *name, const xmlChar *content); XMLPUBFUN xmlNode * xmlNewDocNodeEatName (xmlDoc *doc, xmlNs *ns, xmlChar *name, const xmlChar *content); XMLPUBFUN xmlNode * xmlNewNode (xmlNs *ns, const xmlChar *name); XMLPUBFUN xmlNode * xmlNewNodeEatName (xmlNs *ns, xmlChar *name); XMLPUBFUN xmlNode * xmlNewChild (xmlNode *parent, xmlNs *ns, const xmlChar *name, const xmlChar *content); XMLPUBFUN xmlNode * xmlNewDocText (const xmlDoc *doc, const xmlChar *content); XMLPUBFUN xmlNode * xmlNewText (const xmlChar *content); XMLPUBFUN xmlNode * xmlNewDocPI (xmlDoc *doc, const xmlChar *name, const xmlChar *content); XMLPUBFUN xmlNode * xmlNewPI (const xmlChar *name, const xmlChar *content); XMLPUBFUN xmlNode * xmlNewDocTextLen (xmlDoc *doc, const xmlChar *content, int len); XMLPUBFUN xmlNode * xmlNewTextLen (const xmlChar *content, int len); XMLPUBFUN xmlNode * xmlNewDocComment (xmlDoc *doc, const xmlChar *content); XMLPUBFUN xmlNode * xmlNewComment (const xmlChar *content); XMLPUBFUN xmlNode * xmlNewCDataBlock (xmlDoc *doc, const xmlChar *content, int len); XMLPUBFUN xmlNode * xmlNewCharRef (xmlDoc *doc, const xmlChar *name); XMLPUBFUN xmlNode * xmlNewReference (const xmlDoc *doc, const xmlChar *name); XMLPUBFUN xmlNode * xmlCopyNode (xmlNode *node, int recursive); XMLPUBFUN xmlNode * xmlDocCopyNode (xmlNode *node, xmlDoc *doc, int recursive); XMLPUBFUN xmlNode * xmlDocCopyNodeList (xmlDoc *doc, xmlNode *node); XMLPUBFUN xmlNode * xmlCopyNodeList (xmlNode *node); XMLPUBFUN xmlNode * xmlNewTextChild (xmlNode *parent, xmlNs *ns, const xmlChar *name, const xmlChar *content); XMLPUBFUN xmlNode * xmlNewDocRawNode (xmlDoc *doc, xmlNs *ns, const xmlChar *name, const xmlChar *content); XMLPUBFUN xmlNode * xmlNewDocFragment (xmlDoc *doc); /* * Navigating. */ XMLPUBFUN long xmlGetLineNo (const xmlNode *node); XMLPUBFUN xmlChar * xmlGetNodePath (const xmlNode *node); XMLPUBFUN xmlNode * xmlDocGetRootElement (const xmlDoc *doc); XMLPUBFUN xmlNode * xmlGetLastChild (const xmlNode *parent); XMLPUBFUN int xmlNodeIsText (const xmlNode *node); XMLPUBFUN int xmlIsBlankNode (const xmlNode *node); /* * Changing the structure. */ XMLPUBFUN xmlNode * xmlDocSetRootElement (xmlDoc *doc, xmlNode *root); XMLPUBFUN void xmlNodeSetName (xmlNode *cur, const xmlChar *name); XMLPUBFUN xmlNode * xmlAddChild (xmlNode *parent, xmlNode *cur); XMLPUBFUN xmlNode * xmlAddChildList (xmlNode *parent, xmlNode *cur); XMLPUBFUN xmlNode * xmlReplaceNode (xmlNode *old, xmlNode *cur); XMLPUBFUN xmlNode * xmlAddPrevSibling (xmlNode *cur, xmlNode *elem); XMLPUBFUN xmlNode * xmlAddSibling (xmlNode *cur, xmlNode *elem); XMLPUBFUN xmlNode * xmlAddNextSibling (xmlNode *cur, xmlNode *elem); XMLPUBFUN void xmlUnlinkNode (xmlNode *cur); XMLPUBFUN xmlNode * xmlTextMerge (xmlNode *first, xmlNode *second); XMLPUBFUN int xmlTextConcat (xmlNode *node, const xmlChar *content, int len); XMLPUBFUN void xmlFreeNodeList (xmlNode *cur); XMLPUBFUN void xmlFreeNode (xmlNode *cur); XMLPUBFUN int xmlSetTreeDoc (xmlNode *tree, xmlDoc *doc); XMLPUBFUN int xmlSetListDoc (xmlNode *list, xmlDoc *doc); /* * Namespaces. */ XMLPUBFUN xmlNs * xmlSearchNs (xmlDoc *doc, xmlNode *node, const xmlChar *nameSpace); XMLPUBFUN xmlNs * xmlSearchNsByHref (xmlDoc *doc, xmlNode *node, const xmlChar *href); XMLPUBFUN int xmlGetNsListSafe (const xmlDoc *doc, const xmlNode *node, xmlNs ***out); XMLPUBFUN xmlNs ** xmlGetNsList (const xmlDoc *doc, const xmlNode *node); XMLPUBFUN void xmlSetNs (xmlNode *node, xmlNs *ns); XMLPUBFUN xmlNs * xmlCopyNamespace (xmlNs *cur); XMLPUBFUN xmlNs * xmlCopyNamespaceList (xmlNs *cur); /* * Changing the content. */ XMLPUBFUN xmlAttr * xmlSetProp (xmlNode *node, const xmlChar *name, const xmlChar *value); XMLPUBFUN xmlAttr * xmlSetNsProp (xmlNode *node, xmlNs *ns, const xmlChar *name, const xmlChar *value); XMLPUBFUN int xmlNodeGetAttrValue (const xmlNode *node, const xmlChar *name, const xmlChar *nsUri, xmlChar **out); XMLPUBFUN xmlChar * xmlGetNoNsProp (const xmlNode *node, const xmlChar *name); XMLPUBFUN xmlChar * xmlGetProp (const xmlNode *node, const xmlChar *name); XMLPUBFUN xmlAttr * xmlHasProp (const xmlNode *node, const xmlChar *name); XMLPUBFUN xmlAttr * xmlHasNsProp (const xmlNode *node, const xmlChar *name, const xmlChar *nameSpace); XMLPUBFUN xmlChar * xmlGetNsProp (const xmlNode *node, const xmlChar *name, const xmlChar *nameSpace); XMLPUBFUN xmlNode * xmlStringGetNodeList (const xmlDoc *doc, const xmlChar *value); XMLPUBFUN xmlNode * xmlStringLenGetNodeList (const xmlDoc *doc, const xmlChar *value, int len); XMLPUBFUN xmlChar * xmlNodeListGetString (xmlDoc *doc, const xmlNode *list, int inLine); XMLPUBFUN xmlChar * xmlNodeListGetRawString (const xmlDoc *doc, const xmlNode *list, int inLine); XMLPUBFUN int xmlNodeSetContent (xmlNode *cur, const xmlChar *content); XMLPUBFUN int xmlNodeSetContentLen (xmlNode *cur, const xmlChar *content, int len); XMLPUBFUN int xmlNodeAddContent (xmlNode *cur, const xmlChar *content); XMLPUBFUN int xmlNodeAddContentLen (xmlNode *cur, const xmlChar *content, int len); XMLPUBFUN xmlChar * xmlNodeGetContent (const xmlNode *cur); XMLPUBFUN int xmlNodeBufGetContent (xmlBuffer *buffer, const xmlNode *cur); XMLPUBFUN int xmlBufGetNodeContent (xmlBuf *buf, const xmlNode *cur); XMLPUBFUN xmlChar * xmlNodeGetLang (const xmlNode *cur); XMLPUBFUN int xmlNodeGetSpacePreserve (const xmlNode *cur); XMLPUBFUN int xmlNodeSetLang (xmlNode *cur, const xmlChar *lang); XMLPUBFUN int xmlNodeSetSpacePreserve (xmlNode *cur, int val); XMLPUBFUN int xmlNodeGetBaseSafe (const xmlDoc *doc, const xmlNode *cur, xmlChar **baseOut); XMLPUBFUN xmlChar * xmlNodeGetBase (const xmlDoc *doc, const xmlNode *cur); XMLPUBFUN int xmlNodeSetBase (xmlNode *cur, const xmlChar *uri); /* * Removing content. */ XMLPUBFUN int xmlRemoveProp (xmlAttr *cur); XMLPUBFUN int xmlUnsetNsProp (xmlNode *node, xmlNs *ns, const xmlChar *name); XMLPUBFUN int xmlUnsetProp (xmlNode *node, const xmlChar *name); #ifdef LIBXML_OUTPUT_ENABLED XMLPUBFUN void xmlAttrSerializeTxtContent(xmlBuffer *buf, xmlDoc *doc, xmlAttr *attr, const xmlChar *string); #endif /* LIBXML_OUTPUT_ENABLED */ /* * Namespace handling. */ XMLPUBFUN int xmlReconciliateNs (xmlDoc *doc, xmlNode *tree); #ifdef LIBXML_OUTPUT_ENABLED /* * Saving. */ XMLPUBFUN void xmlDocDumpFormatMemory (xmlDoc *cur, xmlChar **mem, int *size, int format); XMLPUBFUN void xmlDocDumpMemory (xmlDoc *cur, xmlChar **mem, int *size); XMLPUBFUN void xmlDocDumpMemoryEnc (xmlDoc *out_doc, xmlChar **doc_txt_ptr, int * doc_txt_len, const char *txt_encoding); XMLPUBFUN void xmlDocDumpFormatMemoryEnc(xmlDoc *out_doc, xmlChar **doc_txt_ptr, int * doc_txt_len, const char *txt_encoding, int format); XMLPUBFUN int xmlDocFormatDump (FILE *f, xmlDoc *cur, int format); XMLPUBFUN int xmlDocDump (FILE *f, xmlDoc *cur); XMLPUBFUN void xmlElemDump (FILE *f, xmlDoc *doc, xmlNode *cur); XMLPUBFUN int xmlSaveFile (const char *filename, xmlDoc *cur); XMLPUBFUN int xmlSaveFormatFile (const char *filename, xmlDoc *cur, int format); XMLPUBFUN size_t xmlBufNodeDump (xmlBuf *buf, xmlDoc *doc, xmlNode *cur, int level, int format); XMLPUBFUN int xmlNodeDump (xmlBuffer *buf, xmlDoc *doc, xmlNode *cur, int level, int format); XMLPUBFUN int xmlSaveFileTo (xmlOutputBuffer *buf, xmlDoc *cur, const char *encoding); XMLPUBFUN int xmlSaveFormatFileTo (xmlOutputBuffer *buf, xmlDoc *cur, const char *encoding, int format); XMLPUBFUN void xmlNodeDumpOutput (xmlOutputBuffer *buf, xmlDoc *doc, xmlNode *cur, int level, int format, const char *encoding); XMLPUBFUN int xmlSaveFormatFileEnc (const char *filename, xmlDoc *cur, const char *encoding, int format); XMLPUBFUN int xmlSaveFileEnc (const char *filename, xmlDoc *cur, const char *encoding); #endif /* LIBXML_OUTPUT_ENABLED */ /* * XHTML */ XMLPUBFUN int xmlIsXHTML (const xmlChar *systemID, const xmlChar *publicID); /* * Compression. */ XMLPUBFUN int xmlGetDocCompressMode (const xmlDoc *doc); XMLPUBFUN void xmlSetDocCompressMode (xmlDoc *doc, int mode); XML_DEPRECATED XMLPUBFUN int xmlGetCompressMode (void); XML_DEPRECATED XMLPUBFUN void xmlSetCompressMode (int mode); /* * DOM-wrapper helper functions. */ XMLPUBFUN xmlDOMWrapCtxt * xmlDOMWrapNewCtxt (void); XMLPUBFUN void xmlDOMWrapFreeCtxt (xmlDOMWrapCtxt *ctxt); XMLPUBFUN int xmlDOMWrapReconcileNamespaces(xmlDOMWrapCtxt *ctxt, xmlNode *elem, int options); XMLPUBFUN int xmlDOMWrapAdoptNode (xmlDOMWrapCtxt *ctxt, xmlDoc *sourceDoc, xmlNode *node, xmlDoc *destDoc, xmlNode *destParent, int options); XMLPUBFUN int xmlDOMWrapRemoveNode (xmlDOMWrapCtxt *ctxt, xmlDoc *doc, xmlNode *node, int options); XMLPUBFUN int xmlDOMWrapCloneNode (xmlDOMWrapCtxt *ctxt, xmlDoc *sourceDoc, xmlNode *node, xmlNode **clonedNode, xmlDoc *destDoc, xmlNode *destParent, int deep, int options); /* * 5 interfaces from DOM ElementTraversal, but different in entities * traversal. */ XMLPUBFUN unsigned long xmlChildElementCount (xmlNode *parent); XMLPUBFUN xmlNode * xmlNextElementSibling (xmlNode *node); XMLPUBFUN xmlNode * xmlFirstElementChild (xmlNode *parent); XMLPUBFUN xmlNode * xmlLastElementChild (xmlNode *parent); XMLPUBFUN xmlNode * xmlPreviousElementSibling (xmlNode *node); XML_DEPRECATED XMLPUBFUN xmlRegisterNodeFunc xmlRegisterNodeDefault (xmlRegisterNodeFunc func); XML_DEPRECATED XMLPUBFUN xmlDeregisterNodeFunc xmlDeregisterNodeDefault (xmlDeregisterNodeFunc func); XML_DEPRECATED XMLPUBFUN xmlRegisterNodeFunc xmlThrDefRegisterNodeDefault(xmlRegisterNodeFunc func); XML_DEPRECATED XMLPUBFUN xmlDeregisterNodeFunc xmlThrDefDeregisterNodeDefault(xmlDeregisterNodeFunc func); /* * Handling Buffers, the old ones see `xmlBuf` for the new ones. */ XML_DEPRECATED XMLPUBFUN void xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme); XML_DEPRECATED XMLPUBFUN xmlBufferAllocationScheme xmlGetBufferAllocationScheme(void); XMLPUBFUN xmlBuffer * xmlBufferCreate (void); XMLPUBFUN xmlBuffer * xmlBufferCreateSize (size_t size); XMLPUBFUN xmlBuffer * xmlBufferCreateStatic (void *mem, size_t size); XML_DEPRECATED XMLPUBFUN int xmlBufferResize (xmlBuffer *buf, unsigned int size); XMLPUBFUN void xmlBufferFree (xmlBuffer *buf); XMLPUBFUN int xmlBufferDump (FILE *file, xmlBuffer *buf); XMLPUBFUN int xmlBufferAdd (xmlBuffer *buf, const xmlChar *str, int len); XMLPUBFUN int xmlBufferAddHead (xmlBuffer *buf, const xmlChar *str, int len); XMLPUBFUN int xmlBufferCat (xmlBuffer *buf, const xmlChar *str); XMLPUBFUN int xmlBufferCCat (xmlBuffer *buf, const char *str); XML_DEPRECATED XMLPUBFUN int xmlBufferShrink (xmlBuffer *buf, unsigned int len); XML_DEPRECATED XMLPUBFUN int xmlBufferGrow (xmlBuffer *buf, unsigned int len); XMLPUBFUN void xmlBufferEmpty (xmlBuffer *buf); XMLPUBFUN const xmlChar* xmlBufferContent (const xmlBuffer *buf); XMLPUBFUN xmlChar* xmlBufferDetach (xmlBuffer *buf); XMLPUBFUN void xmlBufferSetAllocationScheme(xmlBuffer *buf, xmlBufferAllocationScheme scheme); XMLPUBFUN int xmlBufferLength (const xmlBuffer *buf); XMLPUBFUN void xmlBufferWriteCHAR (xmlBuffer *buf, const xmlChar *string); XMLPUBFUN void xmlBufferWriteChar (xmlBuffer *buf, const char *string); XMLPUBFUN void xmlBufferWriteQuotedString(xmlBuffer *buf, const xmlChar *string); /* * A few public routines for xmlBuf. As those are expected to be used * mostly internally the bulk of the routines are internal in buf.h */ XMLPUBFUN xmlChar* xmlBufContent (const xmlBuf* buf); XMLPUBFUN xmlChar* xmlBufEnd (xmlBuf *buf); XMLPUBFUN size_t xmlBufUse (xmlBuf *buf); XMLPUBFUN size_t xmlBufShrink (xmlBuf *buf, size_t len); #ifdef __cplusplus } #endif #endif /* __XML_TREE_H__ */ #endif /* XML_TREE_INTERNALS */