org.apache.xalan.xsltc.compiler

## Class Template

- java.lang.Object
- - org.apache.xalan.xsltc.compiler.SyntaxTreeNode
  - - org.apache.xalan.xsltc.compiler.Template

All Implemented Interfaces:
  org.apache.bcel.generic.InstructionConstants, Constants

    public final class Template
    extends SyntaxTreeNode

Author:
  Jacek Ambroziak, Santiago Pericas-Geertsen, Morten Jorgensen, Erwin Bolwidt <ejb@klomp.org>

### Nested Class Summary

### Nested classes/interfaces inherited from interface org.apache.bcel.generic.InstructionConstants

`org.apache.bcel.generic.InstructionConstants.Clinit`

### Field Summary

### Fields inherited from class org.apache.xalan.xsltc.compiler.SyntaxTreeNode

`UNKNOWN_STYLESHEET_NODE_ID`

### 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, ATTR_SET_SIG, ATTRIBUTE_LIST_FIELD, ATTRIBUTE_LIST_IMPL_CLASS, ATTRIBUTE_LIST_IMPL_SIG, ATTRIBUTES_SIG, BASIS_LIBRARY_CLASS, BOOLEAN_CLASS, BOOLEAN_VALUE, BOOLEAN_VALUE_SIG, CACHED_NODE_LIST_ITERATOR_CLASS, CHARACTERS, CHARACTERS_SIG, CHARACTERSW, CHARACTERSW_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, EXPAND_STYLESHEET_QNAME_REF, EXPAND_STYLESHEET_QNAME_SIG, 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, HAS_ATTRIBUTE, HAS_ATTRIBUTE_SIG, HASIDCALL_INDEX, HASIDCALL_INDEX_SIG, INT_VALUE, INT_VALUE_SIG, INTEGER_CLASS, INTEGER_SIG, INTERNAL, INVOKE_METHOD, ITERATOR_FIELD_SIG, ITERATOR_PNAME, KEY_INDEX_CLASS, KEY_INDEX_ITERATOR_SIG, KEY_INDEX_SIG, LAST_INDEX, LOAD_DOCUMENT_CLASS, LOCALE_CLASS, LOCALE_SIG, LOOKUP_STYLESHEET_QNAME_NS_REF, LOOKUP_STYLESHEET_QNAME_NS_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, NAMES_INDEX, NAMES_INDEX_SIG, NAMESPACE_FEATURE, NAMESPACE_INDEX, NAMESPACE_INDEX_SIG, NEXT, NEXT_SIG, NEXTID, 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, NS_ANCESTORS_INDEX_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, PREFIX_URIS_ARRAY_SIG, PREFIX_URIS_IDX_SIG, 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_NAMES_ARRAY_FIELD, STATIC_NAMESPACE_ARRAY_FIELD, STATIC_NS_ANCESTORS_ARRAY_FIELD, STATIC_PREFIX_URIS_ARRAY_FIELD, STATIC_PREFIX_URIS_IDX_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`

### Fields inherited from interface org.apache.bcel.generic.InstructionConstants

`AALOAD, AASTORE, ACONST_NULL, ALOAD_0, ALOAD_1, ALOAD_2, ARETURN, ARRAYLENGTH, ASTORE_0, ASTORE_1, ASTORE_2, ATHROW, BALOAD, BASTORE, bla, CALOAD, CASTORE, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DMUL, DNEG, DREM, DRETURN, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FMUL, FNEG, FREM, FRETURN, FSUB, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, ILOAD_0, ILOAD_1, ILOAD_2, IMUL, INEG, INSTRUCTIONS, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE_0, ISTORE_1, ISTORE_2, ISUB, IUSHR, IXOR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDIV, LMUL, LNEG, LOR, LREM, LRETURN, LSHL, LSHR, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, NOP, POP, POP2, RETURN, SALOAD, SASTORE, SWAP, THIS`

### Constructor Summary

Constructors
Constructor and Description
`Template()`

### Method Summary

Methods
`void` `addDependency(org.apache.xalan.xsltc.compiler.TopLevelElement other)` Add a dependency with other top-level elements like variables, parameters or keys.
`void` `addParameter(org.apache.xalan.xsltc.compiler.Param param)`
`int` `compareTo(java.lang.Object template)` Compare this template to another.
`org.apache.bcel.generic.InstructionList` `compile(ClassGenerator classGen, MethodGenerator methodGen)` Translate this node into a fresh instruction list.
`void` `disable()`
`boolean` `disabled()`
`void` `display(int indent)` Displays the contents of this syntax tree node (to stdout).
`java.util.Vector` `getDependencies()` Get the list of dependencies with other top-level elements like variables, parameteres or keys.
`org.apache.xalan.xsltc.compiler.QName` `getModeName()`
`org.apache.xalan.xsltc.compiler.QName` `getName()`
`java.util.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 node into JVM bytecodes.
`Type` `typeCheck(org.apache.xalan.xsltc.compiler.SymbolTable stable)` Type check all the children of this node.

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

`getLineNumber, getParser`

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### Template

    public Template()

### Method Detail

#### hasParams

    public boolean hasParams()

#### isSimplified

    public boolean isSimplified()

#### setSimplified

    public void setSimplified()

#### isSimpleNamedTemplate

    public boolean isSimpleNamedTemplate()

#### addParameter

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

#### getParameters

    public java.util.Vector getParameters()

#### disable

    public void disable()

#### disabled

    public boolean disabled()

#### getPriority

    public double getPriority()

#### getPosition

    public int getPosition()

#### isNamed

    public boolean isNamed()

#### getPattern

    public Pattern getPattern()

#### getName

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

#### setName

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

#### getModeName

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

#### compareTo

    public int compareTo(java.lang.Object template)

Compare this template to another. First checks priority, then position.

#### display

    public void display(int indent)

Description copied from class: `SyntaxTreeNode`
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.

Parameters:
  `indent` - Indentation level for syntax tree levels.

#### getStylesheet

    public Stylesheet getStylesheet()

Description copied from class: `SyntaxTreeNode`
Get the Stylesheet node that represents the element that this node occured under.

Overrides:
  `getStylesheet` in class `SyntaxTreeNode`
Returns:
  The Stylesheet ancestor node of this node.

#### parseContents

    public void parseContents(Parser parser)

Description copied from class: `SyntaxTreeNode`
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 class `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

#### typeCheck

    public Type typeCheck(org.apache.xalan.xsltc.compiler.SymbolTable stable)
                   throws TypeCheckError

Type check all the children of this node.

Parameters:
  `stable` - The compiler/parser's symbol table
Throws:
  `TypeCheckError`

#### translate

    public void translate(ClassGenerator classGen,
                 MethodGenerator methodGen)

Translate this node into JVM bytecodes.

Parameters:
  `classGen` - BCEL Java class generator
  `methodGen` - BCEL Java method generator

#### compile

    public org.apache.bcel.generic.InstructionList compile(ClassGenerator classGen,
                                                  MethodGenerator methodGen)

Translate this node into a fresh instruction list. The original instruction list is saved and restored.

#### addDependency

    public void addDependency(org.apache.xalan.xsltc.compiler.TopLevelElement other)

Add a dependency with other top-level elements like variables, parameters or keys.

#### getDependencies

    public java.util.Vector getDependencies()

Get the list of dependencies with other top-level elements like variables, parameteres or keys.