org.apache.xpath.objects

## Class XNodeSet

- java.lang.Object
- - org.apache.xpath.Expression
  - - org.apache.xpath.objects.XObject
    - - org.apache.xpath.axes.NodeSequence
      - - org.apache.xpath.objects.XNodeSet

All Implemented Interfaces:
  java.io.Serializable, java.lang.Cloneable, SourceLocator, DTMIterator, PathComponent, ExpressionNode, XPathVisitable

Direct Known Subclasses:
  XNodeSetForDOM, XNull

    public class XNodeSet
    extends NodeSequence

This class represents an XPath nodeset object, and is capable of converting the nodeset to other types, such as a string.

See Also:
  Serialized Form
Usage:

### Field Summary

### Fields inherited from class org.apache.xpath.objects.XObject

`CLASS_BOOLEAN, CLASS_NODESET, CLASS_NULL, CLASS_NUMBER, CLASS_RTREEFRAG, CLASS_STRING, CLASS_UNKNOWN, CLASS_UNRESOLVEDVARIABLE`

### Fields inherited from interface org.apache.xml.dtm.DTMIterator

`FILTER_ACCEPT, FILTER_REJECT, FILTER_SKIP`

### Constructor Summary

Constructors
Constructor and Description
`XNodeSet(DTMIterator val)` Construct a XNodeSet object.
`XNodeSet(DTMManager dtmMgr)` Construct an empty XNodeSet object.
`XNodeSet(int n, DTMManager dtmMgr)` Construct a XNodeSet object for one node.
`XNodeSet(XNodeSet val)` Construct a XNodeSet object.

### Method Summary

Methods
`void` `appendToFsb(FastStringBuffer fsb)` Cast result object to a string.
`boolean` `bool()` Cast result object to a boolean.
`boolean` `boolWithSideEffects()` Cast result object to a boolean, but allow side effects, such as the incrementing of an iterator.
`boolean` `compare(XObject obj2, org.apache.xpath.objects.Comparator comparator)` Tell if one object is less than the other.
`void` `dispatchCharactersEvents(ContentHandler ch)` Directly call the characters method on the passed ContentHandler for the string-value.
`boolean` `equals(XObject obj2)` Tell if two objects are functionally equal.
`XObject` `getFresh()` Get a fresh copy of the object.
`double` `getNumberFromNode(int n)` Get numeric value of the string conversion from a single node.
`XMLString` `getStringFromNode(int n)` Get the string conversion from a single node.
`int` `getType()` Tell that this is a CLASS_NODESET.
`java.lang.String` `getTypeString()` Given a request type, return the equivalent string.
`boolean` `greaterThan(XObject obj2)` Tell if one object is less than the other.
`boolean` `greaterThanOrEqual(XObject obj2)` Tell if one object is less than the other.
`DTMIterator` `iter()` Cast result object to a nodelist.
`DTMIterator` `iterRaw()` Return the iterator without cloning, etc.
`boolean` `lessThan(XObject obj2)` Tell if one object is less than the other.
`boolean` `lessThanOrEqual(XObject obj2)` Tell if one object is less than or equal to the other.
`NodeSetDTM` `mutableNodeset()` Cast result object to a mutableNodeset.
`NodeList` `nodelist()` Cast result object to a nodelist.
`NodeIterator` `nodeset()` Cast result object to a nodelist.
`boolean` `notEquals(XObject obj2)` Tell if two objects are functionally not equal.
`double` `num()` Cast result object to a number.
`double` `numWithSideEffects()` Cast result object to a number, but allow side effects, such as the incrementing of an iterator.
`java.lang.Object` `object()` Return a java object that's closest to the representation that should be handed to an extension.
`void` `release(DTMIterator iter)`
`java.lang.String` `str()` Cast result object to a string.
`XMLString` `xstr()` Cast result object to an XMLString.

### Methods inherited from class org.apache.xpath.axes.NodeSequence

