Copyright ©2001 W3C® (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply.
This specification defines the Document Object Model Level 3 XPath. It provides simple functionalities to access a DOM tree using [XPath 1.0]. This module builds on top of the Document Object Model Level 3 Core [DOM Level 3 Core].
This section describes the status of this document at the time of its publication. Other documents may supersede this document. The latest status of this document series is maintained at the W3C.
This document contains the Document Object Model Level 3 XPath specification.
This is a Working Draft for review by W3C members and other interested parties.
It is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to use W3C Working Drafts as reference material or to cite them as other than "work in progress". This is work in progress and does not imply endorsement by, or the consensus of, either W3C or members of the DOM Working Group or members of the XSL Working Group.
Comments on this document are invited and are to be sent to the public mailing list www-dom@w3.org. An archive is available at http://lists.w3.org/Archives/Public/www-dom/.
This document has been produced as part of the W3C DOM Activity. The authors of this document are the DOM Working Group members.
A list of current W3C Recommendations and other technical documents can be found at http://www.w3.org/TR.
Copyright © 2001 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved.
This document is published under the W3C Document Copyright Notice and License. The bindings within this document are published under the W3C Software Copyright Notice and License. The software license requires "Notice of any changes or modifications to the W3C files, including the date changes were made." Consequently, modified versions of the DOM bindings must document that they do not conform to the W3C standard; in the case of the IDL definitions, the pragma prefix can no longer be 'w3c.org'; in the case of the Java language binding, the package names can no longer be in the 'org.w3c' package.
Note: This section is a copy of the W3C Document Notice and License and could be found at http://www.w3.org/Consortium/Legal/copyright-documents-19990405.
Copyright © 1994-2001 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved.
http://www.w3.org/Consortium/Legal/
Public documents on the W3C site are provided by the copyright holders under the following license. The software or Document Type Definitions (DTDs) associated with W3C specifications are governed by the Software Notice. By using and/or copying this document, or the W3C document from which this statement is linked, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions:
Permission to use, copy, and distribute the contents of this document, or the W3C document from which this statement is linked, in any medium for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the document, or portions thereof, that you use:
When space permits, inclusion of the full text of this NOTICE should be provided. We request that authorship attribution be provided in any software, documents, or other items or products that you create pursuant to the implementation of the contents of this document, or any portion thereof.
No right to create modifications or derivatives of W3C documents is granted pursuant to this license. However, if additional requirements (documented in the Copyright FAQ) are satisfied, the right to create modifications or derivatives is sometimes granted by the W3C to individuals complying with those requirements.
THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE DOCUMENT ARE SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF.
The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to this document or its contents without specific, written prior permission. Title to copyright in this document will at all times remain with copyright holders.
Note: This section is a copy of the W3C Software Copyright Notice and License and could be found at http://www.w3.org/Consortium/Legal/copyright-software-19980720
Copyright © 1994-2001 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved.
http://www.w3.org/Consortium/Legal/
This W3C work (including software, documents, or other related items) is being provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions:
Permission to use, copy, and modify this software and its documentation, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications, that you make:
THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders.
XPath 1.0 [XPath 1.0] is becoming an important part of a variety of many specifications including XForms, XPointer, XSL, XML Query, and so on. It is also a clear advantage for user applications which use DOM to be able to use XPath expressions to locate nodes automatically and declaratively. But liveness issues have plagued each attempt to get a list of DOM nodes matching specific criteria, as would be expected for an XPath API. There have also traditionally been model mismatches between DOM and XPath. This proposal specifies new interfaces and approaches to resolving these issues.
This section considers the differences between the Document Object Model [DOM Level 3 Core] and the XPath 1.0 model [XPath 1.0].
The XPath model relies on the XML Information Set [XML Information
set] ands represents 
Character Information Items in a single logical text
node where DOM may have multiple fragmented Text nodes
due to cdata sections, entity references, etc. Instead of returning
multiple nodes where XPath sees a single logical text node, only
the first non-empty DOM Text or
CDATASection node of any logical XPath text will be
returned in the node set. Applications using XPath in an
environment with fragmented text nodes must manually gather the
text of a single logical text node possibly from multiple nodes
beginning with the first Text node or
CDATASection node returned by the implementation.
Note: In an attempt to better implement the XML
Information Set, DOM Level 3 Core [DOM Level 3 Core] adds the
attribute wholeText on the Text interface
for retrieving the whole text for logically-adjacent
Text nodes and the method replaceWholeText
for replacing those nodes.
The XPath model expects namespace nodes for each in-scope
namespace to be attached to each element. DOM and certain
other W3C Information Set conformant implementations only maintain
the declaration of namespaces instead of replicating them on each
Element where they are in-scope. The DOM
implementation of XPath returns a new node of type
XPATH_NAMESPACE_NODE, defined in the XPathNamespace
interface, to properly preserve identity and ordering. This node
type is only visible using the XPath evaluation methods.
The document
order of nodes in the DOM Core has been defined to be
compatible with the 
XPath document order. The XPath DOM is extending the
document order of the DOM Core to include the XPathNamespace nodes.
Element nodes occur before their children. The attribute nodes and
namespace nodes of an element occur before the children of the
element. The namespace nodes are defined to occur before the
attribute nodes. The relative order of namespace nodes is
implementation-dependent. The relative order of attribute nodes is
implementation-dependent. The compareTreePosition
method on the Node interface defined in the DOM Core
must compare the XPathNamespace nodes
using this extending document order if the XPath DOM module is
supported.
A DOM application may use the hasFeature(feature,
version) method of the DOMImplementation
interface with parameter values "XPath" and "3.0" (respectively) to
determine whether or not the event module is supported by the
implementation. In order to fully support this module, an
implementation must also support the "Core" feature defined in the
DOM Level 3 Core specification [DOM Level 3 Core]. Please, refer to
additional information about conformance in the DOM Level 3 Core
specification [DOM Level 3 Core].
A new exception has been created for exceptions specific to these XPath interfaces.
exception XPathException { unsigned short code; }; // XPathExceptionCode const unsigned short INVALID_EXPRESSION_ERR = 1; const unsigned short TYPE_ERR = 2;
INVALID_EXPRESSION_ERRXPathEvaluator. If the
XPathEvaluator was
obtained by casting the document, the expression must be XPath 1.0
with no special extension functions.TYPE_ERRThe evaluation of XPath expressions is provided by
XPathEvaluator, which will provide evaluation of XPath
1.0 expressions with no specialized extension functions or
variables. It is expected that the XPathEvaluator
interface will be implemented on the same object which implements
the Document interface in an implementation which
supports the XPath DOM module. XPathEvaluator
implementations may be available from other sources that may
provide support for new versions of XPath or special extension
functions or variables which are not defined in this
specification.
interface XPathEvaluator { XPathExpression createExpression(in DOMString expression, in XPathNSResolver resolver) raises(XPathException, DOMException); XPathResult createResult(); XPathNSResolver createNSResolver(in Node nodeResolver); XPathResult evaluate(in DOMString expression, in Node contextNode, in XPathNSResolver resolver, in unsigned short type, in XPathResult result) raises(XPathException, DOMException); };
createExpressionexpression of type
DOMStringresolver of type XPathNSResolverresolver permits translation of prefixes
within the XPath expression into appropriate namespace URIs. If
this is specified as null, any namespace prefix
within the expression will result in DOMException
being thrown with the code NAMESPACE_ERR.| The compiled form of the XPath expression. | 
| INVALID_EXPRESSION_ERR: Raised if the expression is not legal
according to the rules of the  | |
| 
 | NAMESPACE_ERR: Raised if the expression contains namespace prefixes
which cannot be resolved by the specified  | 
createNSResolverlookupNamespacePrefix on Node. 
nodeResolver of type
Node| 
 | 
createResultXPathResult object which
may be passed as a parameter to the evaluation methods of this
XPathEvaluator so that a new one is not created on
each call to an evaluation method. 
| An empty  | 
evaluateexpression of type
DOMStringcontextNode of type
Nodecontext is context node for the evaluation of
this XPath expression. If the XPathEvaluator was obtained by
casting the Document then this must be owned by the
same document and must be a Document,
Element, Attribute, Text,
CDATASection, Comment,
ProcessingInstruction, or XPathNamespace node.
If the context node is a Text or a
CDATASection, then the context is interpreted as the
whole logical text node as seen by XPath, unless the node is empty
in which case it may not serve as the XPath context.resolver of type XPathNSResolverresolver permits translation of prefixes
within the XPath expression into appropriate namespace URIs. If
this is specified as null, any namespace prefix
within the expression will result in DOMException
being thrown with the code NAMESPACE_ERR.type of type unsigned
shorttype is specified, then the result
will be coerced to return the specified type relying on XPath
conversions and fail if the desired coercion is not possible. This
must be one of the type codes of XPathResult.result of type XPathResultresult specifies a specific XPathResult to be
reused and returned by this method. If this is specified as null, a
new XPathResult will be
constructed and returned. Any XPathResult which was not
created by this XPathEvaluator may be ignored as
though a null were passed as the parameter.| The result of the evaluation of the XPath expression. | 
| INVALID_EXPRESSION_ERR: Raised if the expression is not legal
according to the rules of the  TYPE_ERR: Raised if the result cannot be converted to return the specified type. | |
| 
 | NAMESPACE_ERR: Raised if the expression contains namespace prefixes
which cannot be resolved by the specified  WRONG_DOCUMENT_ERR: The Node is from a document that is not supported by this XPathEvaluator. NOT_SUPPORTED_ERR: The Node is not a type permitted as an XPath context node. | 
The XPathExpression interface represents a parsed
and resolved XPath expression.
interface XPathExpression { XPathResult evaluate(in Node contextNode, in unsigned short type, in XPathResult result) raises(XPathException, DOMException); };
evaluatecontextNode of type
Nodecontext is context node for the evaluation of
this XPath expression.Document then this must be owned by the same document
and must be a Document, Element,
Attribute, Text,
CDATASection, Comment,
ProcessingInstruction, or XPathNamespace
node.Text or a
CDATASection, then the context is interpreted as the
whole logical text node as seen by XPath, unless the node is empty
in which case it may not serve as the XPath context.type of type unsigned
shorttype is specified, then the result
will be coerced to return the specified type relying on XPath
conversions and fail if the desired coercion is not possible. This
must be one of the type codes of XPathResult.result of type XPathResultresult specifies a specific XPathResult to be
reused and returned by this method. If this is specified as null, a
new XPathResult will be
constructed and returned. Any XPathResult which was not
created by this XPathEvaluator may be
ignored as though a null were passed as the parameter.| The result of the evaluation of the XPath expression. | 
| TYPE_ERR: Raised if the result cannot be converted to return the specified type. | |
| 
 | WRONG_DOCUMENT_ERR: The Node is from a document that is not
supported by the XPathExpression that created this
 NOT_SUPPORTED_ERR: The Node is not a type permitted as an XPath context node. | 
The XPathNSResolver interface permit
prefix strings in the expression to be properly bound
to namespaceURI strings. XPathEvaluator can
construct an implementation of XPathNSResolver from a
node, or the interface may be implemented by any application.
interface XPathNSResolver { DOMString lookupNamespaceURI(in DOMString prefix); };
lookupNamespaceURInull
or empty argument, because the result of doing this is undefined. 
prefix of type
DOMString| 
 | Returns the associated namespace URI or
 | 
The XPathResult interface represents the result of
the evaluation of an XPath expression within the context of a
particular node. Since evaluation of an XPath expression can result
in various result types, this object makes it possible to discover
and manipulate the type and value of the result.
interface XPathResult { // XPathResultType const unsigned short ANY_TYPE = 0; const unsigned short NUMBER_TYPE = 1; const unsigned short STRING_TYPE = 2; const unsigned short BOOLEAN_TYPE = 3; const unsigned short NODE_SET_TYPE = 4; const unsigned short SINGLE_NODE_TYPE = 5; readonly attribute unsigned short resultType; readonly attribute double numberValue; // raises(XPathException) on retrieval readonly attribute DOMString stringValue; // raises(XPathException) on retrieval readonly attribute boolean booleanValue; // raises(XPathException) on retrieval readonly attribute Node singleNodeValue; // raises(XPathException) on retrieval XPathSetIterator getSetIterator(in boolean ordered) raises(XPathException, DOMException); XPathSetSnapshot getSetSnapshot(in boolean ordered) raises(XPathException, DOMException); };
An integer indicating what type of result this is.
ANY_TYPEBOOLEAN_TYPENODE_SET_TYPENUMBER_TYPESINGLE_NODE_TYPENODE_SET_TYPE).NODE_SET_TYPE
should be processed using an ordered iterator, because there is no
order guarantee for a single node.STRING_TYPEbooleanValue of type
boolean, readonly| TYPE_ERR: raised if  | 
numberValue of type
double, readonly| TYPE_ERR: raised if  | 
resultType of type
unsigned short, readonlysingleNodeValue of type
Node, readonly| TYPE_ERR: raised if  | 
stringValue of type
DOMString, readonly| TYPE_ERR: raised if  | 
getSetIteratorXPathSetIterator
which may be used to iterate over the nodes of the set of this
result. 
ordered of type
boolean| An  | 
| TYPE_ERR: raised if  | |
| 
 | INVALID_STATE_ERR: The document has been mutated since the result was returned. | 
getSetSnapshotXPathSetSnapshot
which lists the nodes of the set of this result. Unlike an
iterator, after the snapshot has been requested, document mutation
does not invalidate it. 
ordered of type
boolean| An  | 
| TYPE_ERR: raised if  | |
| 
 | INVALID_STATE_ERR: The document has been mutated since the result was returned. | 
The XPathSetIterator interface iterates the node
set resulting from evaluation of an XPath expression.
interface XPathSetIterator { Node nextNode() raises(DOMException); };
nextNodeXPathResult node set. If
there are no more nodes in the set to be returned by the iterator,
this method returns null. 
| 
 | Returns the next node. | 
| 
 | INVALID_STATE_ERR: The document has been mutated since the node set result was returned. | 
The XPathSetSnapshot interface lists the node set
resulting from an evaluation of an XPath expression as a static
list that is not invalidated or changed by document mutation.
The individual nodes of a XPathSetSnapshot may be
manipulated in the hierarchy and these changes are seen immediately
by users referencing the nodes through the snapshot.
interface XPathSetSnapshot { Node item(in unsigned long index); readonly attribute unsigned long length; };
length of type
unsigned long, readonly0 to length-1 inclusive.itemindexth item in the
collection. If index is greater than or equal to the
number of nodes in the list, this method returns null.
index of type
unsigned long| 
 | The node at the  | 
The XPathNamespace interface is returned by XPathResult
interfaces to represent the XPath namespace node type that DOM
lacks. There is no public constructor for this node type. Attempts
to place it into a hierarchy or a NamedNodeMap result in a
DOMException with the code
HIERARCHY_REQUEST_ERR. This node is read only, so methods
or setting of attributes that would mutate the node result in a
DOMException with the code
NO_MODIFICATION_ALLOWED_ERR.
The core specification describes attributes of the
Node interface that are different for different node
node types but does not describe XPATH_NAMESPACE_NODE,
so here is a description of those attributes for this node type.
All attributes of Node not described in this section
have a null or false value.
ownerDocument matches the
ownerDocument of the ownerElement even if
the element is later adopted.
prefix is the prefix of the namespace represented
by the node.
NodeName is the same as prefix.
NodeType is equal to
XPATH_NAMESPACE_NODE.
namespaceURI is the namespace URI of the namespace
represented by the node.
adoptNode, cloneNode, and
importNode fail on this node type by raising a
DOMException with the code
NOT_SUPPORTED_ERR.
interface XPathNamespace : Node { // XPathNodeType const unsigned short XPATH_NAMESPACE_NODE = 13; readonly attribute Element ownerElement; };
An integer indicating which type of node this is.
Note: There is currently only one type of node which is specific to XPath. The numbers in this list must not collide with the values assigned to core node types.
XPATH_NAMESPACE_NODENamespace.ownerElement of type
Element, readonlyElement on which the namespace was in scope
when it was requested. This does not change on a returned namespace
node even if the document changes such that the namespace goes out
of scope on that element and this node is no
longer found there by XPath.This appendix contains the complete OMG IDL [OMGIDL] for the Level 3 Document Object Model XPath definitions.
The IDL files are also available as: http://www.w3.org/TR/2001/WD-DOM-Level-3-XPath-20011031/idl.zip
// File: xpath.idl
#ifndef _XPATH_IDL_
#define _XPATH_IDL_
#include "dom.idl"
#pragma prefix "dom.w3c.org"
module xpath
{
  typedef dom::DOMString DOMString;
  typedef dom::Node Node;
  typedef dom::Element Element;
  interface XPathNSResolver;
  interface XPathResult;
  interface XPathExpression;
  interface XPathSetIterator;
  interface XPathSetSnapshot;
  exception XPathException {
    unsigned short   code;
  };
  // XPathExceptionCode
  const unsigned short      INVALID_EXPRESSION_ERR         = 1;
  const unsigned short      TYPE_ERR                       = 2;
  interface XPathEvaluator {
    XPathExpression    createExpression(in DOMString expression, 
                                        in XPathNSResolver resolver)
                                        raises(XPathException, 
                                               dom::DOMException);
    XPathResult        createResult();
    XPathNSResolver    createNSResolver(in Node nodeResolver);
    XPathResult        evaluate(in DOMString expression, 
                                in Node contextNode, 
                                in XPathNSResolver resolver, 
                                in unsigned short type, 
                                in XPathResult result)
                                        raises(XPathException, 
                                               dom::DOMException);
  };
  interface XPathExpression {
    XPathResult        evaluate(in Node contextNode, 
                                in unsigned short type, 
                                in XPathResult result)
                                        raises(XPathException, 
                                               dom::DOMException);
  };
  interface XPathNSResolver {
    DOMString          lookupNamespaceURI(in DOMString prefix);
  };
  interface XPathResult {
    // XPathResultType
    const unsigned short      ANY_TYPE                       = 0;
    const unsigned short      NUMBER_TYPE                    = 1;
    const unsigned short      STRING_TYPE                    = 2;
    const unsigned short      BOOLEAN_TYPE                   = 3;
    const unsigned short      NODE_SET_TYPE                  = 4;
    const unsigned short      SINGLE_NODE_TYPE               = 5;
    readonly attribute unsigned short  resultType;
    readonly attribute double          numberValue;
                                        // raises(XPathException) on retrieval
    readonly attribute DOMString       stringValue;
                                        // raises(XPathException) on retrieval
    readonly attribute boolean         booleanValue;
                                        // raises(XPathException) on retrieval
    readonly attribute Node            singleNodeValue;
                                        // raises(XPathException) on retrieval
    XPathSetIterator   getSetIterator(in boolean ordered)
                                        raises(XPathException, 
                                               dom::DOMException);
    XPathSetSnapshot   getSetSnapshot(in boolean ordered)
                                        raises(XPathException, 
                                               dom::DOMException);
  };
  interface XPathSetIterator {
    Node               nextNode()
                                        raises(dom::DOMException);
  };
  interface XPathSetSnapshot {
    Node               item(in unsigned long index);
    readonly attribute unsigned long   length;
  };
  interface XPathNamespace : Node {
    // XPathNodeType
    const unsigned short      XPATH_NAMESPACE_NODE           = 13;
    readonly attribute Element         ownerElement;
  };
};
#endif // _XPATH_IDL_
This appendix contains the complete Java [Java] bindings for the Level 3 Document Object Model XPath.
The Java files are also available as http://www.w3.org/TR/2001/WD-DOM-Level-3-XPath-20011031/java-binding.zip
package org.w3c.dom.xpath;
public class XPathException extends RuntimeException {
    public XPathException(short code, String message) {
       super(message);
       this.code = code;
    }
    public short   code;
    // XPathExceptionCode
    public static final short INVALID_EXPRESSION_ERR    = 1;
    public static final short TYPE_ERR                  = 2;
}
package org.w3c.dom.xpath;
import org.w3c.dom.Node;
import org.w3c.dom.DOMException;
public interface XPathEvaluator {
    public XPathExpression createExpression(String expression, 
                                            XPathNSResolver resolver)
                                            throws XPathException, DOMException;
    public XPathResult createResult();
    public XPathNSResolver createNSResolver(Node nodeResolver);
    public XPathResult evaluate(String expression, 
                                Node contextNode, 
                                XPathNSResolver resolver, 
                                short type, 
                                XPathResult result)
                                throws XPathException, DOMException;
}
package org.w3c.dom.xpath;
import org.w3c.dom.Node;
import org.w3c.dom.DOMException;
public interface XPathExpression {
    public XPathResult evaluate(Node contextNode, 
                                short type, 
                                XPathResult result)
                                throws XPathException, DOMException;
}
package org.w3c.dom.xpath;
public interface XPathNSResolver {
    public String lookupNamespaceURI(String prefix);
}
package org.w3c.dom.xpath;
import org.w3c.dom.Node;
import org.w3c.dom.DOMException;
public interface XPathResult {
    // XPathResultType
    public static final short ANY_TYPE                  = 0;
    public static final short NUMBER_TYPE               = 1;
    public static final short STRING_TYPE               = 2;
    public static final short BOOLEAN_TYPE              = 3;
    public static final short NODE_SET_TYPE             = 4;
    public static final short SINGLE_NODE_TYPE          = 5;
    public short getResultType();
    public double getNumberValue()
                                     throws XPathException;
    public String getStringValue()
                                     throws XPathException;
    public boolean getBooleanValue()
                                     throws XPathException;
    public Node getSingleNodeValue()
                                     throws XPathException;
    public XPathSetIterator getSetIterator(boolean ordered)
                                           throws XPathException, DOMException;
    public XPathSetSnapshot getSetSnapshot(boolean ordered)
                                           throws XPathException, DOMException;
}
package org.w3c.dom.xpath;
import org.w3c.dom.Node;
import org.w3c.dom.DOMException;
public interface XPathSetIterator {
    public Node nextNode()
                         throws DOMException;
}
package org.w3c.dom.xpath;
import org.w3c.dom.Node;
public interface XPathSetSnapshot {
    public Node item(int index);
    public int getLength();
}
package org.w3c.dom.xpath;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
public interface XPathNamespace extends Node {
    // XPathNodeType
    public static final short XPATH_NAMESPACE_NODE      = 13;
    public Element getOwnerElement();
}
This appendix contains the complete ECMAScript [ECMAScript] binding for the Level 3 Document Object Model XPath definitions.
Many people contributed to the DOM specifications (Level 1, 2 or 3), including members of the DOM Working Group and the DOM Interest Group. We especially thank the following:
Andrew Watson (Object Management Group), Andy Heninger (IBM), Angel Diaz (IBM), Arnaud Le Hors (W3C and IBM), Ashok Malhotra (IBM and Microsoft), Ben Chang (Oracle), Bill Smith (Sun), Bill Shea (Merrill Lynch), Bob Sutor (IBM), Chris Lovett (Microsoft), Chris Wilson (Microsoft), David Brownell (Sun), David Ezell (Hewlett Packard Company), David Singer (IBM), Dimitris Dimitriadis (Improve AB), Don Park (invited), Elena Litani (IBM), Eric Vasilik (Microsoft), Gavin Nicol (INSO), Ian Jacobs (W3C), James Clark (invited), James Davidson (Sun), Jared Sorensen (Novell), Jeroen van Rotterdam (X-Hive Corporation), Joe Kesselman (IBM), Joe Lapp (webMethods), Joe Marini (Macromedia), Johnny Stenback (Netscape/AOL), Jon Ferraiolo (Adobe), Jonathan Marsh (Microsoft), Jonathan Robie (Texcel Research and Software AG), Kim Adamson-Sharpe (SoftQuad Software Inc.), Lauren Wood (SoftQuad Software Inc., former chair), Laurence Cable (Sun), Mark Davis (IBM), Mark Scardina (Oracle), Martin Dürst (W3C), Mary Brady (NIST), Mick Goulish (Software AG), Mike Champion (Arbortext and Software AG), Miles Sabin (Cromwell Media), Patti Lutsky (Arbortext), Paul Grosso (Arbortext), Peter Sharpe (SoftQuad Software Inc.), Phil Karlton (Netscape), Philippe Le Hégaret (W3C, W3C team contact and Chair), Ramesh Lekshmynarayanan (Merrill Lynch), Ray Whitmer (iMall, Excite@Home, and Netscape/AOL), Rezaur Rahman (Intel), Rich Rollman (Microsoft), Rick Gessner (Netscape), Rick Jelliffe (invited), Rob Relyea (Microsoft), Scott Isaacs (Microsoft), Sharon Adler (INSO), Steve Byrne (JavaSoft), Tim Bray (invited), Tim Yu (Oracle), Tom Pixley (Netscape/AOL), Vidur Apparao (Netscape), Vinod Anupam (Lucent).
Thanks to all those who have helped to improve this specification by sending suggestions and corrections (Please, keep bugging us with your issues!).
This specification was written in XML. The HTML, OMG IDL, Java and ECMAScript bindings were all produced automatically.
Thanks to Joe English, author of cost, which was used as the basis for producing DOM Level 1. Thanks also to Gavin Nicol, who wrote the scripts which run on top of cost. Arnaud Le Hors and Philippe Le Hégaret maintained the scripts.
After DOM Level 1, we used Xerces as the basis DOM implementation and wish to thank the authors. Philippe Le Hégaret and Arnaud Le Hors wrote the Java programs which are the DOM application.
Thanks also to Jan Kärrman, author of html2ps, which we use in creating the PostScript version of the specification.
Several of the following term definitions have been borrowed or modified from similar definitions in other W3C or standards documents. See the links within the definitions for more information.
Document.
This element node is a child of the Document node. See
Well-Formed
XML Documents in XML [XML].Text or
CDataSection nodes that may be visited sequentially in
document
order without entering, exiting, or passing over
Element, Comment, or
ProcessingInstruction nodes.For the latest version of any W3C specification please consult the list of W3C Technical Reports available at http://www.w3.org/TR.