3 2a@sddlZddlZddlmZmZmZmZddlTddlm Z m Z ej j j ej j jfZGdddej j Z ee ddd ee d d d ee d d d ddZddZddZddZddZGddde ZGddde Zeeddd eed dd eedd d Gd!d"d"eZeed#d$d eZGd%d&d&eZeddZGd'd(d(e Zeed)d*d eed d+d d,d-ZGd.d/d/ZGd0d1d1ee Z Gd2d3d3ee Z!ee!d#d4d Gd5d6d6e!Z"ee"d7d8d ee"d9d:d d;d<Z#d=d>Z$Gd?d@d@e!Z%GdAdBdBe"Z&GdCdDdDeZ'ee'd#dEd GdFdGdGZ(GdHdIdIe(ee Z)GdJdKdKe(e Z*GdLdMdMe(ee Z+GdNdOdOe Z,GdPdQdQeZ-dRdSZ.GdTdUdUe e Z/ee/dVdWd dXdYZ0dZd[Z1d\d]Z2ddd^d_Z3ded`daZ4dfdbdcZ5dS)gN)EMPTY_NAMESPACE EMPTY_PREFIXXMLNS_NAMESPACEdomreg)*)DOMImplementationLS DocumentLSc@seZdZdZdZdZdZdZeZ ddZ d2ddZ d3dd Z d d Z d d ZddZddZddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Z dS)4NodeNcCsdS)NT)selfr r ,/opt/alt/python36/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|jS|j jSdS)Nxmlcharrefreplacer)rerrorsnewliner) ioStringIO TextIOWrapperBytesIOnodeTyper DOCUMENT_NODEwritexmlgetvaluedetach)r indentnewlrwriterr r r r1s   zNode.toprettyxmlcCs t|jS)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|jD]}|j||qW|S|j|jkrXtjjdt |t |f|j dk rn|j j ||dkr|j |ny|jj |}Wntk rtjjYnX|jtkrt||jj||||_||_|r|j|d}||_||_nd|_||_ |S)Nz%s cannot be child of %sr()rDOCUMENT_FRAGMENT_NODEtupler$ insertBefore_child_node_typesxmldomHierarchyRequestErrrepr parentNode removeChild appendChildindex ValueError NotFoundErr_nodeTypes_with_children_clear_id_cacheinsert nextSiblingpreviousSibling)r newChildrefChildcr6noder r r r-Qs6      zNode.insertBeforecCs|j|jkr.xt|jD]}|j|qW|S|j|jkrXtjjdt |t |fn|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 rtjjYnX||j |<||_ d|_ |jtks|jtkrt||j|_|j|_d|_d|_|jr||j_|jr||j_|S)Nz%s cannot be child of %s)rr+r<r4r-r.r/r0r1r2r3r$r6r7r8r9r:r=)r r>oldChildr?r6r r r replaceChilds<         zNode.replaceChildc Csy|jj|Wntk r.tjjYnX|jdk rD|j|j_|jdk rX|j|j_d|_|_|jt krvt |d|_ |S)N) r$remover7r/r0r8r<r=rr9r:r3)r rCr r r r4s      zNode.removeChildcCsg}x|jD]}|jtjkr|jsL|r2|j|d_|jrB|j|j_|jq|r|dj|jkr|d}|j|j|_|j|_|jr||j_|jq|j|q |j||jtj kr |j q W||jdd<dS)Nr(r)r)r)) r$rr TEXT_NODEdatar<r=unlinkappend ELEMENT_NODE normalize)r LchildrAr r r rKs*          zNode.normalizecCst|||jp|S)N) _clone_node ownerDocument)r deepr r r cloneNodeszNode.cloneNodecCs|jjj||S)N)rOimplementation hasFeature)r featureversionr r r isSupportedszNode.isSupportedcCsdS)Nr )r r r r _get_localNameszNode._get_localNamecCs||kS)Nr )r otherr r r isSameNodeszNode.isSameNodecCs|j|dr|SdSdS)N)rV)r rTr r r getInterfaces zNode.getInterfacec Cs,y|j|dSttfk r&dSXdS)Nr) _user_dataAttributeErrorKeyError)r keyr r r getUserDataszNode.getUserDatac Csnd}y |j}Wntk r,i}||_YnX||krB||d}|dkr^d}|dk rj||=n ||f||<|S)Nr)r[r\)r r^rGhandlerolddr r r setUserDatas    zNode.setUserDatacCsHt|drDx8t|jjD]&\}\}}|dk r|j|||||qWdS)Nr[)hasattrlistr[itemsZhandle)r operationsrcdstr^rGr`r r r _call_user_data_handlers zNode._call_user_data_handlercCsBd|_|_|jr2x|jD] }|jqWt|_d|_d|_dS)N)r3rOr$rHNodeListr=r<)r rMr r r rHs   z Node.unlinkcCs|S)Nr )r r r r __enter__szNode.__enter__cCs |jdS)N)rH)r etZevtbr r r __exit__sz Node.__exit__)N)rrN)!__name__ __module__ __qualname__ namespaceURIr3rOr<r=rprefixr rrr%r&r'r*r-r5rDr4rKrQrVrWrYrZr_rcrjrHrlror 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 rBcCs(x"|dk r"|jtjkrdS|j}qWdS)NTF)rr rr3)rAr r r _in_document&s    rycCs6|r2|jddjddjddjdd}|j|dS) N&z&z>)replacewrite)r"rGr r r _write_data.srcCsHxB|jD]8}|jtjkr4|dks*|j|kr4|j|t|||qW|S)Nr)r$rr rJtagNamerI_get_elements_by_tagName_helper)parentnamercrAr r r r5s    rcCs\xV|jD]L}|jtjkr|dks*|j|krF|dks<|j|krF|j|t||||qW|S)Nr)r$rr rJrxrsrI"_get_elements_by_tagName_ns_helper)rZnsURIrxrrAr r r r=s   rc@sJeZdZejZdZdZdZdZ ej ej ej ej ejejejfZddZdS)DocumentFragmentz#document-fragmentNcCs t|_dS)N)rkr$)r r r r __init__TszDocumentFragment.__init__)rprqrrr r+rnodeName nodeValue attributesr3rJrFCDATA_SECTION_NODEENTITY_REFERENCE_NODEPROCESSING_INSTRUCTION_NODE COMMENT_NODE NOTATION_NODEr.rr r r r rFsrc@seZdZd#ZejZd Zd Zd Z ej ej fZ e d d fd d Zd dZddZddZddZeeeZZddZddZeeeZZddZddZeeeZddZdd Zd!d"Zd S)$Attr_name_valuers_prefixr$ _localNamerO ownerElementNFcCs2d|_||_||_||_t|_|jjtdS)N)rrrsrrkr$rIText)r qNamersrxrtr r r rbs z Attr.__init__c Cs.y|jStk r(|jjdddSXdS)N:r(r))rr\rsplit)r r r r rWoszAttr._get_localNamecCs|jS)N) specified)r r r r _get_specifieduszAttr._get_specifiedcCs|jS)N)r)r r r r _get_namexszAttr._get_namecCs||_|jdk rt|jdS)N)rrr:)r valuer r r _set_name{s zAttr._set_namecCs|jS)N)r)r r r r _get_valueszAttr._get_valuecCs6||_||jd_|jdk r&t|j||jd_dS)Nr)rr$rGrr:)r rr r r _set_values    zAttr._set_valuecCs|jS)N)r)r r r r _get_prefixszAttr._get_prefixcCsd|j}|dkr&|r&|tkr&tjjd||_|dkr<|j}nd||jf}|jrZt|j||_ dS)Nxmlnsz5illegal use of 'xmlns' prefix for the wrong namespacez%s:%s) rsrr/r0 NamespaceErrrrxrr:r)r rtZnsuriZnewNamer r r _set_prefixs  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_attrsNSrsrx_is_id_magic_id_nodesrO_magic_id_countr$rH)r elemrMr r r rHs   z Attr.unlinkcCsf|jr dS|j}|j}|dks&|dkr*dS|j|}|dkr@dS|jrV|j|j|jS|j|jSdS)NTF) rrOr_get_elem_inforsisIdNSrxisIdr)r rvrinfor r r _get_isIds zAttr._get_isIdcCs\|j}|j}|dks|dkr tS|j|}|dkr6tS|jrL|j|j|jS|j|jSdS)N) rOr_no_typerrsgetAttributeTypeNSrxgetAttributeTyper)r rvrrr r r _get_schemaTypes zAttr._get_schemaType)rrrsrr$rrOr) rprqrr __slots__r ATTRIBUTE_NODErrrrrFrr.rrrWrrrpropertyrrrrrrrrrtrHrrr r r r rXs.   rrz True if this attribute is an ID.z'Namespace-local name of this attribute. schemaTypezSchema type for this attribute.c@seZdZd;ZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ dz<%s %r>)r __class__rpr)r r r r __repr__s  zTypeInfo.__repr__cCs|jS)N)r)r r r r rszTypeInfo._get_namecCs|jS)N)r)r r r r _get_namespaceszTypeInfo._get_namespaceN)rr)rprqrrrrrrrr r r r rs rc @s eZdZdDZejZd ZeZ dZ ejej ej ej ejejfZed d fddZddZddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&ZeZd'd(Zd)d*Z d+d,Z!e!Z"d-d.Z#d/d0Z$d1d2Z%d3d4Z&d5d6Z'dEd8d9Z(d:d;Z)dd?Z+d@dAZ,dBdCZ-d S)FElementrOr3rrrtrsrr$rrr<r=NrcCsBd|_||_|_||_||_t|_d|_|_d|_ d|_ dS)N) r3rrrtrsrkr$r<r=rr)r rrsrtrxr r r rs  zElement.__init__cCs|jdkri|_i|_dS)N)rr)r r r r _ensure_attributess zElement._ensure_attributesc Cs.y|jStk r(|jjdddSXdS)Nrr(r))rr\rr)r r r r rWszElement._get_localNamecCs|jS)N)r)r r r r _get_tagNameszElement._get_tagNamecCsD|jdk r*xt|jjD] }|jqWd|_d|_tj|dS)N)rrerrHrr )r attrr r r rHs   zElement.unlinkc Cs4|jdkrdSy |j|jStk r.dSXdS)Nr)rrr])r rr r r getAttributes   zElement.getAttributec Cs8|jdkrdSy|j||fjStk r2dSXdS)Nr)rrr])r rsrxr r r getAttributeNSs  zElement.getAttributeNScCsV|j|}|dkr4t|}||_|j|_|j|n||jkrR||_|jrRt|dS)N)getAttributeNoderrrOsetAttributeNoderr:)r rrrr r r setAttributes   zElement.setAttributecCst|\}}|j||}|dkrHt||||}||_|j|_|j|n4||jkrf||_|jrft||j|kr|||_||_ dS)N) _nssplitgetAttributeNodeNSrrrOrrr:rtr)r rs qualifiedNamerrt localnamerr r r setAttributeNSs     zElement.setAttributeNScCs|jdkrdS|jj|S)N)rr)r Zattrnamer r r rs zElement.getAttributeNodecCs|jdkrdS|jj||fS)N)rr)r rsrxr r r rs 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) rr/r0ZInuseAttributeErrrrrrremoveAttributeNoderrsrx_set_attribute_node)r rZold1Zold2r r r rs    zElement.setAttributeNodec CsP|jdkrtjjy|j|}Wntk r@tjjYnX|j|dS)N)rr/r0r8rr]r)r rrr r r removeAttributes  zElement.removeAttributec CsT|jdkrtjjy|j||f}Wntk rDtjjYnX|j|dS)N)rr/r0r8r]r)r rsrxrr r r removeAttributeNS%s  zElement.removeAttributeNSc Cs^|dkrtjjy|j|jWntk r@tjjYnXt||j|j|_dS)N) r/r0r8rrr]r:rHrO)r rAr r r r.s zElement.removeAttributeNodecCs|jdkrdS||jkS)NF)r)r rr r r hasAttribute=s zElement.hasAttributecCs|jdkrdS||f|jkS)NF)r)r rsrxr r r hasAttributeNSBs zElement.hasAttributeNScCst||tS)N)rrk)r rr r r getElementsByTagNameGszElement.getElementsByTagNamecCst|||tS)N)rrk)r rsrxr r r getElementsByTagNameNSJszElement.getElementsByTagNameNScCsd|jt|fS)Nz)rr)r r r r rNszElement.__repr__rc Cs|j|d|j|j}t|j}x4|D],}|jd|t|||j|jdq.W|jr|jdt|jdkr|jdj t j kr|jdj |dddn8|j|x"|jD]}|j |||||qW|j||jd|j|fn|jd |dS) Nr{z %s="r|r}r(rrz%sz/>%s) rr_get_attributessortedrrrr$rrr rFr) r r"r addindentr!rZa_namesZa_namerAr r r rQs$      zElement.writexmlcCs|jt|j|j|S)N)rrrr)r r r r rlszElement._get_attributescCs|jr dSdSdS)NTF)r)r r r r hasAttributespszElement.hasAttributescCs|j|}|j|dS)N)rsetIdAttributeNode)r ridAttrr r r setIdAttributexs zElement.setIdAttributecCs|j||}|j|dS)N)rr)r rsrxrr r r setIdAttributeNS|s zElement.setIdAttributeNScCsl|dks|j|j r tjjt|dk r6tjj|jshd|_|jd7_|j j d7_ t |dS)NTr() rYrr/r0r8_get_containing_entrefNoModificationAllowedErrrrrOrr:)r rr r r rs   zElement.setIdAttributeNode) rOr3rrrtrsrr$rrr<r=)rrr).rprqrrrr rJrrrrrrrrFrrr.rrrrWrrHrrrrrrrZsetAttributeNodeNSrrrZremoveAttributeNodeNSrrrrrrrrrrrr r r r rsT      rrz*NamedNodeMap of attributes on the element.z%Namespace-local name of this element.cCs8t||j||j|j<||j|j|jf<||_dS)N)r:rrrrrsrxr)elementrr r r rs  rc@sbeZdZfZdZeZdZdZddZ ddZ ddZ dd Z d d Z d d ZddZddZdS) ChildlessNcCsdS)Nr )r r r r r'szChildless._get_firstChildcCsdS)Nr )r r r r r*szChildless._get_lastChildcCstjj|jddS)Nz nodes cannot have children)r/r0r1r)r rAr r r r5szChildless.appendChildcCsdS)NFr )r r r r r%szChildless.hasChildNodescCstjj|jddS)Nz nodes do not have children)r/r0r1r)r r>r?r r r r-szChildless.insertBeforecCstjj|jddS)Nz nodes do not have children)r/r0r8r)r rCr r r r4szChildless.removeChildcCsdS)Nr )r r r r rKszChildless.normalizecCstjj|jddS)Nz nodes do not have children)r/r0r1r)r r>rCr r r rDszChildless.replaceChild)rprqrrrrZ EmptyNodeListr$rurwr'r*r5r%r-r4rKrDr r r r rsrc@s\eZdZejZdZddZddZddZ e ee Z d d Z d d Z e e e ZdddZdS)ProcessingInstructiontargetrGcCs||_||_dS)N)r rG)r r rGr r r rszProcessingInstruction.__init__cCs|jS)N)rG)r r r r _get_nodeValuesz$ProcessingInstruction._get_nodeValuecCs ||_dS)N)rG)r rr r r _set_nodeValuesz$ProcessingInstruction._set_nodeValuecCs|jS)N)r )r r r r _get_nodeNamesz#ProcessingInstruction._get_nodeNamecCs ||_dS)N)r )r rr r r _set_nodeNamesz#ProcessingInstruction._set_nodeNamercCs|jd||j|j|fdS)Nz %s%s)rr rG)r r"r rr!r r r rszProcessingInstruction.writexmlN)r rG)rrr)rprqrrr rrrrr r rrr r rrr r r r rs  rc@sreZdZdZddZdd ZeZd d Zd d Ze eeZ Z ddZ ddZ ddZddZddZddZdS) CharacterData_datarOr3r=r<cCs,d|_|_d|_|_d|_tj|dS)Nr)rOr3r=r<rr r)r r r r rs  zCharacterData.__init__cCs t|jS)N)rrG)r r r r rszCharacterData._get_lengthcCs|jS)N)r)r r r r _get_dataszCharacterData._get_datacCs ||_dS)N)r)r rGr r r _set_dataszCharacterData._set_datacCs6|j}t|dkrd}nd}d|jj|dd|fS)N z...rzr)rGrrrp)r rGZ dotdotdotr r r rs  zCharacterData.__repr__cCsT|dkrtjjd|t|jkr.tjjd|dkrBtjjd|j|||S)Nrzoffset cannot be negativez#offset cannot be beyond end of datazcount cannot be negative)r/r0 IndexSizeErrrrG)r offsetcountr r r substringDatas   zCharacterData.substringDatacCs|j||_dS)N)rG)r argr r r appendDataszCharacterData.appendDatacCsZ|dkrtjjd|t|jkr.tjjd|rVd|jd|||j|df|_dS)Nrzoffset cannot be negativez#offset cannot be beyond end of dataz%s%s%s)r/r0rrrG)r rrr r r insertDatas  zCharacterData.insertDatacCsl|dkrtjjd|t|jkr.tjjd|dkrBtjjd|rh|jd||j||d|_dS)Nrzoffset cannot be negativez#offset cannot be beyond end of datazcount cannot be negative)r/r0rrrG)r rrr r r deleteDatas   zCharacterData.deleteDatacCsr|dkrtjjd|t|jkr.tjjd|dkrBtjjd|rnd|jd|||j||df|_dS)Nrzoffset cannot be negativez#offset cannot be beyond end of datazcount cannot be negativez%s%s%s)r/r0rrrG)r rrrr r r replaceDatas   zCharacterData.replaceDataN)rrOr3r=r<)rprqrrrrrrrrrrGrrrrrrrr r r r rs    rzLength of the string data.c@sHeZdZfZejZdZdZddZ dddZ dd Z d d Z d d Z dS)rz#textNcCs|dks|t|jkr"tjjd|j}|j|d|_|j|_|j}|jr~||jj kr~|dkrp|jj |n|jj |||jd||_|S)Nrzillegal offset value) rrGr/r0rrrOr<r3r$r5r-)r rZnewTextnextr r r splitText0s zText.splitTextrcCst|d||j|fdS)Nz%s%s%s)rrG)r r"r rr!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 rFrr;r<rIjoin)r rLrr r r _get_wholeTextDs   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 rFrr4r<rG)r Zcontentrrrr r r replaceWholeTextVs*     zText.replaceWholeTextcCsF|jjrdSt|}|dkr"dS|jj|}|dkr:dS|jSdS)NF)rGstrip_get_containing_elementrOrisElementContent)r rrr r r !_get_isWhitespaceInElementContentrs  z&Text._get_isWhitespaceInElementContent)rrr)rprqrrrr rFrrrrrrr r$r r r r r)s rZisWhitespaceInElementContentzKTrue 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 rs    rc@s(eZdZejZdZddZdddZdS) Commentz#commentcCstj|||_dS)N)rrr)r rGr r r rs zComment.__init__rcCs,d|jkrtd|jd||j|fdS)Nz--z%'--' is not allowed in a comment nodez %s%s)rGr7r)r r"r rr!r r r rs zComment.writexmlN)rrr) rprqrrr rrrrrr r r r r%sr%c@s$eZdZfZejZdZdddZdS) CDATASectionz#cdata-sectionrcCs,|jjddkrtd|jd|jdS)Nz]]>rz$']]>' not allowed in a CDATA sectionz)rGfindr7r)r r"r rr!r r r rszCDATASection.writexmlN)rrr) rprqrrrr rrrrr r r r r&sr&c@s|eZdZdZffddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZdS)ReadOnlySequentialNamedNodeMap_seqcCs ||_dS)N)r))r seqr r r rsz'ReadOnlySequentialNamedNodeMap.__init__cCs t|jS)N)rr))r r r r rsz&ReadOnlySequentialNamedNodeMap.__len__cCs t|jS)N)rr))r r r r rsz*ReadOnlySequentialNamedNodeMap._get_lengthcCs"x|jD]}|j|kr|SqWdS)N)r)r)r rrr r r rs  z+ReadOnlySequentialNamedNodeMap.getNamedItemcCs,x&|jD]}|j|kr|j|kr|SqWdS)N)r)rsrx)r rsrxrr r r rs z-ReadOnlySequentialNamedNodeMap.getNamedItemNScCs4t|tr|j|}n |j|}|dkr0t||S)N)rr,rrr])r Z name_or_tuplerAr r r rs    z*ReadOnlySequentialNamedNodeMap.__getitem__c Cs0|dkr dSy |j|Stk r*dSXdS)Nr)r)r)r r6r r r rs  z#ReadOnlySequentialNamedNodeMap.itemcCstjjddS)Nz"NamedNodeMap instance is read-only)r/r0r)r rr r r rsz.ReadOnlySequentialNamedNodeMap.removeNamedItemcCstjjddS)Nz"NamedNodeMap instance is read-only)r/r0r)r rsrxr r r rsz0ReadOnlySequentialNamedNodeMap.removeNamedItemNScCstjjddS)Nz"NamedNodeMap instance is read-only)r/r0r)r rAr r r rsz+ReadOnlySequentialNamedNodeMap.setNamedItemcCstjjddS)Nz"NamedNodeMap instance is read-only)r/r0r)r rAr r r rsz-ReadOnlySequentialNamedNodeMap.setNamedItemNScCs|jgS)N)r))r r r r rsz+ReadOnlySequentialNamedNodeMap.__getstate__cCs|d|_dS)Nr)r))r rr r r rsz+ReadOnlySequentialNamedNodeMap.__setstate__N)r))rprqrrrrrrrrrrrrrrrrr r r r r(s  r(z&Number of entries in the NamedNodeMap.c@s(eZdZd ZddZddZddZd S) IdentifiedpublicIdsystemIdcCs||_||_dS)N)r,r-)r r,r-r r r _identified_mixin_initsz!Identified._identified_mixin_initcCs|jS)N)r,)r r r r _get_publicIdszIdentified._get_publicIdcCs|jS)N)r-)r r r r _get_systemIdszIdentified._get_systemIdN)r,r-)rprqrrrr.r/r0r r r r r+sr+c@sHeZdZejZdZdZdZdZ dZ ddZ ddZ ddZ d d d ZdS) DocumentTypeNcCs2t|_t|_|r&t|\}}||_|j|_dS)N)r(entities notationsrrr)r rrtrr r r r s  zDocumentType.__init__cCs|jS)N)internalSubset)r r r r _get_internalSubsetsz DocumentType._get_internalSubsetcCs|jdkrtd}|j|_|j|_tjjj}|rg|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|||qW|j||||SdSdS)N)rOr1rrr/r0UserDataHandler NODE_CLONEDr2r)r3Notationr,r-rIrjEntity notationNameactualEncodingrrU)r rPclonergrnotationeentityr r r rQs.  zDocumentType.cloneNodercCs|jd|j|j|jr8|jd||j||jfn|jrR|jd||jf|jdk r||jd|j|j|jd|jd|dS)Nz r r r r5UszEntity.appendChildcCstjjddS)Nz+cannot insert children below an entity node)r/r0r1)r r>r?r r r r-YszEntity.insertBeforecCstjjddS)Nz*cannot remove children from an entity node)r/r0r1)r rCr r r r4]szEntity.removeChildcCstjjddS)Nz)cannot replace children of an entity node)r/r0r1)r r>rCr r r rDaszEntity.replaceChild)rprqrrrr Z ENTITY_NODErrr;rrUrrBrCrDr5r-r4rDr r r r r9=sr9c@seZdZejZdZddZdS)r8NcCs||_|j||dS)N)rr.)r rr,r-r r r riszNotation.__init__)rprqrrr rrrrr r r r r8esr8c @sHeZdZddddddddgZdd Zd d Zd d ZddZddZdS)DOMImplementationcore1.02.0Nr/ls-load3.0cCs|dkr d}|j|f|jkS)Nr)lower _features)r rTrUr r r rSyszDOMImplementation.hasFeaturec Cs|r|jdk rtjjd|j}|dko8|dko8|dk }| rR|rRtjjd|rt|\}}|dkr~|dkr~tjjd|r| rtjjd|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/r0WrongDocumentErr_create_documentZInvalidCharacterErrrrcreateElementNSr5rOdoctyperR) r rsrrPrvZadd_root_elementrtrrr r r createDocument~s4         z DOMImplementation.createDocumentcCst|}||_||_|S)N)r1r,r-)r rr,r-rPr r r createDocumentTypesz$DOMImplementation.createDocumentTypecCs|j|dr|SdSdS)N)rS)r rTr r r rZs zDOMImplementation.getInterfacecCstS)N)Document)r r r r rNsz"DOMImplementation._create_document)rFrG)rFrH)rFN)r/rG)r/rH)r/N)rIrJ)rIN) rprqrrrLrSrQrRrZrNr r r r rEns-rEc@sXeZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ dS) ElementInforcCs ||_dS)N)r)r rr r r rszElementInfo.__init__cCstS)N)r)r anamer r r rszElementInfo.getAttributeTypecCstS)N)r)r rsrxr r r rszElementInfo.getAttributeTypeNScCsdS)NFr )r r r r r#szElementInfo.isElementContentcCsdS)NFr )r r r r isEmptyszElementInfo.isEmptycCsdS)NFr )r rUr r r rszElementInfo.isIdcCsdS)NFr )r rsrxr r r rszElementInfo.isIdNScCs|jS)N)r)r r r r rszElementInfo.__getstate__cCs ||_dS)N)r)r rr r r rszElementInfo.__setstate__N)r) rprqrrrrrrr#rVrrrrr r r r rTs rTcCs>|jtjkr|jjd|_nt|r:|jjjd|j_dS)N)rr r _id_cacheclear_id_search_stackryrO)rAr r r r:s    r:c@sreZdZdMZejejejejfZ e Z ej Z dZdZdZdZdZZdZdZdZdZdZdZdZd Zd d Zd d ZddZddZddZ ddZ!ddZ"ddZ#ddZ$ddZ%ddZ&d d!Z'd"d#Z(d$d%Z)d&d'Z*d(d)Z+d*d+Z,d,d-Z-d.d/Z.d0d1Z/d2d3Z0d4d5Z1d6d7Z2d8d9Z3d:d;Z4dd?Z6d@dAZ7dBdCZ8dDdEZ9dFdGZ:dNdIdJZ;dKdLZ|jj||jtj kr^|j r^tjjdtj ||S)Nz%s cannot be child of %sz two document elements disallowed) rr.r/r0r1r2r3r4r rJ_get_documentElementr5)r rAr r r r52s    zDocument.appendChildc CsVy|jj|Wntk r.tjjYnXd|_|_d|_|j |krRd|_ |S)N) r$rEr7r/r0r8r<r=r3documentElement)r rCr r r r4Bs  zDocument.removeChildcCs$x|jD]}|jtjkr|SqWdS)N)r$rr rJ)r rAr r r rdNs  zDocument._get_documentElementcCs(|jdk r|jjd|_tj|dS)N)rPrHr )r r r r rHSs  zDocument.unlinkcCs|sdS|jjddd}|j|_|j|_|j|_xL|jD]B}t|||}|jj||jt j krbn|jt j krt||_ ||_ q8W|jtjjj|||S)N)rRrQrr`rUr$rNrIrr rrArPr3rjr/r0r6r7)r rPr<rZ childcloner r r rQYs"       zDocument.cloneNodecCst}||_|S)N)rrO)r rbr r r createDocumentFragmentnszDocument.createDocumentFragmentcCst|}||_|S)N)rrO)r rr>r r r createElementsszDocument.createElementcCs(t|tstdt}||_||_|S)Nznode contents must be a string)rrrrrGrO)r rGtr r r createTextNodexs  zDocument.createTextNodecCs(t|tstdt}||_||_|S)Nznode contents must be a string)rrrr&rGrO)r rGr@r r r createCDATASections  zDocument.createCDATASectioncCst|}||_|S)N)r%rO)r rGr@r r r createCommentszDocument.createCommentcCst||}||_|S)N)rrO)r r rGpr r r createProcessingInstructions z$Document.createProcessingInstructioncCst|}||_d|_|S)Nr)rrOr)r rar r r createAttributeszDocument.createAttributecCs"t|\}}t|||}||_|S)N)rrrO)r rsrrtrxr>r r r rOs  zDocument.createElementNScCs*t|\}}t||||}||_d|_|S)Nr)rrrOr)r rsrrtrxrnr r r createAttributeNSs  zDocument.createAttributeNScCst||||}||_|S)N)r9rO)r rr,r-r:r>r r r _create_entityszDocument._create_entitycCst|||}||_|S)N)r8rO)r rr,r-rr r r _create_notations 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|jsPq|j|jr ||j|j<|j|kr|}n |js:Pq|jr||j|j<|j|kr.|}q|jdkrPqWnB|jrx8|j j D]*}|jrT||j|j<|j|krT|}qTW|dk rRPqRW|S)NcSsg|]}|jtkr|qSr )rr9).0rMr r r sz+Document.getElementById..r()rWrZrrYrepopextendr$rrrrsrrxrrrrr)r rstackresultrArrr r r getElementByIdsZ               zDocument.getElementByIdcCst||tS)N)rrk)r rr r r rszDocument.getElementsByTagNamecCst|||tS)N)rrk)r rsrxr r r rszDocument.getElementsByTagNameNScCs|jj||S)N)rRrS)r rTrUr r r rVszDocument.isSupportedcCs>|jtjkrtjjdn|jtjkr2tjjdt|||S)Nzcannot import document nodesz!cannot import document type nodes)rr rr/r0NotSupportedErrrArN)r rArPr r r importNodes    zDocument.importNodercCsN|dkr|jd|n|jd||fx|jD]}|j||||q2WdS)Nzz%%s)rr$r)r r"r rr!rrAr r r rs   zDocument.writexmlcCsJ|j|k r tjjd||jf|jtjtjfkr>tjjd|t krd|kr|j dd\}}|dkr|tjj krtjj dq|dkr|tjj kr|jtjkrtjj dd}|}nd}d}|jtjkr|j }|dk r|j}|j|nd}||_||_||_||_|jtjkr||_n*||_|dk rF|j||rF|j||S)Nz?cannot rename nodes from other documents; expected %s, found %sz8renameNode() only applies to element and attribute nodesrr(rzillegal use of 'xmlns' prefixz$illegal use of the 'xmlns' attribute)rOr/r0rMrr rJrrzrrrrrrrrtrrsrrrrr)r rrsrrtrxrZis_idr r r renameNodesR         zDocument.renameNode)rZrPrYr$rW)rrrN)=rprqrrrr rJrrrAr.rErRrrrrrr3r=r<r;rr`rUrbr^r\rrrrBr[r]rCr_rarcrDr5r4rdrHrQrfrgrirjrkrmrorOrprqrrryrrrVr{rr|r r r r rSsh    : rSrez#Top-level element of this document.c Cs|jj|rtjjj}n tjjj}|jtj kr|j |j |j }x>|j jD]0}|j|j |j |j|j|j |j}|j|_qJW|rx$|jD]}t|||}|j|qWn|jtjkr|j}|rx$|jD]}t|||}|j|qWn|jtjkr |j|j}n|jtjkr*|j|j}n|jtjkrL|j|j |j}nr|jtj!krj|j"|j}nT|jtj#kr|j$|j |j }d|_|j|_n$|jtj%krtjjj}|j&j'|j(|j)|j*}||_|rg|j+_,g|j-_,xR|j-j,D]F} t.| j | j)| j*} || _|j-j,j/| t0| dr| j1|| | qWx|j+j,D]b} t2| j | j)| j*| j3} | j4| _4| j5| _5| j6| _6|| _|j+j,j/| t0| drB| j1|| | qBWntjj7dt8|t0|dr|j1||||S)NTrjzCannot clone node %s)9rOrYr/r0r6r7Z NODE_IMPORTEDrr rJrOrsrrrrrrrxrr$rNr5r+rfrFrirGrrjrrmr rrkrrprArRrRrr,r-r2r)r3r8rIrdrjr9r:r;rrUrzr2) rArPZnewOwnerDocumentrgr<rrnrMr@rr=r>r?r r r rNAs|                rNcCs,|jdd}t|dkr|Sd|dfSdS)Nrr(r)rr)rZfieldsr r r rs  rcCs,|||}|j\}}|j||j|S)N)ZgetEventZ expandNoderX)funcargskwargsZeventsZtoktypeZrootNoder r r _do_pulldom_parses    rcCsJ|dkr$| r$ddlm}|j|Sddlm}t|j|f||dSdS)Nr) expatbuilder)pulldom)parserbufsize)xml.domrparserr)filerrrrr r r rs     rcCsB|dkrddlm}|j|Sddlm}t|j|fd|iSdS)Nr)r)rr)rr parseStringrr)stringrrrr r r rs     rcCsB|rs v  y$ w )GU  ><( O*PR