org.apache.xalan.xsltc.compiler

Class Template

Implemented Interfaces:
Constants, InstructionConstants

public final class Template
extends org.apache.xalan.xsltc.compiler.TopLevelElement

Authors:
Jacek Ambroziak
Santiago Pericas-Geertsen
Morten Jorgensen
Erwin Bolwidt

Fields inherited from interface org.apache.xalan.xsltc.compiler.Constants

ABSOLUTE_ITERATOR, ACC_FINAL, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_SUPER, ADD_ATTRIBUTE, ADD_ATTRIBUTE_SIG, ADD_ITERATOR, ADD_ITERATOR_SIG, ADD_PARAMETER, ADD_PARAMETER_SIG, APPLY_TEMPLATES, ATTRIBUTES_SIG, ATTRIBUTE_LIST_FIELD, ATTRIBUTE_LIST_IMPL_CLASS, ATTRIBUTE_LIST_IMPL_SIG, ATTR_SET_SIG, BASIS_LIBRARY_CLASS, BOOLEAN_CLASS, BOOLEAN_VALUE, BOOLEAN_VALUE_SIG, CACHED_NODE_LIST_ITERATOR_CLASS, CALL_FUNCTION_CLASS, CHARACTERS, CHARACTERSW, CHARACTERSW_SIG, CHARACTERS_SIG, CLEAR_ATTRIBUTES, CLEAR_ATTRIBUTES_SIG, COLLATOR_CLASS, COLLATOR_SIG, COMPILER_PACKAGE, CURRENT_NODE_LIST_FILTER, CURRENT_NODE_LIST_FILTER_SIG, CURRENT_NODE_LIST_ITERATOR, CURRENT_NODE_LIST_ITERATOR_SIG, DEFAULT_NODE_COUNTER, DEFAULT_NODE_COUNTER_SIG, DOCUMENT_PNAME, DOM_ADAPTER_CLASS, DOM_ADAPTER_SIG, DOM_FIELD, DOM_IMPL, DOM_IMPL_CLASS, DOM_IMPL_SIG, DOM_INTF, DOM_INTF_SIG, DOM_PNAME, DOUBLE_CLASS, DOUBLE_SIG, DOUBLE_VALUE, DOUBLE_VALUE_SIG, DUP_FILTERED_ITERATOR, EMPTYATTR_FIELD, EMPTYSTRING, ERROR, FALLBACK_CLASS, FATAL, FILTER_INTERFACE, FILTER_INTERFACE_SIG, FILTER_ITERATOR, FILTER_STEP_ITERATOR, FORMAT_SYMBOLS_FIELD, GET_ATTRIBUTE_VALUE, GET_ATTRIBUTE_VALUE_SIG, GET_CHILDREN, GET_CHILDREN_SIG, GET_ELEMENT_VALUE, GET_ELEMENT_VALUE_SIG, GET_ITERATOR_SIG, GET_NODE_NAME, GET_NODE_NAME_SIG, GET_NODE_TYPE, GET_NODE_TYPE_SIG, GET_NODE_VALUE, GET_NODE_VALUE_ITERATOR, GET_NODE_VALUE_ITERATOR_SIG, GET_NODE_VALUE_SIG, GET_PARAMETER, GET_PARAMETER_SIG, GET_PARENT, GET_PARENT_SIG, GET_TYPED_CHILDREN, GET_TYPED_CHILDREN_SIG, GET_UNPARSED_ENTITY_URI, GET_UNPARSED_ENTITY_URI_SIG, HASIDCALL_INDEX, HASIDCALL_INDEX_SIG, HAS_ATTRIBUTE, HAS_ATTRIBUTE_SIG, INTEGER_CLASS, INTEGER_SIG, INTERNAL, INT_VALUE, INT_VALUE_SIG, INVOKE_METHOD, ITERATOR_FIELD_SIG, ITERATOR_PNAME, KEY_INDEX_CLASS, KEY_INDEX_SIG, LAST_INDEX, LOAD_DOCUMENT_CLASS, LOCALE_CLASS, LOCALE_SIG, MAKE_NODE, MAKE_NODE_LIST, MAKE_NODE_LIST_SIG, MAKE_NODE_LIST_SIG2, MAKE_NODE_SIG, MAKE_NODE_SIG2, MATCHING_ITERATOR, MATH_CLASS, MULTI_DOM_CLASS, MULTI_DOM_SIG, NAMESPACE_FEATURE, NAMESPACE_INDEX, NAMESPACE_INDEX_SIG, NAMES_INDEX, NAMES_INDEX_SIG, NEXT, NEXTID, NEXT_SIG, NODE, NODE_COUNTER, NODE_COUNTER_SIG, NODE_FIELD, NODE_FIELD_SIG, NODE_ITERATOR, NODE_ITERATOR_BASE, NODE_ITERATOR_SIG, NODE_PNAME, NODE_SIG, NODE_SORT_FACTORY, NODE_SORT_FACTORY_SIG, NODE_SORT_RECORD, NODE_SORT_RECORD_SIG, NTH_ITERATOR_CLASS, OBJECT_CLASS, OBJECT_SIG, ORDER_ITERATOR, ORDER_ITERATOR_SIG, OUTPUT_BASE, OUTPUT_HANDLER, OUTPUT_HANDLER_SIG, POP_PARAM_FRAME, POP_PARAM_FRAME_SIG, POSITION_INDEX, PUSH_PARAM_FRAME, PUSH_PARAM_FRAME_SIG, REDIRECT_URI, RESET, RESET_SIG, RTF_INITIAL_SIZE, RUNTIME_NODE_CLASS, RUNTIME_PACKAGE, SAX_IMPL, SAX_IMPL_CLASS, SAX_IMPL_SIG, SET_START_NODE, SET_START_NODE_SIG, SINGLETON_ITERATOR, SORT_ITERATOR, SORT_ITERATOR_SIG, STATIC_CHAR_DATA_FIELD, STATIC_CHAR_DATA_FIELD_SIG, STATIC_NAMESPACE_ARRAY_FIELD, STATIC_NAMES_ARRAY_FIELD, STATIC_TYPES_ARRAY_FIELD, STATIC_URIS_ARRAY_FIELD, STEP_ITERATOR_CLASS, STREAM_XML_OUTPUT, STRING, STRING_BUFFER_CLASS, STRING_BUFFER_SIG, STRING_CLASS, STRING_SIG, STRING_TO_INT, STRING_TO_INT_SIG, STRING_TO_REAL, STRING_TO_REAL_SIG, STRING_VALUE_HANDLER, STRING_VALUE_HANDLER_SIG, STRING_WRITER, STRIP_SPACE, STRIP_SPACE_INTF, STRIP_SPACE_PARAMS, STRIP_SPACE_SIG, TRANSLET_CLASS, TRANSLET_FIELD, TRANSLET_FIELD_SIG, TRANSLET_INTF, TRANSLET_INTF_SIG, TRANSLET_OUTPUT_BASE, TRANSLET_OUTPUT_INTERFACE, TRANSLET_OUTPUT_PNAME, TRANSLET_OUTPUT_SIG, TRANSLET_PNAME, TRANSLET_SIG, TRANSLET_URI, TRANSLET_VERSION_INDEX, TRANSLET_VERSION_INDEX_SIG, TYPES_INDEX, TYPES_INDEX_SIG, UNION_ITERATOR_CLASS, UNION_ITERATOR_SIG, UNSUPPORTED, URIS_INDEX, URIS_INDEX_SIG, WARNING, WRITER_SIG, XHTML_URI, XMLNS_PREFIX, XMLNS_STRING, XMLNS_URI, XSLT_PACKAGE, XSLT_URI

