Class StyleElement

    • Field Detail

      • extensionNamespaces

        protected java.lang.String[] extensionNamespaces
      • reportingCircumstances

        protected int reportingCircumstances
      • defaultXPathNamespace

        protected java.lang.String defaultXPathNamespace
      • defaultCollationName

        protected java.lang.String defaultCollationName
      • REPORT_UNLESS_FORWARDS_COMPATIBLE

        public static final int REPORT_UNLESS_FORWARDS_COMPATIBLE
        See Also:
        Constant Field Values
      • REPORT_UNLESS_FALLBACK_AVAILABLE

        public static final int REPORT_UNLESS_FALLBACK_AVAILABLE
        See Also:
        Constant Field Values
      • actionsCompleted

        protected int actionsCompleted
      • ACTION_PROCESS_ATTRIBUTES

        public static final int ACTION_PROCESS_ATTRIBUTES
        See Also:
        Constant Field Values
      • YES_NO

        protected static final java.lang.String[] YES_NO
    • Constructor Detail

      • StyleElement

        public StyleElement()
        Constructor
    • Method Detail

      • getExecutable

        public Executable getExecutable()
        Description copied from interface: Container
        Get the Executable (representing a complete stylesheet or query) of which this Container forms part
        Specified by:
        getExecutable in interface Container
        Returns:
        the executable
      • getLocationProvider

        public LocationProvider getLocationProvider()
        Get the LocationProvider allowing location identifiers to be resolved.
        Specified by:
        getLocationProvider in interface Container
        Returns:
        the location provider
      • getStaticContext

        public StaticContext getStaticContext()
        Get the static context for expressions on this element
        Returns:
        the static context
      • getContainerGranularity

        public int getContainerGranularity()
        Get the granularity of the container.
        Specified by:
        getContainerGranularity in interface Container
        Returns:
        0 for a temporary container created during parsing; 1 for a container that operates at the level of an XPath expression; 2 for a container at the level of a global function or template
      • makeExpressionVisitor

        public ExpressionVisitor makeExpressionVisitor()
        Make an expression visitor
        Returns:
        the expression visitor
      • isExplaining

        protected boolean isExplaining()
        Determine whether saxon:explain has been set to "yes"
        Returns:
        true if saxon:explain has been set to "yes" on this element
      • substituteFor

        public void substituteFor​(StyleElement temp)
        Make this node a substitute for a temporary one previously added to the tree. See StyleNodeFactory for details. "A node like the other one in all things but its class". Note that at this stage, the node will not yet be known to its parent, though it will contain a reference to its parent; and it will have no children.
        Parameters:
        temp - the element which this one is substituting for
      • setValidationError

        public void setValidationError​(javax.xml.transform.TransformerException reason,
                                       int circumstances)
        Set a validation error. This is an error detected during construction of this element on the stylesheet, but which is not to be reported until later.
        Parameters:
        reason - the details of the error
        circumstances - a code identifying the circumstances under which the error is to be reported
      • isInstruction

        public boolean isInstruction()
        Ask whether this node is an instruction. The default implementation says it isn't.
        Returns:
        true if this element is an instruction
      • isDeclaration

        public boolean isDeclaration()
        Ask whether this node is a declaration, that is, a permitted child of xsl:stylesheet (including xsl:include and xsl:import). The default implementation returns false
        Returns:
        true if the element is a permitted child of xsl:stylesheet or xsl:transform
      • getReturnedItemType

        protected ItemType getReturnedItemType()
        Determine the type of item returned by this instruction (only relevant if it is an instruction). Default implementation returns Type.ITEM, indicating that we don't know, it might be anything. Returns null in the case of an element such as xsl:sort or xsl:variable that can appear in a sequence constructor but contributes nothing to the result sequence.
        Returns:
        the item type returned
      • getCommonChildItemType

        protected ItemType getCommonChildItemType()
        Get the most general type of item returned by the children of this instruction
        Returns:
        the lowest common supertype of the item types returned by the children
      • markTailCalls

        protected boolean markTailCalls()
        Mark tail-recursive calls on templates and functions. For most instructions, this returns false.
        Returns:
        true if one or more tail calls were identified
      • mayContainSequenceConstructor

        protected boolean mayContainSequenceConstructor()
        Determine whether this type of element is allowed to contain a sequence constructor
        Returns:
        true if this instruction is allowed to contain a sequence constructor
      • mayContainFallback

        protected boolean mayContainFallback()
        Determine whether this type of element is allowed to contain an xsl:fallback instruction. Note that this is only relevant if the element is an instruction.
        Returns:
        true if this element is allowed to contain an xsl:fallback
      • mayContainParam

        protected boolean mayContainParam​(java.lang.String attName)
        Determine whether this type of element is allowed to contain an xsl:param element
        Parameters:
        attName - if null, the method tests whether an xsl:param child is allowed. If non-null, it tests whether an xsl:param child with the given attribute name is allowed
        Returns:
        true if this element is allowed to contain an xsl:param
      • getContainingStylesheet

        public XSLStylesheet getContainingStylesheet()
        Get the containing XSLStylesheet element
        Returns:
        the XSLStylesheet element representing the outermost element of the containing stylesheet module. Exceptionally, return null if there is no containing XSLStylesheet element
      • makeQName

        public final StructuredQName makeQName​(java.lang.String lexicalQName)
                                        throws XPathException,
                                               NamespaceException
        Make a structured QName, using this Element as the context for namespace resolution, and registering the code in the namepool. If the name is unprefixed, the default namespace is not used.
        Parameters:
        lexicalQName - The lexical QName as written, in the form "[prefix:]localname". The name must have already been validated as a syntactically-correct QName. Leading and trailing whitespace will be trimmed
        Returns:
        the StructuredQName representation of this lexical QName
        Throws:
        XPathException - if the qname is not a lexically-valid QName, or if the name is in a reserved namespace.
        NamespaceException - if the prefix of the qname has not been declared
      • makeNamespaceContext

        public SavedNamespaceContext makeNamespaceContext()
        Make a NamespaceContext object representing the list of in-scope namespaces. This will be a copy of the namespace context with no references to objects in the stylesheet tree, so that it can be kept until run-time without locking the tree down in memory.
        Returns:
        a copy of the namespace context
      • getNamespaceResolver

        public NamespaceResolver getNamespaceResolver()
        Get the namespace context of the instruction.
        Returns:
        the namespace context. This method does not make a copy of the namespace context, so a reference to the returned NamespaceResolver will lock the stylesheet tree in memory.
      • processAllAttributes

        protected void processAllAttributes()
                                     throws XPathException
        Process the attributes of this element and all its children
        Throws:
        XPathException - in the event of a static error being detected
      • processStandardAttributes

        public void processStandardAttributes​(java.lang.String namespace)
                                       throws XPathException
        Process the standard attributes such as [xsl:]default-collation
        Parameters:
        namespace - either "" to find the attributes in the null namespace, or NamespaceConstant.XSLT to find them in the XSLT namespace
        Throws:
        XPathException - if any of the standard attributes is incorrect
      • getAttributeValue

        public java.lang.String getAttributeValue​(java.lang.String clarkName)
        Get an attribute value given the Clark name of the attribute (that is, the name in {uri}local format).
        Parameters:
        clarkName - the name of the attribute in {uri}local format
        Returns:
        the value of the attribute if it exists, or null otherwise
      • processAttributes

        protected final void processAttributes()
                                        throws XPathException
        Process the attribute list for the element. This is a wrapper method that calls prepareAttributes (provided in the subclass) and traps any exceptions
        Throws:
        XPathException - if a static error is detected
      • checkUnknownAttribute

        protected void checkUnknownAttribute​(NodeName nc)
                                      throws XPathException
        Check whether an unknown attribute is permitted.
        Parameters:
        nc - The name code of the attribute name
        Throws:
        XPathException - (and reports the error) if this is an attribute that is not permitted on the containing element
      • prepareAttributes

        protected abstract void prepareAttributes()
                                           throws XPathException
        Set the attribute list for the element. This is called to process the attributes (note the distinction from processAttributes in the superclass). Must be supplied in a subclass
        Throws:
        XPathException - if a static error is detected
      • getLastChildInstruction

        protected StyleElement getLastChildInstruction()
        Find the last child instruction of this instruction. Returns null if there are no child instructions, or if the last child is a text node.
        Returns:
        the last child instruction, or null if there are no child instructions
      • makeExpression

        public Expression makeExpression​(java.lang.String expression)
                                  throws XPathException
        Compile an XPath expression in the context of this stylesheet element
        Parameters:
        expression - the source text of the XPath expression
        Returns:
        the compiled expression tree for the XPath expression
        Throws:
        XPathException - if a static error is detected in the XPath expression
      • makePattern

        public Pattern makePattern​(java.lang.String pattern)
                            throws XPathException
        Make a pattern in the context of this stylesheet element
        Parameters:
        pattern - the source text of the pattern
        Returns:
        the compiled pattern
        Throws:
        XPathException - if a static error is detected in the pattern
      • makeAttributeValueTemplate

        protected Expression makeAttributeValueTemplate​(java.lang.String expression)
                                                 throws XPathException
        Make an attribute value template in the context of this stylesheet element
        Parameters:
        expression - the source text of the attribute value template
        Returns:
        a compiled XPath expression that computes the value of the attribute (including concatenating the results of embedded expressions with any surrounding fixed text)
        Throws:
        XPathException - if a static error is detected in the AVT
      • checkAttributeValue

        protected void checkAttributeValue​(java.lang.String name,
                                           java.lang.String value,
                                           boolean avt,
                                           java.lang.String[] allowed)
                                    throws XPathException
        Check the value of an attribute, as supplied statically
        Parameters:
        name - the name of the attribute
        value - the value of the attribute
        avt - set to true if the value is permitted to be an attribute value template
        allowed - list of permitted values, which must be in alphabetical order
        Throws:
        XPathException - if the value given for the attribute is not a permitted value
      • makeSequenceType

        public SequenceType makeSequenceType​(java.lang.String sequenceType)
                                      throws XPathException
        Process an attribute whose value is a SequenceType
        Parameters:
        sequenceType - the source text of the attribute
        Returns:
        the processed sequence type
        Throws:
        XPathException - if the syntax is invalid or for example if it refers to a type that is not in the static context
      • processExtensionElementAttribute

        protected void processExtensionElementAttribute​(java.lang.String ns)
                                                 throws XPathException
        Process the [xsl:]extension-element-prefixes attribute if there is one
        Parameters:
        ns - the namespace URI of the attribute - either the XSLT namespace or "" for the null namespace
        Throws:
        XPathException - if the value of the attribute is invalid
      • processExcludedNamespaces

        protected void processExcludedNamespaces​(java.lang.String ns)
                                          throws XPathException
        Process the [xsl:]exclude-result-prefixes attribute if there is one
        Parameters:
        ns - the namespace URI of the attribute required, either the XSLT namespace or ""
        Throws:
        XPathException - if the value of the attribute is invalid
      • processVersionAttribute

        protected void processVersionAttribute​(java.lang.String ns)
                                        throws XPathException
        Process the [xsl:]version attribute if there is one
        Parameters:
        ns - the namespace URI of the attribute required, either the XSLT namespace or ""
        Throws:
        XPathException - if the value of the attribute is invalid
      • getEffectiveVersion

        public DecimalValue getEffectiveVersion()
        Get the numeric value of the version number appearing as an attribute on this element, or inherited from its ancestors
        Returns:
        the version number as a decimal
      • forwardsCompatibleModeIsEnabled

        public boolean forwardsCompatibleModeIsEnabled()
        Determine whether forwards-compatible mode is enabled for this element
        Returns:
        true if forwards-compatible mode is enabled
      • xPath10ModeIsEnabled

        public boolean xPath10ModeIsEnabled()
        Determine whether 1.0-compatible mode is enabled for this element
        Returns:
        true if 1.0 compatable mode is enabled, that is, if this or an enclosing element specifies an [xsl:]version attribute whose value is less than 2.0
      • getProcessorVersion

        public DecimalValue getProcessorVersion()
        Determine what version of the XSLT the configured processor supports
        Returns:
        the version of XSLT supported by the processor
      • isXslt30Processor

        public boolean isXslt30Processor()
        Ask whether the configured XSLT processor supports XSLT 3.0
        Returns:
        true if the configured XSLT processor supports XSLT 3.0
      • processDefaultCollationAttribute

        protected void processDefaultCollationAttribute()
                                                 throws XPathException
        Process the [xsl:]default-xpath-namespace attribute if there is one
        Throws:
        XPathException - if the value is not a valid URI, or not a recognized collation URI
      • getDefaultCollationName

        protected java.lang.String getDefaultCollationName()
        Get the default collation for this stylesheet element. If no default collation is specified in the stylesheet, return the Unicode codepoint collation name.
        Returns:
        the name of the default collation
      • definesExtensionElement

        protected boolean definesExtensionElement​(java.lang.String uri)
        Check whether a particular extension element namespace is defined on this node. This checks this node only, not the ancestor nodes. The implementation checks whether the prefix is included in the [xsl:]extension-element-prefixes attribute.
        Parameters:
        uri - the namespace URI being tested
        Returns:
        true if this namespace is defined on this element as an extension element namespace
      • isExtensionNamespace

        public boolean isExtensionNamespace​(java.lang.String uri)
        Check whether a namespace uri defines an extension element. This checks whether the namespace is defined as an extension namespace on this or any ancestor node.
        Parameters:
        uri - the namespace URI being tested
        Returns:
        true if the URI is an extension element namespace URI
      • definesExcludedNamespace

        protected boolean definesExcludedNamespace​(java.lang.String uri)
        Check whether this node excludes a particular namespace from the result. This method checks this node only, not the ancestor nodes.
        Parameters:
        uri - the namespace URI being tested
        Returns:
        true if the namespace is excluded by virtue of an [xsl:]exclude-result-prefixes attribute
      • isExcludedNamespace

        public boolean isExcludedNamespace​(java.lang.String uri)
        Check whether a namespace uri defines an namespace excluded from the result. This checks whether the namespace is defined as an excluded namespace on this or any ancestor node.
        Parameters:
        uri - the namespace URI being tested
        Returns:
        true if this namespace URI is a namespace excluded by virtue of exclude-result-prefixes on this element or on an ancestor element
      • processDefaultXPathNamespaceAttribute

        protected void processDefaultXPathNamespaceAttribute​(java.lang.String ns)
        Process the [xsl:]xpath-default-namespace attribute if there is one
        Parameters:
        ns - the namespace URI of the attribute required (the default namespace or the XSLT namespace.)
      • getDefaultXPathNamespace

        protected java.lang.String getDefaultXPathNamespace()
        Get the default XPath namespace for elements and types
        Returns:
        the default namespace for elements and types. Return NamespaceConstant.NULL for the non-namespace
      • getSchemaType

        public SchemaType getSchemaType​(java.lang.String typeAtt)
                                 throws XPathException
        Get the Schema type definition for a type named in the stylesheet (in a "type" attribute).
        Parameters:
        typeAtt - the value of the type attribute
        Returns:
        the corresponding schema type
        Throws:
        XPathException - if the type is not declared in an imported schema, or is not a built-in type
      • getTypeAnnotation

        public SimpleType getTypeAnnotation​(SchemaType schemaType)
        Get the type annotation to use for a given schema type
        Parameters:
        schemaType - the schema type
        Returns:
        the corresponding numeric type annotation
      • validate

        public void validate​(Declaration decl)
                      throws XPathException
        Check that the stylesheet element is valid. This is called once for each element, after the entire tree has been built. As well as validation, it can perform first-time initialisation. The default implementation does nothing; it is normally overriden in subclasses.
        Parameters:
        decl - the declaration to be validated
        Throws:
        XPathException - if any error is found during validation
      • postValidate

        public void postValidate()
                          throws XPathException
        Hook to allow additional validation of a parent element immediately after its children have been validated.
        Throws:
        XPathException - if any error is found during post-traversal validation
      • index

        protected void index​(Declaration decl,
                             PrincipalStylesheetModule top)
                      throws XPathException
        Method supplied by declaration elements to add themselves to a stylesheet-level index
        Parameters:
        decl - the Declaration being indexed. (This corresponds to the StyleElement object except in cases where one module is imported several times with different precedence.)
        top - the outermost XSLStylesheet element
        Throws:
        XPathException - if any error is encountered
      • typeCheck

        public Expression typeCheck​(java.lang.String name,
                                    Expression exp)
                             throws XPathException
        Type-check an expression. This is called to check each expression while the containing instruction is being validated. It is not just a static type-check, it also adds code to perform any necessary run-time type checking and/or conversion.
        Parameters:
        name - the name of the attribute containing the expression to be checked (used for diagnostics)
        exp - the expression to be checked
        Returns:
        the (possibly rewritten) expression after type checking
        Throws:
        XPathException - if type-checking fails statically, that is, if it can be determined that the supplied value for the expression cannot possibly be of the required type
      • allocateSlots

        public void allocateSlots​(Expression exp)
        Allocate slots in the local stack frame to range variables used in an XPath expression
        Parameters:
        exp - the XPath expression for which slots are to be allocated
      • allocatePatternSlots

        public void allocatePatternSlots​(int slots)
        Allocate space for range variables within predicates in the match pattern. The xsl:template element has no XPath expressions among its attributes, so if this method is called on this object it can only be because there are variables used in the match pattern. We work out how many slots are needed for the match pattern in each template rule, and then apply-templates can allocate a stack frame that is large enough for the most demanding match pattern in the entire stylesheet.
        Parameters:
        slots - the number of slots required
      • typeCheck

        public Pattern typeCheck​(java.lang.String name,
                                 Pattern pattern)
                          throws XPathException
        Type-check a pattern. This is called to check each pattern while the containing instruction is being validated. It is not just a static type-check, it also adds code to perform any necessary run-time type checking and/or conversion.
        Parameters:
        name - the name of the attribute holding the pattern, for example "match": used in diagnostics
        pattern - the compiled pattern
        Returns:
        the original pattern, or a substitute pattern if it has been rewritten. Returns null if and only if the supplied pattern is null.
        Throws:
        XPathException - if the pattern fails optimistic static type-checking
      • fixupReferences

        public void fixupReferences()
                             throws XPathException
        Fix up references from XPath expressions. Overridden for function declarations and variable declarations
        Throws:
        XPathException - if any references cannot be fixed up.
      • getContainingSlotManager

        public SlotManager getContainingSlotManager()
        Get the SlotManager for the containing Procedure definition
        Returns:
        the SlotManager associated with the containing Function, Template, etc, or null if there is no such containing Function, Template etc.
      • validateSubtree

        public void validateSubtree​(Declaration decl)
                             throws XPathException
        Recursive walk through the stylesheet to validate all nodes
        Parameters:
        decl - the declaration to be validated
        Throws:
        XPathException - if validation fails
      • validateChildren

        protected void validateChildren​(Declaration decl)
                                 throws XPathException
        Validate the children of this node, recursively. Overridden for top-level data elements.
        Parameters:
        decl - the declaration whose children are to be validated
        Throws:
        XPathException - if validation fails
      • isPermittedChild

        protected boolean isPermittedChild​(StyleElement child)
        Check whether a given child is permitted for this element. This method is used when a non-instruction child element such as xsl:sort is encountered in a context where instructions would normally be expected.
        Parameters:
        child - the child that may or may not be permitted
        Returns:
        true if the child is permitted.
      • getPreparedStylesheet

        public PreparedStylesheet getPreparedStylesheet()
        Get the PreparedStylesheet object.
        Returns:
        the PreparedStylesheet to which this stylesheet element belongs. Exceptionally (with early errors in a simplified stylesheet module) return null.
      • getPrincipalStylesheetModule

        public PrincipalStylesheetModule getPrincipalStylesheetModule()
        Get the principal stylesheet module
        Returns:
        the principal stylesheet module
      • checkSortComesFirst

        protected void checkSortComesFirst​(boolean sortRequired)
                                    throws XPathException
        Check that among the children of this element, any xsl:sort elements precede any other elements
        Parameters:
        sortRequired - true if there must be at least one xsl:sort element
        Throws:
        XPathException - if invalid
      • checkTopLevel

        public void checkTopLevel​(java.lang.String errorCode)
                           throws XPathException
        Convenience method to check that the stylesheet element is at the top level
        Parameters:
        errorCode - the error to throw if it is not at the top level; defaults to XTSE0010 if the value is null
        Throws:
        XPathException - if not at top level
      • checkEmpty

        public void checkEmpty()
                        throws XPathException
        Convenience method to check that the stylesheet element is empty
        Throws:
        XPathException - if it is not empty
      • reportAbsence

        public void reportAbsence​(java.lang.String attribute)
                           throws XPathException
        Convenience method to report the absence of a mandatory attribute
        Parameters:
        attribute - the name of the attribute whose absence is to be reported
        Throws:
        XPathException - if the attribute is missing
      • compile

        public Expression compile​(Executable exec,
                                  Declaration decl)
                           throws XPathException
        Compile the instruction on the stylesheet tree into an executable instruction for use at run-time.
        Parameters:
        exec - the Executable
        decl - the containing top-level declaration, for example xsl:function or xsl:template
        Returns:
        either a ComputedExpression, or null. The value null is returned when compiling an instruction that returns a no-op, or when compiling a top-level object such as an xsl:template that compiles into something other than an instruction.
        Throws:
        XPathException - if validation fails
      • compileDeclaration

        public void compileDeclaration​(Executable exec,
                                       Declaration decl)
                                throws XPathException
        Compile a declaration in the stylesheet tree for use at run-time.
        Parameters:
        exec - the Executable
        decl - the containing top-level declaration, for example xsl:function or xsl:template
        Throws:
        XPathException - if compilation fails
      • compileSequenceConstructor

        public Expression compileSequenceConstructor​(Executable exec,
                                                     Declaration decl,
                                                     SequenceIterator iter,
                                                     boolean includeParams)
                                              throws XPathException
        Compile the children of this instruction on the stylesheet tree, adding the subordinate instructions to the parent instruction on the execution tree.
        Parameters:
        exec - the Executable
        decl - the Declaration of the containing top-level stylesheet element
        iter - Iterator over the children. This is used in the case where there are children that are not part of the sequence constructor, for example the xsl:sort children of xsl:for-each; the iterator can be positioned past such elements.
        includeParams - true if xsl:param elements are to be treated as child instructions (true for templates but not for functions) @return an Expression tree representing the children of this instruction
        Returns:
        if compilation detects any static errors
        Throws:
        XPathException - if compilation fails
      • makeTraceInstruction

        protected static Expression makeTraceInstruction​(StyleElement source,
                                                         Expression child)
        Create a trace instruction to wrap a real instruction
        Parameters:
        source - the parent element
        child - the compiled expression tree for the instruction to be traced
        Returns:
        a wrapper instruction that performs the tracing (if activated at run-time)
      • fallbackProcessing

        protected Expression fallbackProcessing​(Executable exec,
                                                Declaration decl,
                                                StyleElement instruction)
                                         throws XPathException
        Perform fallback processing. Generate fallback code for an extension instruction that is not recognized by the implementation.
        Parameters:
        exec - the Executable
        decl - the Declaration of the top-level element containing the extension instruction
        instruction - The unknown extension instruction
        Returns:
        the expression tree representing the fallback code
        Throws:
        XPathException - if any error occurs
      • allocateLocationId

        protected int allocateLocationId​(java.lang.String systemId,
                                         int lineNumber)
        Allocate a location identifier
        Parameters:
        systemId - identifies the module containing the instruction
        lineNumber - the line number of the instruction
        Returns:
        an integer location ID which can be used to report the location of the instruction, by reference to a LocationProvider
      • makeSortKeys

        public SortKeyDefinition[] makeSortKeys​(Declaration decl)
                                         throws XPathException
        Construct sort keys for a SortedIterator
        Parameters:
        decl - the declaration containing the sort keys
        Returns:
        an array of SortKeyDefinition objects if there are any sort keys; or null if there are none.
        Throws:
        XPathException - if any error is detected
      • getAttributeSets

        protected AttributeSet[] getAttributeSets​(java.lang.String use,
                                                  java.util.List<Declaration> list)
                                           throws XPathException
        Get the list of attribute-sets associated with this element. This is used for xsl:element, xsl:copy, xsl:attribute-set, and on literal result elements
        Parameters:
        use - the original value of the [xsl:]use-attribute-sets attribute
        list - an empty list to hold the list of XSLAttributeSet elements in the stylesheet tree. Or null, if these are not required.
        Returns:
        an array of AttributeList instructions representing the compiled attribute sets
        Throws:
        XPathException - if any error is detected
      • getWithParamInstructions

        protected WithParam[] getWithParamInstructions​(Executable exec,
                                                       Declaration decl,
                                                       boolean tunnel,
                                                       Expression caller)
                                                throws XPathException
        Get the list of xsl:with-param elements for a calling element (apply-templates, call-template, apply-imports, next-match). This method can be used to get either the tunnel parameters, or the non-tunnel parameters.
        Parameters:
        exec - the Executable
        decl - the containing stylesheet declaration
        tunnel - true if the tunnel="yes" parameters are wanted, false to get
        caller - the calling instruction (for example xsl:apply-templates), used only for its location information @return an array of WithParam objects for either the ordinary parameters or the tunnel parameters
        Returns:
        an array containing the results of compiling the xsl:with-param children of this instruction (if any)
        Throws:
        XPathException - if any error is detected
      • compileError

        protected void compileError​(XPathException error)
                             throws XPathException
        Report an error with diagnostic information
        Parameters:
        error - contains information about the error
        Throws:
        XPathException - always, after reporting the error to the ErrorListener
      • compileError

        protected void compileError​(java.lang.String message)
                             throws XPathException
        Report a static error in the stylesheet
        Parameters:
        message - the error message
        Throws:
        XPathException - always, after reporting the error to the ErrorListener
      • compileError

        public void compileError​(java.lang.String message,
                                 StructuredQName errorCode)
                          throws XPathException
        Compile time error, specifying an error code
        Parameters:
        message - the error message
        errorCode - the error code. May be null if not known or not defined
        Throws:
        XPathException - always, after reporting the error to the ErrorListener
      • compileError

        public void compileError​(java.lang.String message,
                                 java.lang.String errorCode)
                          throws XPathException
        Compile time error, specifying an error code
        Parameters:
        message - the error message
        errorCode - the error code. May be null if not known or not defined
        Throws:
        XPathException - always, after reporting the error to the ErrorListener
      • undeclaredNamespaceError

        protected void undeclaredNamespaceError​(java.lang.String prefix,
                                                java.lang.String errorCode)
                                         throws XPathException
        Throws:
        XPathException
      • compileWarning

        protected void compileWarning​(java.lang.String message,
                                      java.lang.String errorCode)
                               throws XPathException
        Throws:
        XPathException
      • issueWarning

        protected void issueWarning​(javax.xml.transform.TransformerException error)
        Report a warning to the error listener
        Parameters:
        error - an exception containing the warning text
      • issueWarning

        protected void issueWarning​(java.lang.String message,
                                    javax.xml.transform.SourceLocator locator)
        Report a warning to the error listener
        Parameters:
        message - the warning message text
        locator - the location of the problem in the source stylesheet
      • isTopLevel

        public boolean isTopLevel()
        Test whether this is a top-level element
        Returns:
        true if the element is a child of the xsl:stylesheet element
      • bindVariable

        public XSLVariableDeclaration bindVariable​(StructuredQName qName)
        Bind a variable used in this element to the compiled form of the XSLVariable element in which it is declared
        Parameters:
        qName - The name of the variable
        Returns:
        the XSLVariableDeclaration (that is, an xsl:variable or xsl:param instruction) for the variable, or null if no declaration of the variable can be found
      • bindLocalVariable

        public XSLVariableDeclaration bindLocalVariable​(StructuredQName qName)
        Bind a variable reference used in this element to the compiled form of the XSLVariable element in which it is declared, considering only local variables and params
        Parameters:
        qName - The name of the variable
        Returns:
        the XSLVariableDeclaration (that is, an xsl:variable or xsl:param instruction) for the variable, or null if no local declaration of the variable can be found
      • seesAvuncularVariables

        protected boolean seesAvuncularVariables()
        Ask whether variables declared in an "uncle" element are visible.
        Returns:
        true for all elements except xsl:fallback and saxon:catch
      • getConstructType

        public int getConstructType()
        Get the type of construct. This will be a constant in class Location. This method is part of the InstructionInfo interface
        Specified by:
        getConstructType in interface InstructionInfo
        Returns:
        an integer identifying the kind of construct
      • getObjectName

        public StructuredQName getObjectName()
        Get a name identifying the object of the expression, for example a function name, template name, variable name, key name, element name, etc. This is used only where the name is known statically. If there is no name, the value will be null.
        Specified by:
        getObjectName in interface InstructionInfo
        Returns:
        the name of the object declared in this element, if any
      • setObjectName

        public void setObjectName​(StructuredQName qName)
        Set the object name, for example the name of a function, variable, or template declared on this element
        Parameters:
        qName - the object name as a QName
      • getProperty

        public java.lang.Object getProperty​(java.lang.String name)
        Get the value of a particular property of the instruction. This is part of the InstructionInfo interface for run-time tracing and debugging. The properties available include all the attributes of the source instruction (named by the attribute name): these are all provided as string values.
        Specified by:
        getProperty in interface InstructionInfo
        Parameters:
        name - The name of the required property
        Returns:
        The value of the requested property, or null if the property is not available
      • getProperties

        public java.util.Iterator<java.lang.String> getProperties()
        Get an iterator over all the properties available. The values returned by the iterator will be of type String, and each string can be supplied as input to the getProperty() method to retrieve the value of the property.
        Specified by:
        getProperties in interface InstructionInfo
        Returns:
        an iterator over the properties.
      • getSystemId

        public java.lang.String getSystemId​(long locationId)
        Description copied from interface: LocationProvider
        Get the URI of the document, entity, or module containing a particular location
        Specified by:
        getSystemId in interface LocationProvider
        Parameters:
        locationId - identifier of the location in question (as passed down the Receiver pipeline)
        Returns:
        the URI of the document, XML entity or module. For a SourceLocationProvider this will be the URI of the document or entity (the URI that would be the base URI if there were no xml:base attributes). In other cases it may identify the query or stylesheet module currently being executed.
      • getLineNumber

        public int getLineNumber​(long locationId)
        Description copied from interface: LocationProvider
        Get the line number within the document, entity or module containing a particular location
        Specified by:
        getLineNumber in interface LocationProvider
        Parameters:
        locationId - identifier of the location in question (as passed down the Receiver pipeline)
        Returns:
        the line number within the document, entity or module, or -1 if no information is available.
      • getColumnNumber

        public int getColumnNumber​(long locationId)
        Description copied from interface: LocationProvider
        Get the column number within the document, entity, or module containing a particular location
        Specified by:
        getColumnNumber in interface LocationProvider
        Parameters:
        locationId - identifier of the location in question (as passed down the Receiver pipeline)
        Returns:
        the column number within the document, entity, or module, or -1 if this is not available
      • isActionCompleted

        public boolean isActionCompleted​(int action)
        Ask if an action on this StyleElement has been completed
        Parameters:
        action - for example ACTION_VALIDATE
        Returns:
        true if the action has already been performed
      • setActionCompleted

        public void setActionCompleted​(int action)
        Say that an action on this StyleElement has been completed
        Parameters:
        action - for example ACTION_VALIDATE