- From: Werner Donne' <wdonne@ibm.net>
- Date: Thu, 26 Mar 1998 18:03:25 +0100
- To: www-dom@w3.org
- Message-Id: <351A8A5D.70F7E6BB@ibm.net>
Hi, The IDL in the draft doesn't compile. The following errors occur: - No forward declarations. - int used instead of long. - Order of interface definitions doesn't take into account inheritance. - All constants in Node clash with interface names. The CORBA spec (section 3.2.3) clearly specifies identifiers are case insensitive. - "typedef sequence <wstring> StringList;" appears nowhere but is used in AttributeDefinition. - In interface EntityDeclaration DocumentFragmentreplacementSubtree occurs. - In EntityReference "void expand(in );" occurs while it should have no arguments. I suggest to introduce the module org::w3::dom. The attached files compile. That's all I can say about them at the moment. With kind regards, -- Werner Donne' Re BVBA Leuvenselaan 172 B-3300 Tienen tel: (+32) 16 810203 fax: (+32) 16 820826 E-mail: wdonne@ibm.net
module org { module w3 { module dom { interface DOM; interface DocumentContext; interface DocumentFragment; interface Document; interface Node; interface NodeIterator; interface TreeIterator; interface Attribute; interface AttributeList; interface Element; interface Text; interface Comment; interface PI; typedef sequence <wstring> StringList; interface DOM { Document createDocument(in wstring type); boolean hasFeature(in wstring feature); }; interface Node { // NodeType const long DOC = 1; const long ELEM = 2; const long ATTR = 3; const long PROCI = 4; const long CMNT = 5; const long TXT = 6; long getNodeType(); Node getParentNode(); NodeIterator getChildNodes(); boolean hasChildNodes(); Node getFirstChild(); Node getPreviousSibling(); Node getNextSibling(); Node insertBefore(in Node newChild, in Node refChild); Node replaceChild(in Node newChild, in Node oldChild); Node removeChild(in Node oldChild); }; interface DocumentContext { attribute Document document; }; interface DocumentFragment : Node { attribute Document masterDoc; }; interface Document : DocumentFragment { attribute Node documentType; attribute Element documentElement; attribute DocumentContext contextInfo; DocumentContext createDocumentContext(); Element createElement(in wstring tagName, in AttributeList attributes); Text createTextNode(in wstring data); Comment createComment(in wstring data); PI createPI(in wstring name, in wstring data); Attribute createAttribute(in wstring name, in Node value); AttributeList createAttributeList(); NodeIterator getElementsByTagName(); }; interface NodeIterator { unsigned long getLength(); Node getCurrent(); Node toNext(); Node toPrevious(); Node toFirst(); Node toLast(); Node toNth(in long Nth); Node toNode(in Node destNode); }; interface TreeIterator : NodeIterator { unsigned long numChildren(); unsigned long numPreviousSiblings(); unsigned long numNextSiblings(); Node toParent(); Node toPreviousSibling(); Node toNextSibling(); Node toFirstChild(); Node toLastChild(); Node toNthChild(); }; interface Attribute { wstring getName(); attribute Node value; attribute boolean specified; wstring toString(); }; interface AttributeList { Attribute getAttribute(in wstring attrName); Attribute setAttribute(in Attribute attr); Attribute remove(in wstring attrName); Attribute item(in unsigned long index); unsigned long getLength(); }; interface Element : Node { wstring getTagName(); AttributeList attributes(); void setAttribute(in Attribute newAttr); void normalize(); NodeIterator getElementsByTagName(); }; interface Text : Node { attribute wstring data; void append(in wstring data); void insert(in long offset, in wstring data); void delete(in long offset, in long count); void replace(in long offset, in long count, in wstring data); void splice(in Element element, in long offset, in long count); }; interface Comment : Node { attribute wstring data; }; interface PI : Node { attribute wstring name; attribute wstring data; }; }; }; };
#include "core.idl" module org { module w3 { module dom { interface XMLNode; interface DocumentType; interface ElementDefinition; interface PCDATAToken; interface ElementToken; interface ModelGroup; interface AttributeDefinition; interface Notation; interface EntityDeclaration; interface EntityReference; interface CDATASection; interface XMLNode { Node getParentXMLNode(in boolean expandEntities); NodeIterator getChildXMLNodes(in boolean expandEntities); boolean hasChildXMLNodes(in boolean expandEntities); Node getFirstXMLChild(in boolean expandEntities); Node getPreviousXMLSibling(in boolean expandEntities); Node getNextXMLSibling(in boolean expandEntities); EntityReference getEntityReference(); EntityDeclaration getEntityDeclaration(); }; interface DocumentType { attribute wstring name; attribute Node externalSubset; attribute Node internalSubset; attribute Node generalEntities; attribute Node parameterEntities; attribute Node notations; attribute Node elementTypes; }; interface ElementDefinition : Node { // ContentType const long EMPTY = 1; const long ANY = 2; const long PCDATA = 3; const long MODEL_GROUP = 4; attribute wstring name; attribute long contentType; attribute ModelGroup contentModel; attribute Node attributeDefinitions; attribute Node inclusions; attribute Node exceptions; }; interface PCDATAToken : Node { }; interface ElementToken : Node { // OccurrenceType const long OPT = 1; const long PLUS = 2; const long REP = 3; attribute wstring name; attribute long occurrence; }; interface ModelGroup : Node { // OccurrenceType const long OPT = 1; const long PLUS = 2; const long REP = 3; // ConnectionType const long OR = 1; const long SEQ = 2; const long AND = 3; attribute long occurrence; attribute long connector; attribute Node tokens; }; interface AttributeDefinition : Node { // DeclaredValueType const long CDATA = 1; const long ID = 2; const long IDREF = 3; const long IDREFS = 4; const long ENTITY = 5; const long ENTITIES = 6; const long NMTOKEN = 7; const long NMTOKENS = 8; const long NOTATION = 9; const long NAME_TOKEN_GROUP = 10; // DefaultValueType const long FIXED = 1; const long REQUIRED = 2; const long IMPLIED = 3; attribute wstring name; attribute StringList allowedTokens; attribute long declaredType; attribute long defaultType; attribute Node defaultValue; }; interface Notation : Node { attribute wstring name; attribute boolean isPublic; attribute string publicIdentifier; attribute string systemIdentifier; }; interface EntityDeclaration { attribute wstring replacementString; attribute DocumentFragment replacementSubtree; }; interface EntityReference { attribute boolean isExpanded; void expand(); }; interface CDATASection : Text { }; }; }; };
Received on Thursday, 26 March 1998 12:28:02 UTC