Method Summary

void
addParameter(org.apache.xalan.xsltc.compiler.Param param)
int
compareTo(Object template)
Compare this template to another.
void
disable()
boolean
disabled()
void
display(int indent)
Displays the contents of this syntax tree node (to stdout).
org.apache.xalan.xsltc.compiler.QName
getModeName()
org.apache.xalan.xsltc.compiler.QName
getName()
Vector
getParameters()
Pattern
getPattern()
int
getPosition()
double
getPriority()
Stylesheet
getStylesheet()
Get the Stylesheet node that represents the element that this node occured under.
boolean
hasParams()
boolean
isNamed()
boolean
isSimpleNamedTemplate()
boolean
isSimplified()
void
parseContents(Parser parser)
Parse the contents of this syntax tree nodes (child nodes, XPath expressions, patterns and functions).
void
parseSimplified(Stylesheet stylesheet, Parser parser)
When the parser realises that it is dealign with a simplified stylesheet it will create an empty Stylesheet object with the root element of the stylesheet (a LiteralElement object) as its only child.
void
setName(org.apache.xalan.xsltc.compiler.QName qname)
void
setSimplified()
void
translate(ClassGenerator classGen, MethodGenerator methodGen)
Translate this abstract syntax tree node into JVM bytecodes.
Type
typeCheck(org.apache.xalan.xsltc.compiler.SymbolTable stable)
Type check the children of this node.

