Class DocumentInstr

  • All Implemented Interfaces:
    ExportAgent, InstructionWithComplexContent, ValidatingInstruction, Locatable, IdentityComparable, Traceable

    public class DocumentInstr
    extends ParentNodeConstructor
    An instruction to create a document node. This corresponds to the xsl:document-node instruction in XSLT. It is also used to support the document node constructor expression in XQuery, and is generated implicitly within an xsl:variable that constructs a temporary tree.

    Conceptually it represents an XSLT instruction xsl:document-node, with no attributes, whose content is a complex content constructor for the children of the document node.

    • Constructor Detail

      • DocumentInstr

        public DocumentInstr​(boolean textOnly,
                             UnicodeString constantText)
        Create a document constructor instruction
        Parameters:
        textOnly - true if the content contains text nodes only
        constantText - if the content contains text nodes only and the text is known at compile time, supplies the textual content
    • Method Detail

      • operands

        public java.lang.Iterable<Operand> operands()
        Description copied from class: Expression
        Get the immediate sub-expressions of this expression, with information about the relationship of each expression to its parent expression.

        If the expression is a Callable, then it is required that the order of the operands returned by this function is the same as the order of arguments supplied to the corresponding call() method.

        Specified by:
        operands in class Instruction
        Returns:
        an iterator containing the sub-expressions of this expression
      • isTextOnly

        public boolean isTextOnly()
        Determine whether this is a "text only" document: essentially, an XSLT xsl:variable that contains a single text node or xsl:value-of instruction.
        Returns:
        true if this is a text-only document
      • getConstantText

        public UnicodeString getConstantText()
        For a text-only instruction, determine if the text value is fixed and if so return it; otherwise return null
        Returns:
        the fixed text value if appropriate; otherwise null
      • computeSpecialProperties

        protected 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
      • getStringValueExpression

        public Expression getStringValueExpression()
        In the case of a text-only instruction (xsl:variable containing a text node or one or more xsl:value-of instructions), return an expression that evaluates to the textual content as an instance of xs:untypedAtomic
        Returns:
        an expression that evaluates to the textual content
      • copy

        public Expression copy​(RebindingMap rebindings)
        Copy an expression. This makes a deep copy.
        Specified by:
        copy in class Expression
        Parameters:
        rebindings - the rebinding map
        Returns:
        the copy of the original expression
      • evaluateItem

        public NodeInfo evaluateItem​(XPathContext context)
                              throws XPathException
        Evaluate as an item.
        Overrides:
        evaluateItem in class Instruction
        Parameters:
        context - The context in which the expression is to be evaluated
        Returns:
        the node or atomic value that results from evaluating the expression; or null to indicate that the result is an empty sequence
        Throws:
        XPathException - if any dynamic error occurs evaluating the expression
      • getInstructionNameCode

        public int getInstructionNameCode()
        Get the name of this instruction for diagnostic and tracing purposes (the string "document-constructor")
        Overrides:
        getInstructionNameCode in class Instruction
        Returns:
        a code identifying the instruction: typically but not always the fingerprint of a name in the XSLT namespace
      • export

        public void export​(ExpressionPresenter out)
                    throws XPathException
        Diagnostic print of expression structure. The abstract expression tree is written to the supplied output destination.
        Specified by:
        export in interface ExportAgent
        Specified by:
        export in class Expression
        Parameters:
        out - the expression presenter used to display the structure
        Throws:
        XPathException - if the export fails, for example if an expression is found that won't work in the target environment.
      • 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