Diff for /ECHO_content/ECHO_xslt.py between versions 1.13 and 1.14

version 1.13, 2006/10/12 16:37:33 version 1.14, 2006/10/18 14:42:33
Line 19  import transaction Line 19  import transaction
   
 import os.path  import os.path
   
 import urllib  import urllib,cgi
   
 try:  try:
     from Ft.Xml.Xslt.Processor import Processor      from Ft.Xml.Xslt.Processor import Processor
Line 283  class ECHO_xslt(ECHO_pageTemplate,ECHO_l Line 283  class ECHO_xslt(ECHO_pageTemplate,ECHO_l
         if type=="target":          if type=="target":
             for link in dom.xpath(xp,explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'}):              for link in dom.xpath(xp,explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'}):
                 fn=link.xpath("mpiwg:target/@filename",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value                  fn=link.xpath("mpiwg:target/@filename",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value
                   
                   if urlparse.urlparse(urllib.unquote(fn))[0]=="http": # fn ist eine url
                       return urllib.unquote(fn)  # dann gibt diese zurueck 
                   
                 ref=link.xpath("mpiwg:target/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value                  ref=link.xpath("mpiwg:target/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value
                                   
                 ref2=link.xpath("mpiwg:target/mpiwg:pagelink/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value                  ref2=link.xpath("mpiwg:target/mpiwg:pagelink/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value
                 selectionNodeIndex=link.xpath("mpiwg:target/mpiwg:pagelink/@selectionNodeIndex",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value                  selectionNodeIndex=link.xpath("mpiwg:target/mpiwg:pagelink/@selectionNodeIndex",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value
                                                             
                 lstr=slaveurl+'fn='+fn+'&_id='+ref+'&_pagelink=%s///%s'%(ref2,selectionNodeIndex)                
                 lstr+="&_links="+urllib.quote(url)+'&_linkid='+linkid+'&_linktype=target'                  
                   lstr=slaveurl+'fn='+fn+'&_id='+ref+'&_pagelink=%s///%s/%s/%s'%(ref2,selectionNodeIndex,linkid,'target')
                   lstr+="&_links="+urllib.quote(url)
                                   
         else:          else:
             for link in dom.xpath(xp,explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'}):              for link in dom.xpath(xp,explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'}):
                 fn=link.xpath("mpiwg:source/@filename",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value                  fn=link.xpath("mpiwg:source/@filename",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value
                   if urlparse.urlparse(urllib.unquote(fn))[0]=="http": # fn ist eine url
                       return urllib.unquote(fn)  # dann gibt diese zurueck 
                   
                 ref=link.xpath("mpiwg:source/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value                  ref=link.xpath("mpiwg:source/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value
                                   
                 ref2=link.xpath("mpiwg:source/mpiwg:pagelink/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value                  ref2=link.xpath("mpiwg:source/mpiwg:pagelink/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value
                 selectionNodeIndex=link.xpath("mpiwg:source/mpiwg:pagelink/@selectionNodeIndex",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value                  selectionNodeIndex=link.xpath("mpiwg:source/mpiwg:pagelink/@selectionNodeIndex",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value
                                                             
                 lstr=masterurl+'fn='+fn+'&_id='+ref+'&_pagelink=%s///%s'%(ref2,selectionNodeIndex)                  lstr=masterurl+'fn='+fn+'&_id='+ref+'&_pagelink=%s///%s/%s/%s'%(ref2,selectionNodeIndex,linkid,'source')
                 lstr+="&_links="+urllib.quote(url)+'&_linkid='+linkid+'&_linktype=source'                  lstr+="&_links="+urllib.quote(url)
         return lstr          return lstr
         
       def addLinksUrl(self,txt,url):
           """add reference to links to  url"""
           ret=[]
           dom=NonvalidatingReader.parseUri(url)
           textDom=NonvalidatingReader.parseString(txt)
   
           #find ids in txt
           ids=textDom.xpath("//*[@id]")
           
           for textid in ids:
               xp="//mpiwg:link[mpiwg:source/@refid='%s']"%textid.xpath("@id")[0].value
               for link in dom.xpath(xp,explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'}):
                   ref2=link.xpath("mpiwg:source/mpiwg:pagelink/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value
                   selectionNodeIndex=link.xpath("mpiwg:source/mpiwg:pagelink/@selectionNodeIndex",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value
                   linkid=link.xpath("@id")[0].value         
                   ret.append('%s///%s/%s/%s'%(ref2,selectionNodeIndex,linkid,'source'))
              
               xp="//mpiwg:link[mpiwg:target/@refid='%s']"%textid.xpath("@id")[0].value
               for link in dom.xpath(xp,explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'}):
                   ref2=link.xpath("mpiwg:target/mpiwg:pagelink/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value
                   selectionNodeIndex=link.xpath("mpiwg:target/mpiwg:pagelink/@selectionNodeIndex",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value
                   linkid=link.xpath("@id")[0].value         
                   ret.append('%s///%s/%s/%s'%(ref2,selectionNodeIndex,linkid,'target'))
              
              
           return ret
             
     def addLinks(self,txt,url="http://127.0.0.1:8080/HFQP/linkCreator/getCollectionXML?collection=commentary2"):      def addLinks(self,txt,url="http://127.0.0.1:8080/HFQP/linkCreator/getCollectionXML?collection=commentary2"):
         """add links to a page from xml linkfile"""          """add links to a page from xml linkfile"""
                   
Line 319  class ECHO_xslt(ECHO_pageTemplate,ECHO_l Line 355  class ECHO_xslt(ECHO_pageTemplate,ECHO_l
             xp="//mpiwg:link[mpiwg:source/@refid='%s']"%textid.xpath("@id")[0].value              xp="//mpiwg:link[mpiwg:source/@refid='%s']"%textid.xpath("@id")[0].value
             for link in dom.xpath(xp,explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'}):              for link in dom.xpath(xp,explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'}):
                 fn=link.xpath("mpiwg:target/@filename",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value                  fn=link.xpath("mpiwg:target/@filename",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value
                   print fn
                   if urlparse.urlparse(urllib.unquote(fn))[0]=="http": # fn ist eine url
                       lstr=urllib.unquote(fn)  # dann gibt diese zurueck 
                   else:
                       try:
                 ref=link.xpath("mpiwg:target/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value                  ref=link.xpath("mpiwg:target/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value
                                   
                 ref2=link.xpath("mpiwg:target/mpiwg:pagelink/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value                  ref2=link.xpath("mpiwg:target/mpiwg:pagelink/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value
                 selectionNodeIndex=link.xpath("mpiwg:target/mpiwg:pagelink/@selectionNodeIndex",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value                  selectionNodeIndex=link.xpath("mpiwg:target/mpiwg:pagelink/@selectionNodeIndex",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value
                 linkid=link.xpath("@id")[0].value                           linkid=link.xpath("@id")[0].value         
                 lstr=slaveurl+'fn='+fn+'&_id='+ref+'&_pagelink=%s///%s'%(ref2,selectionNodeIndex)                          lstr=slaveurl+'fn='+fn+'&_id='+ref+'&_pagelink=%s///%s/%s/%s'%(ref2,selectionNodeIndex,linkid,'target')
                 lstr+="&_links="+urllib.quote(url)+'&_url='+url+'&_linkid='+linkid+'&_linktype=target'                          lstr+="&_links="+urllib.quote(url)
                       except:
                           lstr=""
                 node=self.createLinkNode(lstr,textDom)                  node=self.createLinkNode(lstr,textDom)
                 textid.parentNode.insertBefore(node,textid)                  textid.parentNode.insertBefore(node,textid)
                               
Line 333  class ECHO_xslt(ECHO_pageTemplate,ECHO_l Line 376  class ECHO_xslt(ECHO_pageTemplate,ECHO_l
             xp="//mpiwg:link[mpiwg:target/@refid='%s']"%textid.xpath("@id")[0].value              xp="//mpiwg:link[mpiwg:target/@refid='%s']"%textid.xpath("@id")[0].value
             for link in dom.xpath(xp,explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'}):              for link in dom.xpath(xp,explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'}):
                 fn=link.xpath("mpiwg:source/@filename",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value                  fn=link.xpath("mpiwg:source/@filename",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value
                   if urlparse.urlparse(urllib.unquote(fn))[0]=="http": # fn ist eine url
                       lstr=urllib.unquote(fn)  # dann gibt diese zurueck 
                   else:
                   
                 ref=link.xpath("mpiwg:source/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value                  ref=link.xpath("mpiwg:source/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value
                                   
                 ref2=link.xpath("mpiwg:source/mpiwg:pagelink/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value                  ref2=link.xpath("mpiwg:source/mpiwg:pagelink/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value
                 selectionNodeIndex=link.xpath("mpiwg:source/mpiwg:pagelink/@selectionNodeIndex",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value                  selectionNodeIndex=link.xpath("mpiwg:source/mpiwg:pagelink/@selectionNodeIndex",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value
                 linkid=link.xpath("@id")[0].value                                      linkid=link.xpath("@id")[0].value                    
                 lstr=masterurl+'fn='+fn+'&_id='+ref+'&_pagelink=%s///%s'%(ref2,selectionNodeIndex)                      lstr=masterurl+'fn='+fn+'&_id='+ref+'&_pagelink=%s///%s/%s/%s'%(ref2,selectionNodeIndex,linkid,"source")
                 lstr+="&_links="+urllib.quote(url)+'&_linkid='+linkid+'&_linktype=source'                      lstr+="&_links="+urllib.quote(url)
                                   
                 node=self.createLinkNode(lstr,textDom)                  node=self.createLinkNode(lstr,textDom)
                 textid.parentNode.insertBefore(node,textid)                  textid.parentNode.insertBefore(node,textid)
Line 354  class ECHO_xslt(ECHO_pageTemplate,ECHO_l Line 401  class ECHO_xslt(ECHO_pageTemplate,ECHO_l
   
                           
                   
     def getPageLex(self,_pn="1",_id=None,_caching=None,_links=None):      def getPageLex(self,_pn="1",_id=None,_caching=None,_links=None,_showall="no"):
         """getpage mit lexikalischer analyse und xslt transform          """getpage mit lexikalischer analyse und xslt transform
         if _caching=yes dann wird die lwxikalisch analysierte seite in einem cache abgespeichert          if _caching=yes dann wird die lwxikalisch analysierte seite in einem cache abgespeichert
         """          """
           def encode(hash):
               ret=[]
               for x in hash.keys():
                   value=hash[x]
                   
                   if type(value) is ListType:
                       for z in value:
                           ret.append("%s=%s"%(x,z))
                   else:
                       ret.append("%s=%s"%(x,value))
               return "&".join(ret)
                       
                           
   
         if not _caching:          if not _caching:
             _caching=self.caching              _caching=self.caching
Line 379  class ECHO_xslt(ECHO_pageTemplate,ECHO_l Line 439  class ECHO_xslt(ECHO_pageTemplate,ECHO_l
         else:          else:
            txt=self.tagLex(id=_id)             txt=self.tagLex(id=_id)
               
           if _showall=="yes":
              params=cgi.parse_qs(self.REQUEST['QUERY_STRING'])
              
              params['_pagelink']=self.addLinksUrl(txt,url=_links)
              params['_showall']='no'
             
              print self.absolute_url()+"?"+encode(params)
              self.REQUEST.RESPONSE.redirect(self.absolute_url()+"/getPageLex?"+encode(params))
              
              
         xsl=self.xslt()          xsl=self.xslt()
                   
         xsltproc=Processor()          xsltproc=Processor()

Removed from v.1.13  
changed lines
  Added in v.1.14


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