\d, dZddlZddlZddlmZmZmZmZddlTddl m Z m Z ej j jej j jfZGddej j Z ee dd ee d d ee d d dZdZdZdZdZGdde ZGdde Zeedd eed d eedd GddeZeedd eZGd!d"eZeddZGd#d$e Zeed%d& eed d' d(ZGd)d*Z Gd+d,e e Z!Gd-d.e e Z"ee"dd/ Gd0d1e"Z#ee#d2d3 ee#d4d5 d6Z$d7Z%Gd8d9e"Z&Gd:d;e#Z'Gd<d=eZ(ee(dd> Gd?d@Z)GdAdBe)e e Z*GdCdDe)e Z+GdEdFe)e e Z,GdGdHe Z-GdIdJeZ.dKZ/GdLdMe e Z0ee0dNdO dPZ1dQZ2dRZ3dVdSZ4dWdTZ5dWdUZ6dS)XacSimple implementation of the Level 1 DOM. Namespaces and other minor Level 2 features are also supported. parse("foo.xml") parseString("") Todo: ===== * convenience methods for getting elements and text. * more testing * bring some of the writer and linearizer code into conformance with this interface * SAX 2 namespaces N)EMPTY_NAMESPACE EMPTY_PREFIXXMLNS_NAMESPACEdomreg)*)DOMImplementationLS DocumentLSceZdZdZdZdZdZdZeZ dZ ddZ ddZ dZ dZd Zd Zd Zd Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZ dS)NodeNcdS)NTselfs ..\python\lib\xml\dom\minidom.py__bool__z Node.__bool__+tc2|dd||SN) toprettyxml)rencoding standalones rtoxmlz Node.toxml.sB*===r  c|tj}n)tjtj|dd}|jt jkr||d||||n||d||||S| S)Nxmlcharrefreplacer)rerrorsnewliner) ioStringIO TextIOWrapperBytesIOnodeTyper DOCUMENT_NODEwritexmlgetvaluedetach)rindentnewlrrwriters rrzNode.toprettyxml1s  []]FF%bjll/7-@.2444F =D. . . MM&"fdHj I I I I MM&"fd 3 3 3  ??$$ $==??++-- -rc*t|jSN)bool childNodesrs r hasChildNodeszNode.hasChildNodesDsDO$$$rc|jSr.r0rs r_get_childNodeszNode._get_childNodesG rc.|jr |jdSdSNrr3rs r_get_firstChildzNode._get_firstChildJs# ? &?1% % & &rc.|jr |jdSdSNr3rs r_get_lastChildzNode._get_lastChildNs# ? '?2& & ' 'rc|j|jkr/t|jD]}||||S|j|jvr>t jt|dt||j |j ||| |n |j |}n,#t$rt jwxYw|jt vrt#||j||||_||_|r|j|dz }||_||_nd|_||_ |S)N cannot be child of )r%DOCUMENT_FRAGMENT_NODEtupler0 insertBefore_child_node_typesxmldomHierarchyRequestErrrepr parentNode removeChild appendChildindex ValueError NotFoundErr_nodeTypes_with_children_clear_id_cacheinsert nextSiblingpreviousSibling)rnewChildrefChildcrKnodes rrBzNode.insertBeforeRs   ; ; ;8.// / /!!!X....O  D$: : :'--.28nnnnd4jjjIKK K   *   + +H 5 5 5     X & & & & ,--h77 , , ,g))+++ , $<<<%%% O " "5( 3 3 3#+H '/H $ 0uQw/#+ +/((+/("&H s C!!)D c|j|jkr.t|jD]}|||S|j|jvr>t jt|dt||jtvrt||j |j |t||d|_|SNr>)r%r@rAr0rJrCrDrErFrGrNrOrHrI _append_childrQ)rrVrUs rrJzNode.appendChildrs =D7 7 74?++ $ $  ####K = 6 6 6'--.24jjjj$t***EGG G ]6 6 6 D ! ! ! ? & O ' ' - - -dD!!! rc|j|jkr2|j}|||||S|j|jvr>t jt|dt|||urdS|j |j | |j |}n,#t$rt jwxYw||j |<||_ d|_ |jtvs|jtvrt!||j|_|j|_d|_d|_|jr ||j_|jr ||j_|SrX)r%r@rQrIrBrCrDrErFrGrHr0rKrLrMrNrOrR)rrSoldChildrTrKs r replaceChildzNode.replaceChilds   ; ; ;+H   X & & &$$Xx88 8  D$: : :'--.28nnnnd4jjjIKK K x   F   *   + +H 5 5 5 (O))(33EE ( ( ('%%'' ' (!)""  !9 9 9 $<<< D ! ! !'3#+#; ##'  # <3;H $ 0   <3;H 0s 7C)C;cZ |j|n,#t$rtjwxYw|j|j|j_|j|j|j_dx|_|_|jtvrt|d|_ |Sr.) r0removerLrDrErMrQrRr%rNrOrHrr[s rrIzNode.removeChilds ( O " "8 , , , , ( ( ('%%'' ' (   +3;3KH 0  # /3;3GH $ 0:>>x7   8 8 8 D ! ! !" )Aclg}|jD]}|jtjkr|jsA|r|j|d_|jr|j|j_|`|rf|dj|jkrP|d}|j|jz|_|j|_|jr ||j_||||||jtj kr| ||jdd<dSr:) r0r%r TEXT_NODEdatarQrRunlinkappend ELEMENT_NODE normalize)rLchildrVs rrgzNode.normalizes, _ & &E~//z$>,1,=")(RU^;;R5D $ EJ 6DI','8D$(A<@)9LLNNNNHHUOOOO>T%666OO%%%rc2t|||jp|Sr.) _clone_node ownerDocument)rdeeps r cloneNodezNode.cloneNodes4t'9'ATBBBrcB|jj||Sr.)rlimplementation hasFeaturerfeatureversions r isSupportedzNode.isSupporteds!0;;GWMMMrcdSr.r rs r_get_localNamezNode._get_localNamestrc ||uSr.r rothers r isSameNodezNode.isSameNodes u}rc6||dr|SdSr.)rurrss r getInterfacezNode.getInterfaces$   GT * * K4rcZ |j|dS#ttf$rYdSwxYwr7) _user_dataAttributeErrorKeyErrorrkeys r getUserDatazNode.getUserDatas@ ?3'* *)   44 s **cd} |j}n#t$r i}||_YnwxYw||vr||d}|d}|||=n||f||<|Sr7)rr)rrrchandleroldds r setUserDatazNode.setUserDatas AA   ADOOO  !88C&)C <GcFG_AcF s  ""ct|drJt|jD]%\}\}}|||||||$dSdS)Nr)hasattrlistritemshandle)r operationsrcdstrrcrs r_call_user_data_handlerzNode._call_user_data_handlers~ 4 & & C(,T_-B-B-D-D(E(E C C$_dG&NN9c4cBBB C C C Crcdx|_|_|jr1|jD]}|t |_d|_d|_dSr.)rHrlr0rdNodeListrRrQ)rris rrdz Node.unlinks\/33$, ? )   &jjDO#rc|Sr.r rs r __enter__zNode.__enter__s rc.|dSr.)rd)retevtbs r__exit__z Node.__exit__s rNN)rrNN)!__name__ __module__ __qualname__ namespaceURIrHrlrQrRrprefixrrrr1r4r8r<rBrJr\rIrgrnrurwr{r~rrrrdrrr rrr r "sLJMKO F>>>><@#....&%%%&&&'''@"@ 6CCCNNN  $CCC   rr firstChildzFirst child node, or None.)doc lastChildzLast child node, or None. localNamez"Namespace-local name of this node.c||j}|r|d}||_||_||||_dSr:)r0rRrQrerH)rrVr0lasts rrYrYsIJ "~#dDOOOrcJ| |jtjkrdS|j}| dSNTF)r%r r&rHrVs r _in_documentr's3   =D. . .4   5rc|ri|dddddddd}||d Sd S) zWrites datachars to writer.&z&z>N)replacewrite)r,rcs r _write_datar/so ||C))11#v>>GD(++GGC,@,@  Trc|jD]N}|jtjkr&|dks |j|kr||t |||O|SNr)r0r%r rftagNamere_get_elements_by_tagName_helper)parentnamercrVs rrr6sb!88 =D- - - S[[DLD00 IIdOOO'dB7777 Irc|jD]`}|jtjkrI|dks |j|kr&|dks |j|kr||t||||a|Sr)r0r%r rfrrre"_get_elements_by_tagName_ns_helper)rnsURIrrrVs rrr>s|!KK =D- - -c!!T^y%@%@#!2e!;!; $ .tUIr J J J IrceZdZejZdZdZdZdZ ej ej ej ej ejejejfZdZdS)DocumentFragmentz#document-fragmentNc,t|_dSr.)rr0rs r__init__zDocumentFragment.__init__Us"**r)rrrr r@r%nodeName nodeValue attributesrHrfrbCDATA_SECTION_NODEENTITY_REFERENCE_NODEPROCESSING_INSTRUCTION_NODE COMMENT_NODE NOTATION_NODErCrr rrrrGsp*H#HIJJ*039*+ -%%%%%rrceZdZdZejZdZdZdZ ej ej fZ e ddfdZdZdZdZdZeeexZZd Zd ZeeexZZd Zd ZeeeZd ZdZdZdS)Attr)_name_valuer_prefixr0 _localNamerl ownerElementNFcd|_||_||_||_|||_t |_|jtdSr.) rrrrrrr0reText)rqNamerrrs rrz Attr.__init__csZ  (  'DO"** tvv&&&&&rct |jS#t$r$|jdddcYSwxYwN:r?r;)rrrsplitrs rrwzAttr._get_localNamersM 3? " 3 3 3=&&sA..r2 2 2 2 3  +77c|jSr.) specifiedrs r_get_specifiedzAttr._get_specifiedx ~rc|jSr.)rrs r _get_namezAttr._get_name{ zrcN||_|jt|jdSdSr.)rrrOrvalues r _set_namezAttr._set_name~s1   ( D- . . . . . ) (rc|jSr.)rrs r _get_valuezAttr._get_value {rc||_||jd_|jt |j||jd_dSr7)rr0rcrrOrs r _set_valuezAttr._set_valuesG "'   ( D- . . ."'rc|jSr.)rrs r _get_prefixzAttr._get_prefix |rc|j}|dkr,|r*|tkrtjd||_||j}n |d|j}|jrt|j||_ dS)Nxmlnsz5illegal use of 'xmlns' prefix for the wrong namespacer) rrrDrE NamespaceErrrrrrOr)rrnsurinewNames r _set_prefixzAttr._set_prefixs! W   M/11g**KMMM >nGG!'8G   / D- . . . rc|j}|T|j|j=|j|j|jf=|jr,d|_|xjdzc_|jxj dzc_ |j D]}| |j dd=dS)NFr?) r_attrsr_attrsNSrr_is_id_magic_id_nodesrl_magic_id_countr0rd)relemris rrdz Attr.unlinks     DM* t0$.AB{ 8# $$)$$"22a722_  E LLNNNN OAAA   rc|jrdS|j}|j}||dS||}|dS|jr ||j|jS||jSr) rrlr_get_elem_inforisIdNSrisIdrrrrinfos r _get_isIdzAttr._get_isIds ; 4   ;$,5!!$'' <5   ,;;t0$.AA A99T]++ +rc|j}|j}||tS||}|tS|jr ||j|jS||jSr.) rlr_no_typerrgetAttributeTypeNSrgetAttributeTyperrs r_get_schemaTypezAttr._get_schemaTypesy   ;$,O!!$'' <O   8**4+tjt |dt ||j|j}|r| ||j|j<||j |j |j f<|j |_t|j|SrX)rrrDrErFrGrr(rrdrrrr rrO)rrVrs rr>zNamedNodeMap.setNamedItemas$%% G'--.24jjjj$t***EGG Gkoodi((   JJLLL!% DI=A t($.9: .)*** rc,||Sr.)r>rrVs rsetNamedItemNSzNamedNodeMap.setNamedItemNSns  &&&rcf||}t|j|dSr.)rOrrd)rr;rVs r __delitem__zNamedNodeMap.__delitem__qs/$%)*** rc*|j|j|jfSr.r rs r __getstate__zNamedNodeMap.__getstate__vs{DM4+===rc0|\|_|_|_dSr.r rstates r __setstate__zNamedNodeMap.__setstate__ys9>6 T]D$6$6$6rr.)!rrr__doc__rrrrrrr!rr$rr(__len__r,r/r2r4r7r9r<rArDrGrLrOr>rSrUrWr[r rrr r s8I***       ((( """$$$$$$,,,,GCCC %%%%%%$$$%%%$$$111 $ $ $  ( ( ( ( ( (   ''' >>>?????rr lengthz$Number of nodes in the NamedNodeMap.c*eZdZdZdZdZdZdZdS)TypeInfo namespacerc"||_||_dSr.ra)rrbrs rrzTypeInfo.__init__s" rc|jr d|jjd|jd|jdSd|jjd|jdS)Nr z (from z)>r)rb __class__rrrs r__repr__zTypeInfo.__repr__s` > D D*..*A*A*A4999*....: : D!% 7 7 7C Crc|jSr.)rrs rrzTypeInfo._get_name yrc|jSr.)rbrs r_get_namespacezTypeInfo._get_namespacerrN)rrrrrrgrrkr rrr`r`sX#IDDDrr`c&eZdZdZejZdZeZ dZ ejej ej ej ejejfZeddfdZdZdZdZdZd Zd Zd Zd Zd ZdZdZeZdZdZ dZ!e!Z"dZ#dZ$dZ%dZ&dZ'ddZ(dZ)dZ*dZ+dZ,dZ-dS) Element) rlrHrrrrrr0rrrQrRNrcd|_|x|_|_||_||_t |_dx|_|_d|_ d|_ dSr.) rHrrrrrr0rQrRrr)rrrrrs rrzElement.__init__sU'.. t} ("**2664/  rc4|ji|_i|_dSdSr.)rrrs r_ensure_attributeszElement._ensure_attributess$ ; DKDMMM  rct |jS#t$r$|jdddcYSwxYwr)rrrrrs rrwzElement._get_localNamesM 2? " 2 2 2<%%c1--b1 1 1 1 2rc|jSr.rrs r _get_tagNamezElement._get_tagNamerrc|j=t|jD]}|d|_d|_t |dSr.)rrrrdrr )rattrs rrdzElement.unlinksd ; "T[//1122      Drc\|jdS |j|jS#t$rYdSwxYw)aReturns the value of the specified attribute. Returns the value of the element's attribute named attname as a string. An empty string is returned if the element does not have such an attribute. Note that an empty string may also be returned as an explicitly given attribute value, use the hasAttribute method to distinguish these two cases. Nr)rrr)rr@s r getAttributezElement.getAttributesH ; 2 ;w'- -   22 s  ++c`|jdS |j||fjS#t$rYdSwxYwr)rrrrFs rgetAttributeNSzElement.getAttributeNSsK = 2 =, !:;A A   22 s  --c||}|9t|}||_|j|_||dS||jkr||_|jrt |dSdSdSr.)getAttributeNoderrrlsetAttributeNoderrO)rr@rrvs r setAttributezElement.setAttributes$$W-- <==DDJ!%!3D   ! !$ ' ' ' ' ' dj DJy &%%%%%!  & &rcXt|\}}|||}|t|||tSr.rrrFs rgetElementsByTagNameNSzElement.getElementsByTagNameNS`!1 , 8::77 7rc4d|jt|fzS)Nz)rr+rs rrgzElement.__repr__ds)T\2d88,DDDrrcB||dz|jz|}|D]J}|d|zt |||j|dK|jr|dt|jdkrN|jdjtj tj fvr$|jd |dddnO|||jD]}| |||z|||||d|jd|d S|d |zd S) zWrite an XML element to a file-like object Write the element to the writer object that must provide a write method (e.g. a file or StringIO object). rz %s="rrr?rrz%sN) rr_get_attributesrrrr0rr%r rbrr')rr,r* addindentr+ra_namerVs rr'zElement.writexmlgs  VCZ$,.///$$&&jjll  F LLF* + + + f 3 4 4 4 LL     ? ( LL   DO$$))"+(?0AAA"++FBB???? T""" OMMDMM&&*:ItLLLL V$$$ LLLdlllDD9 : : : : : LL ' ' ' ' 'rc`|t|j|j|Sr.)rpr rrrs rrzElement._get_attributess* !!!DK===rc|jrdSdSrrrs r hasAttributeszElement.hasAttributess ; 45rcZ||}||dSr.)r|setIdAttributeNode)rridAttrs rsetIdAttributezElement.setIdAttributes/&&t,, '''''rc\|||}||dSr.)rr)rrrrs rsetIdAttributeNSzElement.setIdAttributeNSs1((yAA '''''rc\|||jstjt |tj|js=d|_|xjdz c_|j xj dz c_ t|dSdS)NTr?) r{rrDrErM_get_containing_entrefNoModificationAllowedErrrrrlrrO)rrs rrzElement.setIdAttributeNodes >1D!E!E>'%%'' ' !$ ' ' 3'2244 4} " FM  A %   . .! 3 . . D ! ! ! ! !  " "rrrr).rrrrr rfr%rrr rrrrbrrrCrrrprwrtrdrxrzr~rr|rr}setAttributeNodeNSrrrremoveAttributeNodeNSrrrrrgr'rrrrrr rrrmrms1I HIJO*9*03 5.=T( 222   & & &..."))) <<< &*''''''   0###::: GGG777EEE((((@>>>(((((( " " " " "rrmrz*NamedNodeMap of attributes on the element.z%Namespace-local name of this element.ct||||j|j<||j|j|jf<||_dSr.)rOrprrrrrr)elementrvs rrrsWG    $GN49<@Gd'89  DrcfeZdZdZdZdZeZdZdZ dZ dZ dZ dZ dZd Zd Zd ZdS) ChildlesszMixin that makes childless-ness easy to implement and avoids the complexity of the Node methods that deal with children. r NcdSr.r rs rr8zChildless._get_firstChildrrcdSr.r rs rr<zChildless._get_lastChildrrcPtj|jdz)Nz nodes cannot have childrenrDrErFrrRs rrJzChildless.appendChild'g)) M9 9;; ;rcdSrr rs rr1zChildless.hasChildNodesurcPtj|jdzNz nodes do not have childrenrrrSrTs rrBzChildless.insertBeforerrcPtj|jdzr)rDrErMrr_s rrIzChildless.removeChilds'g!! M9 9;; ;rcdSr.r rs rrgzChildless.normalizes rcPtj|jdzrrrrSr[s rr\zChildless.replaceChildrr)rrrr\rr EmptyNodeListr0rrr8r<rJr1rBrIrgr\r rrrrsIJJJI;;;;;;;;;   ;;;;;rrcveZdZejZdZdZdZdZ e ee Z dZ dZ e e e Zd dZd S) ProcessingInstructiontargetrcc"||_||_dSr.r)rrrcs rrzProcessingInstruction.__init__s  rc|jSr.rcrs r_get_nodeValuez$ProcessingInstruction._get_nodeValuerirc||_dSr.rrs r_set_nodeValuez$ProcessingInstruction._set_nodeValues  rc|jSr.rrs r _get_nodeNamez#ProcessingInstruction._get_nodeNamerrc||_dSr.rrs r _set_nodeNamez#ProcessingInstruction._set_nodeNames  rrc Z||d|jd|jd|dS)Nz)rrrcrr,r*rr+s rr'zProcessingInstruction.writexmls5 t{{{DIIIttLMMMMMrNr)rrrr rr%rrrrrrrrrr'r rrrrs/H"I 88Ix }55HNNNNNNrrcneZdZdZdZdZeZdZdZe eexZ Z dZ dZ dZd Zd Zd Zd S) CharacterData)_datarlrHrRrQcdx|_|_dx|_|_d|_t |dSr)rlrHrRrQrr rrs rrzCharacterData.__init__s@/33T_266t/  drc*t|jSr.)rrcrs rrzCharacterData._get_length49~~rc|jSr.rrs r _get_datazCharacterData._get_datarrc||_dSr.rrrcs r _set_datazCharacterData._set_data s  rcz|j}t|dkrd}nd}d|jjd|dd|dS)N z...rz)rcrrfr)rrc dotdotdots rrgzCharacterData.__repr__sOy t99r>>III N # # #T!B$ZZ< > >..""y) $ 2 ? )rcrLrrs rr'zComment.writexmlsI 49  DEE E  44@AAAAArNr) rrrr rr%rrr'r rrrrsJ HHBBBBBBrrc,eZdZdZejZdZddZdS) CDATASectionr z#cdata-sectionrc|jddkrtd|d|jzdS)Nz]]>rz$']]>' not allowed in a CDATA sectionz)rcfindrLrrs rr'zCDATASection.writexmlsJ 9>>% A % %CDD D % 122222rNr) rrrrr rr%rr'r rrrrs:I&HH333333rrcbeZdZdZddZdZdZdZdZdZ d Z d Z d Z d Z d ZdZdZdS)ReadOnlySequentialNamedNodeMap_seqr c||_dSr.r)rseqs rrz'ReadOnlySequentialNamedNodeMap.__init__s  rc*t|jSr.rrrs rr]z&ReadOnlySequentialNamedNodeMap.__len__rrc*t|jSr.r rs rrz*ReadOnlySequentialNamedNodeMap._get_lengthrrc8|jD]}|j|kr|cSdSr.)rrrJs rrDz+ReadOnlySequentialNamedNodeMap.getNamedItems8  AzT!!"  rcN|jD]}|j|kr|j|kr|cSdSr.)rrrrNs rrGz-ReadOnlySequentialNamedNodeMap.getNamedItemNSs@  A~--!+2J2J  rct|tr |j|}n||}|t ||Sr.)rrArGrDr)r name_or_tuplerVs rr<z*ReadOnlySequentialNamedNodeMap.__getitem__sP mU + + 4&4& 6DD$$]33D <=)) ) rcP|dkrdS |j|S#t$rYdSwxYwr7)rrrs rrz#ReadOnlySequentialNamedNodeMap.itemsD 1994 9U# #   44 s  %%c@tjdNz"NamedNodeMap instance is read-onlyrDrErrCs rrLz.ReadOnlySequentialNamedNodeMap.removeNamedItemg.. 022 2rc@tjdr(r)rFs rrOz0ReadOnlySequentialNamedNodeMap.removeNamedItemNSr*rc@tjdr(r)rRs rr>z+ReadOnlySequentialNamedNodeMap.setNamedItemr*rc@tjdr(r)rRs rrSz-ReadOnlySequentialNamedNodeMap.setNamedItemNSr*rc|jgSr.rrs rrWz+ReadOnlySequentialNamedNodeMap.__getstate__s  {rc |d|_dSr7rrYs rr[z+ReadOnlySequentialNamedNodeMap.__setstate__s!H rN)r )rrrrrr]rrDrGr<rrLrOr>rSrWr[r rrrrsI  222222222222rrz&Number of entries in the NamedNodeMap.c(eZdZdZdZdZdZdZdS) Identifiedz@Mix-in class that supports the publicId and systemId attributes.publicIdsystemIdc"||_||_dSr.r2)rr3r4s r_identified_mixin_initz!Identified._identified_mixin_inits    rc|jSr.)r3rs r _get_publicIdzIdentified._get_publicId }rc|jSr.)r4rs r _get_systemIdzIdentified._get_systemIdr9rN)rrrr\rr6r8r;r rrr1r1 sLJJ&I!!!rr1cJeZdZejZdZdZdZdZ dZ dZ dZ dZ ddZdS) DocumentTypeNct|_t|_|rt|\}}||_|j|_dSr.)rentities notationsrrr)rrrrs rrzDocumentType.__init__$sJ688 799  " ( 7 7 FI!DI  rc|jSr.)internalSubsetrs r_get_internalSubsetz DocumentType._get_internalSubset, ""rc|jetd}|j|_|j|_tjjj}|r g|j_ g|j _ |j j D]X}t|j|j |j }|j j |||||Y|jj D]}t!|j|j |j |j}|j|_|j|_|j|_|jj ||||||||||SdSr.)rlr=rrrDrEUserDataHandler NODE_CLONEDr?rr@Notationr3r4rerEntity notationNameactualEncodingrrt)rrmclonerrKnotationeentitys rrnzDocumentType.cloneNode/s^   % &&EEJ!YEN/;I D&(#')$,FFA' AJ KKHO(//999--iHEEEE+DDA#AJ AJ$%N44F,-,@@@)), FFG )((( OOG $ $ $  =9< r9rc|jSr.) errorHandlerrs r_get_errorHandlerzDocument._get_errorHandlerAs   rc|jSr.)rrs r_get_standalonezDocument._get_standaloneDr5rc|jSr.)strictErrorCheckingrs r_get_strictErrorCheckingz!Document._get_strictErrorCheckingGs ''rc|jSr.r]rs rr^zDocument._get_versionJrrc|j|jvr>tjt |dt ||j|j||jtj kr3| rtjdt ||S)Nr>z two document elements disallowed) r%rCrDrErFrGrHrIr rf_get_documentElementrJrRs rrJzDocument.appendChildMs = 6 6 6'--.24jjjj$t***EGG G ? & O ' ' - - - =D- - -((** .'--244 4d+++rc |j|n,#t$rtjwxYwdx|_|_d|_|j |urd|_ |Sr.) r0r^rLrDrErMrQrRrHdocumentElementr_s rrIzDocument.removeChild]s ( O " "8 , , , , ( ( ('%%'' ' (:>>x7"  8 + +#'D r`cL|jD]}|jtjkr|cSdSr.)r0r%r rfrRs rrzDocument._get_documentElementis;O  D} 111 2  rc|j |jd|_t|dSr.)rurdr rs rrdzDocument.unlinkns= < # L   ! ! !DL Drc|sdS|jddd}|j|_|j|_|j|_|jD]}t |||}|j|sJ|j ||j tj kr |j Jn%|j tjkr|jJ||_||_|t$jjj|||Sr.)rprwrrrtr0rkrlr{rer%r r&rrSrurHrrDrErFrG)rrmrLrK childclones rrnzDocument.cloneNodets 4#224tDD?   * *A$Qe44J+66u== = = =   # #J / / /"d&888,4444$(???},,, * $)J ! ! $$SW%<%H%)5 2 2 2 rc0t}||_|Sr.)rrl)rrs rcreateDocumentFragmentzDocument.createDocumentFragments   rc2t|}||_|Sr.)rmrl)rrrNs r createElementzDocument.createElements G  rct|tstdt}||_||_|SNznode contents must be a string)rr r?rrcrl)rrcts rcreateTextNodezDocument.createTextNodes?$$$ ><== = FFrct|tstdt}||_||_|Sr)rr r?rrcrlrrcrUs rcreateCDATASectionzDocument.createCDATASections?$$$ ><== = NNrc2t|}||_|Sr.)rrlrs r createCommentzDocument.createComments DMMrc4t||}||_|Sr.)rrl)rrrcps rcreateProcessingInstructionz$Document.createProcessingInstructions !&$ / /rc@t|}||_d|_|Sr)rrlr)rras rcreateAttributezDocument.createAttributes KKrcZt|\}}t|||}||_|Sr.)rrmrl)rrrrrrNs rrtzDocument.createElementNSs1$]33 M< 8 8rcjt|\}}t||||}||_d|_|Sr)rrrlr)rrrrrrs rcreateAttributeNSzDocument.createAttributeNSs:$]33  i @ @rc8t||||}||_|Sr.)rIrl)rrr3r4rJrNs r_create_entityzDocument._create_entitys! 48\ : :rc6t|||}||_|Sr.)rHrl)rrr3r4rKs r_create_notationzDocument._create_notations T8X . .rc||jvr |j|S|js |jsdS|j}||jg}||_n|sdSd}|rx|}|d|jD||}|r|j D]}|j rG| |j |j r&||j|j<|j|kr|}F|jsntP||jr'||j|j<|j|kr|}|jsn3|jr*||j|j<|j|kr|}|jdkrnnF|jr?|j D]%}|jr||j|j<|j|kr|}&|n|x|S)Nc.g|]}|jtv|Sr )r%rN).0ris r z+Document.getElementById..s2IIIE"^/GGG GGGrr?)rrrrrpopextendr0rrrrrrrrrrr)rr+stackresultrVrrvs rgetElementByIdzDocument.getElementByIdsN   >"% % 4#7 4% =)*E$)D ! ! 4& 99;;D LLIIT_III J J J&&t,,D *!O2244""D(";;t'8$.II&9=DN4:6#zR//)-%)%9& %49-- "59tz2:++%)FF!%!5"!E""59tz2:++%)FF!1Q66!E% * O2244**D{*59tz2:++%)F!M& N rc<t||tSr.rrCs rrzDocument.getElementsByTagNames.tT8::FFFrc>t|||tSr.rrFs rrzDocument.getElementsByTagNameNS rrc8|j||Sr.)rprqrrs rruzDocument.isSupporteds"--gw???rc|jtjkrtjd|jtjkrtjdt|||S)Nzcannot import document nodesz!cannot import document type nodes)r%r r&rDrENotSupportedErrrSrk)rrVrms r importNodezDocument.importNodesb =D. . .'))*HII I ]d5 5 5'))*MNN N4t,,,rrcg}|r|d|d||d|rdndd|dd|d||jD]}|||||dS) Nz encoding="rz standalone="yesnoz@@@ FI :, , ,nG"++A...G  % :* * *AIIAF"((+++2..q111 r)rrrNN)=rrrrr rfrrrSrCrhrpr&r%rrrrHrRrQrKrrrtrrrrrrrXrrr[rrrr^rJrIrrdrnrrrrrrrrtrrrrrrrurr'rr rrr|r| s@I*D,L*D,CE'&((N!HHIJJ$((Ok NHJGLKO%%%(((###   !!!(((,,,     *        888tGGG777@@@---KO  ; ; ; ; 33333rr|rz#Top-level element of this document.c |j|rtjjj}ntjjj}|jtj kr| |j |j }|j D]T}||j |j |j||j |j}|j|_U|r0|jD](}t+|||}||)nG|jtjkrH|}|r0|jD](}t+|||}||)n|jtjkr||j}n|jtjkr||j}n|jtjkr"||j |j}nQ|jtj!kr|"|j}n |jtj#kr5|$|j |j }d|_|j|_n|jtj%kr|j|usJtjjj}|j&'|j(|j)|j*}||_|r:g|j+_,g|j-_,|j-j,D]o} t]| j | j)| j*} || _|j-j,/| ta| dr| 1|| | p|j+j,D]} te| j | j)| j*| j3} | j4| _4| j5| _5| j6| _6|| _|j+j,/| ta| dr| 1|| | n/tj7dtq|zta|dr|1||||S)zo Clone a node and give it the new owner document. Called by Node.cloneNode and Document.importNode TrzCannot clone node %s)9rlr{rDrErFrG NODE_IMPORTEDr%r rfrtrrrrrrrrrr0rkrJr@rrbrrcrrrrrrrrrrSrpryrr3r4r?rr@rHrerrrIrJrKrrtrrG) rVrmnewOwnerDocumentrrLrvrrirUrKrMrNrOs rrkrkasK  $$%566:G+7 G+9  }))) 001B15@@O**,, ) )D  !2DM4: N N N(():DNKKA.AKK  % % %t-=>>!!!$$$$ $5 5 5 7799  % % %t-=>>!!!$$$$ $. ( ( // :: $1 1 1 33DI>> $: : : <3H==H  DAq*55a;; tt   ""rrr.)7r\r!rrDrrrrxml.dom.minicompatxml.dom.xmlbuilderrr rEr rfrrN defpropertyrYrrrrrrobjectr  AttributeListr`rrmrrrrrr rrrrr1r=rIrHrhr~rOr|rkrrrrrr rrrs" JJJJJJJJJJJJ >>>>>>>> GL5GL>@ttttt37<tttl D,$@AAAA D+$?@@@@ D+$HIIII%%%%%t%%%$y8y8y8y8y84y8y8y8v D&$FGGGG D+$MNNNN D,$EFFFFa?a?a?a?a?6a?a?a?F L(68888 v( 8D$  L"L"L"L"L"dL"L"L"\ G\<>>>> G[79999    &;&;&;&;&;&;&;&;RNNNNNItNNN4ECECECECECItECECECN M8)EFFFFS+S+S+S+S+=S+S+S+j D0.//// D+@BBBB B B B B Bm B B B 3 3 3 3 34 3 3 3<<<<<V<<<| *H8::::        ::::::y$:::x&9&9&9&9&9Z&9&9&9P88888z9d888MMMMM+MMM^(((((&(((T222QQQQQtZQQQf  H'57777OOOd!!!44445555######r