diff --git a/java/external/xdocs/dom/xpath/Overview.html b/java/external/xdocs/dom/xpath/Overview.html new file mode 100644 index 0000000..a2e049b --- /dev/null +++ b/java/external/xdocs/dom/xpath/Overview.html @@ -0,0 +1,122 @@ + + + +
+This document is also available in these non-normative formats: XML file, plain text, PostScript file, PDF file, single HTML file, and ZIP file.
+Copyright ©2004 W3C® (MIT, ERCIM, 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 section describes the status of this document at the + time of its publication. Other documents may supersede this + document. A list of current W3C publications and the latest + revision of this technical report can be found in the W3C technical reports index + at http://www.w3.org/TR/. +
+ This is a Working + Group Note of "DOM Level 3 XPath" and is based on the feedback + received during the Last Call period. The W3C DOM Working + Group participants do not expect to provide two interoperable + implementations of this module, using the same + binding. Implementation feedbacks are however welcome and + have to be sent to the public mailing list www-dom@w3.org (public archive). Other W3C Working Groups + may continue the work and provide implementations of this + document. +
+ Individuals or organizations are also invited to send a message + to the public mailing list if they intend to produce an + implementation of this module. +
+ Publication as a Working Group Note does not imply endorsement + by the W3C Membership. This is a draft document and may be + updated, replaced or obsoleted by other documents at any time. +
+ This document has been produced as part of the W3C DOM + Activity. The authors of this document are the DOM Working + Group members. +
+ An implementation + report is also available. +
+ Patent disclosures relevant to this specification may be found + on the Working Group's patent + disclosure page. +
Many people contributed to the DOM specifications (Level 1, 2 or 3), + including participants of the DOM Working Group and the DOM Interest Group. We + especially thank the following:
+ Andrew Clover, 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 and invited expert), 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 former Chair), Ramesh + Lekshmynarayanan (Merrill Lynch), Ray Whitmer (iMall, Excite@Home, + and Netscape/AOL, Chair), 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!). +
+ Special thanks to the DOM + Conformance Test Suites contributors: Curt Arnold, Fred Drake, + Mary Brady (NIST), Rick Rivello (NIST), Robert Clary (Netscape). +
++ 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. +
+ Copyright © 2004 World + Wide Web Consortium, (Massachusetts Institute of + Technology, European + Research Consortium for Informatics and Mathematics, 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/2002/copyright-documents-20021231. +
++ Copyright © 2004 World Wide Web Consortium, (Massachusetts Institute of + Technology, European + Research Consortium for Informatics and Mathematics, Keio University). All Rights + Reserved. +
+ http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231 +
+ Public documents on the W3C site are provided by the copyright + holders under the following license. 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 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/2002/copyright-software-20021231 +
++ Copyright © 2004 World Wide Web Consortium, (Massachusetts Institute of + Technology, European + Research Consortium for Informatics and Mathematics, Keio University). All Rights + Reserved. +
+ http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 +
+ This work (and included software, documentation such as READMEs, + 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 copy, modify, and distribute 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: +
+ 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. +
Note: + This section is a copy of the W3C® Short Software + Notice and could be found at http://www.w3.org/Consortium/Legal/2002/copyright-software-short-notice-20021231 +
++ Copyright © 2004 World + Wide Web Consortium, (Massachusetts Institute of + Technology, European + Research Consortium for Informatics and Mathematics, Keio University). All Rights + Reserved. +
+ Copyright © [$date-of-software] World Wide Web Consortium, (Massachusetts Institute of + Technology, European + Research Consortium for Informatics and Mathematics, Keio University). All Rights + Reserved. This work is distributed under the W3C® + Software License [1] in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +
+ [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 +
This appendix contains the complete ECMAScript [ECMAScript] binding for the Level 3 Document Object Model XPath + definitions.
Note:
+ The parameter resolver of the method
+ XPathEvaluator.evaluate is specified as an object
+ that implements the XPathNSResolver
+ interface. ECMAScript users can also pass to this method a
+ function which returns a String and takes a
+ String parameter instead of the
+ resolver parameter.
+
Some 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 1.0].
+ Text
+ or CDATASection nodes that can be visited
+ sequentially in document
+ order or in reversed document order without entering,
+ exiting, or passing over Element,
+ Comment, or ProcessingInstruction
+ nodes.
+ This appendix contains the complete OMG IDL [OMG IDL] for + the Level 3 Document Object Model XPath definitions.
The IDL files are also available as: http://www.w3.org/TR/2004/NOTE-DOM-Level-3-XPath-20040226/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::DOMObject DOMObject;
+ typedef dom::Element Element;
+
+ interface XPathNSResolver;
+ interface XPathExpression;
+
+ exception XPathException {
+ unsigned short code;
+ };
+ // XPathExceptionCode
+ const unsigned short INVALID_EXPRESSION_ERR = 51;
+ const unsigned short TYPE_ERR = 52;
+
+
+ interface XPathEvaluator {
+ XPathExpression createExpression(in DOMString expression,
+ in XPathNSResolver resolver)
+ raises(XPathException,
+ dom::DOMException);
+ XPathNSResolver createNSResolver(in Node nodeResolver);
+ DOMObject evaluate(in DOMString expression,
+ in Node contextNode,
+ in XPathNSResolver resolver,
+ in unsigned short type,
+ in DOMObject result)
+ raises(XPathException,
+ dom::DOMException);
+ };
+
+ interface XPathExpression {
+ DOMObject evaluate(in Node contextNode,
+ in unsigned short type,
+ in DOMObject 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 UNORDERED_NODE_ITERATOR_TYPE = 4;
+ const unsigned short ORDERED_NODE_ITERATOR_TYPE = 5;
+ const unsigned short UNORDERED_NODE_SNAPSHOT_TYPE = 6;
+ const unsigned short ORDERED_NODE_SNAPSHOT_TYPE = 7;
+ const unsigned short ANY_UNORDERED_NODE_TYPE = 8;
+ const unsigned short FIRST_ORDERED_NODE_TYPE = 9;
+
+ 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
+
+ readonly attribute boolean invalidIteratorState;
+ readonly attribute unsigned long snapshotLength;
+ // raises(XPathException) on retrieval
+
+ Node iterateNext()
+ raises(XPathException,
+ dom::DOMException);
+ Node snapshotItem(in unsigned long index)
+ raises(XPathException);
+ };
+
+ 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/2004/NOTE-DOM-Level-3-XPath-20040226/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 = 51;
+ public static final short TYPE_ERR = 52;
+
+}
+
+
+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 XPathNSResolver createNSResolver(Node nodeResolver);
+
+ public Object evaluate(String expression,
+ Node contextNode,
+ XPathNSResolver resolver,
+ short type,
+ Object result)
+ throws XPathException, DOMException;
+
+}
+
+
+package org.w3c.dom.xpath;
+
+import org.w3c.dom.Node;
+import org.w3c.dom.DOMException;
+
+public interface XPathExpression {
+ public Object evaluate(Node contextNode,
+ short type,
+ Object 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 UNORDERED_NODE_ITERATOR_TYPE = 4;
+ public static final short ORDERED_NODE_ITERATOR_TYPE = 5;
+ public static final short UNORDERED_NODE_SNAPSHOT_TYPE = 6;
+ public static final short ORDERED_NODE_SNAPSHOT_TYPE = 7;
+ public static final short ANY_UNORDERED_NODE_TYPE = 8;
+ public static final short FIRST_ORDERED_NODE_TYPE = 9;
+
+ public short getResultType();
+
+ public double getNumberValue()
+ throws XPathException;
+
+ public String getStringValue()
+ throws XPathException;
+
+ public boolean getBooleanValue()
+ throws XPathException;
+
+ public Node getSingleNodeValue()
+ throws XPathException;
+
+ public boolean getInvalidIteratorState();
+
+ public int getSnapshotLength()
+ throws XPathException;
+
+ public Node iterateNext()
+ throws XPathException, DOMException;
+
+ public Node snapshotItem(int index)
+ throws XPathException;
+
+}
+
+
+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();
+
+}
+
++ For the latest version of any W3C specification please consult the list of + W3C Technical Reports available at + http://www.w3.org/TR. +
++ 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.
+ This specification was created to map between the Document Object + Model's representation of the W3C Information Set and XPath's + model to permit XPath functions to be + supplied and results returned within the framework of DOM + APIs in a standard, interoperable way, + allowing also for liveness of data, + which is not addressed by the XPath specification but is present in + results coming from the DOM hierarchy. +
This section presents a mapping between the Document Object Model + [DOM Level 2 Core] and the XPath 1.0 [XPath 1.0] + model for the purposes of implementing the APIs. +
The DOM model uses Element nodes to represent Element Information Items.
+ These nodes of a document are directly used to represent the elements of
+ an XPath result.
The DOM model uses Attr nodes to represent Attribute Information
+ Items of attribute and namespace attribute
+ properties of Element
+ Information Item. These nodes have no parent, but
+ have an ownerElement which can be used as XPath
+ defines an attribute's parent.
XPath 1.0 does not make available the namespace attributes of an
+ element. The DOM implementation of XPath 1.0 using these defined
+ interfaces never directly returns Attr nodes of namespace
+ attributes, but returned Element nodes still contain them.
The XPath model expects namespace nodes for each in-scope namespace to
+ be attached to each element. DOM only
+ maintains the namespace attributes instead of replicating in-scope
+ namespaces on each Element where they are in-scope. The DOM
+ implementation of XPath produces a new node of type
+ XPATH_NAMESPACE_NODE, defined in the
+ XPathNamespace interface, to properly preserve identity and
+ ordering in a way that is compatible with XPath. This node type is only
+ visible using the XPath evaluation methods.
The set of in-scope namespaces of an element is the default xml + namespace combined with the contributions of namespace attributes of the + current and all ancestor elements. In addition to explicit namespace + attributes, any element has an implicit declaration of its own prefix, + if any, or if no prefix then of the default namespace, which is enforced + during namespace serialization, fixup, and lookup, which must be added to + the set of in-scope namespaces when generating namespace nodes for an + element. This causes the set of namespace nodes to be consistent with + serialization, fixup, and lookup of namespaces in DOM Level 3. +
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 DOM model may represent Unexpanded Entity Reference
+ Information Items or may provide the position and URI of
+ expanded entity hierarchies by using EntityReference nodes.
+ XPath 1.0 does not preserve corresponding information.
Where the node represents an unexpanded entity reference, it is + skipped as dictated by the XPath specifications for all infoset items + besides those specifically processed.
Where there is a hierarchy underneath the node, these nodes are + processed as though they were siblings of the entity reference, as + is consistent with the rest of the DOM specification.
EntityReference nodes found within a DOM hierarchy are
+ never returned as a node of the result, but returned nodes may contain
+ or be contained within an EntityReference node. Text may be
+ split partially inside and partially outside of an
+ EntityReference node, but this is solved by handling
+ Text nodes as described in the previous section.
The DOM model uses Comment nodes to represent Comment Information Items.
+ These nodes of a document are directly used to represent the comments of
+ an XPath result.
The DOM model uses ProcessingInstruction nodes to
+ represent Processing Instruction
+ Information Items. These nodes of a document are directly used
+ to represent the processing instructions of an XPath result.
The document order of nodes
+ in the DOM Core has been defined to be compatible with the XPath document order.
+ The XPath DOM extends 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 extended document order if
+ the XPath DOM module is supported.
Note: It is possible that in future versions of XPath, the order of namespace + nodes or other aspects of document order may change incompatibly.
+This section explains conformance to DOM Level 3 XPath Module.
A DOM implementation must not return true to
+ hasFeature("xpath", "3.0") unless the implementation
+ conforms to that module. As documented in [DOM Level 3 Core], if a null or empty string is
+ passed in for the second parameter, then conformance is still
+ required to some version of the DOM XPath Module or
+ false must be returned.
A conformant
+ implementation is DOM Level 3 XPath must support all the interfaces
+ as specified in that specification. In addition to implementing the
+ interfaces in the DOM XPath Module, a conforming implementation must
+ correctly implement each part of the XPath 1.0 specification when
+ evaluating expressions including Location Paths, Expressions, the
+ Core Function Library, and the mapping between DOM and the XPath 1.0
+ data model described in the DOM Level 3 XPath Module. The XPath
+ id()function must return the corresponding element, if
+ any, returned by the DOM method
+ Document.getElementById.
After meeting the + requirements for conformance, a conforming implementation may + implement additional functions and variables. Applications which + evaluate expressions using these extensions will not necessarily be + portable to other implementations of the DOM Level 3 XPath + Module.
+ An implementation is DOM Level 3 XPath conformant if it supports + the Core module defined in [DOM Level 2 Core] and the module + defined in this specification. An implementation conforms to a DOM + module if it supports all the interfaces for that module and the + associated semantics. +
+ 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 XPath 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 2 Core specification [DOM Level 2 Core].
+
+ A DOM implementation must not return true to the
+ hasFeature(feature, version) method of the
+ DOMImplementation interface for that feature unless the
+ implementation conforms to that module. The version number for the
+ feature used in this document is "3.0".
+
+
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 = 51; +const unsigned short TYPE_ERR = 52; ++
INVALID_EXPRESSION_ERRXPathEvaluator or contains specialized extension functions
+ or variables not supported by this implementation.TYPE_ERR
+ The evaluation of XPath expressions is provided by
+ XPathEvaluator. In a DOM
+ implementation which supports the XPath 3.0 feature, as described
+ above, the XPathEvaluator interface will be implemented
+ on the same object which implements the Document
+ interface permitting it to be obtained by the usual binding-specific
+ method such as casting or by using the DOM Level 3 getInterface method.
+ In this case the implementation obtained from the Document supports the
+ XPath DOM module and is compatible with the XPath 1.0 specification.
Evaluation of expressions with specialized extension functions or
+ variables may not work in all implementations and is, therefore, not
+ portable. XPathEvaluator implementations may be available
+ from other sources that could provide specific support for specialized
+ extension functions or variables as would be defined by other
+ specifications.
+
+
+interface XPathEvaluator { + XPathExpression createExpression(in DOMString expression, + in XPathNSResolver resolver) + raises(XPathException, + DOMException); + XPathNSResolver createNSResolver(in Node nodeResolver); + DOMObject evaluate(in DOMString expression, + in Node contextNode, + in XPathNSResolver resolver, + in unsigned short type, + in DOMObject result) + raises(XPathException, + DOMException); +}; ++
createExpressionexpression of type
+DOMStringresolver of type
+XPathNSResolverresolver permits translation of all
+ prefixes, including the xml namespace prefix,
+ 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
+ |
createNSResolverlookupNamespaceURI
+ on nodes in resolving the namespaceURI from a given prefix
+ using the current information available in the node's
+ hierarchy at the time lookupNamespaceURI is called. also
+ correctly resolving the implicit xml prefix.nodeResolver of type
+Node|
+
+ |
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 all
+ prefixes, including the xml namespace prefix,
+ 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 returned as the corresponding type.XPathResult interface.result of type
+DOMObjectresult specifies a specific result object
+ which may be reused and returned by this method. If this is specified
+ as nullor the implementation does not reuse the specified
+ result, a new result object will be constructed and returned.XPathResult.
|
+
+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 NOT_SUPPORTED_ERR: The Node is not a type permitted as an
+ XPath context node or the request type is not permitted by this
+ |
The XPathExpression interface represents a parsed
+ and resolved XPath expression.
+
+interface XPathExpression { + DOMObject evaluate(in Node contextNode, + in unsigned short type, + in DOMObject 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
+DOMObjectresult specifies a specific result object
+ which may be reused and returned by this method. If this is specified
+ as nullor the implementation does not reuse the specified
+ result, a new result object will be constructed and returned.XPathResult.
|
+
+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 XPathEvaluator that created this
+ NOT_SUPPORTED_ERR: The Node is not a type permitted as an
+ XPath context node or the request type is not permitted by this
+ |
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 1.0 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 UNORDERED_NODE_ITERATOR_TYPE = 4; + const unsigned short ORDERED_NODE_ITERATOR_TYPE = 5; + const unsigned short UNORDERED_NODE_SNAPSHOT_TYPE = 6; + const unsigned short ORDERED_NODE_SNAPSHOT_TYPE = 7; + const unsigned short ANY_UNORDERED_NODE_TYPE = 8; + const unsigned short FIRST_ORDERED_NODE_TYPE = 9; + + 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 + + readonly attribute boolean invalidIteratorState; + readonly attribute unsigned long snapshotLength; + // raises(XPathException) on retrieval + + Node iterateNext() + raises(XPathException, + DOMException); + Node snapshotItem(in unsigned long index) + raises(XPathException); +}; ++
An integer indicating what type of result this is.
If a specific type is specified, then the
+ result will be returned as the corresponding type, using
+ XPath type
+ conversions where required and possible.
ANY_TYPEANY_TYPE was requested, then
+ UNORDERED_NODE_ITERATOR_TYPE is always the
+ resulting type. Any other representation of a node set
+ must be explicitly requested.ANY_UNORDERED_NODE_TYPEnullif the node set is empty. Document
+ modification does not invalidate the node, but may mean that
+ the result node no longer corresponds to the current
+ document. This is a convenience that permits optimization
+ since the implementation can stop once any node in
+ the resulting set has been found.BOOLEAN_TYPEFIRST_ORDERED_NODE_TYPEnull if the node set is
+ empty. Document modification does not invalidate the node,
+ but may mean that the result node no longer corresponds to
+ the current document. This is a convenience that permits
+ optimization since the implementation can stop once the
+ first node in document order of the resulting set has been
+ found.NUMBER_TYPEORDERED_NODE_ITERATOR_TYPEORDERED_NODE_SNAPSHOT_TYPESTRING_TYPEUNORDERED_NODE_ITERATOR_TYPEANY_TYPE is requested.UNORDERED_NODE_SNAPSHOT_TYPEbooleanValue of type boolean, readonly|
+ TYPE_ERR: raised if |
invalidIteratorState of type boolean, readonlyresultType is
+ UNORDERED_NODE_ITERATOR_TYPE or
+ ORDERED_NODE_ITERATOR_TYPE and the
+ document has been modified since this result was
+ returned.numberValue of type double, readonly|
+ TYPE_ERR: raised if |
resultType of type unsigned short, readonlysingleNodeValue of type Node, readonlynull.|
+ TYPE_ERR: raised if |
snapshotLength of type unsigned long, readonly0 to
+ snapshotLength-1 inclusive.|
+ TYPE_ERR: raised if |
stringValue of type DOMString, readonly|
+ TYPE_ERR: raised if |
iterateNextnullif there are no more nodes.
+
|
+ +Returns the next node. |
|
+ TYPE_ERR: raised if | |
|
+ INVALID_STATE_ERR: The document has been mutated since the + result was returned. |
snapshotItemindexth item in the snapshot collection.
+ If index is greater than or equal to the number of nodes
+ in the list, this method returns null. Unlike the
+ iterator result, the snapshot does not become invalid, but may
+ not correspond to the current document if it is mutated.index of type
+unsigned long
|
+
+The node at the |
|
+ TYPE_ERR: raised if |
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 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.
nodeName is always the string "#namespace".
prefix is the prefix of the namespace
+ represented by the node.
localName is the same as prefix.
nodeType is equal to XPATH_NAMESPACE_NODE.
namespaceURI is the namespace URI of the namespace
+ represented by the node.
nodeValue is the same as namespaceURI.
adoptNode, cloneNode, and
+ importNode fail on this node type by raising a
+ DOMException with the code NOT_SUPPORTED_ERR.
Note: In future versions of the XPath specification, the definition of a + namespace node may be changed incomatibly, in which case incompatible + changes to field values may be required to implement versions beyond + XPath 1.0.
+ ++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.