13 November, 2000

# Appendix C: IDL Definitions

This appendix contains the complete OMG IDL [OMGIDL] for the Level 2 Document Object Model Core definitions.

The IDL files are also available as: http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/idl.zip

### dom.idl:

    // File: dom.idl

    #ifndef _DOM_IDL_
    #define _DOM_IDL_

    #pragma prefix "w3c.org"
    module dom
    {

      valuetype DOMString sequence<unsigned short>;

      typedef   unsigned long long DOMTimeStamp;

      interface DocumentType;
      interface Document;
      interface NodeList;
      interface NamedNodeMap;
      interface Element;

      exception DOMException {
        unsigned short   code;
      };
      // ExceptionCode
      const unsigned short      INDEX_SIZE_ERR                 = 1;
      const unsigned short      DOMSTRING_SIZE_ERR             = 2;
      const unsigned short      HIERARCHY_REQUEST_ERR          = 3;
      const unsigned short      WRONG_DOCUMENT_ERR             = 4;
      const unsigned short      INVALID_CHARACTER_ERR          = 5;
      const unsigned short      NO_DATA_ALLOWED_ERR            = 6;
      const unsigned short      NO_MODIFICATION_ALLOWED_ERR    = 7;
      const unsigned short      NOT_FOUND_ERR                  = 8;
      const unsigned short      NOT_SUPPORTED_ERR              = 9;
      const unsigned short      INUSE_ATTRIBUTE_ERR            = 10;
      // Introduced in DOM Level 2:
      const unsigned short      INVALID_STATE_ERR              = 11;
      // Introduced in DOM Level 2:
      const unsigned short      SYNTAX_ERR                     = 12;
      // Introduced in DOM Level 2:
      const unsigned short      INVALID_MODIFICATION_ERR       = 13;
      // Introduced in DOM Level 2:
      const unsigned short      NAMESPACE_ERR                  = 14;
      // Introduced in DOM Level 2:
      const unsigned short      INVALID_ACCESS_ERR             = 15;

      interface DOMImplementation {
        boolean            hasFeature(in DOMString feature,
                                      in DOMString version);
        // Introduced in DOM Level 2:
        DocumentType       createDocumentType(in DOMString qualifiedName,
                                              in DOMString publicId,
                                              in DOMString systemId)
                                            raises(DOMException);
        // Introduced in DOM Level 2:
        Document           createDocument(in DOMString namespaceURI,
                                          in DOMString qualifiedName,
                                          in DocumentType doctype)
                                            raises(DOMException);
      };

      interface Node {

        // NodeType
        const unsigned short      ELEMENT_NODE                   = 1;
        const unsigned short      ATTRIBUTE_NODE                 = 2;
        const unsigned short      TEXT_NODE                      = 3;
        const unsigned short      CDATA_SECTION_NODE             = 4;
        const unsigned short      ENTITY_REFERENCE_NODE          = 5;
        const unsigned short      ENTITY_NODE                    = 6;
        const unsigned short      PROCESSING_INSTRUCTION_NODE    = 7;
        const unsigned short      COMMENT_NODE                   = 8;
        const unsigned short      DOCUMENT_NODE                  = 9;
        const unsigned short      DOCUMENT_TYPE_NODE             = 10;
        const unsigned short      DOCUMENT_FRAGMENT_NODE         = 11;
        const unsigned short      NOTATION_NODE                  = 12;

        readonly attribute DOMString        nodeName;
                 attribute DOMString        nodeValue;
                                            // raises(DOMException) on setting
                                            // raises(DOMException) on retrieval

        readonly attribute unsigned short   nodeType;
        readonly attribute Node             parentNode;
        readonly attribute NodeList         childNodes;
        readonly attribute Node             firstChild;
        readonly attribute Node             lastChild;
        readonly attribute Node             previousSibling;
        readonly attribute Node             nextSibling;
        readonly attribute NamedNodeMap     attributes;
        // Modified in DOM Level 2:
        readonly attribute Document         ownerDocument;
        Node               insertBefore(in Node newChild,
                                        in Node refChild)
                                            raises(DOMException);
        Node               replaceChild(in Node newChild,
                                        in Node oldChild)
                                            raises(DOMException);
        Node               removeChild(in Node oldChild)
                                            raises(DOMException);
        Node               appendChild(in Node newChild)
                                            raises(DOMException);
        boolean            hasChildNodes();
        Node               cloneNode(in boolean deep);
        // Modified in DOM Level 2:
        void               normalize();
        // Introduced in DOM Level 2:
        boolean            isSupported(in DOMString feature,
                                       in DOMString version);
        // Introduced in DOM Level 2:
        readonly attribute DOMString        namespaceURI;
        // Introduced in DOM Level 2:
                 attribute DOMString        prefix;
                                            // raises(DOMException) on setting

        // Introduced in DOM Level 2:
        readonly attribute DOMString        localName;
        // Introduced in DOM Level 2:
        boolean            hasAttributes();
      };

      interface NodeList {
        Node               item(in unsigned long index);
        readonly attribute unsigned long    length;
      };

      interface NamedNodeMap {
        Node               getNamedItem(in DOMString name);
        Node               setNamedItem(in Node arg)
                                            raises(DOMException);
        Node               removeNamedItem(in DOMString name)
                                            raises(DOMException);
        Node               item(in unsigned long index);
        readonly attribute unsigned long    length;
        // Introduced in DOM Level 2:
        Node               getNamedItemNS(in DOMString namespaceURI,
                                          in DOMString localName);
        // Introduced in DOM Level 2:
        Node               setNamedItemNS(in Node arg)
                                            raises(DOMException);
        // Introduced in DOM Level 2:
        Node               removeNamedItemNS(in DOMString namespaceURI,
                                             in DOMString localName)
                                            raises(DOMException);
      };

      interface CharacterData : Node {
                 attribute DOMString        data;
                                            // raises(DOMException) on setting
                                            // raises(DOMException) on retrieval

        readonly attribute unsigned long    length;
        DOMString          substringData(in unsigned long offset,
                                         in unsigned long count)
                                            raises(DOMException);
        void               appendData(in DOMString arg)
                                            raises(DOMException);
        void               insertData(in unsigned long offset,
                                      in DOMString arg)
                                            raises(DOMException);
        void               deleteData(in unsigned long offset,
                                      in unsigned long count)
                                            raises(DOMException);
        void               replaceData(in unsigned long offset,
                                       in unsigned long count,
                                       in DOMString arg)
                                            raises(DOMException);
      };

      interface Attr : Node {
        readonly attribute DOMString        name;
        readonly attribute boolean          specified;
                 attribute DOMString        value;
                                            // raises(DOMException) on setting

        // Introduced in DOM Level 2:
        readonly attribute Element          ownerElement;
      };

      interface Element : Node {
        readonly attribute DOMString        tagName;
        DOMString          getAttribute(in DOMString name);
        void               setAttribute(in DOMString name,
                                        in DOMString value)
                                            raises(DOMException);
        void               removeAttribute(in DOMString name)
                                            raises(DOMException);
        Attr               getAttributeNode(in DOMString name);
        Attr               setAttributeNode(in Attr newAttr)
                                            raises(DOMException);
        Attr               removeAttributeNode(in Attr oldAttr)
                                            raises(DOMException);
        NodeList           getElementsByTagName(in DOMString name);
        // Introduced in DOM Level 2:
        DOMString          getAttributeNS(in DOMString namespaceURI,
                                          in DOMString localName);
        // Introduced in DOM Level 2:
        void               setAttributeNS(in DOMString namespaceURI,
                                          in DOMString qualifiedName,
                                          in DOMString value)
                                            raises(DOMException);
        // Introduced in DOM Level 2:
        void               removeAttributeNS(in DOMString namespaceURI,
                                             in DOMString localName)
                                            raises(DOMException);
        // Introduced in DOM Level 2:
        Attr               getAttributeNodeNS(in DOMString namespaceURI,
                                              in DOMString localName);
        // Introduced in DOM Level 2:
        Attr               setAttributeNodeNS(in Attr newAttr)
                                            raises(DOMException);
        // Introduced in DOM Level 2:
        NodeList           getElementsByTagNameNS(in DOMString namespaceURI,
                                                  in DOMString localName);
        // Introduced in DOM Level 2:
        boolean            hasAttribute(in DOMString name);
        // Introduced in DOM Level 2:
        boolean            hasAttributeNS(in DOMString namespaceURI,
                                          in DOMString localName);
      };

      interface Text : CharacterData {
        Text               splitText(in unsigned long offset)
                                            raises(DOMException);
      };

      interface Comment : CharacterData {
      };

      interface CDATASection : Text {
      };

      interface DocumentType : Node {
        readonly attribute DOMString        name;
        readonly attribute NamedNodeMap     entities;
        readonly attribute NamedNodeMap     notations;
        // Introduced in DOM Level 2:
        readonly attribute DOMString        publicId;
        // Introduced in DOM Level 2:
        readonly attribute DOMString        systemId;
        // Introduced in DOM Level 2:
        readonly attribute DOMString        internalSubset;
      };

      interface Notation : Node {
        readonly attribute DOMString        publicId;
        readonly attribute DOMString        systemId;
      };

      interface Entity : Node {
        readonly attribute DOMString        publicId;
        readonly attribute DOMString        systemId;
        readonly attribute DOMString        notationName;
      };

      interface EntityReference : Node {
      };

      interface ProcessingInstruction : Node {
        readonly attribute DOMString        target;
                 attribute DOMString        data;
                                            // raises(DOMException) on setting

      };

      interface DocumentFragment : Node {
      };

      interface Document : Node {
        readonly attribute DocumentType     doctype;
        readonly attribute DOMImplementation  implementation;
        readonly attribute Element          documentElement;
        Element            createElement(in DOMString tagName)
                                            raises(DOMException);
        DocumentFragment   createDocumentFragment();
        Text               createTextNode(in DOMString data);
        Comment            createComment(in DOMString data);
        CDATASection       createCDATASection(in DOMString data)
                                            raises(DOMException);
        ProcessingInstruction createProcessingInstruction(in DOMString target,
                                                          in DOMString data)
                                            raises(DOMException);
        Attr               createAttribute(in DOMString name)
                                            raises(DOMException);
        EntityReference    createEntityReference(in DOMString name)
                                            raises(DOMException);
        NodeList           getElementsByTagName(in DOMString tagname);
        // Introduced in DOM Level 2:
        Node               importNode(in Node importedNode,
                                      in boolean deep)
                                            raises(DOMException);
        // Introduced in DOM Level 2:
        Element            createElementNS(in DOMString namespaceURI,
                                           in DOMString qualifiedName)
                                            raises(DOMException);
        // Introduced in DOM Level 2:
        Attr               createAttributeNS(in DOMString namespaceURI,
                                             in DOMString qualifiedName)
                                            raises(DOMException);
        // Introduced in DOM Level 2:
        NodeList           getElementsByTagNameNS(in DOMString namespaceURI,
                                                  in DOMString localName);
        // Introduced in DOM Level 2:
        Element            getElementById(in DOMString elementId);
      };
    };

    #endif // _DOM_IDL_