com.icl.saxon.expr
Class NodeSetExtent

java.lang.Object
  |
  +--com.icl.saxon.expr.Expression
        |
        +--com.icl.saxon.expr.Value
              |
              +--com.icl.saxon.expr.NodeSetValue
                    |
                    +--com.icl.saxon.expr.NodeSetExtent
All Implemented Interfaces:
org.w3c.dom.NodeList

public class NodeSetExtent
extends NodeSetValue
implements org.w3c.dom.NodeList

A node-set value implemented extensionally.


Fields inherited from class com.icl.saxon.expr.Value
ANY, BOOLEAN, NODESET, NUMBER, OBJECT, STRING
 
Fields inherited from class com.icl.saxon.expr.Expression
staticContext
 
Constructor Summary
NodeSetExtent()
          Default constructor creates an empty node set
NodeSetExtent(NodeEnumeration enum)
          Construct a node-set containing all the nodes in a NodeEnumeration
NodeSetExtent(NodeInfo[] nodes)
          Construct a node-set given the set of nodes as an array
NodeSetExtent(java.util.Vector nodes)
          Deprecated. It is more efficient to supply an array NodeInfo[]
 
Method Summary
 void append(NodeInfo node)
          Append a node to the node-set.
 java.lang.String asString()
          Convert to string value
 boolean contains(NodeInfo node)
          Determine whether a particular node is present in the nodeset.
 NodeEnumeration enumerate()
          Return an enumeration of this nodeset value.
 int getCount()
          Count the nodes in the node-set.
 NodeInfo getFirst()
          Get the first node in the nodeset (in document order)
 int getLength()
          return the number of nodes in the list (DOM method)
 NodeInfo[] getNodes()
          Return the nodes in the node-set as a Vector.
 boolean isEmpty()
          Determine whether the node-set is empty.
 boolean isSingular()
          Determine whether the node-set is singular, that is, whether it has a single member.
 boolean isSorted()
          Test whether the value is known to be sorted
 org.w3c.dom.Node item(int index)
          Return the n'th item in the list (DOM method)
 NodeInfo selectFirst(Context context)
          Return the first node in the nodeset (in document order)
 void setSorted(boolean isSorted)
          Set a flag to indicate whether the nodes are sorted.
 Expression simplify()
          Simplify the expression
 NodeSetValue sort()
          Sort the nodes into document order.
 java.lang.String toString()
          Diagnostic output: get a string representation of the nodeset
 
Methods inherited from class com.icl.saxon.expr.NodeSetValue
asBoolean, asNumber, compare, enumerate, equals, evaluate, evaluateAsNodeSet, getDataType, notEquals
 
Methods inherited from class com.icl.saxon.expr.Value
getDependencies, inverse, numericCompare, reduce, stringToNumber
 
Methods inherited from class com.icl.saxon.expr.Expression
containsReferences, evaluateAsBoolean, evaluateAsNumber, evaluateAsString, getStaticContext, make, outputStringValue, setStaticContext, usesCurrent
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

NodeSetExtent

public NodeSetExtent()
Default constructor creates an empty node set

NodeSetExtent

public NodeSetExtent(NodeInfo[] nodes)
Construct a node-set given the set of nodes as an array
Parameters:
nodes - An array whose elements must be NodeInfo objects
length - The number of significant elements in the array; any excess is ignored

NodeSetExtent

public NodeSetExtent(java.util.Vector nodes)
Deprecated. It is more efficient to supply an array NodeInfo[]

Construct a node-set given the set of nodes as a Vector
Parameters:
nodes - a Vector whose elements must be NodeInfo objects

NodeSetExtent

public NodeSetExtent(NodeEnumeration enum)
              throws org.xml.sax.SAXException
Construct a node-set containing all the nodes in a NodeEnumeration
Method Detail

append

public void append(NodeInfo node)
Append a node to the node-set. This is used only when building key indexes. The node-set must be sorted; the new node must follow the others in document order. The new node is not added if it is the same as the last node currently in the node-set.

simplify

public Expression simplify()
                    throws org.xml.sax.SAXException
Simplify the expression
Overrides:
simplify in class Value
Following copied from class: com.icl.saxon.expr.Value
Returns:
the simplified expression

setSorted

public void setSorted(boolean isSorted)
Set a flag to indicate whether the nodes are sorted. Used when the creator of the node-set knows that they are already in document order.
Overrides:
setSorted in class NodeSetValue
Parameters:
isSorted - true if the caller wishes to assert that the nodes are in document order and do not need to be further sorted

isSorted

public boolean isSorted()
Test whether the value is known to be sorted
Overrides:
isSorted in class NodeSetValue
Returns:
true if the value is known to be sorted in document order, false if it is not known whether it is sorted.

asString

public java.lang.String asString()
                          throws org.xml.sax.SAXException
Convert to string value
Overrides:
asString in class NodeSetValue
Returns:
the value of the first node in the node-set if there is one, otherwise an empty string

getCount

public int getCount()
             throws org.xml.sax.SAXException
Count the nodes in the node-set. Note this will sort the node set if necessary, to make sure there are no duplicates.
Overrides:
getCount in class NodeSetValue

isEmpty

public boolean isEmpty()
                throws org.xml.sax.SAXException
Determine whether the node-set is empty. This is more efficient than testing getCount()==0, because it doesn't risk triggering a sort.
Overrides:
isEmpty in class NodeSetValue

isSingular

public boolean isSingular()
Determine whether the node-set is singular, that is, whether it has a single member. This is more efficient that testing getCount()==1, because it doesn't risk triggering a sort.
Overrides:
isSingular in class NodeSetValue

contains

public boolean contains(NodeInfo node)
Determine whether a particular node is present in the nodeset.
Overrides:
contains in class NodeSetValue

getNodes

public NodeInfo[] getNodes()
Return the nodes in the node-set as a Vector. Note that they will only be in sorted order (with duplicates eliminated) if sort() is called first.
Overrides:
getNodes in class NodeSetValue
Returns:
an array containing the NodeInfo objects representing the nodes (possibly unsorted and including duplicates)

sort

public NodeSetValue sort()
                  throws org.xml.sax.SAXException
Sort the nodes into document order. This does nothing if the nodes are already known to be sorted; to force a sort, call setSorted(false)
Overrides:
sort in class NodeSetValue
Returns:
the same NodeSetValue, after sorting. (The reason for returning this is that it makes life easier for the XSL compiler).

getFirst

public NodeInfo getFirst()
                  throws org.xml.sax.SAXException
Get the first node in the nodeset (in document order)
Overrides:
getFirst in class NodeSetValue
Returns:
the first node, or null if the nodeset is empty

selectFirst

public NodeInfo selectFirst(Context context)
                     throws org.xml.sax.SAXException
Return the first node in the nodeset (in document order)
Parameters:
context - The context for the evaluation: not used
Returns:
the NodeInfo of the first node in document order, or null if the node-set is empty.

enumerate

public NodeEnumeration enumerate()
                          throws org.xml.sax.SAXException
Return an enumeration of this nodeset value.
Overrides:
enumerate in class NodeSetValue

toString

public java.lang.String toString()
Diagnostic output: get a string representation of the nodeset
Overrides:
toString in class java.lang.Object

getLength

public int getLength()
return the number of nodes in the list (DOM method)
Specified by:
getLength in interface org.w3c.dom.NodeList

item

public org.w3c.dom.Node item(int index)
Return the n'th item in the list (DOM method)
Specified by:
item in interface org.w3c.dom.NodeList