Diff for /ECHO_content/vlp_xmlhelpers.py between versions 1.4 and 1.5

version 1.4, 2004/10/06 13:02:56 version 1.5, 2005/10/26 11:18:19
Line 9  from Ft.Xml import XPath Line 9  from Ft.Xml import XPath
 from Ft.Xml.XPath import Evaluate  from Ft.Xml.XPath import Evaluate
 from Ft.Xml.XLink import XLINK_NAMESPACE  from Ft.Xml.XLink import XLINK_NAMESPACE
 from Ft.Xml.XLink import XLinkElements  from Ft.Xml.XLink import XLinkElements
   import cStringIO
 #from Ft.Xml.Domlette import NonvalidatingReader,InputSource  from Ft.Xml.Domlette import NonvalidatingReader, PrettyPrint,Print
 #from Ft.Xml import EMPTY_NAMESPACE  from Ft.Xml import EMPTY_NAMESPACE
 from Ft.Lib import Uri  from Ft.Lib import Uri
 import urllib  import urllib
 import re  import re
   
   patternTXT=r"<\s*txt.*?>(.*?)</txt>"
   regexpTXT = re.compile(patternTXT, re.IGNORECASE + re.DOTALL)
 patternPage=r"<\s*page.*?>(.*?)</page>"  patternPage=r"<\s*page.*?>(.*?)</page>"
 regexpPage = re.compile(patternPage, re.IGNORECASE + re.DOTALL)  regexpPage = re.compile(patternPage, re.IGNORECASE + re.DOTALL)
   
Line 167  def getXlink(nodes): Line 169  def getXlink(nodes):
     return ret      return ret
   
 def checkRef(self,ref):  def checkRef(self,ref):
         dbs={'vl_literature':'AND CD LIKE \'%lise%\'','vl_technology':'','vl_people':'','vl_sites':''}          """teste ob reference angezeigt werden sollen"""
           dbs={'vl_literature':'AND online = \'1\'',
                'vl_technology':'AND complete =\'yes\'',
                'vl_people':'AND complete =\'yes\'',
                'vl_sites':'AND complete =\'yes\'',
                'vl_transcript':'AND complete =\'yes\'',
                'vl_essays':'AND online =\'yes\''
                }
         res=None          res=None
         for db in dbs.keys():          for db in dbs.keys():
               searchStr=str("select reference from %s where reference =\'%s\' %s"%(db,ref,dbs[db]))
             res=res or self.search(var=str("select reference from %s where reference =\'%s\' %s"%(db,ref,dbs[db])))              res=res or self.search(var=searchStr)
         return res          return res
   
 def xml2html(self,str,quote="yes"):  def link2html(self,str):
         """link2html fuer VLP muss hier noch raus"""          """link2html liks in html wandeln"""
       
           
         if str:          if str:
             if quote=="yes2":  
                 str=re.sub("\&","&amp;",str)  
                           
             str=re.sub("ref\=([^>]*)\>",'ref=\"\g<1>\">',str)# einfuegen anfuehrungszeichen um ref attribut, falls fehlt.              str=re.sub("\&","&amp;",str)
             #str=re.sub("ref\=([.[*^[>]]])",'XX',str)              dom=xml.dom.minidom.parseString("<?xml version='1.0' encoding='utf-8'?><txt>"+str+"</txt>")
             #print "STR::",str  
             dom=xml.dom.minidom.parseString(str)  
             links=dom.getElementsByTagName("link")              links=dom.getElementsByTagName("link")
                           
   
             for link in links:              for link in links:
                 link.tagName="a"                  link.tagName="a"
                 ref=link.getAttribute("ref")                  ref=link.getAttribute("ref")
         pn=link.getAttribute("page")          pn=link.getAttribute("page")
   
                 if checkRef(self,ref):                  if self.checkRef(ref):
             if pn:              if pn:
                 link.setAttribute("href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref+"&p="+pn)                                  link.setAttribute("href",self.REQUEST['SERVER_URL']+"/references?id="+ref+"&page="+pn)
             else:              else:
                 link.setAttribute("href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref)                                  link.setAttribute("href",self.REQUEST['SERVER_URL']+"/references?id="+ref)
   
   
               newxml=dom.toxml('utf-8')
             
               retStr=regexpTXT.search(newxml)
   
               return retStr.group(1)
   
                              
           return ""
       
   
             str= dom.toxml()  
                   
   def xml2html(self,str,quote="yes"):
           """link2html fuer VLP muss hier noch raus"""
           if str:
               if quote=="yes2":
                   str=re.sub("\&","&amp;",str)
               #dom=xml.dom.minidom.parseString(str)
               dom = NonvalidatingReader.parseString(str,"http://www.mpiwg-berlin.mpg.de/")
               #links=dom.getElementsByTagName("link")
               links=Ft.Xml.XPath.Evaluate(".//link", contextNode=dom)
               for link in links:
                   #link.tagName="a"
           
                   ref=link.getAttributeNS(EMPTY_NAMESPACE,"ref")
                   pn=link.getAttributeNS(EMPTY_NAMESPACE,"page")
   
                   cns=link.childNodes[0:]
                   
                   newLink=dom.createElementNS(EMPTY_NAMESPACE,"a")
                   for x in cns:
                           newLink.appendChild(x)
                   
                           
                   
                   link.parentNode.replaceChild(newLink,link)
   
                   if self.checkRef(ref):
                           if pn:
                                   newLink.setAttributeNS(EMPTY_NAMESPACE,"href",self.REQUEST['SERVER_URL']+"/references?id="+ref+"&p="+pn)
                           else:
                                   newLink.setAttributeNS(EMPTY_NAMESPACE,"href",self.REQUEST['SERVER_URL']+"/references?id="+ref)
   
               #str= dom.toxml('utf-8')
               buf = cStringIO.StringIO()
               PrettyPrint(dom, stream=buf)
               str = buf.getvalue()
               buf.close()
               #str=PrettyPrint(dom.documentElement,encoding='UTF-8')
         #print link.toxml('utf-8')          #print link.toxml('utf-8')
               #print type(str)
         retStr=regexpPage.search(str)          retStr=regexpPage.search(str)
   
             try:              try: # hack warum fehtl manchmal page??
                 return retStr.group(1)                  return retStr.group(1)
             except:              except:
                 exStr="""<?xml version="1.0" ?>"""                      return str
                 str=re.sub("\n","",str)  
                 #str=  
                 #print repr(str)  
                 return str.replace(exStr,'')  
         return ""          return ""
           
       
 def xlink2html(self,xlink,parClass=None):  def xlink2html(self,xlink,parClass=None):
     ret=""      ret=""
     attributes=xlink.attributes      attributes=xlink.attributes

Removed from v.1.4  
changed lines
  Added in v.1.5


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>