Class ElementCreator

    • Constructor Detail

      • ElementCreator

        public ElementCreator()
        Construct an ElementCreator. Exists for the benefit of subclasses.
    • Method Detail

      • getItemType

        public ItemType getItemType()
        Get the item type of the value returned by this instruction
        Overrides:
        getItemType in class Instruction
        Returns:
        the item type
      • getCardinality

        public int getCardinality()
        Description copied from class: Expression
        Determine the static cardinality of the expression. This establishes how many items there will be in the result of the expression, at compile time (i.e., without actually evaluating the result.
        Overrides:
        getCardinality in class ParentNodeConstructor
        Returns:
        one of the values Cardinality.ONE_OR_MORE, Cardinality.ZERO_OR_MORE, Cardinality.EXACTLY_ONE, Cardinality.ZERO_OR_ONE, Cardinality.EMPTY. This default implementation returns ZERO_OR_MORE (which effectively gives no information).
      • setBequeathNamespacesToChildren

        public void setBequeathNamespacesToChildren​(boolean inherit)
        Say whether this element causes its children to inherit namespaces
        Parameters:
        inherit - true if namespaces are to be inherited by the children
      • isBequeathNamespacesToChildren

        public boolean isBequeathNamespacesToChildren()
        Ask whether the inherit namespaces flag is set
        Returns:
        true if namespaces constructed on this parent element are to be inherited by its children
      • setInheritNamespacesFromParent

        public void setInheritNamespacesFromParent​(boolean inherit)
        Say whether this element causes inherits namespaces from its parent. True except in XQuery where one direct element constructor forms the immediate content of another (see W3C bug 22334)
        Parameters:
        inherit - true if namespaces are to be inherited from the parent
      • isInheritNamespacesFromParent

        public boolean isInheritNamespacesFromParent()
        Ask whether this element inherits namespaces from its parent. True except in XQuery where one direct element constructor forms the immediate content of another (see W3C bug 22334)
        Returns:
        true if this child element inherits namespaces from its parent element
      • computeSpecialProperties

        public int computeSpecialProperties()
        Get the static properties of this expression (other than its type). The result is bit-signficant. These properties are used for optimizations. In general, if property bit is set, it is true, but if it is unset, the value is unknown.
        Overrides:
        computeSpecialProperties in class Instruction
        Returns:
        a set of flags indicating static properties of this expression
      • suppressValidation

        public void suppressValidation​(int parentValidationMode)
        Suppress validation on contained element constructors, on the grounds that the parent element is already performing validation. The default implementation does nothing.
        Overrides:
        suppressValidation in class Expression
        Parameters:
        parentValidationMode - the kind of validation being performed on the parent expression
      • getElementName

        public abstract NodeName getElementName​(XPathContext context,
                                                NodeInfo copiedNode)
                                         throws XPathException
        Determine (at run-time) the name code of the element being constructed
        Parameters:
        context - the XPath dynamic evaluation context
        copiedNode - for the benefit of xsl:copy, the node being copied; otherwise null
        Returns:
        the integer name code representing the element name
        Throws:
        XPathException - if a failure occurs
      • getNewBaseURI

        public abstract java.lang.String getNewBaseURI​(XPathContext context,
                                                       NodeInfo copiedNode)
        Get the base URI for the element being constructed
        Parameters:
        context - the XPath dynamic evaluation context
        copiedNode - the node being copied (for xsl:copy), otherwise null
        Returns:
        the base URI of the constructed element
      • outputNamespaceNodes

        public abstract void outputNamespaceNodes​(Outputter receiver,
                                                  NodeName nodeName,
                                                  NodeInfo copiedNode)
                                           throws XPathException
        Callback to output namespace bindings for the new element. This method is responsible for ensuring that a namespace binding is always generated for the namespace of the element name itself.
        Parameters:
        receiver - the Outputter where the namespace bindings are to be written
        nodeName - the name of the element being created
        copiedNode - the node being copied (for xsl:copy) or null otherwise
        Throws:
        XPathException - if a dynamic error occurs
      • processLeavingTail

        public TailCall processLeavingTail​(Outputter output,
                                           XPathContext context)
                                    throws XPathException
        Evaluate the instruction to produce a new element node. This method is typically used when there is a parent element or document in a result tree, to which the new element is added.
        Specified by:
        processLeavingTail in interface TailCallReturner
        Specified by:
        processLeavingTail in class Instruction
        Parameters:
        output - the destination for the result
        context - XPath dynamic evaluation context
        Returns:
        null (this instruction never returns a tail call)
        Throws:
        XPathException - if a dynamic error occurs
      • processLeavingTail

        public final TailCall processLeavingTail​(Outputter out,
                                                 XPathContext context,
                                                 NodeInfo copiedNode)
                                          throws XPathException
        Evaluate the instruction to produce a new element node. This method is typically used when there is a parent element or document in a result tree, to which the new element is added.
        Parameters:
        out - The destination for the result
        context - XPath dynamic evaluation context
        copiedNode - null except in the case of xsl:copy, when it is the node being copied; otherwise null
        Returns:
        null (this instruction never returns a tail call)
        Throws:
        XPathException - if a dynamic error occurs
      • setInheritanceFlags

        public void setInheritanceFlags​(java.lang.String flags)
      • getStreamerName

        public java.lang.String getStreamerName()
        Get the (partial) name of a class that supports streaming of this kind of expression
        Overrides:
        getStreamerName in class Expression
        Returns:
        the partial name of a class that can be instantiated to provide streaming support in Saxon-EE, or null if there is no such class