Methods inherited from class org.apache.xalan.xsltc.compiler.TopLevelElement

compile, display, translate, typeCheck

Methods inherited from class org.apache.xalan.xsltc.compiler.SyntaxTreeNode

display, getLineNumber, getParser, getStylesheet, parseContents, translate, typeCheck

Method Details

addParameter

public void addParameter(org.apache.xalan.xsltc.compiler.Param param)

compareTo

public int compareTo(Object template)
Compare this template to another. First checks priority, then position.

disable

public void disable()

disabled

public boolean disabled()

display

public void display(int indent)
Displays the contents of this syntax tree node (to stdout). This method is intended for debugging _only_, and should be overridden by all syntax tree node implementations.
Overrides:
display in interface org.apache.xalan.xsltc.compiler.TopLevelElement
Parameters:
indent - Indentation level for syntax tree levels.

getModeName

public org.apache.xalan.xsltc.compiler.QName getModeName()

getName

public org.apache.xalan.xsltc.compiler.QName getName()

getParameters

public Vector getParameters()

getPattern

public Pattern getPattern()

getPosition

public int getPosition()

getPriority

public double getPriority()

getStylesheet

public Stylesheet getStylesheet()
Get the Stylesheet node that represents the element that this node occured under.
Overrides:
getStylesheet in interface SyntaxTreeNode
Returns:
The Stylesheet ancestor node of this node.

hasParams

public boolean hasParams()

isNamed

public boolean isNamed()

isSimpleNamedTemplate

public boolean isSimpleNamedTemplate()

isSimplified

public boolean isSimplified()

parseContents

public void parseContents(Parser parser)
Parse the contents of this syntax tree nodes (child nodes, XPath expressions, patterns and functions). The default behaviour is to parser the syntax tree node's children (since there are no common expressions, patterns, etc. that can be handled in this base class.
Overrides:
parseContents in interface SyntaxTreeNode
Parameters:
parser - reference to the XSLT parser

parseSimplified

public void parseSimplified(Stylesheet stylesheet,
                            Parser parser)
When the parser realises that it is dealign with a simplified stylesheet it will create an empty Stylesheet object with the root element of the stylesheet (a LiteralElement object) as its only child. The Stylesheet object will then create this Template object and invoke this method to force some specific behaviour. What we need to do is: o) create a pattern matching on the root node o) add the LRE root node (the only child of the Stylesheet) as our only child node o) set the empty Stylesheet as our parent o) set this template as the Stylesheet's only child

setName

public void setName(org.apache.xalan.xsltc.compiler.QName qname)

setSimplified

public void setSimplified()

translate

public void translate(ClassGenerator classGen,
                      MethodGenerator methodGen)
Translate this abstract syntax tree node into JVM bytecodes.
Overrides:
translate in interface org.apache.xalan.xsltc.compiler.TopLevelElement
Parameters:
classGen - BCEL Java class generator
methodGen - BCEL Java method generator

typeCheck

public Type typeCheck(org.apache.xalan.xsltc.compiler.SymbolTable stable)
            throws TypeCheckError
Type check the children of this node. The type check phase may add coercions (CastExpr) to the AST.
Overrides:
typeCheck in interface org.apache.xalan.xsltc.compiler.TopLevelElement
Parameters:
stable - The compiler/parser's symbol table

Copyright B) 2004 Apache XML Project. All Rights Reserved.