# Additional Saxon methods

Saxon's implementation of `XPathExpression` (namely `net.sf.saxon.xpath.XPathExpressionImpl`) provides additional methods for evaluating the XPath expression. In particular the `rawIterator()` method with no arguments returns a Saxon `SequenceIterator` which allows the application to process the results of any XPath expression, with no conversion: all values will be represented using a native Saxon class, for example a node will be represented as a `NodeInfo` and a QName as a `QNameValue`. The `NodeInfo` interface is described in the next section.

The native Saxon methods rely on the dynamic context being established using separate `setXX()` calls on the `XPathExpressionImpl` object. If these methods are used, the `XPathExpression` object will not be thread-safe.

XPath itself provides no sorting capability. You can therefore specify a sort order in which you want the results of an expression returned. This is done by nominating another expression, via the `setSortKey` method: this second expression is applied to each item in the result sequence, and its value determines the position of that item in the sorted result order.

An alternative approach if you need sorting would be to use XQuery rather than XPath.

You can call methods directly on the `NodeInfo` object to get information about a node: for example `getDisplayName()` gets the name of the node in a form suitable for display, and `getStringValue()` gets the string value of the node, as defined in the XPath data model. You can also use the node as the context node for evaluation of subsequent expressions.

Next