ž ryMa•‹c@sdZddlmZmZmZddlmZmZmZddlm Z ddl m Z m Z ddl mZejZejZejZejjZejjZejjZejjZejƒZi ejedƒd6ejed ƒd 6ejed ƒd 6ejed ƒd6ejedƒd6ejedƒd6ejedƒd6ejedƒd6ejedƒd6ZGdd„deƒZdd„Zdd„ZGdd „d ƒZ eeefZ!Gd!d"„d"eƒZ"Gd#d$„d$eƒZ#Gd%d&„d&e#ƒZ$Gd'd(„d(e#ƒZ%d)Z&d*e&Z'Gd+d,„d,e ƒZ(Gd-d.„d.ƒZ)Gd/d0„d0e)e ƒZ*Gd1d2„d2e)e(ƒZ+Gd3d4„d4e,ƒZ-Gd5d6„d6e ƒZ.e/d7d8„Z0e/d9d:„Z1e/d;d<„Z2e/d=d>„Z3d?d@„Z4dAS(Bu™Facility to use the Expat parser to load a minidom instance from a string or file. This avoids all the overhead of SAX and pulldom to gain performance. i(u xmlbuilderuminidomuNode(uEMPTY_NAMESPACEu EMPTY_PREFIXuXMLNS_NAMESPACE(uexpat(u _append_childu_set_attribute_node(u NodeFilterucdatauCDATAu enumerationuENUMuentityuENTITYuentitiesuENTITIESuiduIDuidrefuIDREFuidrefsuIDREFSunmtokenuNMTOKENunmtokensuNMTOKENScBs‰|EeZdZdZddd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dS(u ElementInfou _attr_infou_modelutagNamecCs||_g|_||_dS(N(utagNameu _attr_infou_model(uselfutagNameumodel((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu__init__?s  uElementInfo.__init__cCs|j|j|jfS(N(u _attr_infou_modelutagName(uself((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu __getstate__DsuElementInfo.__getstate__cCs|\|_|_|_dS(N(u _attr_infou_modelutagName(uselfustate((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu __setstate__GsuElementInfo.__setstate__cCs\xR|jD]G}|d|kr |d}|ddkrBtdSt|dSq q WtjS(Niiiu(uENUMiþÿÿÿiþÿÿÿ(u _attr_infou _typeinfo_mapuminidomu_no_type(uselfuanameuinfout((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyugetAttributeTypeJs uElementInfo.getAttributeTypecCstjS(N(uminidomu_no_type(uselfu namespaceURIu localName((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyugetAttributeTypeNSTsuElementInfo.getAttributeTypeNScCs:|jr2|jd}|tjjtjjfkSdSdS(NiF(u_modeluexpatumodelu XML_CTYPE_ANYuXML_CTYPE_MIXEDuFalse(uselfutype((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuisElementContentWs    uElementInfo.isElementContentcCs(|jr |jdtjjkSdSdS(NiF(u_modeluexpatumodeluXML_CTYPE_EMPTYuFalse(uself((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuisEmpty_s uElementInfo.isEmptycCs6x/|jD]$}|d|kr |ddkSq WdS(NiiuIDiþÿÿÿF(u _attr_infouFalse(uselfuanameuinfo((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuisIdesuElementInfo.isIdcCs|j||fƒS(N(uisId(uselfueuriuenameuauriuaname((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuisIdNSksuElementInfo.isIdNSN(u _attr_infou_modelutagName(u__name__u __module__u __qualname__u __slots__uNoneu__init__u __getstate__u __setstate__ugetAttributeTypeugetAttributeTypeNSuisElementContentuisEmptyuisIduisIdNS(u __locals__((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu ElementInfo<s      u ElementInfocCs|j||ƒS(N(u_intern_setdefault(ubuilderus((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu_internosu_interncCsÉd|kst‚|jdƒ}|j}t|ƒdkr‹|\}}}|||ƒ}d||f}|||ƒ}|||ƒ}n%|\}}t}|||ƒ}}|||ƒ|||fS(Nu iu%s:%s(uAssertionErrorusplitu_intern_setdefaultulenu EMPTY_PREFIX(ubuilderunameupartsuinternuuriu localnameuprefixuqname((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu_parse_ns_namers  u_parse_ns_namecBsm|EeZdZdZd:dd„Zdd„Zdd„Zdd „Zd d „Z d d „Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8d9„Z d:S(;u ExpatBuilderuPDocument builder that uses Expat to build a ParsedXML.DOM document instance.cCsw|dkrtjƒ}n||_|jjdk rNt|jjƒ|_nd|_t|_d|_ |j ƒdS(N( uNoneu xmlbuilderuOptionsu_optionsufilteruFilterVisibilityControlleru_filteruidu_finish_start_elementu_parserureset(uselfuoptions((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu__init__‡s     uExpatBuilder.__init__cCs tjƒS(uCreate a new parser object.(uexpatu ParserCreate(uself((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu createParser•suExpatBuilder.createParsercCsh|jsa|jƒ|_|jjj|_d|j_d|j_d|j_|j |jƒn|jS(u7Return the parser object, creating a new one if needed.T( u_parseru createParseruinternu setdefaultu_intern_setdefaultuTrueu buffer_textuordered_attributesuspecified_attributesuinstall(uself((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu getParser™s    uExpatBuilder.getParsercCs@tjtddƒ|_|j|_|jj|_d|_dS(u6Free all data structures used during DOM construction.NF( utheDOMImplementationucreateDocumentuEMPTY_NAMESPACEuNoneudocumentucurNodeu _elem_infouFalseu_cdata(uself((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyureset¤s  uExpatBuilder.resetcCså|j|_|j|_|j|_|j|_|jj rK|j |_ n|j |_ |jjrr|j|_n|jjr¥|j|_|j|_|j|_n |j|_|j|_|j|_|j|_|j|_ dS(u>Install the callbacks needed to build the DOM into the parser.N(!ustart_doctype_decl_handleruStartDoctypeDeclHandlerufirst_element_handleruStartElementHandleruend_element_handleruEndElementHandleru pi_handleruProcessingInstructionHandleru_optionsuentitiesuentity_decl_handleruEntityDeclHandlerunotation_decl_handleruNotationDeclHandlerucommentsucomment_handleruCommentHandlerucdata_sectionsustart_cdata_section_handleruStartCdataSectionHandleruend_cdata_section_handleruEndCdataSectionHandlerucharacter_data_handler_cdatauCharacterDataHandlerucharacter_data_handleruexternal_entity_ref_handleruExternalEntityRefHandleruxml_decl_handleruXmlDeclHandleruelement_decl_handleruElementDeclHandleruattlist_decl_handleruAttlistDeclHandler(uselfuparser((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuinstall¬s$              uExpatBuilder.installc Cs²|jƒ}d}ykxT|jdƒ}|s1Pn|j|dƒ|rc|jjrc|j|ƒnd}q|jddƒWntk r‘YnX|j}|j ƒd|_ |S( uIParse a document from a file object, returning the document node.iiiuTi@FN( u getParseruTrueureaduParseudocumentudocumentElementu _setup_subsetuFalseu ParseEscapeuresetuNoneu_parser(uselfufileuparseru first_bufferubufferudoc((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu parseFileÃs$      uExpatBuilder.parseFilec Csb|jƒ}y!|j|dƒ|j|ƒWntk rAYnX|j}|jƒd|_|S(u<Parse a document from a string, returning the document node.TN( u getParseruParseuTrueu _setup_subsetu ParseEscapeudocumenturesetuNoneu_parser(uselfustringuparserudoc((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu parseStringÙs     uExpatBuilder.parseStringcCsD|jjr@tƒ}|j|ƒ|jƒ}||jj_ndS(u/Load the internal subset if there might be one.N(udocumentudoctypeuInternalSubsetExtractoru parseStringu getSubsetuinternalSubset(uselfubufferu extractorusubset((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu _setup_subsetæs     uExpatBuilder._setup_subsetcCsù|jjj|||ƒ}|j|_t|j|ƒ||j_|jrž|jj|ƒtkržd|j_|jj d=d}d|j _ d|j _ n|rõ|dk rËg|j_g|j_nd|j _d|j _|j|j _ndS(Niiÿÿÿÿ(udocumentuimplementationucreateDocumentTypeu ownerDocumentu _append_childudoctypeu_filteru acceptNodeu FILTER_REJECTuNoneu childNodesu_parseruEntityDeclHandleruNotationDeclHandleruentitiesu_sequ notationsuCommentHandleruProcessingInstructionHandleruend_doctype_decl_handleruEndDoctypeDeclHandler(uselfu doctypeNameusystemIdupublicIduhas_internal_subsetudoctype((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyustart_doctype_decl_handlerîs$   !       u'ExpatBuilder.start_doctype_decl_handlercCsO|jjr|j|j_n|j|j_|jp<|jsKt |_ ndS(N( u_optionsucommentsucomment_handleru_parseruCommentHandleru pi_handleruProcessingInstructionHandleru _elem_infou_filteruidu_finish_end_element(uself((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuend_doctype_decl_handlers  u%ExpatBuilder.end_doctype_decl_handlercCs]|jj||ƒ}t|j|ƒ|jrY|jj|ƒtkrY|jj|ƒndS(N(udocumentucreateProcessingInstructionu _append_childucurNodeu_filteru acceptNodeu FILTER_REJECTu removeChild(uselfutargetudataunode((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu pi_handler s!uExpatBuilder.pi_handlercCsÖ|jj}|jrd|jrF|djtkrF|dj|ƒdS|jj|ƒ}d|_n^|r¡|djt kr¡|d}|j |}||_ dSt j ƒ}||_ |j|_t|j|ƒdS(NiiÿÿÿÿiÿÿÿÿTiÿÿÿÿiÿÿÿÿ(ucurNodeu childNodesu_cdatau_cdata_continueunodeTypeuCDATA_SECTION_NODEu appendDataudocumentucreateCDATASectionuTrueu TEXT_NODEudatauminidomuTextu ownerDocumentu _append_child(uselfudatau childNodesunodeuvalue((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyucharacter_data_handler_cdatas"          u)ExpatBuilder.character_data_handler_cdatacCs|jj}|rC|djtkrC|d}|j||_dStjƒ}|j||_|j|_t |j|ƒdS(Niiÿÿÿÿiÿÿÿÿ( ucurNodeu childNodesunodeTypeu TEXT_NODEudatauminidomuTextudocumentu ownerDocumentu _append_child(uselfudatau childNodesunode((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyucharacter_data_handler$s    u#ExpatBuilder.character_data_handlerc Csº|r dS|jjsdS|jj||||ƒ}|dk rf|jj|ƒ} |jj| ƒn|jjjj j|ƒ|j r¶|j j |ƒt kr¶|jjjj d=ndS(Niiÿÿÿÿ( u_optionsuentitiesudocumentu_create_entityuNoneucreateTextNodeu childNodesuappendudoctypeu_sequ_filteru acceptNodeu FILTER_REJECT( uselfu entityNameuis_parameter_entityuvalueubaseusystemIdupublicIdu notationNameunodeuchild((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuentity_decl_handler/s   !u ExpatBuilder.entity_decl_handlercCsl|jj|||ƒ}|jjjjj|ƒ|jrh|jj|ƒtkrh|jjjjd=ndS(Niiÿÿÿÿ( udocumentu_create_notationudoctypeu notationsu_sequappendu_filteru acceptNodeu FILTER_ACCEPT(uselfu notationNameubaseusystemIdupublicIdunode((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyunotation_decl_handlerAs!u"ExpatBuilder.notation_decl_handlercCsZ|jj|ƒ}t|j|ƒ|jrV|jj|ƒtkrV|jj|ƒndS(N(udocumentu createCommentu _append_childucurNodeu_filteru acceptNodeu FILTER_REJECTu removeChild(uselfudataunode((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyucomment_handlerGs!uExpatBuilder.comment_handlercCsd|_d|_dS(NTF(uTrueu_cdatauFalseu_cdata_continue(uself((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyustart_cdata_section_handlerMs u(ExpatBuilder.start_cdata_section_handlercCsd|_d|_dS(NF(uFalseu_cdatau_cdata_continue(uself((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuend_cdata_section_handlerQs u&ExpatBuilder.end_cdata_section_handlercCsdS(Ni((uselfucontextubaseusystemIdupublicId((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuexternal_entity_ref_handlerUsu(ExpatBuilder.external_entity_ref_handlercCsK|jdkr%|j r%t|_n|j|jƒ_|j||ƒdS(N(u_filteruNoneu _elem_infouidu_finish_end_elementustart_element_handleru getParseruStartElementHandler(uselfunameu attributes((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyufirst_element_handlerXs u"ExpatBuilder.first_element_handlercCsÉ|jj|ƒ}t|j|ƒ||_|r£xotdt|ƒdƒD]R}tj||tdt ƒ}||d}||_ |j|_ t ||ƒqJWn||jjk rÅ|j|ƒndS(Niii(udocumentu createElementu _append_childucurNodeurangeulenuminidomuAttruEMPTY_NAMESPACEuNoneu EMPTY_PREFIXuvalueu ownerDocumentu_set_attribute_nodeudocumentElementu_finish_start_element(uselfunameu attributesunodeuiuauvalue((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyustart_element_handler^s    u"ExpatBuilder.start_element_handlercCs”|jr||jjkrdS|jj|ƒ}|tkrJt|ƒn|tkrct|ƒndS|j|_ |jj |ƒ|j ƒndS(N( u_filterudocumentudocumentElementustartContaineru FILTER_REJECTuRejecteru FILTER_SKIPuSkipperu parentNodeucurNodeu removeChilduunlink(uselfunodeufilt((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu_finish_start_elementos      u"ExpatBuilder._finish_start_elementcCs&|j}|j|_|j|ƒdS(N(ucurNodeu parentNodeu_finish_end_element(uselfunameucurNode((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuend_element_handler†s  u ExpatBuilder.end_element_handlercCs‰|jj|jƒ}|r.|j||ƒn|jr…||jjkrMdS|jj|ƒtkr…|j j |ƒ|j ƒq…ndS(N( u _elem_infougetutagNameu_handle_white_text_nodesu_filterudocumentudocumentElementu acceptNodeu FILTER_REJECTucurNodeu removeChilduunlink(uselfucurNodeuinfo((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu_finish_end_element‹s u ExpatBuilder._finish_end_elementcCsˆ|jjs|jƒ rdSg}x@|jD]5}|jtkr-|jjƒ r-|j|ƒq-q-Wx|D]}|j |ƒqmWdS(N( u_optionsuwhitespace_in_element_contentuisElementContentu childNodesunodeTypeu TEXT_NODEudataustripuappendu removeChild(uselfunodeuinfouLuchild((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu_handle_white_text_nodes–s   u%ExpatBuilder._handle_white_text_nodescCsY|jj|ƒ}|dkr7t||ƒ|j||EeZdZfZdd„Zdd„Zdd„ZdS(uRejectercCs>tj||ƒ|j}xdD]}t||dƒq WdS(NuProcessingInstructionHandleruCommentHandleruCharacterDataHandleruStartCdataSectionHandleruEndCdataSectionHandleruExternalEntityRefHandler(uProcessingInstructionHandleruCommentHandleruCharacterDataHandleruStartCdataSectionHandleruEndCdataSectionHandleruExternalEntityRefHandler(u FilterCrutchu__init__u_parserusetattruNone(uselfubuilderuparseruname((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu__init__s  uRejecter.__init__cGs|jd|_dS(Ni(u_level(uselfuargs((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyustart_element_handlersuRejecter.start_element_handlercGsZ|jdkrF|jj}|jj|ƒ|j|_|j|_n|jd|_dS(Nii(u_levelu_builderu_parseruinstallu _old_startuStartElementHandleru_old_enduEndElementHandler(uselfuargsuparser((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuend_element_handlers   uRejecter.end_element_handlerN(u__name__u __module__u __qualname__u __slots__u__init__ustart_element_handleruend_element_handler(u __locals__((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuRejecter s uRejectercBs2|EeZdZfZdd„Zdd„ZdS(uSkippercGsB|jj}|j|Œ|jj|k r>|jd|_ndS(Ni(u_builderucurNodeu _old_startu_level(uselfuargsunode((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyustart_element_handler+s  uSkipper.start_element_handlercGs`|jdkr?|j|jj_|j|jj_d|_n|jd|_|j|ŒdS(Nii(u_levelu _old_startu_builderu_parseruStartElementHandleru_old_enduEndElementHandleruNone(uselfuargs((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuend_element_handler1s  uSkipper.end_element_handlerN(u__name__u __module__u __qualname__u __slots__ustart_element_handleruend_element_handler(u __locals__((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuSkipper(s uSkipperu8http://xml.python.org/entities/fragment-builder/internaluŠ %%s ]> &fragment-builder-internal;cBsq|EeZdZdZddd„Zdd„Zdd„Zdd „Zd d „Z d d „Z dd„Z dS(uFragmentBuilderuñBuilder which constructs document fragments given XML source text and a context node. The context node is expected to provide information about the namespace declarations which are in scope at the start of the fragment. cCsM|jtkr$||_||_n|j|_||_tj||ƒdS(N(unodeTypeu DOCUMENT_NODEuoriginalDocumentucontextu ownerDocumentu ExpatBuilderu__init__(uselfucontextuoptions((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu__init__Ys     uFragmentBuilder.__init__cCstj|ƒd|_dS(N(u ExpatBuilderuresetuNoneufragment(uself((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuresetbs uFragmentBuilder.resetcCs|j|jƒƒS(uRParse a document fragment from a file object, returning the fragment node.(u parseStringuread(uselfufile((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu parseFilefsuFragmentBuilder.parseFilec Csè||_|jƒ}|jj}d}|r€|jp?|jƒ}|jrdd|j|jf}q†|jr†d|j}q†nd}|jƒ}t |||f}y|j |dƒWn|j ƒ‚YnX|j }|j ƒ|S(uMParse a document fragment from a string, returning the fragment node.uuPUBLIC "%s" "%s"u SYSTEM "%s"i( u_sourceu getParseruoriginalDocumentudoctypeuinternalSubsetu_getDeclarationsupublicIdusystemIdu _getNSattrsu_FRAGMENT_BUILDER_TEMPLATEuParseuresetufragment( uselfustringuparserudoctypeuidentusubsetunsattrsudocumentufragment((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu parseStringks,         uFragmentBuilder.parseStringcCs‡|jjj}d}|rƒxŠt|jjƒD]v}|jj|ƒ}|rY|d}nd||jf}|jr‘d||j|j f}q.d||j f}q.WxØt|j jƒD]Á}|j j|ƒ}|ræ|d}nd||jf}|jrd||j|j f}n5|j r=d||j f}nd ||j j f}|j rrd ||j f}n|d }q»Wn|S( u Re-create the internal subset from the DocumentType node. This is only needed if we don't already have the internalSubset as a string. uu u%su%s SYSTEM "%s">u %s(ucontextu ownerDocumentudoctypeurangeu notationsulengthuitemunodeNameupublicIdusystemIduentitiesu firstChildudatau notationName(uselfudoctypeusuiunotationuentity((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu_getDeclarations‡s6      u FragmentBuilder._getDeclarationscCsdS(Nu((uself((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu _getNSattrs«suFragmentBuilder._getNSattrsc Cs±|tkr”|j}|j}|jj|ƒ}|j|_|jjƒ|_|j|_z|j|j dƒWd||_||_d|_ XdSt j |||||ƒSdS(Niiÿÿÿÿ( u$_FRAGMENT_BUILDER_INTERNAL_SYSTEM_IDudocumentucurNodeu_parseruExternalEntityParserCreateuoriginalDocumentucreateDocumentFragmentufragmentuParseu_sourceuNoneu ExpatBuilderuexternal_entity_ref_handler(uselfucontextubaseusystemIdupublicIdu old_documentu old_cur_nodeuparser((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuexternal_entity_ref_handler®s        u+FragmentBuilder.external_entity_ref_handlerN( u__name__u __module__u __qualname__u__doc__uNoneu__init__uresetu parseFileu parseStringu_getDeclarationsu _getNSattrsuexternal_entity_ref_handler(u __locals__((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuFragmentBuilderPs    $ uFragmentBuildercBsb|EeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dS(u Namespacesu7Mix-in class for builders; adds support for namespaces.cCs g|_dS(N(u_ns_ordered_prefixes(uself((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu_initNamespacesÈsuNamespaces._initNamespacescCstjddƒ}d|_|S(u'Create a new namespace-handling parser.unamespace_separatoru T(uexpatu ParserCreateuTrueunamespace_prefixes(uselfuparser((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu createParserÍs uNamespaces.createParsercCs/tj||ƒ|jjr+|j|_ndS(u.Insert the namespace-handlers onto the parser.N(u ExpatBuilderuinstallu_optionsunamespace_declarationsustart_namespace_decl_handleruStartNamespaceDeclHandler(uselfuparser((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuinstallÓs uNamespaces.installcCs|jj||fƒdS(u/Push this namespace declaration on our storage.N(u_ns_ordered_prefixesuappend(uselfuprefixuuri((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyustart_namespace_decl_handlerÚsu'Namespaces.start_namespace_decl_handlercCs-d|kr*t||ƒ\}}}}nt}|}d}t}tj||||ƒ}|j|_t|j |ƒ||_ |j rx|j D]t\}}|rÌtj t |d|ƒt |dƒ}ntj dt dtƒ}||_|j|_t||ƒq’W|j dd…=n|r)|jƒ|j} |j} xçtdt|ƒdƒD]Ê} || } || d} d| krÒt|| ƒ\}}}}tj ||||ƒ}|| |<|| ||fs^        3  ÿB:  u_%,