This appendix contains the complete OMG IDL [OMGIDL] for the Level 2 Document Object Model Traversal and Range definitions. The definitions are divided into Traversal, and Range.
The IDL files are also available as: http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113/idl.zip
// File: traversal.idl
#ifndef _TRAVERSAL_IDL_
#define _TRAVERSAL_IDL_
#include "dom.idl"
#pragma prefix "dom.w3c.org"
module traversal
{
typedef dom::Node Node;
interface NodeFilter;
// Introduced in DOM Level 2:
interface NodeIterator {
readonly attribute Node root;
readonly attribute unsigned long whatToShow;
readonly attribute NodeFilter filter;
readonly attribute boolean expandEntityReferences;
Node nextNode()
raises(dom::DOMException);
Node previousNode()
raises(dom::DOMException);
void detach();
};
// Introduced in DOM Level 2:
interface NodeFilter {
// Constants returned by acceptNode
const short FILTER_ACCEPT = 1;
const short FILTER_REJECT = 2;
const short FILTER_SKIP = 3;
// Constants for whatToShow
const unsigned long SHOW_ALL = 0xFFFFFFFF;
const unsigned long SHOW_ELEMENT = 0x00000001;
const unsigned long SHOW_ATTRIBUTE = 0x00000002;
const unsigned long SHOW_TEXT = 0x00000004;
const unsigned long SHOW_CDATA_SECTION = 0x00000008;
const unsigned long SHOW_ENTITY_REFERENCE = 0x00000010;
const unsigned long SHOW_ENTITY = 0x00000020;
const unsigned long SHOW_PROCESSING_INSTRUCTION = 0x00000040;
const unsigned long SHOW_COMMENT = 0x00000080;
const unsigned long SHOW_DOCUMENT = 0x00000100;
const unsigned long SHOW_DOCUMENT_TYPE = 0x00000200;
const unsigned long SHOW_DOCUMENT_FRAGMENT = 0x00000400;
const unsigned long SHOW_NOTATION = 0x00000800;
short acceptNode(in Node n);
};
// Introduced in DOM Level 2:
interface TreeWalker {
readonly attribute Node root;
readonly attribute unsigned long whatToShow;
readonly attribute NodeFilter filter;
readonly attribute boolean expandEntityReferences;
attribute Node currentNode;
// raises(dom::DOMException) on setting
Node parentNode();
Node firstChild();
Node lastChild();
Node previousSibling();
Node nextSibling();
Node previousNode();
Node nextNode();
};
// Introduced in DOM Level 2:
interface DocumentTraversal {
NodeIterator createNodeIterator(in Node root,
in unsigned long whatToShow,
in NodeFilter filter,
in boolean entityReferenceExpansion)
raises(dom::DOMException);
TreeWalker createTreeWalker(in Node root,
in unsigned long whatToShow,
in NodeFilter filter,
in boolean entityReferenceExpansion)
raises(dom::DOMException);
};
};
#endif // _TRAVERSAL_IDL_
// File: ranges.idl
#ifndef _RANGES_IDL_
#define _RANGES_IDL_
#include "dom.idl"
#pragma prefix "dom.w3c.org"
module ranges
{
typedef dom::Node Node;
typedef dom::DocumentFragment DocumentFragment;
typedef dom::DOMString DOMString;
// Introduced in DOM Level 2:
exception RangeException {
unsigned short code;
};
// RangeExceptionCode
const unsigned short BAD_BOUNDARYPOINTS_ERR = 1;
const unsigned short INVALID_NODE_TYPE_ERR = 2;
// Introduced in DOM Level 2:
interface Range {
readonly attribute Node startContainer;
// raises(dom::DOMException) on retrieval
readonly attribute long startOffset;
// raises(dom::DOMException) on retrieval
readonly attribute Node endContainer;
// raises(dom::DOMException) on retrieval
readonly attribute long endOffset;
// raises(dom::DOMException) on retrieval
readonly attribute boolean collapsed;
// raises(dom::DOMException) on retrieval
readonly attribute Node commonAncestorContainer;
// raises(dom::DOMException) on retrieval
void setStart(in Node refNode,
in long offset)
raises(RangeException,
dom::DOMException);
void setEnd(in Node refNode,
in long offset)
raises(RangeException,
dom::DOMException);
void setStartBefore(in Node refNode)
raises(RangeException,
dom::DOMException);
void setStartAfter(in Node refNode)
raises(RangeException,
dom::DOMException);
void setEndBefore(in Node refNode)
raises(RangeException,
dom::DOMException);
void setEndAfter(in Node refNode)
raises(RangeException,
dom::DOMException);
void collapse(in boolean toStart)
raises(dom::DOMException);
void selectNode(in Node refNode)
raises(RangeException,
dom::DOMException);
void selectNodeContents(in Node refNode)
raises(RangeException,
dom::DOMException);
// CompareHow
const unsigned short START_TO_START = 0;
const unsigned short START_TO_END = 1;
const unsigned short END_TO_END = 2;
const unsigned short END_TO_START = 3;
short compareBoundaryPoints(in unsigned short how,
in Range sourceRange)
raises(dom::DOMException);
void deleteContents()
raises(dom::DOMException);
DocumentFragment extractContents()
raises(dom::DOMException);
DocumentFragment cloneContents()
raises(dom::DOMException);
void insertNode(in Node newNode)
raises(dom::DOMException,
RangeException);
void surroundContents(in Node newParent)
raises(dom::DOMException,
RangeException);
Range cloneRange()
raises(dom::DOMException);
DOMString toString()
raises(dom::DOMException);
void detach()
raises(dom::DOMException);
};
// Introduced in DOM Level 2:
interface DocumentRange {
Range createRange();
};
};
#endif // _RANGES_IDL_