Class SnapshotNode

  • All Implemented Interfaces:
    javax.xml.transform.Source, javax.xml.transform.SourceLocator, GroundedValue, Item, NodeInfo, Sequence, Location, org.xml.sax.Locator

    public class SnapshotNode
    extends VirtualCopy
    implements NodeInfo
    This class represents a node within a tree produced by the snapshot() function, as a virtual copy of the relevant nodes in another tree. It specializes VirtualCopy, which implements a deep copy as produced by the copy-of() function.
    • Constructor Detail

      • SnapshotNode

        protected SnapshotNode​(NodeInfo base,
                               NodeInfo pivot)
        Protected constructor: create a virtual copy of a node
        Parameters:
        base - the node in the source tree to which the new node should correspond
        pivot - the pivot node is the node supplied as argument to the snapshot() function; the snapshot includes all ancestors of this node, and all descendants of this node (plus their attributes and namespaces)
    • Method Detail

      • makeSnapshot

        public static SnapshotNode makeSnapshot​(NodeInfo original)
        Public factory method: apply the snapshot function to a node
        Parameters:
        original - the node to be copied
        Returns:
        the snapshot.
      • wrap

        protected SnapshotNode wrap​(NodeInfo node)
        Wrap a node in a VirtualCopy.
        Overrides:
        wrap in class VirtualCopy
        Parameters:
        node - the node to be wrapped
        Returns:
        a virtual copy of the node
      • getStringValueCS

        public java.lang.CharSequence getStringValueCS()
        Get the value of the item as a CharSequence. The string value for a node below the pivot is the same as the string value for the corresponding node in the source tree; the string value for a node above the pivot is the same as the string value of the pivot. For attributes and namespaces the string value is the same as in the original tree.
        Specified by:
        getStringValueCS in interface GroundedValue
        Specified by:
        getStringValueCS in interface Item
        Overrides:
        getStringValueCS in class VirtualCopy
        Returns:
        the string value of the item
        See Also:
        Item.getStringValue()
      • getParent

        public NodeInfo getParent()
        Get the NodeInfo object representing the parent of this node
        Specified by:
        getParent in interface NodeInfo
        Overrides:
        getParent in class VirtualCopy
        Returns:
        the parent of this node; null if this node has no parent
      • getRoot

        public NodeInfo getRoot()
        Get the root node of the tree containing this node
        Specified by:
        getRoot in interface NodeInfo
        Overrides:
        getRoot in class VirtualCopy
        Returns:
        the NodeInfo representing the top-level ancestor of this node. This will not necessarily be a document node
      • copy

        public void copy​(Receiver out,
                         int copyOptions,
                         Location locationId)
                  throws XPathException
        Copy this node to a given outputter
        Specified by:
        copy in interface NodeInfo
        Overrides:
        copy in class VirtualCopy
        Parameters:
        out - the Receiver to which the node should be copied
        copyOptions - a selection of the options defined in CopyOptions
        locationId - Identifies the location of the instruction
        Throws:
        XPathException - if any downstream error occurs
      • isId

        public boolean isId()
        Determine whether this node has the is-id property
        Specified by:
        isId in interface NodeInfo
        Overrides:
        isId in class VirtualCopy
        Returns:
        true if the node is an ID
      • isIdref

        public boolean isIdref()
        Determine whether this node has the is-idref property
        Specified by:
        isIdref in interface NodeInfo
        Overrides:
        isIdref in class VirtualCopy
        Returns:
        true if the node is an IDREF or IDREFS element or attribute
      • isNilled

        public boolean isNilled()
        Determine whether the node has the is-nilled property
        Specified by:
        isNilled in interface NodeInfo
        Overrides:
        isNilled in class VirtualCopy
        Returns:
        true if the node has the is-nilled property
      • getPublicId

        public java.lang.String getPublicId()
        Return the public identifier for the current document event.

        The return value is the public identifier of the document entity or of the external parsed entity in which the markup that triggered the event appears.

        Specified by:
        getPublicId in interface Location
        Specified by:
        getPublicId in interface org.xml.sax.Locator
        Specified by:
        getPublicId in interface NodeInfo
        Specified by:
        getPublicId in interface javax.xml.transform.SourceLocator
        Overrides:
        getPublicId in class VirtualCopy
        Returns:
        A string containing the public identifier, or null if none is available.
        See Also:
        VirtualCopy.getSystemId()
      • iterateAxis

        public AxisIterator iterateAxis​(int axisNumber,
                                        java.util.function.Predicate<? super NodeInfo> nodeTest)
        Return an iteration over all the nodes reached by the given axis from this node that match a given NodeTest
        Specified by:
        iterateAxis in interface NodeInfo
        Overrides:
        iterateAxis in class VirtualCopy
        Parameters:
        axisNumber - an integer identifying the axis; one of the constants defined in class net.sf.saxon.om.Axis
        nodeTest - A pattern to be matched by the returned nodes; nodes that do not match this pattern are not included in the result
        Returns:
        an AxisIterator that scans the nodes reached by the axis in turn.
        Throws:
        java.lang.UnsupportedOperationException - if the namespace axis is requested and this axis is not supported for this implementation.
        See Also:
        AxisInfo
      • isIncludedInCopy

        protected boolean isIncludedInCopy​(NodeInfo sourceNode)
        Description copied from class: VirtualCopy
        Ask whether a node in the source tree is within the scope of this virtual copy
        Overrides:
        isIncludedInCopy in class VirtualCopy
        Parameters:
        sourceNode - the node being tested
        Returns:
        true if the node is within the scope of the subtree