Viewing file: WithParamElement.py (2.55 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
######################################################################## # # File Name: WithParamElement.py # # """ Implementation of the XSLT Spec with-param stylesheet element. WWW: http://4suite.com/4XSLT e-mail: support@4suite.com
Copyright (c) 1999-2000 Fourthought Inc, USA. All Rights Reserved. See http://4suite.com/COPYRIGHT for license and copyright information """
import xml.dom.ext import xml.dom.Element import xml.xslt from xml.xslt import XsltElement, XsltException, Error from xml.xpath import CoreFunctions from xml.xpath import Util from xml.xpath import XPathParser from xml.dom import EMPTY_NAMESPACE
class WithParamElement(XsltElement): legalAttrs = ('select', 'name')
def __init__(self, doc, uri=xml.xslt.XSL_NAMESPACE, localName='with-param', prefix='xsl', baseUri=''): XsltElement.__init__(self, doc, uri, localName, prefix, baseUri)
def setup(self): self.__dict__['_nss'] = xml.dom.ext.GetAllNs(self) name_attr = self.getAttributeNS(EMPTY_NAMESPACE, 'name') split_name = Util.ExpandQName( name_attr, namespaces=self._nss ) self.__dict__['_name'] = split_name select = self.getAttributeNS(EMPTY_NAMESPACE, 'select') if select: parser = XPathParser.XPathParser() self.__dict__['_expr'] = parser.parseExpression(select) else: self.__dict__['_expr'] = None return
def instantiate(self, context, processor): #original = context.processorNss original = context.copy() #origNss = context.processorNss context.processorNss = self._nss if self._expr: result = self._expr.evaluate(context) else: processor.pushResult() for child in self.childNodes: context = child.instantiate(context, processor)[0] result = processor.popResult() context.rtfs.append(result)
#context.processorNss = origNss context.set(original)
return (context, (self._name, result))
def __getinitargs__(self): return (None, self.namespaceURI, self.localName, self.prefix, self.baseUri)
def __getstate__(self): base_state = XsltElement.__getstate__(self) new_state = (base_state, self._nss, self._name, self._expr) return new_state
def __setstate__(self, state): XsltElement.__setstate__(self, state[0]) self._nss = state[1] self._name = state[2] self._expr = state[3] return
|