Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325
3 N”ªjeã@sôdZddlZddlZddlmZmZmZmZddlTddl m Z m Z ej j jej j jfZGdd„dej j ƒZ ee dd d �ee d d d �ee d dd �dd„Zdd„Zdd„Zdd„ZGdd„de ƒZGdd„de ƒZeeddd �eed dd �eeddd �Gd d!„d!eƒZeed"d#d �eZGd$d%„d%eƒZeddƒZGd&d'„d'e ƒZeed(d)d �eed d*d �d+d,„ZGd-d.„d.ƒZGd/d0„d0ee ƒZ Gd1d2„d2ee ƒZ!ee!d"d3d �Gd4d5„d5e!ƒZ"ee"d6d7d �ee"d8d9d �d:d;„Z#dd?„d?e!ƒZ%Gd@dA„dAe"ƒZ&GdBdC„dCeƒZ'ee'd"dDd �GdEdF„dFƒZ(GdGdH„dHe(ee ƒZ)GdIdJ„dJe(e ƒZ*GdKdL„dLe(ee ƒZ+GdMdN„dNe ƒZ,GdOdP„dPeƒZ-dQdR„Z.GdSdT„dTe e ƒZ/ee/dUdVd �dWdX„Z0dYdZ„Z1d[d\„Z2dcd]d^„Z3ddd_d`„Z4dedadb„Z5dS)facSimple 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_PREFIXÚXMLNS_NAMESPACEÚdomreg)Ú*)ÚDOMImplementationLSÚ DocumentLSc@sàeZdZdZdZdZdZdZeZ dd„Z d2dd„Z d3dd „Z d d „Z d d „Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Z dS)4ÚNodeNcCsdS)NT©)Úselfr r ú/usr/lib64/python3.6/minidom.pyÚ__bool__+sz Node.__bool__cCs|jdd|ƒS)NÚ)Ú toprettyxml)r Úencodingr r r Útoxml.sz Node.toxmlú Ú cCsx|dkrtjƒ}ntjtjƒ|ddd�}|jtjkrH|j|d|||ƒn|j|d||ƒ|dkrh|jƒS|j ƒjƒSdS)NÚxmlcharrefreplacer)rÚerrorsÚnewliner) ÚioÚStringIOÚ TextIOWrapperÚBytesIOÚnodeTyper Ú DOCUMENT_NODEÚwritexmlÚgetvalueÚdetach)r ÚindentÚnewlrÚwriterr r r r1s   zNode.toprettyxmlcCs t|jƒS)N)ÚboolÚ childNodes)r r r r Ú hasChildNodesCszNode.hasChildNodescCs|jS)N)r$)r r r r Ú_get_childNodesFszNode._get_childNodescCs|jr|jdSdS)Nr)r$)r r r r Ú_get_firstChildIszNode._get_firstChildcCs|jr|jdSdS)Nééÿÿÿÿ)r$)r r r r Ú_get_lastChildMszNode._get_lastChildc Cs|j|jkr0xt|jƒD]}|j||ƒqW|S|j|jkrXtjjdt |ƒt |ƒfƒ‚|j dk rn|j j |ƒ|dkr‚|j |ƒnˆy|jj |ƒ}Wntk r°tjjƒ‚YnX|jtkrÄt|ƒ|jj||ƒ||_||_|rþ|j|d}||_||_nd|_||_ |S)Nz%s cannot be child of %sr()rÚDOCUMENT_FRAGMENT_NODEÚtupler$Ú insertBeforeÚ_child_node_typesÚxmlÚdomÚHierarchyRequestErrÚreprÚ parentNodeÚ removeChildÚ appendChildÚindexÚ ValueErrorÚ NotFoundErrÚ_nodeTypes_with_childrenÚ_clear_id_cacheÚinsertÚ nextSiblingÚpreviousSibling)r ÚnewChildÚrefChildÚcr6Únoder r r r-Qs6      zNode.insertBeforecCs”|j|jkr.xt|jƒD]}|j|ƒqW|S|j|jkrXtjjdt |ƒt |ƒfƒ‚n|jt krjt |ƒ|j dk r€|j j |ƒt||ƒd|_|S)Nz%s cannot be child of %s)rr+r,r$r5r.r/r0r1r2r9r:r3r4Ú _append_childr<)r rAr@r r r r5qs      zNode.appendChildc Cs|j|jkr(|j}|j|ƒ|j||ƒS|j|jkrPtjjdt |ƒt |ƒfƒ‚||kr\dS|j dk rr|j j|ƒy|j j |ƒ}Wnt k r tjjƒ‚YnX||j |<||_ d|_ |jtksÌ|jtkrÔt|ƒ|j|_|j|_d|_d|_|jrþ||j_|j�r||j_|S)Nz%s cannot be child of %s)rr+r<r4r-r.r/r0r1r2r3r$r6r7r8r9r:r=)r r>ÚoldChildr?r6r r r Ú replaceChild‚s<         zNode.replaceChildc Cs€y|jj|ƒWntk r.tjjƒ‚YnX|jdk rD|j|j_|jdk rX|j|j_d|_|_|jt krvt |ƒd|_ |S)N) r$Úremover7r/r0r8r<r=rr9r:r3)r rCr r r r4¢s      zNode.removeChildcCsÖg}x¾|jD]´}|jtjkr¢|jsL|r2|j|d_|jrB|j|j_|jƒqÀ|r–|dj|jkr–|d}|j|j|_|j|_|jrŒ||j_|jƒqÀ|j|ƒq |j|ƒ|jtj kr |j ƒq W||jdd…<dS)Nr(r)r)r)) r$rr Ú TEXT_NODEÚdatar<r=ÚunlinkÚappendÚ ELEMENT_NODEÚ normalize)r ÚLÚchildrAr r r rK²s*          zNode.normalizecCst|||jp|ƒS)N)Ú _clone_nodeÚ ownerDocument)r Údeepr r r Ú cloneNodeÍszNode.cloneNodecCs|jjj||ƒS)N)rOÚimplementationÚ hasFeature)r ÚfeatureÚversionr r r Ú isSupportedÐszNode.isSupportedcCsdS)Nr )r r r r Ú_get_localNameÓszNode._get_localNamecCs||kS)Nr )r Úotherr r r Ú isSameNodeÙszNode.isSameNodecCs|j|dƒr|SdSdS)N)rV)r rTr r r Ú getInterfaceÜs zNode.getInterfacec Cs,y|j|dSttfk r&dSXdS)Nr)Ú _user_dataÚAttributeErrorÚKeyError)r Úkeyr r r Ú getUserDataæszNode.getUserDatac Csnd}y |j}Wntk r,i}||_YnX||krB||d}|dkr^d}|dk rj||=n ||f||<|S)Nr)r[r\)r r^rGÚhandlerÚoldÚdr r r Ú setUserDataìs    zNode.setUserDatacCsHt|dƒrDx8t|jjƒƒD]&\}\}}|dk r|j|||||ƒqWdS)Nr[)ÚhasattrÚlistr[ÚitemsZhandle)r Ú operationÚsrcÚdstr^rGr`r r r Ú_call_user_data_handlerþs zNode._call_user_data_handlercCsBd|_|_|jr2x|jD] }|jƒqWtƒ|_d|_d|_dS)N)r3rOr$rHÚNodeListr=r<)r rMr r r rHs   z Node.unlinkcCs|S)Nr )r r r r Ú __enter__szNode.__enter__cCs |jƒdS)N)rH)r ZetZevÚtbr r r Ú__exit__sz Node.__exit__)N)rrN)!Ú__name__Ú __module__Ú __qualname__Ú namespaceURIr3rOr<r=rÚprefixr rrr%r&r'r*r-r5rDr4rKrQrVrWrYrZr_rcrjrHrlrnr r r r r "s:      r Ú firstChildzFirst child node, or None.)ÚdocÚ lastChildzLast child node, or None.Ú localNamez"Namespace-local name of this node.cCs2|j}|r|d}||_||_|j|ƒ||_dS)Nr(r))r$r=r<rIr3)r rAr$Zlastr r r rBs rBcCs6|r2|jddƒjddƒjddƒjddƒ}|j|ƒd S) zWrites datachars to writer.ú&z&úz>N)ÚreplaceÚwrite)r"rGr r r Ú _write_data'sr~cCsHxB|jD]8}|jtjkr4|dks*|j|kr4|j|ƒt|||ƒqW|S)Nr)r$rr rJÚtagNamerIÚ_get_elements_by_tagName_helper)ÚparentÚnameÚrcrAr r r r€.s    r€cCs\xV|jD]L}|jtjkr|dks*|j|krF|dks<|j|krF|j|ƒt||||ƒqW|S)Nr)r$rr rJrwrrrIÚ"_get_elements_by_tagName_ns_helper)r�ZnsURIrwrƒrAr r r r„6s   r„c@sJeZdZejZdZdZdZdZ ej ej ej ej ejejejfZdd„ZdS)ÚDocumentFragmentz#document-fragmentNcCs tƒ|_dS)N)rkr$)r r r r Ú__init__MszDocumentFragment.__init__)rorprqr r+rÚnodeNameÚ nodeValueÚ attributesr3rJrFÚCDATA_SECTION_NODEÚENTITY_REFERENCE_NODEÚPROCESSING_INSTRUCTION_NODEÚ COMMENT_NODEÚ NOTATION_NODEr.r†r r r r r…?sr…c@s¼eZdZd#ZejZd Zd Zd Z ej ej fZ e d d fd d „Zd d„Zdd„Zdd„Zdd„ZeeeƒZZdd„Zdd„ZeeeƒZZdd„Zdd„ZeeeƒZdd„Zdd „Zd!d"„Zd S)$ÚAttrÚ_nameÚ_valuerrÚ_prefixr$Ú _localNamerOÚ ownerElementNFcCs8d|_d|_||_||_||_tƒ|_|jjtƒƒdS)N) r”rOr�rrr’rkr$rIÚText)r ÚqNamerrrwrsr r r r†[sz Attr.__init__c Cs.y|jStk r(|jjddƒdSXdS)Nú:r(r))r“r\r‡Úsplit)r r r r rWiszAttr._get_localNamecCs|jS)N)Ú specified)r r r r Ú_get_specifiedoszAttr._get_specifiedcCs|jS)N)r�)r r r r Ú _get_namerszAttr._get_namecCs||_|jdk rt|jƒdS)N)r�r”r:)r Úvaluer r r Ú _set_nameus zAttr._set_namecCs|jS)N)r‘)r r r r Ú _get_value|szAttr._get_valuecCs6||_||jd_|jdk r&t|jƒ||jd_dS)Nr)r‘r$rGr”r:)r rœr r r Ú _set_values    zAttr._set_valuecCs|jS)N)r’)r r r r Ú _get_prefixˆszAttr._get_prefixcCsd|j}|dkr&|r&|tkr&tjjdƒ‚||_|dkr<|j}nd||jf}|jrZt|jƒ||_ dS)NÚxmlnsz5illegal use of 'xmlns' prefix for the wrong namespacez%s:%s) rrrr/r0Ú NamespaceErrr’rwr”r:r‚)r rsZnsuriZnewNamer r r Ú _set_prefix‹s  zAttr._set_prefixcCsz|j}|dk rR|j|j=|j|j|jf=|jrRd|_|jd8_|jj d8_ x|j D] }|j ƒqZW|j dd…=dS)NFr() r”Ú_attrsr‡Ú_attrsNSrrrwÚ_is_idÚ_magic_id_nodesrOÚ_magic_id_countr$rH)r ÚelemrMr r r rHœs   z Attr.unlinkcCsf|jr dS|j}|j}|dks&|dkr*dS|j|ƒ}|dkr@dS|jrV|j|j|jƒS|j|jƒSdS)NTF) r¦rOr”Ú_get_elem_inforrÚisIdNSrwÚisIdr‡)r rur©Úinfor r r Ú _get_isId­s zAttr._get_isIdcCs\|j}|j}|dks|dkr tS|j|ƒ}|dkr6tS|jrL|j|j|jƒS|j|jƒSdS)N) rOr”Ú_no_typerªrrÚgetAttributeTypeNSrwÚgetAttributeTyper‡)r rur©r­r r r Ú_get_schemaType½s zAttr._get_schemaType)r�r‘rrr’r$r“rOr”) rorprqÚ __slots__r ÚATTRIBUTE_NODErr‰r™r¦rFr‹r.rr†rWršr›r�Úpropertyr‡r‚ržrŸrˆrœr r£rsrHr®r²r r r r r�Qs.   r�r¬z True if this attribute is an ID.z'Namespace-local name of this attribute.Ú schemaTypezSchema type for this attribute.c@sòeZdZdZdÚ NamedNodeMapaThe attribute list is a transient interface to the underlying dictionaries. Mutations here will change the underlying element's dictionary. Ordering is imposed artificially and does not reflect the order of attributes as found in an input document. r¤r¥Ú _ownerElementcCs||_||_||_dS)N)r¤r¥r¸)r ÚattrsZattrsNSr”r r r r†ÛszNamedNodeMap.__init__cCs t|jƒS)N)Úlenr¤)r r r r Ú _get_lengthàszNamedNodeMap._get_lengthc Cs0y|t|jjƒƒ|Stk r*dSXdS)N)rer¤ÚkeysÚ IndexError)r r6r r r ÚitemãszNamedNodeMap.itemcCs.g}x$|jjƒD]}|j|j|jfƒqW|S)N)r¤ÚvaluesrIr‡rœ)r rLrAr r r rfészNamedNodeMap.itemscCs4g}x*|jjƒD]}|j|j|jf|jfƒqW|S)N)r¤r¿rIrrrwrœ)r rLrAr r r ÚitemsNSïszNamedNodeMap.itemsNScCs"t|tƒr||jkS||jkSdS)N)Ú isinstanceÚstrr¤r¥)r r^r r r Ú __contains__õs  zNamedNodeMap.__contains__cCs |jjƒS)N)r¤r¼)r r r r r¼ûszNamedNodeMap.keyscCs |jjƒS)N)r¥r¼)r r r r ÚkeysNSþszNamedNodeMap.keysNScCs |jjƒS)N)r¤r¿)r r r r r¿szNamedNodeMap.valuesNcCs|jj||ƒS)N)r¤Úget)r r‚rœr r r rÅszNamedNodeMap.getcCs:|jt|ddƒkrdSt|ƒt|ƒkt|ƒt|ƒkSdS)Nr¤r)r¤ÚgetattrÚid)r rXr r r Ú_cmp szNamedNodeMap._cmpcCs|j|ƒdkS)Nr)rÈ)r rXr r r Ú__eq__szNamedNodeMap.__eq__cCs|j|ƒdkS)Nr)rÈ)r rXr r r Ú__ge__szNamedNodeMap.__ge__cCs|j|ƒdkS)Nr)rÈ)r rXr r r Ú__gt__szNamedNodeMap.__gt__cCs|j|ƒdkS)Nr)rÈ)r rXr r r Ú__le__szNamedNodeMap.__le__cCs|j|ƒdkS)Nr)rÈ)r rXr r r Ú__lt__szNamedNodeMap.__lt__cCs"t|tƒr|j|S|j|SdS)N)rÁr,r¥r¤)r Úattname_or_tupler r r Ú __getitem__s  zNamedNodeMap.__getitem__c Csvt|tƒrRy|j|}Wn0tk rHt|ƒ}|jj|_|j|ƒYnX||_n t|tƒsdt dƒ‚|}|j|ƒdS)Nz%value must be a string or Attr object) rÁrÂr¤r]r�r¸rOÚ setNamedItemrœÚ TypeError)r ÚattnamerœrAr r r Ú __setitem__%s   zNamedNodeMap.__setitem__c Cs$y |j|Stk rdSXdS)N)r¤r])r r‚r r r Ú getNamedItem4s zNamedNodeMap.getNamedItemc Cs(y|j||fStk r"dSXdS)N)r¥r])r rrrwr r r ÚgetNamedItemNS:szNamedNodeMap.getNamedItemNScCsX|j|ƒ}|dk rJt|jƒ|j|j=|j|j|jf=t|dƒrFd|_ |St j j ƒ‚dS)Nr”) rÔr:r¸r¤r‡r¥rrrwrdr”r/r0r8)r r‚Únr r r ÚremoveNamedItem@s    zNamedNodeMap.removeNamedItemcCsZ|j||ƒ}|dk rLt|jƒ|j|j|jf=|j|j=t|dƒrHd|_ |St j j ƒ‚dS)Nr”) rÕr:r¸r¥rrrwr¤r‡rdr”r/r0r8)r rrrwrÖr r r ÚremoveNamedItemNSLs    zNamedNodeMap.removeNamedItemNScCstt|tƒs&tjjdt|ƒt|ƒfƒ‚|jj|jƒ}|r@|j ƒ||j|j<||j |j |j f<|j |_t|jƒ|S)Nz%s cannot be child of %s)rÁr�r/r0r1r2r¤rÅr‚rHr¥rrrwr¸r”r:)r rArar r r rÐXs   zNamedNodeMap.setNamedItemcCs |j|ƒS)N)rÐ)r rAr r r ÚsetNamedItemNSeszNamedNodeMap.setNamedItemNScCs||}t|jƒ|jƒdS)N)r:r”rH)r rÎrAr r r Ú __delitem__hs zNamedNodeMap.__delitem__cCs|j|j|jfS)N)r¤r¥r¸)r r r r Ú __getstate__mszNamedNodeMap.__getstate__cCs|\|_|_|_dS)N)r¤r¥r¸)r Ústater r r Ú __setstate__pszNamedNodeMap.__setstate__)r¤r¥r¸)N)!rorprqÚ__doc__r³r†r»r¾rfrÀrÃr¼rÄr¿rÅÚ__len__rÈrÉrÊrËrÌrÍrÏrÓrÔrÕr×rØrÐrÙrÚrÛrÝr r r r r·Ðs<    r·Zlengthz$Number of nodes in the NamedNodeMap.c@s0eZdZd Zdd„Zdd„Zdd„Zd d „Zd S) ÚTypeInfoÚ namespacer‚cCs||_||_dS)N)rár‚)r rár‚r r r r†|szTypeInfo.__init__cCs2|jrd|jj|j|jfSd|jj|jfSdS)Nz<%s %r (from %r)>z<%s %r>)ráÚ __class__ror‚)r r r r Ú__repr__€s  zTypeInfo.__repr__cCs|jS)N)r‚)r r r r r›‡szTypeInfo._get_namecCs|jS)N)rá)r r r r Ú_get_namespaceŠszTypeInfo._get_namespaceN)rár‚)rorprqr³r†rãr›rär r r r ràys ràc @s eZdZdDZejZd ZeZ dZ ejej ej ej ejejfZed d fdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„ZeZd'd(„Zd)d*„Z d+d,„Z!e!Z"d-d.„Z#d/d0„Z$d1d2„Z%d3d4„Z&d5d6„Z'dEd8d9„Z(d:d;„Z)dd?„Z+d@dA„Z,dBdC„Z-d S)FÚElementrOr3rr‡rsrrr“r$r¤r¥r<r=NrcCsHd|_d|_||_|_||_||_tƒ|_d|_|_ d|_ d|_ dS)N) rOr3rr‡rsrrrkr$r<r=r¤r¥)r rrrrsrwr r r r† s  zElement.__init__cCs|jdkri|_i|_dS)N)r¤r¥)r r r r Ú_ensure_attributesµs zElement._ensure_attributesc Cs.y|jStk r(|jjddƒdSXdS)Nr—r(r))r“r\rr˜)r r r r rWºszElement._get_localNamecCs|jS)N)r)r r r r Ú _get_tagNameÀszElement._get_tagNamecCsD|jdk r*xt|jjƒƒD] }|jƒqWd|_d|_tj|ƒdS)N)r¤rer¿rHr¥r )r Úattrr r r rHÃs   zElement.unlinkc Cs4|jdkrdSy |j|jStk r.dSXdS)Nr)r¤rœr])r rÒr r r Ú getAttributeËs   zElement.getAttributec Cs8|jdkrdSy|j||fjStk r2dSXdS)Nr)r¥rœr])r rrrwr r r ÚgetAttributeNSÓs  zElement.getAttributeNScCsV|j|ƒ}|dkr4t|ƒ}||_|j|_|j|ƒn||jkrR||_|jrRt|ƒdS)N)ÚgetAttributeNoder�rœrOÚsetAttributeNoder¬r:)r rÒrœrèr r r Ú setAttributeÛs   zElement.setAttributecCs€t|ƒ\}}|j||ƒ}|dkrHt||||ƒ}||_|j|_|j|ƒn4||jkrf||_|jrft|ƒ|j|kr|||_||_ dS)N) Ú_nssplitÚgetAttributeNodeNSr�rœrOrìr¬r:rsr‡)r rrÚ qualifiedNamerœrsÚ localnamerèr r r ÚsetAttributeNSçs     zElement.setAttributeNScCs|jdkrdS|jj|ƒS)N)r¤rÅ)r Zattrnamer r r rëøs zElement.getAttributeNodecCs|jdkrdS|jj||fƒS)N)r¥rÅ)r rrrwr r r rïýs zElement.getAttributeNodeNScCsš|jd|fkrtjjdƒ‚|jƒ|jj|jdƒ}|dk rD|j|ƒ|j j|j |j fdƒ}|dk rt||k rt|j|ƒt ||ƒ||k rŠ|S||k r–|SdS)Nzattribute node already owned) r”r/r0ZInuseAttributeErrrær¤rÅr‚ÚremoveAttributeNoder¥rrrwÚ_set_attribute_node)r rèZold1Zold2r r r rìs    zElement.setAttributeNodec CsP|jdkrtjjƒ‚y|j|}Wntk r@tjjƒ‚YnX|j|ƒdS)N)r¥r/r0r8r¤r]ró)r r‚rèr r r ÚremoveAttributes  zElement.removeAttributec CsT|jdkrtjjƒ‚y|j||f}Wntk rDtjjƒ‚YnX|j|ƒdS)N)r¥r/r0r8r]ró)r rrrwrèr r r ÚremoveAttributeNS s  zElement.removeAttributeNSc Cs^|dkrtjjƒ‚y|j|jWntk r@tjjƒ‚YnXt|ƒ|jƒ|j|_dS)N) r/r0r8r¤r‚r]r:rHrO)r rAr r r ró)s zElement.removeAttributeNodecCs|jdkrdS||jkS)NF)r¤)r r‚r r r Ú hasAttribute8s zElement.hasAttributecCs|jdkrdS||f|jkS)NF)r¥)r rrrwr r r ÚhasAttributeNS=s zElement.hasAttributeNScCst||tƒƒS)N)r€rk)r r‚r r r ÚgetElementsByTagNameBszElement.getElementsByTagNamecCst|||tƒƒS)N)r„rk)r rrrwr r r ÚgetElementsByTagNameNSEszElement.getElementsByTagNameNScCsd|jt|ƒfS)Nz)rrÇ)r r r r rãIszElement.__repr__rc Cs|j|d|jƒ|jƒ}t|jƒƒ}x4|D],}|jd|ƒt|||jƒ|jdƒq.W|jrô|jdƒt|jƒdkr¦|jdj t j kr¦|jdj |dddƒn8|j|ƒx"|jD]}|j |||||ƒq¸W|j|ƒ|jd|j|fƒn|jd |ƒdS) Nryz %s="rzr{r(rrz%sz/>%s) r}rÚ_get_attributesÚsortedr¼r~rœr$rºrr rFr) r r"r Ú addindentr!r¹Za_namesZa_namerAr r r rLs$      zElement.writexmlcCs|jƒt|j|j|ƒS)N)rær·r¤r¥)r r r r rûgszElement._get_attributescCs|jr dSdSdS)NTF)r¤)r r r r Ú hasAttributeskszElement.hasAttributescCs|j|ƒ}|j|ƒdS)N)rëÚsetIdAttributeNode)r r‚ÚidAttrr r r ÚsetIdAttributess zElement.setIdAttributecCs|j||ƒ}|j|ƒdS)N)rïrÿ)r rrrwrr r r ÚsetIdAttributeNSws zElement.setIdAttributeNScCsl|dks|j|jƒ r tjjƒ‚t|ƒdk r6tjjƒ‚|jshd|_|jd7_|j j d7_ t |ƒdS)NTr() rYr”r/r0r8Ú_get_containing_entrefÚNoModificationAllowedErrr¦r§rOr¨r:)r rr r r rÿ{s   zElement.setIdAttributeNode) rOr3rr‡rsrrr“r$r¤r¥r<r=)rrr).rorprqr³r rJrrˆr¯r¶r§rŒr�rFrŠr‹r.rr†rærWrçrHrérêríròrërïrìZsetAttributeNodeNSrõröróZremoveAttributeNodeNSr÷rørùrúrãrrûrþrrrÿr r r r rå�sT      rår‰z*NamedNodeMap of attributes on the element.z%Namespace-local name of this element.cCs8t|ƒ|jƒ||j|j<||j|j|jf<||_dS)N)r:rær¤r‚r¥rrrwr”)Úelementrèr r r rôŒs  rôc@sfeZdZdZfZdZeƒZdZdZ dd„Z dd„Z dd„Z d d „Z d d „Zd d„Zdd„Zdd„ZdS)Ú Childlessz�Mixin that makes childless-ness easy to implement and avoids the complexity of the Node methods that deal with children. NcCsdS)Nr )r r r r r'¢szChildless._get_firstChildcCsdS)Nr )r r r r r*¥szChildless._get_lastChildcCstjj|jdƒ‚dS)Nz nodes cannot have children)r/r0r1r‡)r rAr r r r5¨szChildless.appendChildcCsdS)NFr )r r r r r%¬szChildless.hasChildNodescCstjj|jdƒ‚dS)Nz nodes do not have children)r/r0r1r‡)r r>r?r r r r-¯szChildless.insertBeforecCstjj|jdƒ‚dS)Nz nodes do not have children)r/r0r8r‡)r rCr r r r4³szChildless.removeChildcCsdS)Nr )r r r r rK·szChildless.normalizecCstjj|jdƒ‚dS)Nz nodes do not have children)r/r0r1r‡)r r>rCr r r rD»szChildless.replaceChild)rorprqrÞr³r‰Z EmptyNodeListr$rtrvr'r*r5r%r-r4rKrDr r r r r—src@s\eZdZejZdZdd„Zdd„Zdd„Z e ee ƒZ d d „Z d d „Z e e e ƒZddd„ZdS)ÚProcessingInstructionÚtargetrGcCs||_||_dS)N)rrG)r rrGr r r r†ÄszProcessingInstruction.__init__cCs|jS)N)rG)r r r r Ú_get_nodeValueÉsz$ProcessingInstruction._get_nodeValuecCs ||_dS)N)rG)r rœr r r Ú_set_nodeValueËsz$ProcessingInstruction._set_nodeValuecCs|jS)N)r)r r r r Ú _get_nodeNameÐsz#ProcessingInstruction._get_nodeNamecCs ||_dS)N)r)r rœr r r Ú _set_nodeNameÒsz#ProcessingInstruction._set_nodeNamercCs|jd||j|j|fƒdS)Nz %s%s)r}rrG)r r"r rýr!r r r rÖszProcessingInstruction.writexmlN)rrG)rrr)rorprqr rŒrr³r†r r rµrˆr r r‡rr r r r rÀs  rc@sreZdZdZdd„Zdd „ZeZd d „Zd d „Ze eeƒZ Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„ZdS)Ú CharacterDataÚ_datarOr3r=r<cCs,d|_|_d|_|_d|_tj|ƒdS)Nr)rOr3r=r<rr r†)r r r r r†Ýs  zCharacterData.__init__cCs t|jƒS)N)rºrG)r r r r r»ãszCharacterData._get_lengthcCs|jS)N)r)r r r r Ú _get_dataçszCharacterData._get_datacCs ||_dS)N)r)r rGr r r Ú _set_dataészCharacterData._set_datacCs6|j}t|ƒdkrd}nd}d|jj|dd…|fS)Né z...rzr)rGrºrâro)r rGZ dotdotdotr r r rãîs  zCharacterData.__repr__cCsT|dkrtjjdƒ‚|t|jƒkr.tjjdƒ‚|dkrBtjjdƒ‚|j|||…S)Nrzoffset cannot be negativez#offset cannot be beyond end of datazcount cannot be negative)r/r0Ú IndexSizeErrrºrG)r ÚoffsetÚcountr r r Ú substringData÷s   zCharacterData.substringDatacCs|j||_dS)N)rG)r Úargr r r Ú appendDataszCharacterData.appendDatacCsZ|dkrtjjdƒ‚|t|jƒkr.tjjdƒ‚|rVd|jd|…||j|d…f|_dS)Nrzoffset cannot be negativez#offset cannot be beyond end of dataz%s%s%s)r/r0rrºrG)r rrr r r Ú insertDatas  zCharacterData.insertDatacCsl|dkrtjjdƒ‚|t|jƒkr.tjjdƒ‚|dkrBtjjdƒ‚|rh|jd|…|j||d…|_dS)Nrzoffset cannot be negativez#offset cannot be beyond end of datazcount cannot be negative)r/r0rrºrG)r rrr r r Ú deleteData s   zCharacterData.deleteDatacCsr|dkrtjjdƒ‚|t|jƒkr.tjjdƒ‚|dkrBtjjdƒ‚|rnd|jd|…||j||d…f|_dS)Nrzoffset cannot be negativez#offset cannot be beyond end of datazcount cannot be negativez%s%s%s)r/r0rrºrG)r rrrr r r Ú replaceDatas   zCharacterData.replaceDataN)rrOr3r=r<)rorprqr³r†r»rßrrrµrGrˆrãrrrrrr r r r r Ús    r zLength of the string data.c@sHeZdZfZejZdZdZdd„Z ddd„Z dd „Z d d „Z d d „Z dS)r•z#textNcCs’|dks|t|jƒkr"tjjdƒ‚|jƒ}|j|d…|_|j|_|j}|jr~||jj kr~|dkrp|jj |ƒn|jj ||ƒ|jd|…|_|S)Nrzillegal offset value) rºrGr/r0rrârOr<r3r$r5r-)r rZnewTextÚnextr r r Ú splitText+s zText.splitTextrcCst|d||j|fƒdS)Nz%s%s%s)r~rG)r r"r rýr!r r r r:sz Text.writexmlcCsŒ|jg}|j}x6|dk rD|jtjtjfkr@|jd|jƒ|j}qPqW|j}x4|dk r€|jtjtjfkr||j|jƒ|j}qNPqNWdj |ƒS)Nrr) rGr=rr rFrŠr;r<rIÚjoin)r rLrÖr r r Ú_get_wholeText?s   zText._get_wholeTextcCs¦|j}|j}x6|dk rB|jtjtjfkr>|j}|j|ƒ|}qPqW|j}|sX|j|ƒx6|dk rŽ|jtjtjfkrŠ|j}|j|ƒ|}qZPqZW|rž||_|SdSdS)N) r3r=rr rFrŠr4r<rG)r Zcontentr�rÖrr r r ÚreplaceWholeTextQs*     zText.replaceWholeTextcCsF|jjƒrdSt|ƒ}|dkr"dS|jj|ƒ}|dkr:dS|jƒSdS)NF)rGÚstripÚ_get_containing_elementrOrªÚisElementContent)r r©r­r r r Ú!_get_isWhitespaceInElementContentms  z&Text._get_isWhitespaceInElementContent)rrr)rorprqr³r rFrr‡r‰rrrrr#r r r r r•$s r•ZisWhitespaceInElementContentzKTrue iff this text node contains only whitespace and is in element content.Z wholeTextz.The text of all logically-adjacent text nodes.cCs.|j}x"|dk r(|jtjkr |S|j}qWdS)N)r3rr rJ)rAr@r r r r!€s    r!cCs.|j}x"|dk r(|jtjkr |S|j}qWdS)N)r3rr r‹)rAr@r r r rˆs    rc@s(eZdZejZdZdd„Zddd„ZdS) ÚCommentz#commentcCstj|ƒ||_dS)N)r r†r)r rGr r r r†•s zComment.__init__rcCs,d|jkrtdƒ‚|jd||j|fƒdS)Nz--z%'--' is not allowed in a comment nodez %s%s)rGr7r})r r"r rýr!r r r r™s zComment.writexmlN)rrr) rorprqr r�rr‡r†rr r r r r$‘sr$c@s$eZdZfZejZdZddd„ZdS)Ú CDATASectionz#cdata-sectionrcCs,|jjdƒdkrtdƒ‚|jd|jƒdS)Nz]]>rz$']]>' not allowed in a CDATA sectionz)rGÚfindr7r})r r"r rýr!r r r r¥szCDATASection.writexmlN)rrr) rorprqr³r rŠrr‡rr r r r r%Ÿsr%c@s|eZdZdZffdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„ZdS)ÚReadOnlySequentialNamedNodeMapÚ_seqcCs ||_dS)N)r()r Úseqr r r r†®sz'ReadOnlySequentialNamedNodeMap.__init__cCs t|jƒS)N)rºr()r r r r rß²sz&ReadOnlySequentialNamedNodeMap.__len__cCs t|jƒS)N)rºr()r r r r r»µsz*ReadOnlySequentialNamedNodeMap._get_lengthcCs"x|jD]}|j|kr|SqWdS)N)r(r‡)r r‚rÖr r r rÔ¸s  z+ReadOnlySequentialNamedNodeMap.getNamedItemcCs,x&|jD]}|j|kr|j|kr|SqWdS)N)r(rrrw)r rrrwrÖr r r rÕ½s z-ReadOnlySequentialNamedNodeMap.getNamedItemNScCs4t|tƒr|j|Ž}n |j|ƒ}|dkr0t|ƒ‚|S)N)rÁr,rÕrÔr])r Z name_or_tuplerAr r r rÏÂs    z*ReadOnlySequentialNamedNodeMap.__getitem__c Cs0|dkr dSy |j|Stk r*dSXdS)Nr)r(r½)r r6r r r r¾Ës  z#ReadOnlySequentialNamedNodeMap.itemcCstjjdƒ‚dS)Nz"NamedNodeMap instance is read-only)r/r0r)r r‚r r r r×Ósz.ReadOnlySequentialNamedNodeMap.removeNamedItemcCstjjdƒ‚dS)Nz"NamedNodeMap instance is read-only)r/r0r)r rrrwr r r rØ×sz0ReadOnlySequentialNamedNodeMap.removeNamedItemNScCstjjdƒ‚dS)Nz"NamedNodeMap instance is read-only)r/r0r)r rAr r r rÐÛsz+ReadOnlySequentialNamedNodeMap.setNamedItemcCstjjdƒ‚dS)Nz"NamedNodeMap instance is read-only)r/r0r)r rAr r r rÙßsz-ReadOnlySequentialNamedNodeMap.setNamedItemNScCs|jgS)N)r()r r r r rÛãsz+ReadOnlySequentialNamedNodeMap.__getstate__cCs|d|_dS)Nr)r()r rÜr r r rÝæsz+ReadOnlySequentialNamedNodeMap.__setstate__N)r()rorprqr³r†rßr»rÔrÕrÏr¾r×rØrÐrÙrÛrÝr r r r r'«s  r'z&Number of entries in the NamedNodeMap.c@s,eZdZdZd Zdd„Zdd„Zdd „Zd S) Ú Identifiedz@Mix-in class that supports the publicId and systemId attributes.ÚpublicIdÚsystemIdcCs||_||_dS)N)r+r,)r r+r,r r r Ú_identified_mixin_initòsz!Identified._identified_mixin_initcCs|jS)N)r+)r r r r Ú _get_publicIdöszIdentified._get_publicIdcCs|jS)N)r,)r r r r Ú _get_systemIdùszIdentified._get_systemIdN)r+r,)rorprqrÞr³r-r.r/r r r r r*ís r*c@sHeZdZejZdZdZdZdZ dZ dd„Z dd„Z dd„Z d d d „ZdS) Ú DocumentTypeNcCs2tƒ|_tƒ|_|r&t|ƒ\}}||_|j|_dS)N)r'ÚentitiesÚ notationsrîr‚r‡)r rðrsrñr r r r†s  zDocumentType.__init__cCs|jS)N)ÚinternalSubset)r r r r Ú_get_internalSubset sz DocumentType._get_internalSubsetcCsö|jdkrîtdƒ}|j|_|j|_tjjj}|rÜg|j_ g|j _ x>|j j D]2}t |j|j |j ƒ}|j j j|ƒ|j|||ƒqJWxZ|jj D]N}t|j|j |j |jƒ}|j|_|j|_|j|_|jj j|ƒ|j|||ƒqŠW|j|||ƒ|SdSdS)N)rOr0r‚r‡r/r0ÚUserDataHandlerÚ NODE_CLONEDr1r(r2ÚNotationr+r,rIrjÚEntityÚ notationNameÚactualEncodingrrU)r rPÚclonergrÖÚnotationÚeÚentityr r r rQs.  zDocumentType.cloneNodercCsŽ|jdƒ|j|jƒ|jr8|jd||j||jfƒn|jrR|jd||jfƒ|jdk r||jdƒ|j|jƒ|jdƒ|jd|ƒdS)Nz r r r r5PszEntity.appendChildcCstjjdƒ‚dS)Nz+cannot insert children below an entity node)r/r0r1)r r>r?r r r r-TszEntity.insertBeforecCstjjdƒ‚dS)Nz*cannot remove children from an entity node)r/r0r1)r rCr r r r4XszEntity.removeChildcCstjjdƒ‚dS)Nz)cannot replace children of an entity node)r/r0r1)r r>rCr r r rD\szEntity.replaceChild)rorprqr‰r Z ENTITY_NODErrˆr:rrUr†rArBrCr5r-r4rDr r r r r88sr8c@seZdZejZdZdd„ZdS)r7NcCs||_|j||ƒdS)N)r‡r-)r r‚r+r,r r r r†dszNotation.__init__)rorprqr rŽrrˆr†r r r r r7`sr7c @sHeZdZddddddddgZdd „Zd d „Zd d „Zdd„Zdd„ZdS)ÚDOMImplementationÚcoreú1.0ú2.0Nr/úls-loadú3.0cCs|dkr d}|jƒ|f|jkS)Nr)ÚlowerÚ _features)r rTrUr r r rStszDOMImplementation.hasFeaturec CsØ|r|jdk rtjjdƒ‚|jƒ}|dko8|dko8|dk }| rR|rRtjjdƒ‚|r¸t|ƒ\}}|dkr~|dkr~tjjdƒ‚|r”| r”tjjdƒ‚|j||ƒ}|r®|j |ƒ|j |ƒ|rÈ||_|_ ||_ ||_ |S)Nz(doctype object owned by another DOM treezElement with no namer/z$http://www.w3.org/XML/1998/namespacezillegal use of 'xml' prefixz(illegal use of prefix without namespaces) r3r/r0ÚWrongDocumentErrÚ_create_documentZInvalidCharacterErrrîr¢ÚcreateElementNSr5rOÚdoctyperR) r rrrðrOruZadd_root_elementrsrñrr r r ÚcreateDocumentys4         z DOMImplementation.createDocumentcCst|ƒ}||_||_|S)N)r0r+r,)r rðr+r,rOr r r ÚcreateDocumentType¦sz$DOMImplementation.createDocumentTypecCs|j|dƒr|SdSdS)N)rS)r rTr r r rZ®s zDOMImplementation.getInterfacecCstƒS)N)ÚDocument)r r r r rMµsz"DOMImplementation._create_document)rErF)rErG)rEN)r/rF)r/rG)r/N)rHrI)rHN) rorprqrKrSrPrQrZrMr r r r rDis-rDc@s\eZdZdZdZdd„Zdd„Zdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z dd„Z dS)Ú ElementInfoz÷Object that represents content-model information for an element. This implementation is not expected to be used in practice; DOM builders should provide implementations which do the right thing using information available to it. rcCs ||_dS)N)r)r r‚r r r r†ÃszElementInfo.__init__cCstS)N)r¯)r Úanamer r r r±ÆszElementInfo.getAttributeTypecCstS)N)r¯)r rrrwr r r r°ÉszElementInfo.getAttributeTypeNScCsdS)NFr )r r r r r"ÌszElementInfo.isElementContentcCsdS)zQReturns true iff this element is declared to have an EMPTY content model.Fr )r r r r ÚisEmptyÏszElementInfo.isEmptycCsdS)z7Returns true iff the named attribute is a DTD-style ID.Fr )r rTr r r r¬ÔszElementInfo.isIdcCsdS)zd?„Z6d@dA„Z7dBdC„Z8dDdE„Z9dFdG„Z:dNdIdJ„Z;dKdL„Z|jj|ƒ|jtj kr^|j ƒr^tjjdƒ‚tj ||ƒS)Nz%s cannot be child of %sz two document elements disallowed) rr.r/r0r1r2r3r4r rJÚ_get_documentElementr5)r rAr r r r5-s    zDocument.appendChildc CsVy|jj|ƒWntk r.tjjƒ‚YnXd|_|_d|_|j |krRd|_ |S)N) r$rEr7r/r0r8r<r=r3ÚdocumentElement)r rCr r r r4=s  zDocument.removeChildcCs$x|jD]}|jtjkr|SqWdS)N)r$rr rJ)r rAr r r rcIs  zDocument._get_documentElementcCs(|jdk r|jjƒd|_tj|ƒdS)N)rOrHr )r r r r rHNs  zDocument.unlinkcCsÂ|sdS|jjdddƒ}|j|_|j|_|j|_xx|jD]n}t|||ƒ}|jj|ƒsXt ‚|jj |ƒ|j t j kr€|jdks t ‚n |j t jkr |jdksšt ‚||_||_q8W|jtjjj||ƒ|S)N)rRrPrr_rUr$rNrOrYÚAssertionErrorrIrr rrdr@rOr3rjr/r0r5r6)r rPr;rÖZ childcloner r r rQTs&       zDocument.cloneNodecCstƒ}||_|S)N)r…rO)r rbr r r ÚcreateDocumentFragmentiszDocument.createDocumentFragmentcCst|ƒ}||_|S)N)rårO)r rr=r r r Ú createElementnszDocument.createElementcCs(t|tƒstdƒ‚tƒ}||_||_|S)Nznode contents must be a string)rÁrÂrÑr•rGrO)r rGÚtr r r ÚcreateTextNodess  zDocument.createTextNodecCs(t|tƒstdƒ‚tƒ}||_||_|S)Nznode contents must be a string)rÁrÂrÑr%rGrO)r rGr@r r r ÚcreateCDATASection{s  zDocument.createCDATASectioncCst|ƒ}||_|S)N)r$rO)r rGr@r r r Ú createCommentƒszDocument.createCommentcCst||ƒ}||_|S)N)rrO)r rrGÚpr r r ÚcreateProcessingInstructionˆs z$Document.createProcessingInstructioncCst|ƒ}||_d|_|S)Nr)r�rOrœ)r r–Úar r r ÚcreateAttribute�szDocument.createAttributecCs"t|ƒ\}}t|||ƒ}||_|S)N)rîrårO)r rrrðrsrwr=r r r rN“s  zDocument.createElementNScCs*t|ƒ\}}t||||ƒ}||_d|_|S)Nr)rîr�rOrœ)r rrrðrsrwrnr r r ÚcreateAttributeNS™s  zDocument.createAttributeNScCst||||ƒ}||_|S)N)r8rO)r r‚r+r,r9r=r r r Ú_create_entity£szDocument._create_entitycCst|||ƒ}||_|S)N)r7rO)r r‚r+r,rÖr r r Ú_create_notation¨s zDocument._create_notationcCs”||jkr|j|S|jp|js$dS|j}|dkrB|jg}||_n|sJdSd}�x>|�rŽ|jƒ}|jdd„|jDƒƒ|j|ƒ}|�r@x¶|j j ƒD]¨}|j rÒ|j |j |j ƒrÐ||j|j<|j|krÈ|}n|jsÐPq’|j|jƒ�r ||j|j<|j|k�rþ|}n |j�s:Pq’|jr’||j|j<|j|k�r.|}q’|jdkr’Pq’WnB|j�r‚x8|j j ƒD]*}|j�rT||j|j<|j|k�rT|}�qTW|dk rRPqRW|S)NcSsg|]}|jtkr|‘qSr )rr9)Ú.0rMr r r ú Ász+Document.getElementById..r()rVrYr¨rXrdÚpopÚextendr$rªr‰r¿rrr«rwrœr§r¬r‚r¦)r rÇÚstackÚresultrAr­rèr r r ÚgetElementById­sZ               zDocument.getElementByIdcCst||tƒƒS)N)r€rk)r r‚r r r rùçszDocument.getElementsByTagNamecCst|||tƒƒS)N)r„rk)r rrrwr r r rúêszDocument.getElementsByTagNameNScCs|jj||ƒS)N)rRrS)r rTrUr r r rVîszDocument.isSupportedcCs>|jtjkrtjjdƒ‚n|jtjkr2tjjdƒ‚t|||ƒS)Nzcannot import document nodesz!cannot import document type nodes)rr rr/r0ÚNotSupportedErrr@rN)r rArPr r r Ú importNodeñs    zDocument.importNodercCsN|dkr|jd|ƒn|jd||fƒx|jD]}|j||||ƒq2WdS)Nzz%%s)r}r$r)r r"r rýr!rrAr r r røs   zDocument.writexmlcCsJ|j|k r tjjd||jfƒ‚|jtjtjfkr>tjjdƒ‚|t kr¶d|kr€|j ddƒ\}}|dkr´|tjj kr´tjj dƒ‚q¾|dkr¬|tjj kr¬|jtjkr¬tjj dƒ‚d}|}nd}d}|jtjkrê|j }|dk rî|j}|j|ƒnd}||_||_||_||_|jtjk�r||_n*||_|dk �rF|j|ƒ|�rF|j|ƒ|S)Nz?cannot rename nodes from other documents; expected %s, found %sz8renameNode() only applies to element and attribute nodesr—r(r¡zillegal use of 'xmlns' prefixz$illegal use of the 'xmlns' attribute)rOr/r0rLrr rJr´rzrr˜rr¢r”r¦rórsr“rrr‡rr‚rìrÿ)r rÖrrr‚rsrwrZis_idr r r Ú renameNodesR         zDocument.renameNode)rYrOrXr$rV)rrrN)=rorprqr³r rJrŒr�r@r.rDrRrrr‡rˆr‰r3r=r<r:rr_rUrar]r[r¨r†rªrArZr\rBr^r`rbrCr5r4rcrHrQrfrgrirjrkrmrorNrprqrrryrùrúrVr{rr|r r r r rRêsh    : rRrdz#Top-level element of this document.c Csì|jj|ƒrtjjj}n tjjj}|jtj kr¬|j |j |j ƒ}x>|j jƒD]0}|j|j |j |jƒ|j|j |jƒ}|j|_qJW|r¨x$|jD]}t|||ƒ}|j|ƒqŠW�n"|jtjkrî|jƒ}|rêx$|jD]}t|||ƒ}|j|ƒqÌW�nà|jtjk�r |j|jƒ}�nÂ|jtjk�r*|j|jƒ}�n¤|jtjk�rL|j|j |jƒ}�n‚|jtj!k�rj|j"|jƒ}�nd|jtj#k�rš|j$|j |j ƒ}d|_|j|_�n4|jtj%k�rº|j|k �s¸t&‚tjjj}|j'j(|j)|j*|j+ƒ}||_|�rÎg|j,_-g|j._-xR|j.j-D]F} t/| j | j*| j+ƒ} || _|j.j-j0| ƒt1| dƒ�rþ| j2|| | ƒ�qþWx„|j,j-D]b} t3| j | j*| j+| j4ƒ} | j5| _5| j6| _6| j7| _7|| _|j,j-j0| ƒt1| dƒ�rR| j2|| | ƒ�qRWntjj8dt9|ƒƒ‚t1|dƒ�rè|j2|||ƒ|S)zo Clone a node and give it the new owner document. Called by Node.cloneNode and Document.importNode TrjzCannot clone node %s):rOrYr/r0r5r6Z NODE_IMPORTEDrr rJrNrrr‡r‰r¿ròrœrïrwr™r$rNr5r+rfrFrirGrŠrjrŒrmrr�rkr´rpr@rerRrQr‚r+r,r1r(r2r7rIrdrjr8r9r:rrUrzr2) rArPZnewOwnerDocumentrgr;rèrnrMr@rÖr<r=r>r r r rN<s~                rNcCs,|jddƒ}t|ƒdkr|Sd|dfSdS)Nr—r(ér)r˜rº)rðZfieldsr r r rîŽs  rîcCs,|||Ž}|jƒ\}}|j|ƒ|jƒ|S)N)ZgetEventZ expandNoderW)ÚfuncÚargsÚkwargsZeventsZtoktypeZrootNoder r r Ú_do_pulldom_parse–s    r�cCsJ|dkr$| r$ddlm}|j|ƒSddlm}t|j|f||dœƒSdS)z3Parse a file into a DOM by filename or file object.Nr)Ú expatbuilder)Úpulldom)ÚparserÚbufsize)Úxml.domr‚Úparserƒr�)Úfiler„r…r‚rƒr r r r‡�s     r‡cCsB|dkrddlm}|j|ƒSddlm}t|j|fd|iƒSdS)z&Parse a file into a DOM from a string.Nr)r‚)rƒr„)r†r‚Ú parseStringrƒr�)Ústringr„r‚rƒr r r r‰§s     r‰cCsB|rsŠ v  z$ x )GU  ><( O*PR