Class SnapshotNode

java.lang.Object
net.sf.saxon.tree.wrapper.VirtualCopy
net.sf.saxon.tree.wrapper.SnapshotNode
All Implemented Interfaces:
Source, SourceLocator, ActiveSource, GNode, GroundedValue, Item, NodeInfo, Sequence, Location, 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.
  • Field Details

  • Constructor Details

    • 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 Details

    • 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
    • getUnicodeStringValue

      public UnicodeString getUnicodeStringValue()
      Get the string value of the item. 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:
      getUnicodeStringValue in interface GroundedValue
      Specified by:
      getUnicodeStringValue in interface Item
      Overrides:
      getUnicodeStringValue in class VirtualCopy
      Returns:
      the string value of the node, as a UnicodeString
    • getParent

      public NodeInfo getParent()
      Get the NodeInfo object representing the parent of this node
      Specified by:
      getParent in interface GNode
      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
    • atomize

      public AtomicSequence atomize() throws XPathException
      Get the typed value of this node
      Specified by:
      atomize in interface Item
      Specified by:
      atomize in interface NodeInfo
      Overrides:
      atomize in class VirtualCopy
      Returns:
      the typed value.
      Throws:
      XPathException - if the node has no typed value, for example if it is an element node with element-only content
    • 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 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 Locator
      Specified by:
      getPublicId in interface NodeInfo
      Specified by:
      getPublicId in interface SourceLocator
      Overrides:
      getPublicId in class VirtualCopy
      Returns:
      A string containing the public identifier, or null if none is available.
      See Also:
    • isAncestorOfPivot

      public boolean isAncestorOfPivot()
      Test whether this node is an ancestor of the pivot node
    • iterateChildAxis

      public SequenceIterator iterateChildAxis(NodePredicate predicate)
      Get an iterator over the child axis, starting at this node; the nodes will be in document order.
      Specified by:
      iterateChildAxis in interface GNode
      Overrides:
      iterateChildAxis in class VirtualCopy
      Parameters:
      predicate - a condition that the nodes must satisfy, or null
      Returns:
      the required iterator
    • iterateDescendantAxis

      public SequenceIterator iterateDescendantAxis(NodePredicate predicate)
      Get an iterator over the descendant axis, starting at this node; the nodes will be in document order.
      Specified by:
      iterateDescendantAxis in interface GNode
      Overrides:
      iterateDescendantAxis in class VirtualCopy
      Parameters:
      predicate - a condition that the nodes must satisfy, or null
      Returns:
      the required iterator
    • iterateDescendantOrSelfAxis

      public SequenceIterator iterateDescendantOrSelfAxis(NodePredicate predicate)
      Get an iterator over the descendant-or-self axis, starting at this node; the nodes will be in document order.
      Specified by:
      iterateDescendantOrSelfAxis in interface GNode
      Overrides:
      iterateDescendantOrSelfAxis in class VirtualCopy
      Parameters:
      predicate - a condition that the nodes must satisfy, or null
      Returns:
      the required iterator
    • iterateFollowingSiblingAxis

      public SequenceIterator iterateFollowingSiblingAxis(NodePredicate predicate)
      Get an iterator over the following-sibling axis, starting at this node; the nodes will be in document order.
      Specified by:
      iterateFollowingSiblingAxis in interface GNode
      Overrides:
      iterateFollowingSiblingAxis in class VirtualCopy
      Parameters:
      predicate - a condition that the nodes must satisfy, or null
      Returns:
      the required iterator
    • iteratePrecedingSiblingAxis

      public SequenceIterator iteratePrecedingSiblingAxis(NodePredicate predicate)
      Get an iterator over the preceding-sibling axis, starting at this node; the nodes will be in reverse document order.
      Specified by:
      iteratePrecedingSiblingAxis in interface GNode
      Overrides:
      iteratePrecedingSiblingAxis in class VirtualCopy
      Parameters:
      predicate - a condition that the nodes must satisfy, or null
      Returns:
      the required iterator
    • iterateFollowingAxis

      public SequenceIterator iterateFollowingAxis(NodePredicate predicate)
      Get an iterator over the following axis, starting at this node; the nodes will be in document order.
      Specified by:
      iterateFollowingAxis in interface GNode
      Overrides:
      iterateFollowingAxis in class VirtualCopy
      Parameters:
      predicate - a condition that the nodes must satisfy, or null
      Returns:
      the required iterator
    • iteratePrecedingAxis

      public SequenceIterator iteratePrecedingAxis(NodePredicate predicate)
      Get an iterator over the preceding axis, starting at this node; the nodes will be in reverse document order.
      Specified by:
      iteratePrecedingAxis in interface GNode
      Overrides:
      iteratePrecedingAxis in class VirtualCopy
      Parameters:
      predicate - a condition that the nodes must satisfy, or null
      Returns:
      the required iterator
    • 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