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

- - ### 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
    Modifier and Type | Method and Description
    --- | ---
    `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.

Copyright © 2014 Apache XML Project. All Rights Reserved.