version 1.6, 2006/09/09 00:10:01
|
version 1.7, 2006/09/09 10:52:35
|
Line 11 import sys
|
Line 11 import sys
|
import urllib |
import urllib |
import urlparse |
import urlparse |
from Ft.Xml.Domlette import Print, PrettyPrint |
from Ft.Xml.Domlette import Print, PrettyPrint |
|
from StringIO import StringIO |
|
|
from Globals import package_home |
from Globals import package_home |
|
|
Line 172 class ECHO_xslt(ECHO_pageTemplate):
|
Line 172 class ECHO_xslt(ECHO_pageTemplate):
|
return self._v_xmltrans.getResult() |
return self._v_xmltrans.getResult() |
|
|
|
|
def getPage(self,pn): |
def getPage(self,_pn,REQUEST=None): |
"""get a page from an xml""" |
"""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() |
impl=xml.dom.getDOMImplementation() |
newDoc=impl.createDocument(EMPTY_NAMESPACE,None,None |
newDoc=impl.createDocument(EMPTY_NAMESPACE,None,None |
) |
) |
root=newDoc.createElement('page') |
root=newDoc.createElement('page') |
newDoc.appendChild(root) |
newDoc.appendChild(root) |
|
qs="%s%s"%(self.cgiUrl,self.REQUEST['QUERY_STRING']) |
xmlt=urllib.urlopen("%s"%self.cgiUrl).read() |
print qs |
|
xmlt=urllib.urlopen(qs).read() |
dom=Parse(xmlt) |
dom=Parse(xmlt) |
|
|
pbs=dom.xpath("//pb") |
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 |
beginNode=pbs[pn] #take the n'th pb |
|
|
|
if not (pn==len(pbs)-1): # nicht die letzte Seite |
endNode=pbs[pn+1] |
endNode=pbs[pn+1] |
follower=beginNode.xpath('following::node()') |
else: |
#root.appendChild(beginNode) |
endNode=None |
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) |
# follower=beginNode.xpath('following::node()') |
|
# #root.appendChild(beginNode) |
|
# found=[] |
|
# |
|
# for node in endNode.xpath('preceding::node()'): |
|
# if node in follower: |
|
# found.append(node) |
|
# |
|
|
del(found[nr]) |
|
except: |
|
pass |
|
|
|
found.append(endNode) |
#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("..") |
|
|
for x in found: |
if parent: |
PrettyPrint(x) |
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 |
|
|
|
|
|
|