-í
a<c       s    d  Z    d k Z d k Z d k Z  d k Z  d k l Z l Z  d k l	 Z	  d k
 l Z  d k l Z l Z  h  a  e Z Z  d „  Z & d „  Z / d „  Z 5 d	 „  Z F e e d
 „ Z Y d „  Z j d „  Z u d „  Z Œ d „  Z d S(   sð   
General Utilities for XPath apps.
WWW: http://4suite.org/4XSLT        e-mail: support@4suite.org

Copyright (c) 2000-2001 Fourthought Inc, USA.   All Rights Reserved.
See  http://4suite.org/COPYRIGHT  for license and copyright information
N(   s   XML_NAMESPACEs   EMPTY_NAMESPACE(   s   Node(   s
   NodeFilter(   s   g_xpathRecognizedNodess   Compilec    s½     g  }  |  i }  | i t d f ƒ p | i t d f ƒ }  | o  | i | j o | i	 | i
 ƒ   x< t d „  ! |  i ƒ D  ] }  " | i t |  | ƒ ƒ qŒ W# | Sd  S(   Ns   ids   IDc    s     |  i t i j S(   N(   s   nodes   nodeTypes   Nodes   ELEMENT_NODE(   s   node(    (    sA   /usr/local/twc/lib/python2.2/site-packages/_xmlplus/xpath/Util.pys   <lambda>  s    (   s   elementss   elements
   attributess   attrss   gets   EMPTY_NAMESPACEs   idattrs   values   names   appends   ownerElements   filters
   childNodess   extends   ElementsById(   s   elements   names   elementss   attrss   idattr(    (    sA   /usr/local/twc/lib/python2.2/site-packages/_xmlplus/xpath/Util.pys   ElementsById s   	.*ÿ	c    s_   & ' ( t  i t |  ƒ ƒ o ) d  Sn * h  } + t |  d | ƒ } , | t  t |  ƒ <d  S(   Ni    (   s   g_documentOrderIndexs   has_keys   ids   docs   mappings   __IndexNodes   count(   s   docs   counts   mapping(    (    sA   /usr/local/twc/lib/python2.2/site-packages/_xmlplus/xpath/Util.pys   IndexDocument& s   	c    s7   / 0 1 t  i t |  ƒ ƒ o 2 t  t |  ƒ =n d  S(   N(   s   g_documentOrderIndexs   has_keys   ids   doc(   s   doc(    (    sA   /usr/local/twc/lib/python2.2/site-packages/_xmlplus/xpath/Util.pys   FreeDocumentIndex/ s   c    sá   5 6 t  |  ƒ d d g j o 7 |  Sn 8 t |  d d ƒ o 9 |  i d „  ƒ : |  Sn ; |  d i p |  d } < t | ƒ = > t i t	 | ƒ ƒ o ? |  } @ | i t ƒ n B t | g |  ƒ } C | Sd  S(   Ni    i   s   docIndexc    s   9 t  |  i | i ƒ S(   N(   s   cmps   as   docIndexs   b(   s   as   b(    (    sA   /usr/local/twc/lib/python2.2/site-packages/_xmlplus/xpath/Util.pys   <lambda>9 s    (   s   lens   nLists   hasattrs   sorts   ownerDocuments   docs   IndexDocuments   g_documentOrderIndexs   has_keys   ids   rts	   IndexSorts   __recurseSort(   s   nLists   rts   doc(    (    sA   /usr/local/twc/lib/python2.2/site-packages/_xmlplus/xpath/Util.pys   SortDocOrder5 s   
c    s«   F J K h  } L | o M t i i i | ƒ } n N | o O | } n P t i i i |  ƒ \ } } R | d j o S | | | f } n U t | f } V | Sd S(   sk   
    Expand the given QName in the context of the given node,
    or in the given namespace dictionary
    s    N(   s   nsss   refNodes   xmls   doms   exts   GetAllNss
   namespacess
   SplitQNames   qnames   prefixs   locals
   split_names   EMPTY_NAMESPACE(   s   qnames   refNodes
   namespacess   prefixs   nsss   locals
   split_name(    (    sA   /usr/local/twc/lib/python2.2/site-packages/_xmlplus/xpath/Util.pys   ExpandQNameF s   	

c    sÎ   Y Z |  i t j o­ \ | | t |  ƒ <] | d } ^ |  i t i j oD ` x: |  i i	 ƒ  D` ]& } a | | t | ƒ <b | d } q_ Wn d x) |  i Dd ] } e t | | | ƒ } q Wn g | Sd  S(   Ni   (   s   nodes   nodeTypes   g_xpathRecognizedNodess   curIndexs   mappings   ids   Nodes   ELEMENT_NODEs
   attributess   valuess   attrs
   childNodess	   childNodes   __IndexNode(   s   nodes   curIndexs   mappings   attrs	   childNode(    (    sA   /usr/local/twc/lib/python2.2/site-packages/_xmlplus/xpath/Util.pys   __IndexNodeY s    	 	c    s›   j k t  |  i p |  ƒ } l t  | i p | ƒ } m | | j oB n t  |  ƒ } o t  | ƒ } p t t	 | | t	 | | ƒ Sn r t | | ƒ Sd  S(   N(
   s   ids   lefts   ownerDocuments   ldocIds   rights   rdocIds   lids   rids   cmps   g_documentOrderIndex(   s   lefts   rights   lids   rdocIds   rids   ldocId(    (    sA   /usr/local/twc/lib/python2.2/site-packages/_xmlplus/xpath/Util.pys	   IndexSortj s   $c    sî   u v w g  } x xÎ |  Dx ]Ã } y t | d „ | ƒ } z | | j o { | i | ƒ n } | i t i j o? ~ | i	 i
 ƒ  } € | t | | ƒ }  | o ƒ Pn n … | t | i | ƒ } † | o ˆ Pn q W‰ | Sd S(   sh   Check whether any of the nodes in toSort are in the list test, and if so, sort them into the result listc    s   y |  | j S(   N(   s   xs   n(   s   xs   n(    (    sA   /usr/local/twc/lib/python2.2/site-packages/_xmlplus/xpath/Util.pys   <lambda>y s    N(   s   results   tests   nodes   filters   toSorts   appends   nodeTypes   Nodes   ELEMENT_NODEs
   attributess   valuess   attrLists   __recurseSorts
   childNodes(   s   tests   toSorts   nodes   results   attrList(    (    sA   /usr/local/twc/lib/python2.2/site-packages/_xmlplus/xpath/Util.pys   __recurseSortu s    	
 	c    sH  Œ ‘ ’ |  i }  “ x%“ |  o” |  i t i j oº – |  i o |  i i t i j o — |  i i d |  i ƒ nw ˜ |  i o; š |  i	 i
 |  i ƒ } › |  i i | |  ƒ œ | }  n/ Ÿ |  i }   |  i i |  ƒ ¡ | }  £ q n;¤ |  i t i j o³ ¥ |  i } ¦ x] ¦ | o | i t i t i g j o6 ¨ |  i | i ƒ © |  i i | ƒ ª |  i } qW« |  i o2 ­ |  i } ® |  i i |  ƒ ¯ | }  ± q n nr ² |  i t i j o[ ³ xD |  i i ƒ  D³ ]0 } ´ t | i ƒ d j o µ t | ƒ n qäW¶ t |  ƒ n · |  i }  q W¸ d Sd S(   s‘   NormalizeNode is used to prepare a DOM for XPath evaluation.

    1.  Convert CDATA Sections to Text Nodes.
    2.  Normalize all text nodes
    i    i   N(   s   nodes
   firstChilds   nodeTypes   Nodes   CDATA_SECTION_NODEs   nextSiblings	   TEXT_NODEs
   insertDatas   datas   ownerDocuments   createTextNodes   texts
   parentNodes   replaceChilds   nexts   removeChilds
   appendDatas   ELEMENT_NODEs
   attributess   valuess   attrs   lens
   childNodess   NormalizeNode(   s   nodes   attrs   texts   next(    (    sA   /usr/local/twc/lib/python2.2/site-packages/_xmlplus/xpath/Util.pys   NormalizeNodeŒ sF    
#	
 &	 	(   s   __doc__s   oss   globs   strings   xml.dom.exts   xmls   xml.doms   XML_NAMESPACEs   EMPTY_NAMESPACEs   Nodes   xml.dom.NodeFilters
   NodeFilters	   xml.xpaths   g_xpathRecognizedNodess   Compiles   g_documentOrderIndexs   Nones   g_xmlSpaceDescendants   g_xmlSpaceAncestors   ElementsByIds   IndexDocuments   FreeDocumentIndexs   SortDocOrders   ExpandQNames   __IndexNodes	   IndexSorts   __recurseSorts   NormalizeNode(   s   Nodes   strings   globs   g_xmlSpaceAncestors   IndexDocuments   NormalizeNodes   Compiles	   IndexSorts   SortDocOrders   EMPTY_NAMESPACEs   __IndexNodes
   NodeFilters   XML_NAMESPACEs   xmls   ElementsByIds   g_xpathRecognizedNodess   FreeDocumentIndexs   g_xmlSpaceDescendants   __recurseSorts   ExpandQNames   os(    (    sA   /usr/local/twc/lib/python2.2/site-packages/_xmlplus/xpath/Util.pys   ? s"   		