`allowDetachToRelease, clone, cloneWithReset, detach, fixupVariables, getAnalysisBits, getAxis, getContainedIter, getCurrentNode, getCurrentPos, getDTM, getDTMManager, getExpandEntityReferences, getLength, getRoot, getWhatToShow, hasCache, isDocOrdered, isFresh, isMutable, item, nextNode, previousNode, reset, runTo, setCurrentPos, setItem, setIter, setRoot, setShouldCacheNodes`

### Methods inherited from class org.apache.xpath.objects.XObject

`callVisitors, castToType, create, create, deepEquals, destruct, execute, rtf, rtf, rtree, rtree, toString`

### Methods inherited from class org.apache.xpath.Expression

`asIterator, asIteratorRaw, asNode, assertion, bool, canTraverseOutsideSubtree, error, execute, execute, execute, executeCharsToContentHandler, exprAddChild, exprGetChild, exprGetNumChildren, exprGetParent, exprSetParent, getColumnNumber, getExpressionOwner, getLineNumber, getPublicId, getSystemId, isNodesetExpr, isStableNumber, num, warn, xstr`

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### XNodeSet

    public XNodeSet(DTMIterator val)

Construct a XNodeSet object.

Parameters:
  `val` - Value of the XNodeSet object

#### XNodeSet

    public XNodeSet(XNodeSet val)

Construct a XNodeSet object.

Parameters:
  `val` - Value of the XNodeSet object

#### XNodeSet

    public XNodeSet(DTMManager dtmMgr)

Construct an empty XNodeSet object. This is used to create a mutable nodeset to which random nodes may be added.

#### XNodeSet

    public XNodeSet(int n,
            DTMManager dtmMgr)

Construct a XNodeSet object for one node.

Parameters:
  `n` - Node to add to the new XNodeSet object

### Method Detail

#### getType

    public int getType()

Tell that this is a CLASS_NODESET.

Overrides:
  `getType` in class `XObject`
Returns:
  type CLASS_NODESET

#### getTypeString

    public java.lang.String getTypeString()

Given a request type, return the equivalent string. For diagnostic purposes.

Overrides:
  `getTypeString` in class `XObject`
Returns:
  type string "#NODESET"

#### getNumberFromNode

    public double getNumberFromNode(int n)

Get numeric value of the string conversion from a single node.

Parameters:
  `n` - Node to convert
Returns:
  numeric value of the string conversion from a single node.

#### num

    public double num()

Cast result object to a number.

Overrides:
  `num` in class `XObject`
Returns:
  numeric value of the string conversion from the next node in the NodeSetDTM, or NAN if no node was found

#### numWithSideEffects

    public double numWithSideEffects()

Cast result object to a number, but allow side effects, such as the incrementing of an iterator.

Overrides:
  `numWithSideEffects` in class `XObject`
Returns:
  numeric value of the string conversion from the next node in the NodeSetDTM, or NAN if no node was found

#### bool

    public boolean bool()

Cast result object to a boolean.

Overrides:
  `bool` in class `XObject`
Returns:
  True if there is a next node in the nodeset

#### boolWithSideEffects

    public boolean boolWithSideEffects()

Cast result object to a boolean, but allow side effects, such as the incrementing of an iterator.

Overrides:
  `boolWithSideEffects` in class `XObject`
Returns:
  True if there is a next node in the nodeset

#### getStringFromNode

    public XMLString getStringFromNode(int n)

Get the string conversion from a single node.

Parameters:
  `n` - Node to convert
Returns:
  the string conversion from a single node.

#### dispatchCharactersEvents

    public void dispatchCharactersEvents(ContentHandler ch)
                                  throws SAXException

Directly call the characters method on the passed ContentHandler for the string-value. Multiple calls to the ContentHandler's characters methods may well occur for a single call to this method.

Overrides:
  `dispatchCharactersEvents` in class `XObject`
Parameters:
  `ch` - A non-null reference to a ContentHandler.
Throws:
  `SAXException`

#### xstr

    public XMLString xstr()

Cast result object to an XMLString.

Overrides:
  `xstr` in class `XObject`
