This document is also available in these non-normative formats: XML file, plain text, PostScript file, PDF file, single HTML file, and ZIP file.
Copyright ©2003 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply.
This specification defines the Document Object Model Validation Level 3, a platform- and language-neutral interface. This module provides the guidance to programs and scripts to dynamically update the content and the structure of documents while ensuring that the document remains valid, or to ensure that the document becomes valid.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. The latest status of this document series is maintained at the W3C.
This is the Working Draft specification of "DOM Level 3 Validation". This version is based on the feedback during the last call period. The intention of the Working Group is to ask the Director to move the document to Candidate Recommendation status soon. Comments on this document are invited and are to be sent to the public mailing list www-dom@w3.org. An archive is available at http://lists.w3.org/Archives/Public/www-dom/.
Individuals or organizations are also invited to send a message to the public mailing list if they intend to produce an implementation of this module.
It is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to use W3C Working Drafts as reference material or to cite them as other than "work in progress". This is work in progress and does not imply endorsement by, or the consensus of, either W3C or members of the DOM working group.
This document has been produced as part of the W3C DOM Activity. The authors of this document are the DOM WG members.
Patent disclosures relevant to this specification may be found on the Working Group's patent disclosure page.
A list of current W3C Recommendations and other technical documents can be found at http://www.w3.org/TR.
Copyright © 2003 World Wide Web Consortium, (Massachusetts Institute of Technology, European Research Consortium for Informatics and Mathematics, Keio University). All Rights Reserved.
This document is published under the W3C® Document Copyright Notice and License. The bindings within this document are published under the W3C® Software Copyright Notice and License. The software license requires "Notice of any changes or modifications to the W3C files, including the date changes were made." Consequently, modified versions of the DOM bindings must document that they do not conform to the W3C standard; in the case of the IDL definitions, the pragma prefix can no longer be 'w3c.org'; in the case of the Java language binding, the package names can no longer be in the 'org.w3c' package.
Note: This section is a copy of the W3C® Document Notice and License and could be found at http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231.
Copyright © 2003 World Wide Web Consortium, (Massachusetts Institute of Technology, European Research Consortium for Informatics and Mathematics, Keio University). All Rights Reserved.
http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231
Public documents on the W3C site are provided by the copyright holders under the following license. By using and/or copying this document, or the W3C document from which this statement is linked, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions:
Permission to copy, and distribute the contents of this document, or the W3C document from which this statement is linked, in any medium for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the document, or portions thereof, that you use:
When space permits, inclusion of the full text of this NOTICE should be provided. We request that authorship attribution be provided in any software, documents, or other items or products that you create pursuant to the implementation of the contents of this document, or any portion thereof.
No right to create modifications or derivatives of W3C documents is granted pursuant to this license. However, if additional requirements (documented in the Copyright FAQ) are satisfied, the right to create modifications or derivatives is sometimes granted by the W3C to individuals complying with those requirements.
THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE DOCUMENT ARE SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF.
The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to this document or its contents without specific, written prior permission. Title to copyright in this document will at all times remain with copyright holders.
Note: This section is a copy of the W3C® Software Copyright Notice and License and could be found at http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
Copyright © 2003 World Wide Web Consortium, (Massachusetts Institute of Technology, European Research Consortium for Informatics and Mathematics, Keio University). All Rights Reserved.
http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
This work (and included software, documentation such as READMEs, or other related items) is being provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions.
Permission to copy, modify, and distribute this software and its documentation, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications:
THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders.
Note: This section is a copy of the W3C® Short Software Notice and could be found at http://www.w3.org/Consortium/Legal/2002/copyright-software-short-notice-20021231
Copyright © 2003 World Wide Web Consortium, (Massachusetts Institute of Technology, European Research Consortium for Informatics and Mathematics, Keio University). All Rights Reserved.
Copyright © [$date-of-software] World Wide Web Consortium, (Massachusetts Institute of Technology, European Research Consortium for Informatics and Mathematics, Keio University). All Rights Reserved. This work is distributed under the W3C® Software License [1] in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
This chapter describes the optional DOM Level 3 Validation feature. This module provides APIs to guide construction and editing of XML documents. Examples of such guided editing are queries of the nature that combine questions like "what does the grammar allow me to insert/delete here" and "if I insert/delete here, will the document still be valid."
Users may also want to know several levels of details, e.g., all the possible children, those which would be valid given what precedes this point, lists of defined symbols of a given type, in order to help in editing and creating a XML document. Some of these queries would prompt checks and warn you if you're about to conflict with or overwrite such data.
Finally, users would like to validate an edited or newly
constructed document before serializing it or passing it to other
users. To some, they may edit, come up with an invalid document,
then edit again to result in a valid document. During this process,
these APIs can allow the user to check the validity of the document
or sub-tree on demand; and if needed can also require that the
document or sub-tree remain valid during this editing process via
the continuousValidityChecking
flag.
A DOM application can use the hasFeature(feature,
version)
method of the DOMImplementation
interface to determine with parameter values "VAL-DOC"
and "3.0"
, respectively, whether or not these
interfaces are supported by the implementation.
This chapter focuses on the editing aspects used in the XML document editing world and usage of such information.
This section describes the "VAL-DOC" exceptions.
The Validation operations may throw a ExceptionVAL
as
described in their descriptions.
exception ExceptionVAL { unsigned short code; }; // ExceptionVALCode const unsigned short NO_GRAMMAR_AVAILABLE_ERR = 71;
An integer indicating the type of error generated.
NO_GRAMMAR_AVAILABLE_ERR
DocumentEditVAL
related to the node does not have any grammar and
wfValidityCheckLevel
is set to PARTIAL
or
STRICT_VALIDITY_CHECK
.This section contains "Document Editing" methods as described in
the DocumentEditVAL
,
NodeEditVAL
,
ElementEditVAL
,
and CharacterEditVAL
interfaces.
This interface extends the NodeEditVAL
interface with additional methods for document editing. An object
implementing this interface must also implement the
Document
interface.
interface DocumentEditVAL : NodeEditVAL { attribute boolean continuousValidityChecking; NameList getDefinedElementTypes(in DOMString namespaceURI); void validateDocument() raises(ExceptionVAL); };
continuousValidityChecking
of type boolean
true
will result in an exception being thrown, i.e.,
VALIDATION_ERR
, for documents that are invalid at the
time of the call. When set to true, the implementation if free to
raise the VALIDATION_ERR
exception on DOM operations
that would make the document invalid with respect to "partial
validity." If the document is invalid, then this attribute will
remain false
. This attribute is false
by
default.getDefinedElementTypes
namespaceURI
of type
DOMString
namespaceURI
of namespace. For DTDs, this is
NULL.
|
List of all element node names belonging to the element's namespace. |
validateDocument
NO_GRAMMAR_AVAILABLE_ERR: Raised if an error occurs when the grammar is not available for the document. |
This interface is similar to the [DOM Level 3 Core]
Node
interfaces, with methods for guided document
editing.
interface NodeEditVAL { // CheckTypeVAL const unsigned short WF_CHECK = 1; const unsigned short NS_WF_CHECK = 2; const unsigned short PARTIAL_VALIDITY_CHECK = 3; const unsigned short STRICT_VALIDITY_CHECK = 4; readonly attribute DOMString defaultValue; readonly attribute DOMStringList enumeratedValues; boolean canInsertBefore(in Node newChild, in Node refChild); boolean canRemoveChild(in Node oldChild); boolean canReplaceChild(in Node newChild, in Node oldChild); boolean canAppendChild(in Node newChild); boolean isNodeValid(in boolean deep, in unsigned short wFValidityCheckLevel) raises(ExceptionVAL); };
An integer indicating which type of validation this is. Stricter
validation for certain XML dialects can be done by extending the
NodeEditVAL
interface adding a new
CheckTypeVAL
constant(s).
NS_WF_CHECK
WF_CHECK
.PARTIAL_VALIDITY_CHECK
NS_WF_CHECK
.STRICT_VALIDITY_CHECK
NS_WF_CHECK
.WF_CHECK
defaultValue
of type
DOMString
, readonlyenumeratedValues
of type
DOMStringList
, readonlyDOMStringList
of distinct values for an
attribute or an element declaration.canAppendChild
Node.appendChild
. Determines whether the
Node.replaceChild
operation would make this document
not partially
valid with respect to the grammar.
newChild
of type
Node
Node
to be appended.
|
|
canInsertBefore
Node.insertBefore
operation would make this document
not partially
valid with respect to the grammar.
newChild
of type
Node
Node
to be inserted.refChild
of type
Node
Node
.
|
|
canRemoveChild
Node.removeChild
. Determines whether the
Node.removeChild
operation would make this document
not partially
valid with respect to the grammar.
oldChild
of type
Node
Node
to be removed.
|
|
canReplaceChild
Node.replaceChild
. Determines whether the
Node.replaceChild
operation would make this document
not partially
valid with respect to the grammar.
newChild
of type
Node
Node
.oldChild
of type
Node
Node
to be replaced.
|
|
isNodeValid
deep
of type
boolean
deep
flag on causes the
isNodeValid
method to check for the whole subtree of
the current node for validity. Setting it to false
only checks the current node and its immediate child nodes. The
validateDocument
method on the
DocumentVAL
interface, however, checks to determine
whether the entire document is valid.wFValidityCheckLevel
of
type unsigned short
|
|
NO_GRAMMAR_AVAILABLE_ERR: Exception is raised if the
DocumentEditVAL related to this node does not have any grammar
associated with it and |
This interface extends the NodeEditVAL
interface with additional methods for guided document editing. An
object implementing this interface must also implement
Element
interface.
interface ElementEditVAL : NodeEditVAL { readonly attribute NameList allowedChildren; readonly attribute NameList allowedParents; readonly attribute NameList allowedNextSiblings; readonly attribute NameList allowedPreviousSiblings; readonly attribute NameList allowedAttributes; readonly attribute NameList requiredAttributes; unsigned short contentType(); boolean canSetAttribute(in DOMString attrname, in DOMString attrval); boolean canSetAttributeNode(in Attr attrNode); boolean canSetAttributeNS(in DOMString namespaceURI, in DOMString qualifiedName, in DOMString value); boolean canRemoveAttribute(in DOMString attrname); boolean canRemoveAttributeNS(in DOMString namespaceURI, in DOMString localName); boolean canRemoveAttributeNode(in Node attrNode); boolean isElementDefined(in DOMString name); boolean isElementDefinedNS(in DOMString namespaceURI, in DOMString name); };
allowedAttributes
of
type NameList
, readonlyNameList
of possible Attr
nodes
that can appear with this type of element. Given the names, nodes
can be created from them; note that these are not nodes from the
instance document, but rather are new nodes that could be inserted
in the document.allowedChildren
of type
NameList
, readonlyNameList
of possible Element
nodes
that can appear as children of this type of element. Note that if
no context of this element exists, then this is NULL
;
it is an empty list if the element is not in the document tree.
Given the names, nodes can be created from them; note that these
are not nodes from the instance document, but rather are new nodes
that could be inserted in the document.allowedNextSiblings
of type NameList
, readonlyNameList
of possible sibling
Element
nodes that can appear after this
element.allowedParents
of type
NameList
, readonlyNameList
of possible Element
nodes
that can appear as a parent of this type of element. Note that if
no context of this element exists, for example, the parent element
of this element, then this is NULL
; it is an empty
list if the element is not in the document tree. Given the names,
nodes can be created from them; note that these are not nodes from
the instance document, but rather are new nodes that could be
inserted in the document.allowedPreviousSiblings
of type NameList
, readonlyNameList
of possible sibling
Element
nodes that can appear before this
element.requiredAttributes
of type NameList
, readonlyNameList
of required Attr
nodes
that must appear with this type of element. Given the names, nodes
can be created from them; note that these are not nodes from the
instance document, but rather are new nodes that could be inserted
in the document.canRemoveAttribute
attrname
of type
DOMString
|
|
canRemoveAttributeNS
namespaceURI
of type
DOMString
localName
of type
DOMString
|
|
canRemoveAttributeNode
attrNode
of type
Node
Attr
node to remove from the attribute
list.
|
|
canSetAttribute
attrname
of type
DOMString
attrval
of type
DOMString
|
|
canSetAttributeNS
setAttributeNS
.
namespaceURI
of type
DOMString
namespaceURI
of namespace.qualifiedName
of type
DOMString
value
of type
DOMString
|
|
canSetAttributeNode
attrNode
of type
Attr
Node
in which the attribute can possibly be
set.
|
|
contentType
|
Constant for one of |
isElementDefined
name
is defined in
the grammar.
name
of type
DOMString
|
A boolean that is |
isElementDefinedNS
name
in this
namespace is defined in the current context.
namespaceURI
of type
DOMString
namespaceURI
of namespace.name
of type
DOMString
|
A boolean that is |
This interface extends the NodeEditVAL
interface with additional methods for document editing. An object
implementing this interface must also implement
CharacterData
interface.
interface CharacterDataEditVAL : NodeEditVAL { readonly attribute boolean isWhitespaceOnly; boolean canSetData(in DOMString arg); boolean canAppendData(in DOMString arg); boolean canReplaceData(in unsigned long offset, in unsigned long count, in DOMString arg); boolean canInsertData(in unsigned long offset, in DOMString arg); boolean canDeleteData(in unsigned long offset, in unsigned long count); };
isWhitespaceOnly
of type boolean
, readonlytrue
if content only whitespace;
false
for non-whitespace.canAppendData
arg
of type
DOMString
|
|
canDeleteData
offset
of type
unsigned long
count
of type
unsigned long
|
|
canInsertData
offset
of type
unsigned long
arg
of type
DOMString
|
|
canReplaceData
offset
of type
unsigned long
count
of type
unsigned long
arg
of type
DOMString
|
|
canSetData
arg
of type
DOMString
|
|
This section contains Range-related "Document-editing" methods.
This interface extends the Range
interface with
additional methods for guided document editing.
interface RangeVAL : Range { boolean canSurroundContents(in Node node1, in Node node2, in Node b); NameList getAlternativeElements(in Node refChild); };
canSurroundContents
node1
of type
Node
node2
of type
Node
b
of type
Node
|
|
getAlternativeElements
refChild
of type
Node
|
A list of names of alternative elements. |
This appendix contains the complete OMG IDL [OMG IDL] for the Level 3 Document Object Model Validation definitions.
The IDL files are also available as: http://www.w3.org/TR/2003/WD-DOM-Level-3-Val-20030205/idl.zip
// File: validation.idl #ifndef _VALIDATION_IDL_ #define _VALIDATION_IDL_ #include "dom.idl" #pragma prefix "dom.w3c.org" module validation { typedef dom::DOMString DOMString; typedef dom::DOMStringList DOMStringList; typedef dom::Node Node; typedef dom::NameList NameList; typedef dom::Attr Attr; typedef dom::Range Range; exception ExceptionVAL { unsigned short code; }; // ExceptionVALCode const unsigned short NO_GRAMMAR_AVAILABLE_ERR = 71; interface NodeEditVAL { // CheckTypeVAL const unsigned short WF_CHECK = 1; const unsigned short NS_WF_CHECK = 2; const unsigned short PARTIAL_VALIDITY_CHECK = 3; const unsigned short STRICT_VALIDITY_CHECK = 4; readonly attribute DOMString defaultValue; readonly attribute DOMStringList enumeratedValues; boolean canInsertBefore(in Node newChild, in Node refChild); boolean canRemoveChild(in Node oldChild); boolean canReplaceChild(in Node newChild, in Node oldChild); boolean canAppendChild(in Node newChild); boolean isNodeValid(in boolean deep, in unsigned short wFValidityCheckLevel) raises(ExceptionVAL); }; interface ElementEditVAL : NodeEditVAL { readonly attribute NameList allowedChildren; readonly attribute NameList allowedParents; readonly attribute NameList allowedNextSiblings; readonly attribute NameList allowedPreviousSiblings; readonly attribute NameList allowedAttributes; readonly attribute NameList requiredAttributes; unsigned short contentType(); boolean canSetAttribute(in DOMString attrname, in DOMString attrval); boolean canSetAttributeNode(in Attr attrNode); boolean canSetAttributeNS(in DOMString namespaceURI, in DOMString qualifiedName, in DOMString value); boolean canRemoveAttribute(in DOMString attrname); boolean canRemoveAttributeNS(in DOMString namespaceURI, in DOMString localName); boolean canRemoveAttributeNode(in Node attrNode); boolean isElementDefined(in DOMString name); boolean isElementDefinedNS(in DOMString namespaceURI, in DOMString name); }; interface CharacterDataEditVAL : NodeEditVAL { readonly attribute boolean isWhitespaceOnly; boolean canSetData(in DOMString arg); boolean canAppendData(in DOMString arg); boolean canReplaceData(in unsigned long offset, in unsigned long count, in DOMString arg); boolean canInsertData(in unsigned long offset, in DOMString arg); boolean canDeleteData(in unsigned long offset, in unsigned long count); }; interface DocumentEditVAL : NodeEditVAL { attribute boolean continuousValidityChecking; NameList getDefinedElementTypes(in DOMString namespaceURI); void validateDocument() raises(ExceptionVAL); }; interface RangeVAL : Range { boolean canSurroundContents(in Node node1, in Node node2, in Node b); NameList getAlternativeElements(in Node refChild); }; }; #endif // _VALIDATION_IDL_
This appendix contains the complete Java [Java] bindings for the Level 3 Document Object Model Validation.
The Java files are also available as http://www.w3.org/TR/2003/WD-DOM-Level-3-Val-20030205/java-binding.zip
package org.w3c.dom.validation; public class ExceptionVAL extends RuntimeException { public ExceptionVAL(short code, String message) { super(message); this.code = code; } public short code; // ExceptionVALCode public static final short NO_GRAMMAR_AVAILABLE_ERR = 71; }
package org.w3c.dom.validation; import org.w3c.dom.NameList; public interface DocumentEditVAL extends NodeEditVAL { public boolean getContinuousValidityChecking(); public void setContinuousValidityChecking(boolean continuousValidityChecking); public NameList getDefinedElementTypes(String namespaceURI); public void validateDocument() throws ExceptionVAL; }
package org.w3c.dom.validation; import org.w3c.dom.Node; import org.w3c.dom.DOMStringList; public interface NodeEditVAL { // CheckTypeVAL public static final short WF_CHECK = 1; public static final short NS_WF_CHECK = 2; public static final short PARTIAL_VALIDITY_CHECK = 3; public static final short STRICT_VALIDITY_CHECK = 4; public String getDefaultValue(); public DOMStringList getEnumeratedValues(); public boolean canInsertBefore(Node newChild, Node refChild); public boolean canRemoveChild(Node oldChild); public boolean canReplaceChild(Node newChild, Node oldChild); public boolean canAppendChild(Node newChild); public boolean isNodeValid(boolean deep, short wFValidityCheckLevel) throws ExceptionVAL; }
package org.w3c.dom.validation; import org.w3c.dom.Node; import org.w3c.dom.Attr; import org.w3c.dom.NameList; public interface ElementEditVAL extends NodeEditVAL { public NameList getAllowedChildren(); public NameList getAllowedParents(); public NameList getAllowedNextSiblings(); public NameList getAllowedPreviousSiblings(); public NameList getAllowedAttributes(); public NameList getRequiredAttributes(); public short contentType(); public boolean canSetAttribute(String attrname, String attrval); public boolean canSetAttributeNode(Attr attrNode); public boolean canSetAttributeNS(String namespaceURI, String qualifiedName, String value); public boolean canRemoveAttribute(String attrname); public boolean canRemoveAttributeNS(String namespaceURI, String localName); public boolean canRemoveAttributeNode(Node attrNode); public boolean isElementDefined(String name); public boolean isElementDefinedNS(String namespaceURI, String name); }
package org.w3c.dom.validation; public interface CharacterDataEditVAL extends NodeEditVAL { public boolean getIsWhitespaceOnly(); public boolean canSetData(String arg); public boolean canAppendData(String arg); public boolean canReplaceData(int offset, int count, String arg); public boolean canInsertData(int offset, String arg); public boolean canDeleteData(int offset, int count); }
package org.w3c.dom.validation; import org.w3c.dom.Node; import org.w3c.dom.Range; import org.w3c.dom.NameList; public interface RangeVAL extends Range { public boolean canSurroundContents(Node node1, Node node2, Node b); public NameList getAlternativeElements(Node refChild); }
This appendix contains the complete ECMAScript [ECMAScript] binding for the Level 3 Document Object Model Validation definitions.
Many people contributed to the DOM specifications (Level 1, 2 or 3), including members of the DOM Working Group and the DOM Interest Group. We especially thank the following:
Andrew Watson (Object Management Group), Andy Heninger (IBM), Angel Diaz (IBM), Arnaud Le Hors (W3C and IBM), Ashok Malhotra (IBM and Microsoft), Ben Chang (Oracle), Bill Smith (Sun), Bill Shea (Merrill Lynch), Bob Sutor (IBM), Chris Lovett (Microsoft), Chris Wilson (Microsoft), David Brownell (Sun), David Ezell (Hewlett Packard Company), David Singer (IBM), Dimitris Dimitriadis (Improve AB), Don Park (invited), Elena Litani (IBM), Eric Vasilik (Microsoft), Gavin Nicol (INSO), Ian Jacobs (W3C), James Clark (invited), James Davidson (Sun), Jared Sorensen (Novell), Jeroen van Rotterdam (X-Hive Corporation), Joe Kesselman (IBM), Joe Lapp (webMethods), Joe Marini (Macromedia), Johnny Stenback (Netscape/AOL), Jon Ferraiolo (Adobe), Jonathan Marsh (Microsoft), Jonathan Robie (Texcel Research and Software AG), Kim Adamson-Sharpe (SoftQuad Software Inc.), Lauren Wood (SoftQuad Software Inc., former Chair), Laurence Cable (Sun), Mark Davis (IBM), Mark Scardina (Oracle), Martin Dürst (W3C), Mary Brady (NIST), Mick Goulish (Software AG), Mike Champion (Arbortext and Software AG), Miles Sabin (Cromwell Media), Patti Lutsky (Arbortext), Paul Grosso (Arbortext), Peter Sharpe (SoftQuad Software Inc.), Phil Karlton (Netscape), Philippe Le Hégaret (W3C, W3C team contact and former Chair), Ramesh Lekshmynarayanan (Merrill Lynch), Ray Whitmer (iMall, Excite@Home, and Netscape/AOL, Chair), Rezaur Rahman (Intel), Rich Rollman (Microsoft), Rick Gessner (Netscape), Rick Jelliffe (invited), Rob Relyea (Microsoft), Scott Isaacs (Microsoft), Sharon Adler (INSO), Steve Byrne (JavaSoft), Tim Bray (invited), Tim Yu (Oracle), Tom Pixley (Netscape/AOL), Vidur Apparao (Netscape), Vinod Anupam (Lucent).
Thanks to all those who have helped to improve this specification by sending suggestions and corrections (Please, keep bugging us with your issues!).
This specification was written in XML. The HTML, OMG IDL, Java and ECMAScript bindings were all produced automatically.
Thanks to Joe English, author of cost, which was used as the basis for producing DOM Level 1. Thanks also to Gavin Nicol, who wrote the scripts which run on top of cost. Arnaud Le Hors and Philippe Le Hégaret maintained the scripts.
After DOM Level 1, we used Xerces as the basis DOM implementation and wish to thank the authors. Philippe Le Hégaret and Arnaud Le Hors wrote the Java programs which are the DOM application.
Thanks also to Jan Kärrman, author of html2ps, which we use in creating the PostScript version of the specification.
Several of the following term definitions have been borrowed or modified from similar definitions in other W3C or standards documents. See the links within the definitions for more information.
Document
.
This element node is a child of the Document
node. See
Well-Formed
XML Documents in XML [XML 1.0].For the latest version of any W3C specification please consult the list of W3C Technical Reports available at http://www.w3.org/TR.
The references listed in this section are normatives.