--- ECHO_content/ECHO_xslt.py 2005/10/26 08:35:53 1.5 +++ ECHO_content/ECHO_xslt.py 2006/09/09 00:10:01 1.6 @@ -10,7 +10,7 @@ from ECHO_helpers import * import sys import urllib import urlparse - +from Ft.Xml.Domlette import Print, PrettyPrint 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,47 @@ class ECHO_xslt(ECHO_pageTemplate): return self._v_xmltrans.getResult() + def getPage(self,pn): + """get a page from an xml""" + pn=int(pn) + impl=xml.dom.getDOMImplementation() + newDoc=impl.createDocument(EMPTY_NAMESPACE,None,None + ) + root=newDoc.createElement('page') + newDoc.appendChild(root) + + xmlt=urllib.urlopen("%s"%self.cgiUrl).read() + dom=Parse(xmlt) + + pbs=dom.xpath("//pb") + beginNode=pbs[pn] #take the n'th pb + endNode=pbs[pn+1] + 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) + + for x in found: + PrettyPrint(x) + + + def manage_addECHO_xsltForm(self): """Form for adding""" pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddECHO_xslt.zpt')).__of__(self)