// // Document Object Model (Core) Level 1 ISL // As of Tue Jun 9 16:52:45 EDT 1998 // // // Modifs: // replaced interface by raise for exceptions; // "interface NotMyChildException {}" => "raises NotMyChildException". // // replaced "wstring" (Unicode) for simple "string". // // replaced "int" by "long". // // Reordered interface list and added forward references. // // Added a definition for NotMyChildException, NoSuchNodeException, // NoSuchAttributeException. // // Renamed Node:PI to Node:PIS due to clash with PI interface. // interface Document; interface Node; interface NodeIterator; interface Element; interface Text; interface Comment; interface PI; interface Attribute; interface AttributeList; interface TreeIterator; interface DOM { Document createDocument(in string type); // wstring boolean hasFeature(in string feature); // wstring }; interface DocumentContext { attribute Document document; }; exception NotMyChildException { }; exception NoSuchNodeException { }; exception NoSuchAttributeException { }; interface Node { // NodeType const long DOCUMENT = 1; const long ELEMENT = 2; const long ATTRIBUTE = 3; const long PIS = 4; const long COMMENT = 5; const long TEXT = 6; long getNodeType(); Node getParentNode(); NodeIterator getChildNodes(); boolean hasChildNodes(); Node getFirstChild(); Node getPreviousSibling(); Node getNextSibling(); Node insertBefore(in Node newChild, in Node refChild) raises (NotMyChildException); Node replaceChild(in Node newChild, in Node oldChild) raises (NotMyChildException); Node removeChild(in Node oldChild) raises (NotMyChildException); }; interface DocumentFragment : Node { attribute Document masterDoc; }; interface Document : DocumentFragment { attribute Node documentType; attribute Element documentElement; attribute DocumentContext contextInfo; DocumentContext createDocumentContext(); Element createElement(in string tagName, // wstring in AttributeList attributes); Text createTextNode(in string data); // wstring Comment createComment(in string data); // wstring PI createPI(in string name, // wstring in string data); // wstring Attribute createAttribute(in string name, // wstring in Node value); AttributeList createAttributeList(); TreeIterator createTreeIterator(in Node node); NodeIterator getElementsByTagName(in string tagname); // wstring }; interface NodeIterator { unsigned long getLength(); unsigned long getCurrentPos(); boolean atFirst(); boolean atLast(); Node toNextNode(); Node toPrevNode(); Node toFirstNode(); Node toLastNode(); Node moveTo(in long n); }; interface TreeIterator : NodeIterator { unsigned long numChildren(); unsigned long numPreviousSiblings(); unsigned long numNextSiblings(); Node toParent(); Node toPreviousSibling(); Node toNextSibling(); Node toFirstChild(); Node toLastChild(); Node toNthChild(in long n) raises (NoSuchNodeException); }; interface Attribute { string getName(); // wstring string getValue(); // wstring attribute boolean specified; string toString(); // wstring }; interface AttributeList { Attribute getAttribute(in string attrName); // wstring Attribute setAttribute(in Attribute attr); Attribute remove(in string attrName) // wstring raises (NoSuchAttributeException); Attribute item(in unsigned long index) raises (NoSuchAttributeException); unsigned long getLength(); }; interface Element : Node { string getTagName(); // wstring NodeIterator getAttributes(); string getAttribute(in string name); // wstring void setAttribute(in string name, // wstring in string value);// wstring void removeAttribute(in string name); // wstring Attribute getAttributeNode(in string name); void setAttributeNode(in Attribute newAttr); void removeAttributeNode(in Attribute oldAttr); void getElementsByTagName(in string tagname); // wstring void normalize(); }; interface Text : Node { attribute string data; // wstring void append(in string data); // wstring void insert(in long offset, in string data); // wstring void delete(in long offset, in long count); void replace(in long offset, in long count, in string data); // wstring void splice(in Element element, in long offset, in long count); }; interface Comment : Node { attribute string data; // wstring }; interface PI : Node { attribute string name; // wstring attribute string data; // wstring };