f, `dZddlZddlZddlmZmZmZmZddlddl m Z m Z ejjjejjjfZGddejjZ 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 dPZ1dQZ2dRZ3dVdSZ4dWdTZ5dWdUZ6y)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 dZdZdZd Zd Zd Zd Zd ZdZdZdZdZdZdZdZdZdZdZdZ y)NodeNcy)NTselfs &/usr/lib/python3.12/xml/dom/minidom.py__bool__z Node.__bool__+c*|jdd||SN) toprettyxml)rencoding standalones rtoxmlz Node.toxml.sB*==rcv|tj}n+tjtj|dd}|jt j k(r|j|d||||n|j|d||||jS|jjS)Nxmlcharrefreplace )rerrorsnewliner) ioStringIO TextIOWrapperBytesIOnodeTyper DOCUMENT_NODEwritexmlgetvaluedetach)rindentnewlrrwriters rrzNode.toprettyxml1s  [[]F%%bjjl/7-@.24F ==D.. . MM&"fdHj I MM&"fd 3  ??$ $==?++- -rc,t|jSN)bool childNodesrs r hasChildNodeszNode.hasChildNodesDsDOO$$rc|jSr-r/rs r_get_childNodeszNode._get_childNodesG rc:|jr|jdSyNrr2rs r_get_firstChildzNode._get_firstChildJs ????1% % rc:|jr|jdSyNr2rs r_get_lastChildzNode._get_lastChildNs ????2& & rc&|j|jk(r.t|jD]}|j |||S|j|j vr6t jjt|dt||j|jj|||j||S |jj|}|jt vr t#||jj%||||_||_|r!|j|dz }||_||_nd|_||_ |S#t$rt jjwxYw)N cannot be child of )r$DOCUMENT_FRAGMENT_NODEtupler/ insertBefore_child_node_typesxmldomHierarchyRequestErrrepr parentNode removeChild appendChildindex ValueError NotFoundErr_nodeTypes_with_children_clear_id_cacheinsert nextSiblingpreviousSibling)rnewChildrefChildcrJnodes rrAzNode.insertBeforeRss    ; ; ;8../ /!!!X. /O   D$:$: :''--.28nd4jIK K    *    + +H 5     X &$! ,--h7  $<<% OO " "5( 3#+H '/H $uQw/#+ +/(+/("&H  ,gg))++ ,s E(((Fc|j|jk(r-t|jD]}|j ||S|j|j vr6t jjt|dt||jtvr t||j|jj|t||d|_|SNr=)r$r?r@r/rIrBrCrDrErFrMrNrGrH _append_childrP)rrUrTs rrIzNode.appendChildrs ==D77 74??+ $  # $K == 6 6 6''--.24j$t*EG G ]]6 6 D ! ?? & OO ' ' -dD! rc|j|jk(r/|j}|j||j ||S|j|j vr6t jjt|dt|||ury|j|jj| |jj|}||j|<||_ d|_ |jtvs|jtvr t!||j|_|j"|_d|_d|_|j"r||j"_|jr||j_|S#t$rt jjwxYwrW)r$r?rPrHrArBrCrDrErFrGr/rJrKrLrMrNrQ)rrRoldChildrSrJs r replaceChildzNode.replaceChilds    ; ; ;++H   X &$$Xx8 8   D$:$: :''--.28nd4jIK K x      *    + +H 5 (OO))(3E"*""   !9 9  $<< D !'33#+#;#; ##'  # #3;H $ $ 0   3;H 0! (''%%' ' (s F(F?c |jj||j |j|j _|j|j |j_dx|_|_|jtvr t|d|_ |S#t$rtjj wxYwr-) r/removerKrCrDrLrPrQr$rMrNrGrrZs rrHzNode.removeChilds ( OO " "8 ,    +3;3K3KH 0  # # /3;3G3GH $ $ 0:>>x7    8 8 D !" (''%%' ' (s B(Ccg}|jD]M}|jtjk(r|jsN|r|j |d_|j r|j |j _|j{|r~|dj|jk(rb|d}|j|jz|_|j |_|j r||j _|j|j||j||jtjk(s>|jP||jddyr9) r/r$r TEXT_NODEdatarPrQunlinkappend ELEMENT_NODE normalize)rLchildrUs rrezNode.normalizes __ &E~~/zz,1,=,=")((>U^^;R5D $ EJJ 6DI','8'8D$((<@))9LLNHHUO>>T%6%66OO%- &.rc8t|||jxs|Sr-) _clone_node ownerDocument)rdeeps r cloneNodezNode.cloneNodes4t'9'9'ATBBrcN|jjj||Sr-)rjimplementation hasFeaturerfeatureversions r isSupportedzNode.isSupporteds!!!00;;GWMMrcyr-r rs r_get_localNamezNode._get_localNamesrc ||uSr-r rothers r isSameNodezNode.isSameNodes u}rc,|j|dr|Syr-)rsrrqs r getInterfacezNode.getInterfaces   GT *KrcR |j|dS#ttf$rYywxYwr6) _user_dataAttributeErrorKeyErrorrkeys r getUserDatazNode.getUserDatas2 ??3'* *)  s &&cd} |j}||vr||d}| d}|||=|S||f||<|S#t$r i}||_Y4wxYwr6)r~r)rrrahandleroldds r setUserDatazNode.setUserDatasy A !8C&)C <GcF G_AcF  ADO s 0AAct|drGt|jjD] \}\}}| |j |||||"yy)Nr~)hasattrlistr~itemshandle)r operationsrcdstrrars r_call_user_data_handlerzNode._call_user_data_handlersW 4 &(,T__-B-B-D(E C$_dG&NN9c4cB C 'rcdx|_|_|jr0|jD]}|jt |_d|_d|_yr-)rGrjr/rbNodeListrQrP)rrgs rrbz Node.unlinksM/33$, ??   &jDO#rc|Sr-r rs r __enter__zNode.__enter__s rc$|jyr-)rb)retevtbs r__exit__z Node.__exit__s  rNN) rNN)!__name__ __module__ __qualname__ namespaceURIrGrjrPrQrprefixrrrr0r3r7r;rArIr[rHrerlrsruryr|rrrrbrrr rrr r "sLJMKO F><@#.&%&'@"@ 6CN  $C rr firstChildzFirst child node, or None.)doc lastChildzLast child node, or None. localNamez"Namespace-local name of this node.cv|j}|r|d}||_||_|j|||_yr9)r/rQrPrcrG)rrUr/lasts rrXrXs<J"~#dDOrcb|-|jtjk(ry|j}|-yNTF)r$r r%rGrUs r _in_documentr's3   ==D.. .   rc|rT|jddjddjddjdd}|j|y y ) zWrites datachars to writer.&z&z>N)replacewrite)r+ras r _write_datar/sM ||C)11#v>GD(+GGC,@  T rc|jD]Q}|jtjk(r%|dk(s|j|k(r|j |t |||S|SNr)r/r$r rdtagNamerc_get_elements_by_tagName_helper)parentnamercrUs rrr6sY!!8 ==D-- - S[DLLD0 IIdO'dB7 8 Irc|jD]g}|jtjk(s!|dk(s|j|k(r%|dk(s|j |k(r|j |t||||i|Sr)r/r$r rdrrrc"_get_elements_by_tagName_ns_helper)rnsURIrrrUs rrr>sr!!K ==D-- -c!T^^y%@#!2!2e!; $ .tUIr J K IrceZdZejZdZdZdZdZ ejejejejejejej fZdZy)DocumentFragmentz#document-fragmentNc"t|_yr-)rr/rs r__init__zDocumentFragment.__init__Us "*r)rrrr r?r$nodeName nodeValue attributesrGrdr`CDATA_SECTION_NODEENTITY_REFERENCE_NODEPROCESSING_INSTRUCTION_NODE COMMENT_NODE NOTATION_NODErBrr rrrrGsk**H#HIJJ**003399**++ -%rrceZdZdZej ZdZdZdZ ejejfZ e ddfdZdZdZdZdZeeexZZd Zd ZeeexZZd Zd ZeeeZd ZdZdZy)Attr)_name_valuer_prefixr/ _localNamerj ownerElementNFcd|_||_||_||_|||_t |_|j jtyr-) rrrrrrr/rcText)rqNamerrrs rrz Attr.__init__csL  (  'DO"* tv&rcx |jS#t$r"|jjdddcYSwxYwN:r>r:)rrrsplitrs rruzAttr._get_localNamers< 3?? " 3==&&sA.r2 2 3 (99c|jSr-) specifiedrs r_get_specifiedzAttr._get_specifiedx ~~rc|jSr-)rrs r _get_namezAttr._get_name{ zzrcV||_|jt|jyyr-)rrrNrvalues r _set_namezAttr._set_name~s(    ( D-- . )rc|jSr-)rrs r _get_valuezAttr._get_value {{rc||_||jd_|jt |j||jd_yr6)rr/rarrNrs r _set_valuezAttr._set_valuesE "'    ( D-- ."'rc|jSr-)rrs r _get_prefixzAttr._get_prefix ||rc|j}|dk(r*|r(|tk7rtjj d||_| |j }n|d|j }|jrt|j||_ y)Nxmlnsz5illegal use of 'xmlns' prefix for the wrong namespacer) rrrCrD NamespaceErrrrrrNr)rrnsurinewNames r _set_prefixzAttr._set_prefixs|!! W /1gg**KMM >nnG!'8G    D-- . rc|j}||j|j=|j|j|j f=|j r;d|_|xjdzc_|jxjdzc_ |jD]}|j|jdd=y)NFr>) r_attrsr_attrsNSrr_is_id_magic_id_nodesrj_magic_id_countr/rb)relemrgs rrbz Attr.unlinks      DMM* t00$..AB{{# $$)$""22a72__ E LLN  OOA rc|jry|j}|j}||y|j|}|y|jr&|j |j|j S|j|jSr) rrjr_get_elem_inforisIdNSrisIdrrrrinfos r _get_isIdzAttr._get_isIds} ;;     ;$,!!$' <   ;;t00$..A A99T]]+ +rc|j}|j}||tS|j|}|tS|jr&|j |j|j S|j|jSr-) rjr_no_typerrgetAttributeTypeNSrgetAttributeTyperrs r_get_schemaTypezAttr._get_schemaTypes{     ;$,O!!$' <O   **4+<+6 T]D$6rr-)!rrr__doc__rrrrrrr rr#rr'__len__r+r.r1r3r6r8r;r@rCrFrKrNr=rRrTrVrZr rrr r s8I*     ( "$$,GC %%$%$1 $  ( ( ' >?rr lengthz$Number of nodes in the NamedNodeMap.c(eZdZdZdZdZdZdZy)TypeInfo namespacerc ||_||_yr-r`)rrars rrzTypeInfo.__init__s" rc|jr4d|jjd|jd|jdSd|jjd|jdS)Nr z (from z)>r)ra __class__rrrs r__repr__zTypeInfo.__repr__sM >>*...*A*A499*...: : !% 7 7C Crc|jSr-)rrs rrzTypeInfo._get_name yyrc|jSr-)rars r_get_namespacezTypeInfo._get_namespacerrN)rrrrrrfrrjr rrr_r_s#IDrr_cjeZdZdZej ZdZeZ dZ ej ejejejejejfZeddfdZdZdZdZdZd Zd Zd Zd Zd ZdZdZeZdZdZ dZ!e!Z"dZ#dZ$dZ%dZ&dZ'ddZ(dZ)dZ*dZ+dZ,dZ-y)Element) rjrGrrrrrr/rrrPrQNrcd|_|x|_|_||_||_t |_dx|_|_d|_ d|_ yr-) rGrrrrrr/rPrQrr)rrrrrs rrzElement.__init__sO'.. t} ("*2664/  rc:|ji|_i|_yyr-)rrrs r_ensure_attributeszElement._ensure_attributess ;; DKDM rcx |jS#t$r"|jjdddcYSwxYwr)rrrrrs rruzElement._get_localNames< 2?? " 2<<%%c1-b1 1 2rc|jSr-rrs r _get_tagNamezElement._get_tagNamerrc|j8t|jjD]}|jd|_d|_t j|yr-)rrrrbrr )rattrs rrbzElement.unlinksP ;; "T[[//12      Drcn|jy |j|jS#t$rYywxYw)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. r)rrr)rr?s r getAttributezElement.getAttributes= ;;  ;;w'-- -  s ( 44cr|jy |j||fjS#t$rYywxYwr)rrrrEs rgetAttributeNSzElement.getAttributeNSs@ ==  ==, !:;AA A  s * 66c|j|}|5t|}||_|j|_|j |y||jk7r ||_|j r t |yyyr-)getAttributeNoderrrjsetAttributeNoderrN)rr?rrus r setAttributezElement.setAttributeso$$W- <=DDJ!%!3!3D   ! !$ ' djj DJyy%!rcNt|\}}|j||}|8t||||}||_|j|_|j |y||jk7r||_|j r t||j|k7r||_||_ yyr-) _nssplitgetAttributeNodeNSrrrjr|rrNrr)rr qualifiedNamerr localnamerus rsetAttributeNSzElement.setAttributeNSs$]3 &&|Y? < |YGDDJ!%!3!3D   ! !$ ' "" 99#D){{f$$ - %rcR|jy|jj|Sr-r&)rattrnames rr{zElement.getAttributeNodes" ;; {{x((rcV|jy|jj||fSr-)rr'rEs rrzElement.getAttributeNodeNS s) == }}  , !:;;rc|jd|fvrtjjd|j |j j |jd}||j||jj |j|jfd}|||ur|j|t||||ur|S||ur|Sy)Nzattribute node already owned) rrCrDInuseAttributeErrrorr'rremoveAttributeNoderrr_set_attribute_node)rruold1old2s rr|zElement.setAttributeNodes   T4L 0''++,JK K !{{tyy$/    $ $T *}}  $"3"3T^^!DdK  D 0  $ $T *D$' t K t K rc|jtjj |j|}|j |y#t $rtjjwxYwr-)rrCrDrLrrr)rrrus rremoveAttributezElement.removeAttribute'sf == ''%%' ' (;;t$D   & (''%%' ' (s A (A5c|jtjj |j||f}|j |y#t$rtjjwxYwr-)rrCrDrLrr)rrrrus rremoveAttributeNSzElement.removeAttributeNS0sk == ''%%' ' (==, !:;D   & (''%%' ' (s A(A7c(|tjj |j|jt ||j|j|_|S#t $rtjjwxYwr-) rCrDrLrrrrNrbrjrQs rrzElement.removeAttributeNode9s{ <''%%' ' ( KK "  "//  (''%%' ' (s A))(Bc8|jy||jvS)zChecks whether the element has an attribute with the specified name. Returns True if the element has an attribute with the specified name. Otherwise, returns False. FrrBs r hasAttributezElement.hasAttributeIs ;; t{{""rc<|jy||f|jvSNF)rrEs rhasAttributeNSzElement.hasAttributeNSSs# == i(DMM99rc,t||tS)zReturns all descendant elements with the given tag name. Returns the list of all descendant elements (not direct children only) with the specified tag name. rrrBs rgetElementsByTagNamezElement.getElementsByTagNameXs /tT8:FFrc.t|||tSr-rrrEs rgetElementsByTagNameNSzElement.getElementsByTagNameNS`1 , 8:7 7rc6d|jt|fzS)Nz)rr*rs rrfzElement.__repr__ds)T\\2d8,DDDrc,|j|dz|jz|j}|jD]@}|jd|zt |||j |jdB|j r|jdt|j dk(r[|j djtjtjfvr"|j dj|dddnJ|j||j D]}|j|||z|||j||jd|jd|y |jd |zy ) 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_attributesrrrr/rr$r r`rr&)rr+r) addindentr*ra_namerUs rr&zElement.writexmlgsJ  VCZ$,,./$$&jjl F LLF* + f 3 3 4 LL   ?? LL DOO$)"++(?(?0AA"++FBB? T" OOMDMM&&*:ItLM V$ LLdllD9 : LL 'rcd|jt|j|j|Sr-)ror rrrs rrzElement._get_attributess% !DKK==rc|jryyrrrs r hasAttributeszElement.hasAttributess ;;rcH|j|}|j|yr-)r{setIdAttributeNode)rridAttrs rsetIdAttributezElement.setIdAttributes &&t, 'rcJ|j||}|j|yr-)rr)rrrrs rsetIdAttributeNSzElement.setIdAttributeNSs"((yA 'rcr||j|jstjj t |tjj |jsGd|_|xjdz c_|jxjdz c_ t|yy)NTr>) ryrrCrDrL_get_containing_entrefNoModificationAllowedErrrrrjrrN)rrs rrzElement.setIdAttributeNodes >1D1D!E''%%' ' !$ ' 3''224 4}} FM  A %    . .! 3 . D ! rrrr).rrrrr rdr$rrrrrrr`rrrBrrrorursrbrwryr}rr{rr|setAttributeNodeNSrrrremoveAttributeNodeNSrrrrrfr&rrrrrr rrrlrls1I  HIJO**99**0033 5.=T( 2   &.") < &*'' 0#: G7E(@>(( "rrlrz*NamedNodeMap of attributes on the element.z%Namespace-local name of this element.ct||j||j|j<||j|j |j f<||_yr-)rNrorrrrrr)elementrus rrrsQG  $GNN499<@Gd''89  Drc^eZdZdZdZdZeZdZdZ dZ dZ dZ dZ dZd Zd Zd Zy) ChildlesszMixin that makes childless-ness easy to implement and avoids the complexity of the Node methods that deal with children. r Ncyr-r rs rr7zChildless._get_firstChildrrcyr-r rs rr;zChildless._get_lastChildrrcZtjj|jdz)Nz nodes cannot have childrenrCrDrErrQs rrIzChildless.appendChild&gg)) MM9 9; ;rcyrr rs rr0zChildless.hasChildNodesrcZtjj|jdzNz nodes do not have childrenrrrRrSs rrAzChildless.insertBeforerrcZtjj|jdzr)rCrDrLrr^s rrHzChildless.removeChilds&gg!! MM9 9; ;rcyr-r rs rrezChildless.normalizes rcZtjj|jdzrrrrRrZs rr[zChildless.replaceChildrr)rrrr[rr EmptyNodeListr/rrr7r;rIr0rArHrer[r rrrrsLIJJJI;;; ;rrcreZdZejZdZdZdZdZ e ee Z dZ dZ e e e Zd dZy) ProcessingInstructiontargetrac ||_||_yr-r)rrras rrzProcessingInstruction.__init__s  rc|jSr-rars r_get_nodeValuez$ProcessingInstruction._get_nodeValuerhrc||_yr-rrs r_set_nodeValuez$ProcessingInstruction._set_nodeValues  rc|jSr-rrs r _get_nodeNamez#ProcessingInstruction._get_nodeNamerrc||_yr-rrs r _set_nodeNamez#ProcessingInstruction._set_nodeNames  rc d|j|d|jd|jd|y)Nz)rrrarr+r)rr*s rr&zProcessingInstruction.writexmls t{{DIItLMrNr)rrrr rr$rrrrrrrrrr&r rrrrsI//H"I 8I }5HNrrcfeZdZdZdZdZeZdZdZe eexZ Z dZ dZ dZd Zd Zd Zy ) CharacterData)_datarjrGrQrPctdx|_|_dx|_|_d|_t j |yr)rjrGrQrPrr rrs rrzCharacterData.__init__s4/33T_266t/  drc,t|jSr-)rrars rrzCharacterData._get_length499~rc|jSr-rrs r _get_datazCharacterData._get_datarrc||_yr-rrras r _set_datazCharacterData._set_data s  rc|j}t|dkDrd}nd}d|jjd|dd|dS)N z...rz)rarrer)rra dotdotdots rrfzCharacterData.__repr__sByy t9r>II NN # #T!BZ< >.."yy) $ 2 2 ??tt'A'AA|++G4,,Wd;IIgv& rc<t|||j|yr-)rrars rr&z Text.writexmlZsF 4@Arc|jg}|j}|Y|jtjtj fvr)|j d|j|j}nn|Y|j}|X|jtjtj fvr(|j|j|j}nn|Xdj|S)Nrr) rarQr$r r`rrOrPrcjoin)rrfrJs r_get_wholeTextzText._get_wholeText_s YYK  mzzdnnd.E.EFFAFF#%% m   mzzdnnd.E.EFF MM m wwqzrc|j}|j}|P|jtjtj fvr |j}|j ||}nn|P|j}|s|j ||P|jtjtj fvr |j}|j ||}nn|P|r ||_|Syr-) rGrQr$r r`rrHrPra)rcontentrrJrs rreplaceWholeTextzText.replaceWholeTextqs  mzzdnnd.E.EFF((""1% m      t $mzzdnnd.E.EFF}}""1% m DIKrc|jjryt|}|y|jj |}|y|j Sr)rastrip_get_containing_elementrjrisElementContent)rrrs r!_get_isWhitespaceInElementContentz&Text._get_isWhitespaceInElementContentsR 99?? &t, <!!006 <((* *rr)rrrrr r`r$rrrr&rrr r rrrrDs4I~~HHJ B $8 +rrisWhitespaceInElementContentzKTrue iff this text node contains only whitespace and is in element content. wholeTextz.The text of all logically-adjacent text nodes.c||j}|.|jtjk(r|S|j}|.yr-)rGr$r rdrUrTs rrrs< A - ::** *H LL - rc||j}|.|jtjk(r|S|j}|.yr-)rGr$r rrs rrrs< A - ::33 3H LL - rc6eZdZejZdZdZddZy)Commentz#commentc<tj|||_yr-)rrrrs rrzComment.__init__st$ rc|d|jvr td|j|d|jd|y)Nz--z%'--' is not allowed in a comment nodez)rarKrrs rr&zComment.writexmls1 499 DE E  4@ArNr) rrrr rr$rrr&r rrrrs  HHBrrc4eZdZdZej ZdZddZy) CDATASectionr z#cdata-sectionc|jjddk\r td|jd|jzy)Nz]]>rz$']]>' not allowed in a CDATA sectionz)rafindrKrrs rr&zCDATASection.writexmls9 99>>% A %CD D % 12rNr) rrrrr rr$rr&r rrrrsI&&HH3rrc`eZdZdZddZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZy)ReadOnlySequentialNamedNodeMap_seqc||_yr-r)rseqs rrz'ReadOnlySequentialNamedNodeMap.__init__s  rc,t|jSr-rrrs rr\z&ReadOnlySequentialNamedNodeMap.__len__rrc,t|jSr-rrs rrz*ReadOnlySequentialNamedNodeMap._get_lengthrrcL|jD]}|j|k(s|cSyr-)rrrIs rrCz+ReadOnlySequentialNamedNodeMap.getNamedItems& AzzT! rcl|jD]%}|j|k(s|j|k(s#|cSyr-)rrrrMs rrFz-ReadOnlySequentialNamedNodeMap.getNamedItemNSs1 A~~-!++2J rct|tr|j|}n|j|}| t ||Sr-)rr@rFrCr)r name_or_tuplerUs rr;z*ReadOnlySequentialNamedNodeMap.__getitem__sC mU +&4&& 6D$$]3D <=) ) rcL|dkry |j|S#t$rYywxYwr6)rrrs rrz#ReadOnlySequentialNamedNodeMap.items2 19 99U# #  s  ##c@tjjdNz"NamedNodeMap instance is read-onlyrCrDrrBs rrKz.ReadOnlySequentialNamedNodeMap.removeNamedItemgg.. 02 2rc@tjjdr'r(rEs rrNz0ReadOnlySequentialNamedNodeMap.removeNamedItemNSr)rc@tjjdr'r(rQs rr=z+ReadOnlySequentialNamedNodeMap.setNamedItemr)rc@tjjdr'r(rQs rrRz-ReadOnlySequentialNamedNodeMap.setNamedItemNSr)rc|jgSr-rrs rrVz+ReadOnlySequentialNamedNodeMap.__getstate__s {rc|d|_yr6rrXs rrZz+ReadOnlySequentialNamedNodeMap.__setstate__s !H rN)r )rrrrrr\rrCrFr;rrKrNr=rRrVrZr rrrrsHI  2222rrz&Number of entries in the NamedNodeMap.c&eZdZdZdZdZdZdZy) Identifiedz@Mix-in class that supports the publicId and systemId attributes.publicIdsystemIdc ||_||_yr-r1)rr2r3s r_identified_mixin_initz!Identified._identified_mixin_inits    rc|jSr-)r2rs r _get_publicIdzIdentified._get_publicId }}rc|jSr-)r3rs r _get_systemIdzIdentified._get_systemIdr8rN)rrrr[rr5r7r:r rrr0r0 sJ&I!rr0cReZdZejZdZdZdZdZ dZ dZ dZ dZ ddZy) DocumentTypeNct|_t|_|rt|\}}||_|j|_yr-)rentities notationsrrr)rrrrs rrzDocumentType.__init__$s:68 79  ( 7 FI!DI  rc|jSr-)internalSubsetrs r_get_internalSubsetz DocumentType._get_internalSubset,"""rc|jtd}|j|_|j|_tj j j}|r\g|j_ g|j_ |jjD]e}t|j|j|j}|jjj||j|||g|jjD]}t!|j|j|j|j"}|j$|_|j&|_|j(|_|jjj||j||||j||||Syr-)rjr<rrrCrDUserDataHandler NODE_CLONEDr>rr?Notationr2r3rcrEntity notationNameactualEncodingrrr)rrkclonerrJnotationeentitys rrlzDocumentType.cloneNode/sg    % &EEJ!YYEN//;;I&(#')$,,FA' AJJ KHOO((//9--iHEF++DA#AJJ AJJ$%NN4F,-,<,@@)), FG( OOG $ 9< r8rc|jSr-) errorHandlerrs r_get_errorHandlerzDocument._get_errorHandlerAs   rc|jSr-)rrs r_get_standalonezDocument._get_standaloneDr4rc|jSr-)strictErrorCheckingrs r_get_strictErrorCheckingz!Document._get_strictErrorCheckingGs'''rc|jSr-r\rs rr]zDocument._get_versionJrrc|j|jvr6tjj t |dt ||j |j j||jtjk(r/|jrtjj dtj||S)Nr=z two document elements disallowed) r$rBrCrDrErFrGrHr rd_get_documentElementrIrQs rrIzDocument.appendChildMs == 6 6 6''--.24j$t*EG G ?? & OO ' ' - ==D-- -((*''--24 4d++rc |jj|dx|_|_d|_|j|urd|_ |S#t$rtjj wxYwr-) r/r]rKrCrDrLrPrQrGdocumentElementr^s rrHzDocument.removeChild]sr ( OO " "8 ,;?>x7"   8 +#'D  (''%%' ' (s A (A1ch|jD]#}|jtjk(s!|cSyr-)r/r$r rdrQs rrzDocument._get_documentElementis,OO D}} 1 11  rc|j!|jjd|_tj|yr-)rtrbr rs rrbzDocument.unlinkns/ << # LL   !DL Drc|sy|jjddd}|j|_|j|_|j|_|j D]}t |||}|jj|sJ|j j||jtjk(r|j4J|jtjk(r|jJ||_||_|j#t$j&j(j*|||Sr-)rnrvrrrrr/rirjryrcr$r r%rrRrtrGrrCrDrErF)rrkrKrJ childclones rrlzDocument.cloneNodets##224tD??   *A$Qe4J++66u= ==    # #J /""d&8&88,,444$$(?(??}},,, * $)J ! * $$SWW%<%<%H%H%)5 2 rc(t}||_|Sr-)rrj)rrs rcreateDocumentFragmentzDocument.createDocumentFragments  rc*t|}||_|Sr-)rlrj)rrrMs r createElementzDocument.createElements G rclt|ts tdt}||_||_|SNznode contents must be a string)rrr>rrarj)rrats rcreateTextNodezDocument.createTextNodes2$$<= = Frclt|ts tdt}||_||_|Sr)rrr>rrarjrrarTs rcreateCDATASectionzDocument.createCDATASections2$$<= = Nrc*t|}||_|Sr-)rrjrs r createCommentzDocument.createComments DMrc,t||}||_|Sr-)rrj)rrraps rcreateProcessingInstructionz$Document.createProcessingInstructions !&$ /rc8t|}||_d|_|Sr)rrjr)rras rcreateAttributezDocument.createAttributes KrcJt|\}}t|||}||_|Sr-)rrlrj)rrrrrrMs rrszDocument.createElementNSs+$]3 M< 8rcZt|\}}t||||}||_d|_|Sr)rrrjr)rrrrrrs rcreateAttributeNSzDocument.createAttributeNSs4$]3  i @rc0t||||}||_|Sr-)rHrj)rrr2r3rIrMs r_create_entityzDocument._create_entitys 48\ :rc.t|||}||_|Sr-)rGrj)rrr2r3rJs r_create_notationzDocument._create_notations T8X .rc||jvr|j|S|js |jsy|j}||jg}||_n|syd}|r|j }|j |jDcgc]}|jtvr|c}|j|}|r.|jjD]}|jrb|j|j|js7||j|j <|j |k(r|}b|j"ron|j%|j&r:||j|j <|j |k(r|}|j"rn|j(s||j|j <|j |k(r|}|j"dk(snenc|j"rW|jjD]:}|j(s||j|j <|j |k(s9|}<| |S|r|Scc}w)Nr>)rrrrrpopextendr/r$rMrrrrrrrrrrr)rr*stackresultrUrgrrus rgetElementByIdzDocument.getElementByIds  >>"% %4#7#7%% =))*E$)D !99;D LLT__IE"^^/GG I J&&t,D!OO224"D((;;t'8'8$..I9=DNN4::6#zzR/)-%)%9%9 %499-59tzz2::+%)F!%!5!5!59tzz2::+%)F!11Q6!'"(%% OO224*D{{59tzz2::+%)F * ! ON IIs Ic,t||tSr-rrBs rrzDocument.getElementsByTagNames.tT8:FFrc.t|||tSr-rrEs rrzDocument.getElementsByTagNameNS rrc:|jj||Sr-)rnrorps rrszDocument.isSupporteds""--gw??rc |jtjk(rtjj d|jtj k(rtjj dt|||S)Nzcannot import document nodesz!cannot import document type nodes)r$r r%rCrDNotSupportedErrrRri)rrUrks r importNodezDocument.importNodesa ==D.. .''))*HI I ]]d55 5''))*MN N4t,,rcg}|r|jd|d||jd|rdndd|jddj|d||jD]}|j ||||y) Nz encoding="rz standalone="yesnozrzillegal use of 'xmlns' prefixz$illegal use of the 'xmlns' attribute)rjrCrDrpr$r rdrrrrrrrrrrrrrrrr|r)rrJrrrrris_ids r renameNodezDocument.renameNode(s ??$ &''**,0!//CD D ::d//1D1DE E''))JL L ? *d{$(JJsA$6! '&#''*A*AA''..799go&#''*A*AA**(;(;;''..>@@ FI ::,, ,nnG"++A.G  % ::** *AIAF"((+..q1 r)rrrNN)=rrrrr rdrrrRrBrgrnr%r$rrrrGrQrPrJrrrrrrrrrrrWrrrZrrrr]rIrHrrbrlrrrrrrrrsrrrrrrrsrr&rr rrr{r{ sE@I**D,L,L**D,C,CE'(N!!HHIJJ$((Ok NHJGLKO%(# !(,   *        8tG7@-KO  ; 3rr{rz#Top-level element of this document.c |jj|r%tjjj }n$tjjj }|jtjk(r|j|j|j}|jjD]j}|j|j|j|j |j#|j|j$}|j&|_l|r)|j(D] }t+|||}|j-|"n|jtj.k(rD|j1}|r|j(D] }t+|||}|j-|"n|jtj2k(r|j5|j6}n]|jtj8k(r|j;|j6}n#|jtj<k(r(|j?|j@|j6}n|jtjBk(r|jE|j6}n|jtjFk(r@|jI|j|j}d|_|j |_nG|jtjJk(r|j|usJtjjj }|jLjO|jP|jR|jT}||_|rg|jV_,g|jZ_,|jZjXD]y} t]| j| jR| jT} || _|jZjXj_| ta| dsg| jc|| | {|jVjXD]} te| j| jR| jT| jf} | jh| _4| jj| _5| jl| _6|| _|jVjXj_| ta| ds| jc|| | n+tjjodtq|zta|dr|jc||||S)zo Clone a node and give it the new owner document. Called by Node.cloneNode and Document.importNode TrzCannot clone node %s)9rjryrCrDrErF NODE_IMPORTEDr$r rdrsrrrrrrrrrr/rirIr?rr`rrarrrrrrrrrrRrnrxrr2r3r>rr?rGrcrrrHrIrJrrrrrF) rUrknewOwnerDocumentrrKrurrgrTrJrLrMrNs rririas(  $$%56GG++77 GG++99  }}))) 001B1B15@OO**, )D  !2!2DMM4:: N(():):DNNKA..AK )  %t-=>!!!$ % $55 5 779  %t-=>!!!$ % $.. ( // : $11 1 33DII> $:: : <r)rr)rfieldss rrrs4  a (F 6{a fQi  rc~||i|}|j\}}|j||j|Sr-)getEvent expandNoder)funcargskwargseventstoktyperootNodes r_do_pulldom_parsers> 4 "6 "F)GX h LLN Orcz||sddlm}|j|Sddlm}t |j|f||dS)z3Parse a file into a DOM by filename or file object.r expatbuilderpulldom)parserbufsize)xml.domrparserr)filerrrrs rrrs? ~g(!!$''# ' 24 4rct|ddlm}|j|Sddlm}t |j|fd|iS)z&Parse a file into a DOM from a string.rrrr)rr parseStringrr)stringrrrs rrrs? ~(''//# !4!4vi"*F!35 5rc|rQt|trtj|}|D]'\}}tj j ||r'ytj Sr-)rrr_parse_feature_stringr{rnro)featuresfvs rgetDOMImplementationrsY h $33H=H DAq**55a;   " ""rrr-)7r[r rrCrrrrxml.dom.minicompatxml.dom.xmlbuilderrr rDr rdrrM defpropertyrXrrrrrrobjectr  AttributeListr_rrlrrrrrrrrrrr0r<rHrGrgr}rNr{rirrrrrr rrrs" JJ > GGLL55GGLL>>@t377<<tl D,$@A D+$?@ D+$HI%t%$y84y8v D&$FG D+$MN D,$EFa?6a?F L(68 v( D$ L"dL"\ G\<> G[79  &;&;RNItN4ECItECN M8)EFS+=S+j D0./ D+@B Bm B 34 3<V<| *H8:  ::y$:x&9Z&9P8z9d8M+M^(&(T2QtZQf  H'57Od!45#r