--- ECHO_content/ECHO_xslt.py 2005/10/26 08:35:53 1.5 +++ ECHO_content/ECHO_xslt.py 2006/09/09 10:52:35 1.7 @@ -10,8 +10,8 @@ from ECHO_helpers import * import sys import urllib import urlparse - - +from Ft.Xml.Domlette import Print, PrettyPrint +from StringIO import StringIO from Globals import package_home @@ -22,8 +22,7 @@ import urllib try: from Ft.Xml.Xslt.Processor import Processor - from Ft.Xml import InputSource - + from Ft.Xml import InputSource, EMPTY_NAMESPACE,Parse except: print "4suite has to be installed" @@ -61,7 +60,7 @@ class getXML(Implicit): def run(self): """call it""" xml="" - + print "X",self._v_qs try: urlH=urllib.urlopen(self._v_qs) @@ -141,7 +140,7 @@ class ECHO_xslt(ECHO_pageTemplate): if getattr(self,'cgiUrl','')=='': self.cgiUrl="http://medea.mpiwg-berlin.mpg.de/cgi-bin/search/q1" - qs="%s?%s"%(self.cgiUrl,self.REQUEST['QUERY_STRING']) + qs="%s%s"%(self.cgiUrl,self.REQUEST['QUERY_STRING']) xsl=self.absolute_url()+"/xslt" self._v_xmltrans=getXML().__of__(self) #self._xmltrans.start() @@ -173,6 +172,80 @@ class ECHO_xslt(ECHO_pageTemplate): return self._v_xmltrans.getResult() + def getPage(self,_pn,REQUEST=None): + """get a page from an xml""" + pn=int(_pn)-1 + if pn<0: + if REQUEST: + return "Sorry, pagenumbers have to be greater than 0" + else: + return None + impl=xml.dom.getDOMImplementation() + newDoc=impl.createDocument(EMPTY_NAMESPACE,None,None + ) + root=newDoc.createElement('page') + newDoc.appendChild(root) + qs="%s%s"%(self.cgiUrl,self.REQUEST['QUERY_STRING']) + print qs + xmlt=urllib.urlopen(qs).read() + dom=Parse(xmlt) + + pbs=dom.xpath("//pb") + if pn > len(pbs): + if REQUEST: + return "Sorry, pagenumber %s does not exit"%pn+1 + else: + return None + + beginNode=pbs[pn] #take the n'th pb + + if not (pn==len(pbs)-1): # nicht die letzte Seite + endNode=pbs[pn+1] + else: + endNode=None + + +# follower=beginNode.xpath('following::node()') +# #root.appendChild(beginNode) +# found=[] +# +# for node in endNode.xpath('preceding::node()'): +# if node in follower: +# found.append(node) +# + + + #rempove all children of parents which are also in the list +# for x in found: +# for child in x.xpath(".//*"): +# try: +# +# nr=found.index(child) +# +# del(found[nr]) +# except: +# pass +# +# found.append(endNode) +# + deleteNodes=beginNode.xpath('preceding::node()') + if endNode: + deleteNodes+=endNode.xpath('following::node()') + for node in deleteNodes: + try: + parent=node.xpath("..") + + if parent: + parent[0].removeChild(node) + except: + zLOG.LOG("ECHO_Resource (getAccessRightMD)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2]) + strio = StringIO() + PrettyPrint(dom,strio) + xmlstr = strio.getvalue() + return xmlstr + + + def manage_addECHO_xsltForm(self): """Form for adding""" pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddECHO_xslt.zpt')).__of__(self)