Viewing file: AttributeSetElement.py (2 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
######################################################################## # # File Name: AttributeSetElement.py # # Documentation: http://docs.4suite.org/4XSLT/AttributeSetElement.py.html # """ Implementation of the XSLT Spec attribute-set stylesheet element. WWW: http://4suite.org/4XSLT e-mail: support@4suite.org
Copyright (c) 1999-2001 Fourthought Inc, USA. All Rights Reserved. See http://4suite.org/COPYRIGHT for license and copyright information """
from Ft.Xml import EMPTY_NAMESPACE from Ft.Xml.Xslt import XsltElement, XsltRuntimeException, Error, XSL_NAMESPACE from Ft.Xml.Xslt import CategoryTypes, AttributeInfo, ContentInfo
class AttributeSetElement(XsltElement):
category = CategoryTypes.TOP_LEVEL_ELEMENT content = ContentInfo.Rep(ContentInfo.QName(XSL_NAMESPACE, 'xsl:attribute')) legalAttrs = { 'name' : AttributeInfo.QName(required=1), 'use-attribute-sets' : AttributeInfo.QNames(), }
doesPrime = 1
def prime(self, processor, context): processor.attributeSets[self._name] = self return
def instantiate(self, context, processor, used=None): if used is None: used = []
if self in used: raise XsltRuntimeException(Error.CIRCULAR_ATTRIBUTE_SET, self, self._name) else: used.append(self)
old_vars = context.varBindings context.varBindings = processor.stylesheet.getGlobalVariables()
for attr_set_name in self._use_attribute_sets: try: attr_set = processor.attributeSets[attr_set_name] except KeyError: raise XsltRuntimeException(Error.UNDEFINED_ATTRIBUTE_SET, self, attr_set_name) attr_set.instantiate(context, processor, used)
for child in self.children: child.instantiate(context, processor)
context.varBindings = old_vars used.remove(self)
return
|