Returns:
  The document fragment node data or the empty string.

#### appendToFsb

    public void appendToFsb(FastStringBuffer fsb)

Cast result object to a string.

Overrides:
  `appendToFsb` in class `XObject`

#### str

    public java.lang.String str()

Cast result object to a string.

Overrides:
  `str` in class `XObject`
Returns:
  the string conversion from the next node in the nodeset or "" if there is no next node

#### object

    public java.lang.Object object()

Return a java object that's closest to the representation that should be handed to an extension.

Overrides:
  `object` in class `XObject`
Returns:
  The object that this class wraps

#### nodeset

    public NodeIterator nodeset()
                         throws TransformerException

Cast result object to a nodelist.

Overrides:
  `nodeset` in class `XObject`
Returns:
  a NodeIterator.
Throws:
  `TransformerException`

#### nodelist

    public NodeList nodelist()
                      throws TransformerException

Cast result object to a nodelist.

Overrides:
  `nodelist` in class `XObject`
Returns:
  a NodeList.
Throws:
  `TransformerException`

#### iterRaw

    public DTMIterator iterRaw()

Return the iterator without cloning, etc.

#### release

    public void release(DTMIterator iter)

#### iter

    public DTMIterator iter()

Cast result object to a nodelist.

Overrides:
  `iter` in class `XObject`
Returns:
  The nodeset as a nodelist

#### getFresh

    public XObject getFresh()

Get a fresh copy of the object. For use with variables.

Overrides:
  `getFresh` in class `XObject`
Returns:
  A fresh nodelist.

#### mutableNodeset

    public NodeSetDTM mutableNodeset()

Cast result object to a mutableNodeset.

Overrides:
  `mutableNodeset` in class `XObject`
Returns:
  The nodeset as a mutableNodeset

#### compare

    public boolean compare(XObject obj2,
                  org.apache.xpath.objects.Comparator comparator)
                    throws TransformerException

Tell if one object is less than the other.

Parameters:
  `obj2` - Object to compare this nodeset to
  `comparator` - Comparator to use
Returns:
  See the comments below for each object type comparison
Throws:
  `TransformerException`

#### lessThan

    public boolean lessThan(XObject obj2)
                     throws TransformerException

Tell if one object is less than the other.

Overrides:
  `lessThan` in class `XObject`
Parameters:
  `obj2` - object to compare this nodeset to
Returns:
  see this.compare(...)
Throws:
  `TransformerException`

#### lessThanOrEqual

    public boolean lessThanOrEqual(XObject obj2)
                            throws TransformerException

Tell if one object is less than or equal to the other.

Overrides:
  `lessThanOrEqual` in class `XObject`
Parameters:
  `obj2` - object to compare this nodeset to
Returns:
  see this.compare(...)
Throws:
  `TransformerException`

#### greaterThan

    public boolean greaterThan(XObject obj2)
                        throws TransformerException

Tell if one object is less than the other.

Overrides:
  `greaterThan` in class `XObject`
Parameters:
  `obj2` - object to compare this nodeset to
Returns:
  see this.compare(...)
Throws:
  `TransformerException`

#### greaterThanOrEqual

    public boolean greaterThanOrEqual(XObject obj2)
                               throws TransformerException

Tell if one object is less than the other.

Overrides:
  `greaterThanOrEqual` in class `XObject`
Parameters:
  `obj2` - object to compare this nodeset to
Returns:
  see this.compare(...)
Throws:
  `TransformerException`

#### equals

    public boolean equals(XObject obj2)

Tell if two objects are functionally equal.

Overrides:
  `equals` in class `XObject`
Parameters:
  `obj2` - object to compare this nodeset to
Returns:
  see this.compare(...)
Throws:
  `TransformerException`

#### notEquals

    public boolean notEquals(XObject obj2)
                      throws TransformerException

Tell if two objects are functionally not equal.

Overrides:
  `notEquals` in class `XObject`
Parameters:
  `obj2` - object to compare this nodeset to
Returns:
  see this.compare(...)
Throws:
  `TransformerException`