30 August 2001

Appendix A: IDL Definitions

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-20010830/idl.zip

xpath.idl:

// 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);
    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);
    XPathResult        evaluateExpression(in XPathExpression expression, 
                                          in Node contextNode, 
                                          in unsigned short type, 
                                          in XPathResult result)
                                        raises(XPathException);
  };

  interface XPathExpression {
  };

  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_