--- ECHO_content/ECHO_xslt.py 2006/09/09 00:10:01 1.6 +++ ECHO_content/ECHO_xslt.py 2006/09/09 10:52:35 1.7 @@ -11,7 +11,7 @@ import sys import urllib import urlparse from Ft.Xml.Domlette import Print, PrettyPrint - +from StringIO import StringIO from Globals import package_home @@ -172,44 +172,77 @@ class ECHO_xslt(ECHO_pageTemplate): return self._v_xmltrans.getResult() - def getPage(self,pn): + def getPage(self,_pn,REQUEST=None): """get a page from an xml""" - pn=int(pn) + 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) - - xmlt=urllib.urlopen("%s"%self.cgiUrl).read() + 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 - 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) + 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