- From: Philippe Le Hegaret <plh@w3.org>
- Date: Thu, 19 Apr 2001 13:06:14 -0400
- To: WWW DOM <www-dom@w3.org>
- Message-ID: <3ADF1B06.BF19695F@w3.org>
This is an update for the Content Models module: http://www.w3.org/TR/2001/WD-DOM-Level-3-CMLS-20010419/ Philippe PS: I included a CVS diff from the XML sources. Let me know if you find it useful.
Index: content-models.xml =================================================================== RCS file: /w3ccvs/WWW/DOM/Group/drafts/level-3-src/xml/cm-ls/content-models.xml,v retrieving revision 1.19 retrieving revision 1.35 diff -r1.19 -r1.35 2c2 < <!-- $Id: content-models.xml,v 1.19 2001/02/08 03:55:42 plehegar Exp $ --> --- > <!-- $Id: content-models.xml,v 1.35 2001/04/18 21:29:56 plehegar Exp $ --> 11c11 < <head>Content Models and Validation</head> --- > <head> Content Models and Validation</head> 28c28 < EARLY DRAFT! Last known edit 02/02/2001 --- > EARLY DRAFT! Last known edit 04/11/2001 30c30 < proposed revisions already marked up as per spec.dtd! --- > proposed revisions already marked up as per spec.dtd! 35c35 < | OVERVIEW | --- > | OVERVIEW | 46,50c46,48 < including Namespace well-formedness. A DOM application can use the < <code>hasFeature</code> method of the<code>DOMImplementation</code> interface < to determine whether a given DOM supports these capabilities or not. One < feature string for the CM-editing interfaces listed in this section is < "CM-EDIT" and another feature string for document-editing interfaces is --- > including Namespace well-formedness. A DOM application can use the <code>hasFeature</code> method of the<code>DOMImplementation</code> interface to determine whether a given DOM supports these capabilities > or not. One feature string for the CM-editing interfaces listed in this section > is "CM-EDIT" and another feature string for document-editing interfaces is 128c126,127 < <p>CR5. Associate a CM with a document and make it the active CM.</p> --- > <p>CR5. Associate a CM with a document and make it the active CM.</p> > 231,236c230,231 < the former will report the element's <code>QName</code>, e.g., < <code>foo:bar</code>, whereas the latter will report its namespace and local < name, e.g., <code>{http://my.namespace}bar</code>. We have added the < <code>isNamespaceAware</code> attribute to the generic CM object to help < applications determine which of these fields are important, but we are still < analyzing this challenge.</p> --- > the former will report the element's <code>QName</code>, e.g., <code>foo:bar</code>, whereas the latter will report its namespace and local name, e.g., <code>{http://my.namespace}bar</code>. We have added the <code>isNamespaceAware</code> attribute to the generic CM object to help applications determine which > of these fields are important, but we are still analyzing this challenge.</p> 274c269,270 < follow, starting off with the data structures and "CM-editing" methods. </p><definitions> --- > follow, starting off with the data structures and "CM-editing" methods. </p> > <definitions> 283,289c279,287 < <p><code>CMModel</code> is an abstract object that could map to a < DTD, an XML Schema, a database schema, etc. It's a generalized content model < object, that has both an internal and external subset. The internal subset < would always exist, even if empty, with the external subset (if present) being < represented as a link to one or more <code>CMExternalModel</code>s. It is < possible, however, that none of these <code>CMExternalModel</code>s are < active.</p> --- > <p><code>CMModel</code> is an abstract object that could map to a DTD, an XML Schema, a > database schema, etc. It's a generalized content model object, that has both an > internal and external subset. The internal subset would always exist, even if > empty, with the external subset (if present) being represented as by an > "active" <code>CMExternalModel</code>. Many <code>CMExternalModel</code>s could exist, but only one can be specified as "active"; it is also > possible that none are "active". The issue of multiple content models is > misleading since in this architecture, only one <code>CMModel</code> exists, with an internal subset that references the external subset. If > the external subset changes to another "acitve" <code>CMExternalModel</code>, the internal subset is "fixed up." The CMModel also contains the > factory methods needed to create a various types of CMNodes like <code>CMElementDeclaration</code>, <code>CMAttributeDeclaration</code>, etc. </p> 295,296c293,294 < terms of namespaces and local names; false if the document structure is defined < only in terms of <code>QNames</code>.</p> --- > terms of namespaces and local names; false if the document structure is defined > only in terms of <code>QNames</code>.</p> 299,300c297,298 < <attribute name="rootElementDecl" type="ElementDeclaration" < id="CMModel-topLevelElementDecl" readonly="yes"> --- > <attribute name="rootElementDecl" type="CMElementDeclaration" > id="CMModel-topLevelElementDecl" readonly="no"> 302c300,309 < <p>The root element declaration for the content model. </p> --- > <p>The root element declaration for the content model. Although a > root element is specified in the document instance, when a content model is > generated, a user should be able to chose the root element for editing purpose. > This is just a placeholder for that element. It could also be null. For > validating an XML document, root element must be defined in its active content > model. CMModel.rootElementDecl provides access to that root element > declaration. This recommendation does not say how to fill in the > rootElementdecl. It could be manually done by the user before validating a > document, in some cases where possible, the CMModle loader may be able to fill > it in etc.</p> 306,307c313,314 < <p>Location of the document describing the content model < defined in this CMModel.</p> --- > <p>Location of the document describing the content model defined in > this CMModel.</p> 313,314c320,321 < <p>This method returns a DOMString defining the absolute < location from which this document is retrieved including the document name.</p> --- > <p>This method returns a DOMString defining the absolute location > from which this document is retrieved including the document name.</p> 319c326 < </method> --- > </method> 337,338c344 < <p>Returns <code>CMNode</code> list of all the constituent < nodes in the content model. </p> --- > <p>Returns <code>CMNode</code> list of all the constituent nodes in the content model. </p> 396,397c402,403 < i.e., confirming that it's well-formed and valid per its own formal grammar. < Note that within a CMModel, a pointer to a CMExternalModel can exist.</p> --- > i.e., confirming that it's well-formed and valid per its own formal grammar. > Note that within a CMModel, a pointer to a CMExternalModel can exist.</p> 408a415,565 > <!--=================================================== > == Factory Methods == > =======================================================--> > <method id="CM-Interfaces-CMModel-createCMElementDeclaration" > name="createCMElementDeclaration"> > <descr> > <p>Creates an element declaration for the element type specified. > The returned object implements CMElementDeclaration interface. </p> > </descr> > <parameters> > <param name="namespaceURI" type="DOMString"> > <descr> > <p></p> > </descr> > </param> > <param name="qualifiedElementName" type="DOMString" attr="in"> > <descr> > <p>The qualified name of the element type being declared.</p> > </descr> > </param> > <param name="contentSpec" type="int" attr="in"> > <descr> > <p>Constant for MIXED, EMPTY, ANY and CHILDREN.</p> > <p></p> > </descr> > </param> > </parameters><returns type="CMElementDeclaration"> > <descr> > <p>A new CMElementDeclaration object with <code>name</code> attribute set to qualifiedElementName and the <code>contentType</code> set to contentSpec. Other attributes of the element declaration are set > through CMElementDeclaration interface methods.</p> > </descr></returns><raises><exception name="DOMException"> > <descr> > <p>INVALID_CHARACTER_ERR: Raised if the specified name contains > an illegal character.</p> > <p>DUPLICATE_NAME_ERR:Raised if an element declaration already > exists with the same name for a given CMModel.</p> > </descr></exception></raises> > </method> > <method id="CM-Interfaces-CMModel-createCMAttributeDeclaration" > name="createCMAttributeDeclaration"> > <descr> > <p>Creates an attribute declaration. The returned object implements > CMAttributeDeclaration interface. </p> > </descr> > <parameters> > <param name="namespaceURI" type="DOMString"> > <descr> > <p></p> > </descr> > </param> > <param name="qualifiedName" type="DOMString" attr="in"> > <descr> > <p>The name of the attribute being declared.</p> > </descr> > </param> > </parameters><returns type="CMAttributeDeclaration"> > <descr> > <p>A new CMAttributeDeclaration object with <code>attributeName</code> attribute set to input qualifiedname parameter.</p> > </descr></returns><raises><exception name="DOMException"> > <descr> > <p>INVALID_CHARACTER_ERR: Raised if the specified name contains > an illegal character.</p> > </descr></exception></raises> > </method> > <method id="CM-Interfaces-CMModel-createCMNotationDeclaration" > name="createCMNotationDeclaration"> > <descr> > <p>Creates a new notation declaration. The returned object > implements CMNotationDeclaration interface. </p> > </descr> > <parameters> > <param name="name" type="DOMString" attr="in"> > <descr> > <p>The name of the notation being declared.</p> > </descr> > </param> > <param attr="in" name="systemIdentifier" type="DOMString"> > <descr> > <p>The system identifier for the notation declaration.</p> > </descr> > </param> > <param name="publicIdentifier" type="DOMString"> > <descr> > <p>The public identifier for the notation declaraiton.</p> > </descr> > </param> > </parameters><returns type="CMNotationDeclaration"> > <descr> > <p>A new CMNotationDeclaration object with <code>notationName</code> attribute set to name.</p> > </descr></returns><raises><exception name="DOMException"> > <descr> > <p>INVALID_CHARACTER_ERR: Raised if the specified name contains > an illegal character.</p> > <p>DUPLICATE_NAME_ERR:Raised if a notation declaration already > exists with the same name for a given CMModel.</p> > </descr></exception></raises> > </method> > <method id="CM-Interfaces-CMModel-createCMEntityDeclaration" > name="createCMEntityDeclaration"> > <descr> > <p>Creates a new entity declaration. The returned object implements > CMEntityDeclaration interface. </p> > </descr> > <parameters> > <param name="name" type="DOMString" attr="in"> > <descr> > <p>The name of the entity being declared.</p> > </descr> > </param> > </parameters><returns type="CMEntityDeclaration"> > <descr> > <p>A new CMNotationDeclaration object with <code>entityName</code> attribute set to name.</p> > </descr></returns><raises><exception name="DOMException"> > <descr> > <p>INVALID_CHARACTER_ERR: Raised if the specified name contains > an illegal character.</p> > </descr></exception></raises> > </method> > <method id="CM-Interfaces-CMModel-createCMChildren" > name="createCMChildren"> > <descr> > <p>Creates a new CMChildren object. The subModels of the CMChildren > is build using CMChildren interface methods.</p> > </descr> > <parameters> > <param name="minOccurs" type="unsigned long" attr="in"> > <descr> > <p>The minimum occurance for the subModels of this > CMChildren.</p> > </descr> > </param> > <param name="maxOccurs" type="unsigned long" attr="in"> > <descr> > <p>The maximum occurance for the subModels of this > CMChildren.</p> > </descr> > </param> > <param name="operator" type="unsigned short"> > <descr> > <p>operator of type CHOICE, SEQ or NONE</p> > </descr> > </param> > </parameters><returns type="CMChildren"> > <descr> > <p>A new CMChildren object.</p> > </descr></returns><raises><exception name="DOMException"> > <descr> > <p>INVALID_CHARACTER_ERR: Raised if the specified name contains > an illegal character.</p> > </descr></exception></raises> > </method> 420,422c577,579 < <p><code>CMExternalModel</code> is an abstract object that could < map to a DTD, an XML Schema, a database schema, etc. It's a generalized content < model object that is not bound to a particular XML document.</p> --- > <p><code>CMExternalModel</code> is an abstract object that could map to a DTD, an XML Schema, a > database schema, etc. It's a generalized content model object that is not bound > to a particular XML document.</p> 432,460c589,608 < <p><code>CMNode</code>is analogous to a < <code>Node</code> in the Core DOM, e.g., an element declaration. This can exist < for both <code>CMExternalModel</code> (include/ignore must be handled here) and < <code>CMModel</code>. It should handle the following: </p> < <p> <code> interface CommentsPIsDeclaration { attribute < ProcessingInstruction pis; attribute Comment comments; }; interface Conditional < Declaration { attribute boolean includeIgnore; };</code> </p> < <p>Opaque. </p> < </descr> < <constant name="ELEMENT_DECLARATION" type="unsigned short" value="1" < id='CMNode-ELEMENT_DECLARATION'> < <descr> < <p>The node is an <code>ElementDeclaration</code>.</p> < </descr></constant><constant < name="ATTRIBUTE_DECLARATION" < id='CMNode-ATTRIBUTE_DECLARATION' < type="unsigned short" value="2"> < <descr> < <p>The node is an <code>AttributeDeclaration</code>.</p> < </descr></constant><constant name="CM_NOTATION_DECLARATION" < id='CMNode-NOTATION_DECLARATION' < type="unsigned short" value="3"> < <descr> < <p>The node is a <code>CMNotationDeclaration</code>.</p> < </descr></constant><constant name="ENTITY_DECLARATION" < id='CMNode-ENTITY_DECLARATION' < type="unsigned short" value="4"> < <descr> < <p>The node is an <code>EntityDeclaration</code>.</p> --- > <p><code>CMNode</code>is analogous to a <code>Node</code> in the Core DOM, e.g., an element declaration. This can exist for both <code>CMExternalModel</code> and <code>CMModel</code>. It should be able to handle constructs such as comments and processing > instructions.</p> > <p>Opaque.</p> > </descr> > <constant name="CM_ELEMENT_DECLARATION" type="unsigned short" value="1" > id="CMNode-ELEMENT_DECLARATION"> > <descr> > <p>The node is an <code>CMElementDeclaration</code>.</p> > </descr></constant><constant name="CM_ATTRIBUTE_DECLARATION" > id="CMNode-ATTRIBUTE_DECLARATION" type="unsigned short" value="2"> > <descr> > <p>The node is an <code>CMAttributeDeclaration</code>.</p> > </descr></constant><constant name="CM_NOTATION_DECLARATION" > id="CMNode-NOTATION_DECLARATION" type="unsigned short" value="3"> > <descr> > <p>The node is a <code>CMNotationDeclaration</code>.</p> > </descr></constant><constant name="CM_ENTITY_DECLARATION" > id="CMNode-ENTITY_DECLARATION" type="unsigned short" value="4"> > <descr> > <p>The node is an <code>CMEntityDeclaration</code>.</p> 462,469c610,616 < id='CMNode-CM_CHILDREN' < value="5"> < <descr> < <p>The node is a <code>CMChildren</code>.</p> < </descr></constant><constant id='CMNode-CM_MODEL' name="CM_MODEL" type="unsigned short" < value="6"> < <descr> < <p>The node is a <code>CMModel</code>.</p> --- > id="CMNode-CM_CHILDREN" value="5"> > <descr> > <p>The node is a <code>CMChildren</code>.</p> > </descr></constant><constant id="CMNode-CM_MODEL" name="CM_MODEL" > type="unsigned short" value="6"> > <descr> > <p>The node is a <code>CMModel</code>.</p> 471,474c618,620 < id='CMNode-CM_EXTERNALMODEL' < type="unsigned short" value="7"> < <descr> < <p>The node is a <code>CMExternalModel</code>.</p> --- > id="CMNode-CM_EXTERNALMODEL" type="unsigned short" value="7"> > <descr> > <p>The node is a <code>CMExternalModel</code>.</p> 476,480c622 < readonly="yes" id="CMNodeType-nodeType"> < <descr> < <p>A code representing the underlying object as defined above.</p> < </descr></attribute> < <method name="cloneCM" id="CM-Interfaces-CMNode-cloneCM"> --- > readonly="yes" id="CMNode-nodeType"> 482,496c624,645 < <p>Creates a copy of <code>CMModel</code>. No document refers < to the <code>CMNode</code> returned.</p> < </descr> < <parameters> < </parameters> < <returns type="CMNode"> < <descr> < <p>Cloned <code>CMNode</code>.</p> < </descr> < </returns> < <raises> < </raises> < </method> < <method name="cloneExternalCM" < id="CM-Interfaces-CMNode-cloneExternalCM"> --- > <p>A code representing the underlying object as defined above.</p> > </descr></attribute> > <attribute name="ownerCMModel" type="CMModel" id="CMNode-ownerCMModel"> > > <descr> > <p>The <code>CMModel</code> object associated with this CMNode. For a node of type <code>CM_MODEL</code>, this is <code>null</code>. </p> > </descr></attribute> > <attribute name="nodeName" type="DOMString" readonly="no" > id="CMNode-nodeName"> > <descr> > <p>The <code> qualified name</code> of this CMNode depending on the CMNode type.</p> > </descr></attribute> > <attribute name="prefix" type="DOMString" id="CMNode-prefix"> > <descr> > <p>The namespace prefix of this node, or null if it is > unspecified.</p> > </descr></attribute><attribute name="localName" type="DOMString" > id="CMNode-localName"> > <descr> > <p>Returns the local part of the <code>qualified name</code> of this CMNode.</p> > </descr></attribute><attribute name="namespaceURI" type="DOMString" > id="CMNode-namespaceURI"> 498,500c647,652 < <p>Creates a copy of <code>CMExternalModel</code>. It is < possible that a document would not refer to the <code>CMNode</code> < returned.</p> --- > <p>The namespace URI of this node, or null if it is > unspecified.</p> > </descr></attribute> > <method name="clone" id="CM-Interfaces-CMNode-cloneCM"> > <descr> > <p>Creates a copy of <code>CMNode</code>.</p> 521,522c673 < NodeList</code>; the document order is meaningful, as opposed to < <code>CMNamedNodeMap</code>. </p> --- > NodeList</code>; the document order is meaningful, as opposed to <code>CMNamedNodeMap</code>. </p> 541c692,693 < <interface name="CMDataType" id="CM-Interfaces-CMDataType"> --- > <interface name="CMDataType" id="CM-Interfaces-CMDataType-PrimitiveType"> > 543,545c695,696 < <p>The primitive datatypes supported currently are: < <code>string</code>, <code>boolean</code>, <code>float</code>, < <code>double</code>, <code>decimal</code>.</p> --- > <p>The primitive datatypes supported by base DOM CM implementation > is: <code>string</code> type only. </p> 550,552c701,703 < <p>code representing the <code>string</code> data < type as defined in <loc < href="&xml-schema-2;/#string">XML Schema Datatypes</loc>.</p> --- > <p>code representing the <code>string</code> data type as defined in > <loc href="&xml-schema-2;/#string">XML Schema > Datatypes</loc>.</p> 555,556c706,736 < <constant id="CMDataType-BOOLEAN_DATATYPE" < name="BOOLEAN_DATATYPE" type="short" value="2"> --- > <method name="getCMPrimitiveType" id="CMDataType-getPrimitiveType"> > <descr> > <p>Returns one of the enumerated code representing the primitive > data type.</p> > </descr> > <parameters> > </parameters> > <returns type="short"> > <descr> > <p>code representing the primitive type of the attached data > item.</p> > </descr> > </returns> > <raises> > </raises> > </method> > </interface><!--===================================================================== > = = > = CMPrimitiveType = > = = > ======================================================================--> > <interface name="CMPrimitiveType" inherits="CMDataType" > id="CM-interface-CMPrimitiveType"> > <descr> > <p>The primitive types supported by optional DOM CM > implelementations. A DOM application can use the hasFeature method of the > DOMImplementation interface to determine whether this interface is supported or > not. The feature string for all the interfaces listed in this section is > "CMPTYPES" and the version is "3.0". </p> > </descr><constant id="CMDataType-BOOLEAN_DATATYPE" > name="BOOLEAN_DATATYPE" type="short" value="2"> 558,559c738,740 < <p>code representing the <code>boolean</code> data < type as defined in <loc href="&xml-schema-2;/#boolean">XML Schema Datatypes</loc>.</p> --- > <p>code representing the <code>boolean</code> data type as defined in > <loc href="&xml-schema-2;/#boolean">XML Schema > Datatypes</loc>.</p> 565,566c746,748 < <p>code representing the <code>float</code> data < type as defined in <loc href="&xml-schema-2;/#float">XML Schema Datatypes</loc>.</p> --- > <p>code representing the <code>float</code> data type as defined in > <loc href="&xml-schema-2;/#float">XML Schema Datatypes</loc>.</p> > 572,573c754,756 < <p>code representing the <code>double</code> data < type as defined in <loc href="&xml-schema-2;/#double">XML Schema Datatypes</loc>.</p> --- > <p>code representing the <code>double</code> data type as defined in > <loc href="&xml-schema-2;/#double">XML Schema > Datatypes</loc>.</p> 576,585c759,760 < <constant id="CMDataType-LONG_DATATYPE" name="LONG_DATATYPE" type="short" value="5"> < <descr> < <p>code representing a long data type as defined in <loc href="&xml-schema-2;/#long">XML Schema Datatypes</loc>.</p> < </descr></constant><constant id="CMDataType-DECIMAL_DATATYPE" < name="INT_DATATYPE" type="short" value="6"> < <descr> < <p>code representing an <code>integer</code> data < type as defined in <loc href="&xml-schema-2;/#int">XML Schema Datatypes</loc>.</p> < </descr> < </constant><constant name="SHORT_DATATYPE" id="CMDataType-SHORT_DATATYPE" type="short" value="7"> --- > <constant id="CMDataType-DECIMAL_DATATYPE" > name="DECIMAL_DATATYPE" type="short" value="5"> 587,592c762,841 < <p>code representing a short data type as defined in <loc href="&xml-schema-2;/#short">XML Schema Datatypes</loc>.</p> < </descr></constant><constant id="CMDataType-BYTE_DATATYPE" < name="BYTE_DATATYPE" type="short" value="8"> < <descr> < <p>code representing a byte data type as defined in <loc href="&xml-schema-2;/#byte">XML Schema Datatypes</loc>.</p> < </descr></constant><attribute readonly="no" type="int" --- > <p>code representing a <code>decimal</code> data type as defined in > <loc href="&xml-schema-2;/#decimal">XML Schema > Datatypes</loc>.</p> > </descr></constant><constant id="CMDataType-HEXBINARY_DATATYPE" > name="HEXBINARY_DATATYPE" type="short" value="6"> > <descr> > <p>code representing a <code>hexbinary</code> data type as defined in > <loc href="&xml-schema-2;"> XML Schema Datatypes</loc>.</p> > </descr> > </constant><constant name="BASE64BINARY_DATATYPE" > id="CMDataType-BASE64BINARY_DATATYPE" type="short" value="7"> > <descr> > <p>code representing a <code>base64binary</code> data type as defined in > <loc href="&xml-schema-2;">XML Schema Datatypes</loc>.</p> > </descr></constant><constant id="CMDataType-URI_REFERENCE_DATATYPE" > name="ANYURI_DATATYPE" type="short" value="8"> > <descr> > <p>code representing an <code>uri reference</code> data type as defined in > XML Schema > Datatypes.</p> > <note role='editor'> > <p>@@uriReference is no longer part of the XML Schema PR draft.</p> > </note> > </descr></constant><constant id="CMDataType-QNAME_DATATYPE" > name="QNAME_DATATYPE" type="short" value="9"> > <descr> > <p>code representing an <code>XML qualified name</code> data type as defined in > <loc href="&xml-schema-2;/#QName">XML Schema Datatypes</loc>.</p> > > </descr></constant><constant id="CMDataType-DURATION_DATATYPE" > name="DURATION_DATATYPE" type="short" value="10"> > <descr> > <p>code representing a <code>duration</code> data type as defined in > <loc href="&xml-schema-2;">XML Schema Datatypes</loc>.</p> > </descr></constant><constant id="CMDataType-DATETIME_DATATYPE" > name="DATETIME_DATATYPE" type="short" value="11"> > <descr> > <p>code representing a<code>datetime</code> data type as defined in > <loc href="&xml-schema-2;">XML Schema Datatypes</loc>.</p> > </descr></constant><constant id="CMDataType-DATE_DATATYPE" > name="DATE_DATATYPE" type="short" value="12"> > <descr> > <p>code representing a<code>date</code> data type as defined in > <loc href="&xml-schema-2;">XML Schema Datatypes</loc>.</p> > </descr></constant><constant id="CMDataType-TIME_DATATYPE" > name="TIME_DATATYPE" type="short" value="13"> > <descr> > <p>code representing a <code>time</code> data type as defined in > <loc href="&xml-schema-2;">XML Schema Datatypes</loc>.</p> > </descr></constant><constant id="CMDataType-YEARMONTH_DATATYPE" > name="YEARMONTH_DATATYPE" type="short" value="14"> > <descr> > <p>code representing a <code>yearmonth</code> data type as defined in > <loc href="&xml-schema-2;">XML Schema Datatypes</loc>.</p> > </descr></constant><constant id="CMDataType-YEAR_DATATYPE" > name="YEAR_DATATYPE" type="short" value="15"> > <descr> > <p>code representing a <code>year</code> data type as defined in > <loc href="&xml-schema-2;">XML Schema Datatypes</loc>.</p> > </descr></constant><constant id="CMDataType-MONTHDAY_DATATYPE" > name="MONTHDAY_DATATYPE" type="short" value="16"> > <descr> > <p>code representing a <code>monthday</code> data type as defined in > <loc href="&xml-schema-2;">XML Schema Datatypes</loc>.</p> > </descr></constant><constant id="CMDataType-DAY_DATATYPE" > name="DAY_DATATYPE" type="short" value="17"> > <descr> > <p>code representing a <code>day</code> data type as defined in > <loc href="&xml-schema-2;">XML Schema Datatypes</loc>.</p> > </descr></constant><constant id="CMDataType-MONTH_DATATYPE" > name="MONTH_DATATYPE" type="short" value="18"> > <descr> > <p>code representing a <code>month</code> data type as defined in > <loc href="&xml-schema-2;">XML Schema Datatypes</loc>.</p> > </descr></constant><constant id="CMDataType-NOTATION_DATATYPE" > name="NOTATION_DATATYPE" type="short" value="19"> > <descr> > <p>code representing a<code>NOTATION</code>data type as defined in > <loc href="&xml-schema-2;">XML Schema Datatypes</loc>.</p> > </descr></constant><attribute readonly="no" type="decimal" 595c844,845 < <p>The low value for the data type in the value range.</p> --- > <p>The low value for a primitive DECIMAL_DATATYPE in the value > range. </p> 598c848 < <attribute readonly="no" type="int" name="highValue" --- > <attribute readonly="no" type="decimal" name="highValue" 601c851,852 < <p>The high value for the data type in the value range.</p> --- > <p>The high value for a primitive DECIMAL_DATATYPE in the value > range.</p> 604,620c855 < <method name="getPrimitiveType" id="CMDataType-getPrimitiveType"> < <descr> < <p>Returns one of the enumerated code representing the < primitive data type.</p> < </descr> < <parameters> < </parameters> < <returns type="short"> < <descr> < <p>code representing the primitive type of the attached data < item.</p> < </descr> < </returns> < <raises> < </raises> < </method> < </interface> --- > </interface> 624c859 < = ElementDeclaration = --- > = CMElementDeclaration = 627,628c862,863 < <interface name="ElementDeclaration" < id="CM-Interfaces-CMNodeType-ElementDeclaration"> --- > <interface name="CMElementDeclaration" > id="CM-Interfaces-CMElementDeclaration" inherits="CMNode"> 631c866 < context of a <code>CMNode</code>.</p> --- > context of a <code>CMNode</code>.</p> 632a868,886 > <attribute readonly="no" type="CMDataType" name="elementType" > id="CM-Interfaces-CMNodeType-ElementDeclaration-elementType"> > <descr> > <p>Datatype of the element.</p> > </descr> > </attribute> > <attribute readonly="yes" type="boolean" name="isPCDataOnly" > id="CM-Interfaces-CMNodeType-ElementDeclaration-isPCDataOnly"> > <descr> > <p>Boolean defining whether the element type contains child > elements and PCDATA or PCDATA only for mixed element types. True if the element > is of type PCDATA only. Relevant only for mixed content type elements. </p> > </descr> > </attribute> > <attribute name="tagName" type="DOMString" readonly="no" > id="ElementDeclaratoin-name"> > <descr> > <p>tagName of the element being declared.</p> > </descr></attribute> 636,637c890,891 < <p>Gets content type, e.g., empty, any, mixed, elements, < PCDATA, of an element.</p> --- > <p>Gets content type, e.g., empty, any, mixed, elements, PCDATA, of > an element.</p> 667,669c921 < <p>Returns a <code>CMNamedNodeMap</code> containing < <code>AttributeDeclarations</code> for all the attributes that can appear on < this type of element.</p> --- > <p>Returns a <code>CMNamedNodeMap</code> containing <code>CMAttributeDeclarations</code> for all the attributes that can appear on this type of element.</p> 684,687c936,937 < <p>Returns a <code>CMNamedNodeMap</code> containing < <code>ElementDeclarations</code> for all the <code>Element</code>s that can < appear as children of this type of element. Note that which ones can actually < appear, and in what order, is defined by the <code>CMChildren</code>.</p> --- > <p>Returns a <code>CMNamedNodeMap</code> containing <code>CMElementDeclarations</code> for all the <code>Element</code>s that can appear as children of this type of element. Note that which > ones can actually appear, and in what order, is defined by the <code>CMChildren</code>.</p> 706c956,957 < <interface name="CMChildren" id="CM-Interfaces-CMNodeType-CMChildren"> --- > <interface name="CMChildren" id="CM-Interfaces-CMNodeType-CMChildren" > inherits="CMNode"> 708c959 < <p>An element in the context of a <code>CMNode</code>.</p> --- > <p>The content model of a declared element.</p> 710,711c961,968 < <attribute readonly="no" type="DOMString" name="listOperator" < id="CM-Interfaces-CMNodeType-CMChildren-listOperator"> --- > <constant id="CM-Interfaces-CMNodeType-CMChildren-UNBOUNDED" > name="UNBOUNDED" type="unsigned long" value="MAX_LONG"> > <descr> > <p>Signifies unbounded upper limit. The MAX_LONG value is the > maximum value of an unsigned long integer for a given language binding.</p> > </descr></constant><constant > id="CM-Interfaces-CMNodeType-CMChildren-NONE" name="NONE" type="unsigned short" > value="0"> 713c970,988 < <p>Operator list.</p> --- > <p>No operators defined on the <code>subModels</code>. This is usually the case where the subModels contain a single element > declaration.</p> > </descr></constant><constant > id="CM-Interfaces-CMNodeType-CMChildren-SEQUENCE" name="SEQUENCE" > type="unsigned short" value="1"> > <descr> > <p>This constant value signifies a sequence operator ",".</p> > </descr></constant><constant > id="CM-Interfaces-CMNodeType-CMChildren-CHOICE" name="CHOICE" > type="unsigned short" value="2"> > <descr> > <p>This constant value signifies a choice operator "|". </p> > </descr></constant><attribute readonly="no" type="unsigned short" > name="listOperator" id="CM-Interfaces-CMNodeType-CMChildren-listOperator"> > <descr> > <p>One of CHOICE or SEQUENCE. The operator is applied to all the > components(CMNodes) in the the <code>subModels</code>. For example, if the list operator is CHOICE and the components in > subModels are a, b and c then the content model for the element being declared > is (a|b|c)</p> 716,717c991,992 < <attribute readonly="no" type="CMDataType" name="elementType" < id="CM-Interfaces-CMNodeType-CMChildren-elementType"> --- > <attribute readonly="no" type="unsigned long" name="minOccurs" > id="CM-Interfaces-CMNodeType-CMChildren-minOccurs"> 719c994,995 < <p>Datatype of the element.</p> --- > <p>min occurrence for this content particle. Valid values are from > 0 to UNBOUNDED.</p> 722,723c998,1004 < <attribute readonly="no" type="int" name="multiplicity" < id="CM-Interfaces-CMNodeType-CMChildren-multiplicty"> --- > <attribute name="maxOccurs" type="unsigned long" > id="CM-Interfaces-CMNodeType-CMChildren-maxOccurs"> > <descr> > <p>maximum occurrence for this content particle. Valid values are > from 0 to UNBOUNDED.</p> > </descr></attribute><attribute readonly="no" type="CMNodeList" > name="subModels" id="CM-Interfaces-CMNodeType-CMChildren-subModels"> 725c1006 < <p>0 or 1 or many.</p> --- > <p>Additional <code>CMNode</code>s in which the element can be defined.</p> 728,729c1009,1010 < <attribute readonly="no" type="CMNamedNodeMap" name="subModels" < id="CM-Interfaces-CMNodeType-CMChildren-subModels"> --- > <method name="removeCMNode" id="CM-Interfaces-CMChildren-removeCMNode"> > 731,732c1012,1013 < <p>Additional <code>CMNode</code>s in which the element can be < defined.</p> --- > <p>Removes the CMNode at the indicated index position in the > submodel.</p> 734,736c1015,1028 < </attribute> < <attribute readonly="yes" type="boolean" name="isPCDataOnly" < id="CM-Interfaces-CMNodeType-CMChildren-isPCDataOnly"> --- > <parameters> > <param name="nodeIndex" type="unsigned long" attr="in"> > <descr> > <p>Index of the node being removed.</p> > </descr> > </param> > </parameters><returns type="CMNode"> > <descr> > <p>The node removed is returned as a result of this method call. > The method returns <code>null</code> if the index is outside the bounds of the <code>subModels</code> list.</p> > </descr></returns><raises></raises> > </method> > <method name="insertCMNode" id="CM-Interfaces-CMChildren-insertCMNode"> > 738,742c1030,1031 < <p>Boolean defining whether the element type contains child < elements and PCDATA or PCDATA only for mixed element types. True if the element < is of type PCDATA only. Relevant only for mixed content type elements. < <ednote><edtext>Do we really need this attribute ?</edtext> < </ednote></p> --- > <p>Inserts a new node at a position in the submodel referred to by > the nodeIndex. Node already exisiting in the list is moved as needed.</p> 744c1033,1065 < </attribute> --- > <parameters> > <param name="nodeIndex" type="unsigned long" attr="in"> > <descr> > <p>The position of where the newNode is inserted.</p> > </descr> > </param> > <param name="newNode" type="CMNode" attr="in"> > <descr> > <p>The new node to be inserted.</p> > </descr> > </param> > </parameters><returns type="int"> > <descr> > <p>The index value at which it is inserted. If the nodeIndex is > outside the bound of the <code>subModels</code> list, the item is inserted at the back of the list. </p> > </descr></returns><raises></raises> > </method> > <method name="appendCMNode" id="CM-Interfaces-CMChildren-appendCMNode"> > > <descr> > <p>Appends a new node to the end of the list representing the<code>subModels</code>.</p> > </descr> > <parameters> > <param name="newNode" type="CMNode" attr="in"> > <descr> > <p>The new node to be appended.</p> > </descr> > </param> > </parameters><returns type="int"> > <descr> > <p>the length of the <code>subModels</code>.</p> > </descr></returns><raises></raises> > </method> 748c1069 < = AttributeDeclaration = --- > = CMAttributeDeclaration = 751,752c1072,1073 < <interface name="AttributeDeclaration" < id="CM-Interfaces-CMNodeType-AttributeDeclaration"> --- > <interface name="CMAttributeDeclaration" > id="CM-Interfaces-CMNodeType-AttributeDeclaration" inherits="CMNode"> 754c1075 < <p>An attribute in the context of a <code>CMNode</code>.</p> --- > <p>An attribute declaration in the context of a <code>CMNode</code>.</p> 757c1078 < id="AttributeDeclaration-NO_VALUE_CONSTRAINT"> --- > id="AttributeDeclaration-NO_VALUE_CONSTRAINT"> 760c1081 < constraint.</p> --- > constraint.</p> 762,763c1083 < id="AttributeDeclaration-DEFAULT_VALUE_CONSTRAINT" < type="short" value="1"> --- > id="AttributeDeclaration-DEFAULT_VALUE_CONSTRAINT" type="short" value="1"> 767,768c1087 < id="AttributeDeclaration-FIXED_VALUE_CONSTRAINT" < type="short" value="2"> --- > id="AttributeDeclaration-FIXED_VALUE_CONSTRAINT" type="short" value="2"> 771,772c1090,1091 < attribute.</p> < </descr></constant><attribute readonly="yes" type="DOMString" --- > attribute.</p> > </descr></constant><attribute readonly="no" type="DOMString" 775c1094 < <p>Name of attribute.</p> --- > <p>Name of the attribute.</p> 806c1125,1126 < </descr></attribute></interface> --- > </descr></attribute> > </interface> 809c1129 < = EntityDeclaration = --- > = CMEntityDeclaration = 812,813c1132,1133 < <interface name="EntityDeclaration" < id="CM-Interfaces-CMNodeType-EntityDeclaration"> --- > <interface name="CMEntityDeclaration" > id="CM-Interfaces-CMNodeType-EntityDeclaration" inherits="CMNode"> 815c1135,1139 < <p>As in current DOM.</p> --- > <p>Models a general entity declaration in a content model. > <ednote><edtext>The content model does not handle any parameter > entity. It is assumed that the parameter entiites are expanded by the > implementation as the content model is built.</edtext> > </ednote></p> 816a1141,1180 > <constant > id="CM-Interfaces-CMNodeType-EntityDeclaration-INTERNAL_ENTITY" > name="INTERNAL_ENTITY" type="short" value="1"> > <descr> > <p>constant defining an internal entity.</p> > </descr></constant><constant > id="CM-Interfaces-CMNodeType-EntityDeclaration-EXTERNAL_ENTITY" > name="EXTERNAL_ENTITY" type="short" value="2"> > <descr> > <p>constant defining an external entity.</p> > </descr></constant><attribute name="entityType" type="short" > id="CM-Interfaces-CMEntityDeclaration-entityType"> > <descr> > <p>One of the INTERNAL_ENTITY or EXTERNAL_ENTITY.</p> > </descr></attribute><attribute name="entityName" type="DOMString" > id="CM-Interfaces-CMEntityDeclaration-entityName"> > <descr> > <p>The name of the declared general entity.</p> > </descr></attribute><attribute name="entityValue" > type="DOMString" id="CM-Interfaces-CMEntityDeclaration-entityValue"> > <descr> > <p>The replacement text for the internal entity. The entity > references within the replacement text is kept intact. For entity of type > EXTERNAL_ENTITY this is <code>null</code>.</p> > </descr></attribute><attribute name="systemId" type="DOMString" > id="CM-Interfaces-CMEntityDeclaration-systemId"> > <descr> > <p>The system identifier associated with the entity, if specified. > If the system identifier was not specified, this is <code>null</code>.</p> > </descr></attribute><attribute name="publicId" type="DOMString" > id="CM-Interfaces-CMEntityDeclaration-publicId"> > <descr> > <p>The public identifier associated with the entity, if specified. > If the public identifier was not specified, this is <code>null</code>.</p> > </descr></attribute><attribute name="notationName" type="DOMString" > id="CM-Interfaces-CMEntityDeclaration-notationName"> > <descr> > <p>For unparsed entities, the name of the notation declaration for > the entity. For parsed entities, this is <code>null</code>. </p> > </descr></attribute> 824c1188 < id="CM-Interfaces-CMNotationDeclaration"> --- > id="CM-Interfaces-CMNotationDeclaration" inherits="CMNode"> 828,829c1192,1197 < <attribute name="strSystemIdentifier" type="DOMString" < id="CMNotationDeclaration-strSystemIdentifier"> --- > <attribute name="notationName" type="DOMString" > id="CM-Interfaces-CMNotationDeclaration-notationName"> > <descr> > <p>The name of this notation declaration.</p> > </descr></attribute><attribute name="systemId" type="DOMString" > id="CMNotationDeclaration-strSystemIdentifier"> 832,838c1200,1207 < declaration, if present, null otherwise.</p> < </descr></attribute><attribute name="strPublicIdentifier" < type="DOMString" id="CMNotationDeclaration-strPublicIdentifier"> < <descr> < <p>The string representing the public identifier for this < notation declaration.</p> < </descr></attribute></interface> --- > declaration, if present, null otherwise.</p> > </descr></attribute><attribute name="publicId" type="DOMString" > id="CMNotationDeclaration-strPublicIdentifier"> > <descr> > <p>The string representing the public identifier for this notation > declaration.</p> > </descr></attribute> > </interface> 842,844c1211,1213 < <p>This section contains "Validation and Other" methods common to both < the document-editing and CM-editing worlds (includes <code>Document</code>, < <code>DOMImplementation</code>, and <code>DOMErrorHandler</code> methods). </p><definitions> --- > <p>This section contains "Validation and Other" methods common to both the > document-editing and CM-editing worlds (includes <code>Document</code>, <code>DOMImplementation</code>, and <code>DOMErrorHandler</code> methods). </p> > <definitions> 853,854c1222 < <p>The <code>setErrorHandler</code> method is off of the < <code>Document</code> interface.</p> --- > <p>The <code>setErrorHandler</code> method is off of the <code>Document</code> interface.</p> 859,860c1227 < <p>Allow an application to register an error event handler. < </p> --- > <p>Allow an application to register an error event handler. </p> 885,886c1252,1253 < <p>This interface extends the <code>Document</code> interface < with additional methods for both document and CM editing.</p> --- > <p>This interface extends the <code>Document</code> interface with additional methods for both document and CM editing.</p> > 887a1255,1301 > <constant id="CM-Interfaces-DocumentCM-WF_CHECK" name="WF_CHECK" > type="short" value="1"> > <descr> > <p>Check for well-formedness of the document.</p> > </descr></constant><constant > id="CM-Interfaces-DocumentCM-NS_WF_CHECK" name="NS_WF_CHECK" > type="short" value="2"> > <descr> > <p>Check for namespace well-formedness includes WF_CHECK.</p> > </descr></constant><constant > id="CM-Interfaces-DocumentCM-PARTIAL_VALIDATY_CHECK" > name="PARTIAL_VALIDITY_CHECK" type="short" value="3"> > <descr> > <p>Checks for whether the document is partially valid. It includes > NS_WF_CHECK. > </p> > <p> > <termdef id="partially-valid" term="Partially valid">A document is said to be <term>partially valid</term> if it contains > elments/attributes for which an element/attribute declaration has not been made > in the active content model. However, if the element or the attribute has a > declaration in the content model, it must be valid with respect to those > declarations. > </termdef> > </p> > </descr></constant><constant > id="CM-Interfaces-DocumentCM-STRICT_VALIDATY_CHECK" > name="STRICT_VALIDITY_CHECK" type="short" value="4"> > <descr> > <p>Checks for strict validity of the document with respect to > active CM which by defiition includes NS_WF_CHECK.</p> > </descr></constant><attribute name="continuousValidityChecking" > type="boolean" id="DocumentCM-continuousValidityChecking"> > <descr> > <p>An attribute specifying whether continuous checking for the > validity of the document is enforced or not. When set to true the > implementation is free to raise the VALIDATION_ERR exception on DOM operations > that would make the document invalid with respect to "partial validity". This > attribute is false by default.</p> > <ednote><edtext>Add VALIDATION_ERR code to the list of constants in > DOMException.</edtext> > </ednote> > </descr></attribute><attribute id="DocumentCM-ValidityChecking" > name="wfValidityCheckLevel" type="short"> > <descr> > <p>This attribute defines the level at which the validity and > welformedness testing is done by the <code>isValid</code> method.</p> > </descr></attribute> 890,893c1304 < <p>Determines number of <code>CMExternalModel</code>s < associated with the document. Only one <code>CMModel</code> can be associated < with the document, but it may point to a list of < <code>CMExternalModel</code>s.</p> --- > <p>Determines number of <code>CMExternalModel</code>s associated with the document. Only one <code>CMModel</code> can be associated with the document, but it may point to a list of <code>CMExternalModel</code>s.</p> 907,908c1318 < <p>Find the sole <code>CMModel</code> of a document. Only one < <code>CMModel</code> may be associated with the document.</p> --- > <p>Find the sole <code>CMModel</code> of a document. Only one <code>CMModel</code> may be associated with the document.</p> 922,924c1332 < <p>Obtains a list of <code>CMExternalModel</code>s associated < with a document from the <code>CMModel</code>. This list arises when < <code>addCM()</code> is invoked.</p> --- > <p>Obtains list of <code>CMNodes</code> of type<code>CM_EXTERNALMODEL</code>s associated with the document.This list arises when <code>addCM()</code> is invoked.</p> 928c1336 < <returns type="CMExternalModel *"> --- > <returns type="CMNodeList"> 930,931c1338 < <p>A list of <code>CMExternalModel</code>s associated with a < document.</p> --- > <p>A list of <code>CMExternalModel</code>s associated with a document.</p> 939,940c1346 < <p>Find the active <code>CMExternalModel</code> for a < document.</p> --- > <p>Find the active <code>CMExternalModel</code> for a document.</p> 946,947c1352 < <p><code>CMModel</code> with a pointer to the active < <code>CMExternalModel</code> of document.</p> --- > <p><code>CMModel</code> with a pointer to the active <code>CMExternalModel</code> of document.</p> 955,959c1360,1361 < <p>Associate a <code>CMModel</code> with a document. Can be < invoked multiple times to result in a list of <code>CMExternalModel</code>s. < Note that only one sole internal <code>CMModel</code> is associated with the < document, however, and that only one of the possible list of < <code>CMExternalModel</code>s is active at any one time.</p> --- > <p>Associate a <code>CMModel</code> with a document. Can be invoked multiple times to result in a list of <code>CMExternalModel</code>s. Note that only one sole internal <code>CMModel</code> is associated with the document, however, and that only one of the > possible list of <code>CMExternalModel</code>s is active at any one time.</p> 977,979c1379,1380 < <p>Removes a CM associated with a document; actually removes a < <code>CMExternalModel</code>. Can be invoked multiple times to remove a number < of these in the list of <code>CMExternalModel</code>s.</p> --- > <p>Removes a CM associated with a document; actually removes a <code>CMExternalModel</code>. Can be invoked multiple times to remove a number of these in the list > of <code>CMExternalModel</code>s.</p> 997,1000c1398,1402 < <p>Make the given <code>CMModel</code> active. Note that if a < user wants to activate one CM to get default attribute values and then activate < another to do validation, a user can do that; however, only one CM is active at < a time.</p> --- > <p>Make the given <code>CMModel</code> active. Note that if a user wants to activate one CM to get default > attribute values and then activate another to do validation, a user can do > that; however, only one CM is active at a time. In case where an attribute is > declared in an internal subset and corresponding <code>ownerElement</code> points to <code>CMElementDeclaration</code> defined in an external subset, changing active CM will cause the <code>ownerElement</code> to be re-computed. If the owner element is not defined in the newly > active CM, the <code>ownerElement</code> will be an empty node list.</p> 1005,1007c1407 < <p>CM to be active for the document. The < <code>CMModel</code> points to a list of <code>CMExternalModel</code>s; with < this call, only the specified CM will be active.</p> --- > <p>CM to be active for the document. The <code>CMModel</code> points to a list of <code>CMExternalModel</code>s; with this call, only the specified CM will be active.</p> 1013,1014c1413 < <p>True if the <code>CMModel</code> has already been < associated with the document using <code>addCM()</code>; false if not.</p> --- > <p>True if the <code>CMModel</code> has already been associated with the document using <code>addCM()</code>; false if not.</p> 1029,1030c1428 < <p>This interface extends the <code>DOMImplementation</code> < interface with additional methods.</p> --- > <p>This interface extends the <code>DOMImplementation</code> interface with additional methods.</p> 1065,1067c1463,1464 < <p>This section contains "Document-editing" methods (includes < <code>Node</code>, <code>Element</code>, <code>Text</code> and < <code>Document</code> methods).</p><definitions> --- > <p>This section contains "Document-editing" methods (includes <code>Node</code>, <code>Element</code>, <code>Text</code> and <code>Document</code> methods).</p> > <definitions> 1075,1076c1472 < <p>This interface extends the <code>Node</code> interface with < additional methods for guided document editing.</p> --- > <p>This interface extends the <code>Node</code> interface with additional methods for guided document editing.</p> 1081,1084c1477,1479 < <p>Determines whether the <code>Node::InsertBefore</code> < operation would make this document invalid with respect to the currently active < CM. ISSUE: Describe "valid" when referring to partially completed < documents.</p> --- > <p>Determines whether the <code>Node::InsertBefore</code> operation would make this document invalid with respect to the > currently active CM. ISSUE: Describe "valid" when referring to partially > completed documents.</p> 1100,1101c1495 < <p>A boolean that is true if the < <code>Node::InsertBefore</code> operation is allowed.</p> --- > <p>A boolean that is true if the <code>Node::InsertBefore</code> operation is allowed.</p> 1195c1589 < CM.</p> --- > CM.</p> 1201,1202c1595,1596 < <p>True if the node is valid in the current context, false if < not.</p> --- > <p>True if the node is valid/well-formed in the current context > and check level defined by wfValidityCheckLevel, false if not.</p> 1206c1600,1605 < </raises> --- > <exception name="DOMException"> > <descr> > <p>NO_CM_AVAILABLE: Exception is raised if the DocumentCM > related to this node does not have any activeCM and wfValidityCheckLevel is set > to STRICT_VALIDITY_CHECK.</p> > </descr></exception></raises> 1214c1613 < <interface name="ElementCM" inherits="Element" --- > <interface name="ElementCM" inherits="Element,NodeCM" 1217,1218c1616 < <p>This interface extends the <code>Element</code> interface with < additional methods for guided document editing.</p> --- > <p>This interface extends the <code>Element</code> interface with additional methods for guided document editing.</p> 1242c1640 < <returns type="ElementDeclaration"> --- > <returns type="CMElementDeclaration"> 1244c1642 < <p>ElementDeclaration object</p> --- > <p>CMElementDeclaration object</p> 1258c1656 < <p>Sets value for specified attribute.</p> --- > <p>Determines if the value for specified attribute can be set.</p> 1274c1672 < <p>Success or failure.</p> --- > <p>true or false.</p> 1283c1681 < <p>Determines if attribute can be set.</p> --- > <p>Determines if attribute node can be added.</p> 1288,1289c1686 < <p><code>Node</code> in which the attribute can possibly be < set.</p> --- > <p><code>Node</code> in which the attribute can possibly be set.</p> 1304c1701,1702 < <p>Determines if namespace of attribute's node can be set.</p> --- > <p>Determines if the attribute node with the given namespace can be > added.</p> 1309,1310c1707,1736 < <p>Attribute's <code>Node</code> in which to set the < namespace.</p> --- > <p>The <code>Attr</code> to be added to the attribute list.</p> > </descr> > </param> > </parameters> > <returns type="boolean"> > <descr> > <p>Success or failure.</p> > </descr> > </returns> > <raises> > </raises> > </method> > <method name="canSetAttributeNS" > id="CM-Interfaces-ElementCM-ElementCM-canSetAttributeNS"> > <descr> > <p>Determines if the attribute with given namespace and local name > can be created if not already present in the attribute list of the element. If > the attribute with same local name and namespaceURI is already present in the > elements attribute list it sets the value of the attribute and its prefix to > the new value. See DOM core <code>setAttributeNS</code>.</p> > </descr> > <parameters> > <param attr="in" type="DOMString" name="attrname"> > <descr> > <p>Name of attribute.</p> > </descr> > </param> > <param attr="in" type="DOMString" name="attrval"> > <descr> > <p>Value to be assigned to the attribute.</p> 1332,1333c1758,1759 < <method name="canSetAttributeNS" < id="CM-Interfaces-ElementCM-ElementCM-canSetAttributeNS"> --- > <method name="canRemoveAttribute" > id="CM-Interfaces-ElementCM-ElementCM-canRemoveAttribute"> 1335c1761 < <p>Determines if namespace of attribute can be set.</p> --- > <p>Verifies if an attribute by the given name can be removed.</p> 1343c1769,1785 < <param attr="in" type="DOMString" name="attrval"> --- > </parameters> > <returns type="boolean"> > <descr> > <p>true or false.</p> > </descr> > </returns> > <raises> > </raises> > </method> > <method name="canRemoveAttributeNS" > id="CM-Interfaces-ElementCM-ElementCM-canRemoveAttributeNS"> > <descr> > <p>Verifies if an attribute by the given name and namespace can be > removed.</p> > </descr> > <parameters> > <param attr="in" type="DOMString" name="attrname"> 1345c1787 < <p>Value to be assigned to the attribute.</p> --- > <p>Qualified name of the attribute to be removed.</p> 1348c1790 < <param attr="in" type="DOMString" name="namespaceURI"> --- > <param name="namespaceURI" type="DOMString"> 1350c1792 < <p><code>namespaceURI</code> of namespace.</p> --- > <p>The namespace URI of the attribute to remove.</p> 1353c1795,1810 < <param attr="in" type="DOMString" name="localName"> --- > </parameters> > <returns type="boolean"> > <descr> > <p>true or false.</p> > </descr> > </returns> > <raises> > </raises> > </method> > <method name="canRemoveAttributeNode" > id="CM-Interfaces-ElementCM-canRemoveAttributeNode"> > <descr> > <p>Determines if an attribute node can be removed.</p> > </descr> > <parameters> > <param attr="in" type="Node" name="node"> 1355c1812 < <p><code>localName</code> of namespace.</p> --- > <p>The <code>Attr</code> node to remove from the attribute list.</p> 1361c1818 < <p>Success or failure.</p> --- > <p>true or false.</p> 1373c1830 < <interface name="CharacterDataCM" inherits="Text" --- > <interface name="CharacterDataCM" inherits="Text,NodeCM" 1376,1377c1833 < <p>This interface extends the <code>CharacterData</code> < interface with additional methods for document editing.</p> --- > <p>This interface extends the <code>CharacterData</code> interface with additional methods for document editing.</p> 1388,1389c1844,1845 < <p>True if content only whitespace; false for non-whitespace < if it is a text node in element content.</p> --- > <p>True if content only whitespace; false for non-whitespace if > it is a text node in element content.</p> 1551c2007 < <interface name="DocumentTypeCM" inherits="DocumentType" --- > <interface name="DocumentTypeCM" inherits="DocumentType,NodeCM" 1554,1555c2010 < <p>This interface extends the <code>DocumentType</code> interface < with additional methods for document editing.</p> --- > <p>This interface extends the <code>DocumentType</code> interface with additional methods for document editing.</p> 1559,1560c2014,2015 < <p>Determines if this element is defined in the currently < active CM.</p> --- > <p>Determines if this element is defined in the currently active > CM.</p> 1581c2036 < currently active CM.</p> --- > currently active CM.</p> 1611,1612c2066,2067 < <p>Determines if this attribute is defined for this element in < the currently active CM.</p> --- > <p>Determines if this attribute is defined for this element in the > currently active CM.</p> 1617c2072 < <p>Name of element.</p> --- > <p>Name of the element.</p> 1622c2077 < <p>Name of attribute.</p> --- > <p>Name of the attribute.</p> 1638c2093 < currently active CM.</p> --- > currently active CM.</p> 1674,1676c2129,2131 < complete list of defined elements and for a particular element type, the < complete list of defined attributes. These two methods might return a list of < strings which is a type not yet described in the DOM spec. </p> --- > complete list of defined elements and for a particular element type, the > complete list of defined attributes. These two methods might return a list of > strings which is a type not yet described in the DOM spec. </p> 1699c2154,2155 < <interface name="AttributeCM" id="CM-Interfaces-AttributeCM"> --- > <interface name="AttributeCM" id="CM-Interfaces-AttributeCM" > inherits="Attr,NodeCM"> 1701,1702c2157 < <p>This interface extends <code>Attr</code> to provide guided < editing of an XML document.</p> --- > <p>This interface extends <code>Attr</code> to provide guided editing of an XML document.</p> 1707,1708c2162,2163 < <p>returns the corresponding attribute declaration in the < content model.</p> --- > <p>returns the corresponding attribute declaration in the content > model.</p> 1712c2167 < <returns type="AttributeDeclaration"> --- > <returns type="CMAttributeDeclaration"> 1714,1715c2169 < <p>The attribute declaration corresponding to this < attribute</p> --- > <p>The attribute declaration corresponding to this attribute</p> 1723,1724c2177,2178 < <p>Returns the notation declaration for the attributes defined < of type NOTATION.</p> --- > <p>Returns the notation declaration for the attributes defined of > type NOTATION.</p> 1731c2185 < type is of notation type, null otherwise.</p> --- > type is of notation type, null otherwise.</p> 1746c2200,2201 < <p>This section contains DOM error handling interfaces.</p><definitions><!--===================================================================== --- > <p>This section contains DOM error handling interfaces.</p> > <definitions><!--===================================================================== 1753,1758c2208,2212 < <p>Basic interface for DOM error handlers. If an application < needs to implement customized error handling for DOM such as CM or Load/Save, < it must implement this interface and then register an instance using the < <code>setErrorHandler</code> method. All errors and warnings will then be < reported through this interface. Application writers can override the methods < in a subclass to take user-specified actions.</p> --- > <p>Basic interface for DOM error handlers. If an application needs to > implement customized error handling for DOM such as CM or Load/Save, it must > implement this interface and then register an instance using the <code>setErrorHandler</code> method. All errors and warnings will then be reported through this > interface. Application writers can override the methods in a subclass to take > user-specified actions.</p> 1763,1765c2217,2219 < recommendation. The default behavior if the user doesn't register a handler is < to report conditions that are not errors or fatal errors, and then allow the < calling application to continue even after invoking this method.</p> --- > recommendation. The default behavior if the user doesn't register a handler is > to report conditions that are not errors or fatal errors, and then allow the > calling application to continue even after invoking this method.</p> 1771,1773c2225,2227 < position in the case of loading, or a node reference for later validation. The < public ID and system ID for the error location could be some of the < information. </p> --- > position in the case of loading, or a node reference for later validation. The > public ID and system ID for the error location could be some of the > information. </p> 1802,1804c2256,2258 < section 1.2 of the W3C XML 1.0 recommendation. The default behavior if the user < doesn't register a handler is to throw a DOMSystemException and stop all < further processing.</p> --- > section 1.2 of the W3C XML 1.0 recommendation. The default behavior if the user > doesn't register a handler is to throw a DOMSystemException and stop all > further processing.</p> 1809,1812c2263,2266 < <p>Location of the fatal error, which could be either a < source position in the case of loading, or a node reference for later < validation. The public ID and system ID for the error location could be some of < the information. </p> --- > <p>Location of the fatal error, which could be either a source > position in the case of loading, or a node reference for later validation. The > public ID and system ID for the error location could be some of the > information. </p> 1840,1843c2294,2297 < <p>Receive notification of a recoverable error per section 1.2 < of the W3C XML 1.0 recommendation. The default behavior if the user doesn't < register a handler is to report conditions that are not fatal errors, and allow < the calling application to continue processing.</p> --- > <p>Receive notification of a recoverable error per section 1.2 of > the W3C XML 1.0 recommendation. The default behavior if the user doesn't > register a handler is to report conditions that are not fatal errors, and allow > the calling application to continue processing.</p> 1849,1851c2303,2305 < position in the case of loading, or a node reference for later validation. The < public ID and system ID for the error location could be some of the < information. </p> --- > position in the case of loading, or a node reference for later validation. The > public ID and system ID for the error location could be some of the > information. </p> 1887c2341 < similar to a SAX locator object.</p> --- > similar to a SAX locator object.</p> 1925,1926c2379,2380 < <p>A string containing the public identifier, or null if none < is available.</p> --- > <p>A string containing the public identifier, or null if none is > available.</p> 1940,1941c2394,2395 < <p>A string containing the system identifier, or null if none < is available. </p> --- > <p>A string containing the system identifier, or null if none is > available. </p> 1966,1985c2420,2439 < <p>Editing and generating a content model falls in the CM-editing < world. The most obvious requirement for this set of requirements is for tools < that author content models, either under user control, i.e., explicitly < designed document types, or generated from other representations. The latter < class includes transcoding tools, e.g., synthesizing an XML representation to < match a database schema.</p> < <p>It's important to note here that a DTD's "internal subset" is part < of the Content Model, yet is loaded, stored, and maintained as part of the < individual document instance. This implies that even tools which do not want to < let users change the definition of the Document Type may need to support < editing operations upon this portion of the CM. It also means that our < representation of the CM must be aware of where each portion of its content < resides, so that when the serializer processes this document it can write out < just the internal subset. A similar issue may arise with external parsed < entities, or if schemas introduce the ability to reference other schemas. < Finally, the internal-subset case suggests that we may want at least a < two-level representation of content models, so a single DOM representation of a < DTD can be shared among several documents, each potentially also having its own < internal subset; it's possible that entity layering may be represented the same < way.</p> --- > <p>Editing and generating a content model falls in the CM-editing world. > The most obvious requirement for this set of requirements is for tools that > author content models, either under user control, i.e., explicitly designed > document types, or generated from other representations. The latter class > includes transcoding tools, e.g., synthesizing an XML representation to match a > database schema.</p> > <p>It's important to note here that a DTD's "internal subset" is part of > the Content Model, yet is loaded, stored, and maintained as part of the > individual document instance. This implies that even tools which do not want to > let users change the definition of the Document Type may need to support > editing operations upon this portion of the CM. It also means that our > representation of the CM must be aware of where each portion of its content > resides, so that when the serializer processes this document it can write out > just the internal subset. A similar issue may arise with external parsed > entities, or if schemas introduce the ability to reference other schemas. > Finally, the internal-subset case suggests that we may want at least a > two-level representation of content models, so a single DOM representation of a > DTD can be shared among several documents, each potentially also having its own > internal subset; it's possible that entity layering may be represented the same > way.</p> 1987,2008c2441,2462 < interface with parsers. One of the ongoing problems in the DOM is that there is < some information which must currently be created via completely undocumented < mechanisms, which limits the ability to mix and match DOMs and parsers. Given < that specialized DOMs are going to become more common (sub-classed, or wrappers < around other kinds of storage, or optimized for specific tasks), we must avoid < that situation and provide a "builder" API. Particular pairs of DOMs and < parsers may bypass it, but it's required as a portability mechanism.</p> < <p>Note that several of these applications require that a CM be able to < be created, loaded, and manipulated without/before being bound to a specific < Document. A related issue is that we'd want to be able to share a single < representation of a CM among several documents, both for storage efficiency and < so that changes in the CM can quickly be tested by validating it against a set < of known-good documents. Similarly, there is a known problem in DOM Level 2 < where we assume that the DocumentType will be created before the Document, < which is fine for newly-constructed documents but not a good match for the < order in which an XML parser encounters this data; being able to "rebind" a < Document to a new CM, after it has been created may be desirable.</p> < <p>As noted earlier, questions about whether one can alter the content < of the CM via its syntax, via higher-level abstractions, or both, exist. It's < also worth noting that many of the editing concepts from the Document tree < still apply; users should probably be able to clone part of a CM, remove and < re-insert parts, and so on.</p> --- > interface with parsers. One of the ongoing problems in the DOM is that there is > some information which must currently be created via completely undocumented > mechanisms, which limits the ability to mix and match DOMs and parsers. Given > that specialized DOMs are going to become more common (sub-classed, or wrappers > around other kinds of storage, or optimized for specific tasks), we must avoid > that situation and provide a "builder" API. Particular pairs of DOMs and > parsers may bypass it, but it's required as a portability mechanism.</p> > <p>Note that several of these applications require that a CM be able to be > created, loaded, and manipulated without/before being bound to a specific > Document. A related issue is that we'd want to be able to share a single > representation of a CM among several documents, both for storage efficiency and > so that changes in the CM can quickly be tested by validating it against a set > of known-good documents. Similarly, there is a known problem in DOM Level 2 > where we assume that the DocumentType will be created before the Document, > which is fine for newly-constructed documents but not a good match for the > order in which an XML parser encounters this data; being able to "rebind" a > Document to a new CM, after it has been created may be desirable.</p> > <p>As noted earlier, questions about whether one can alter the content of > the CM via its syntax, via higher-level abstractions, or both, exist. It's also > worth noting that many of the editing concepts from the Document tree still > apply; users should probably be able to clone part of a CM, remove and > re-insert parts, and so on.</p> 2012,2026c2466,2480 < <p>In addition to using the content model to validate a document < instance, applications would like to be able to use it to guide construction < and editing of documents, which falls into the document-editing world. Examples < of this sort of guided editing already exist, and are becoming more common. The < necessary queries can be phrased in several ways, the most useful of which may < be a combination of "what does the DTD allow me to insert here" and "if I < insert this here, will the document still be valid". The former is better < suited to presentation to humans via a user interface, and when taken together < with sub-tree validation may subsume the latter. </p> < <p>It has been proposed that in addition to asking questions about < specific parts of the content model, there should be a reasonable way to obtain < a list of all the defined symbols of a given type (element, attribute, entity) < independent of whether they're valid in a given location; that might be useful < in building a list in a user-interface, which could then be updated to reflect < which of these are relevant for the program's current state.</p> --- > <p>In addition to using the content model to validate a document instance, > applications would like to be able to use it to guide construction and editing > of documents, which falls into the document-editing world. Examples of this > sort of guided editing already exist, and are becoming more common. The > necessary queries can be phrased in several ways, the most useful of which may > be a combination of "what does the DTD allow me to insert here" and "if I > insert this here, will the document still be valid". The former is better > suited to presentation to humans via a user interface, and when taken together > with sub-tree validation may subsume the latter. </p> > <p>It has been proposed that in addition to asking questions about specific > parts of the content model, there should be a reasonable way to obtain a list > of all the defined symbols of a given type (element, attribute, entity) > independent of whether they're valid in a given location; that might be useful > in building a list in a user-interface, which could then be updated to reflect > which of these are relevant for the program's current state.</p> 2028,2031c2482,2485 < attributes, a "can-this-go-there" may prompt a namespace-well-formedness check < and warn you if you're about to conflict with or overwrite another attribute < with the same namespaceURI/localName but different prefix... or same nodeName but < different namespaceURI. </p> --- > attributes, a "can-this-go-there" may prompt a namespace-well-formedness check > and warn you if you're about to conflict with or overwrite another attribute > with the same namespaceURI/localName but different prefix... or same nodeName > but different namespaceURI. </p> 2033,2038c2487,2492 < distance between two valid documents may be through an invalid one. Users may < want to know several levels of detail (all the possible children, those which < would be valid given what precedes this point, those which would be valid given < both preceding and following siblings). Also, once XML Schemas introduce < context sensitive validity, we may have to consider the effect of children as < well as the individual node being inserted.</p> --- > distance between two valid documents may be through an invalid one. Users may > want to know several levels of detail (all the possible children, those which > would be valid given what precedes this point, those which would be valid given > both preceding and following siblings). Also, once XML Schemas introduce > context sensitive validity, we may have to consider the effect of children as > well as the individual node being inserted.</p> 2043,2069c2497,2523 < Content Model) is to use it to validate that a given XML document is in fact a < properly constructed instance of the document type described by this CM. This < again falls into the document-editing world. The XML spec only discusses < performing this test at the time the document is loaded into the "processor", < which most of us have taken to mean that this check should be performed at < parse time. But it is obviously desirable to be able to validate again a document < -- or selected subtrees -- at other times. One such case would be validating an < edited or newly constructed document before serializing it or otherwise passing < it to other users. This issue also arises if the "internal subset" is altered < -- or if the whole Content Model changes.</p> < <p> In the past, the DOM has allowed users to create invalid documents, < and assumed the serializer would accept the task of detecting problems and < announcing/repairing them when the document was written out in XML syntax... or < that they would be checked for validity when read back in. We considered adding < validity checks to the DOM's existing editing operations to prevent creation of < invalid documents, but are currently inclined against this for several reasons. < First, it would impose a significant amount of computational overhead to the < DOM, which might be unnecessary in many situations, e.g., if the change is < occurring in a context where we know the result will be valid. Second, "the < shortest distance between two good documents may be through a bad document". < Preventing a document from becoming temporarily invalid may impose a < considerable amount of additional work on higher-level code and users Hence our < current plan is to continue to permit editing to produce invalid DOMs, but < provide operations which permit a user to check the validity of a node on < demand.</p> < <p>Note that validation includes checking that ID attributes are < unique, and that IDREFs point to IDs which actually exist.</p> --- > Content Model) is to use it to validate that a given XML document is in fact a > properly constructed instance of the document type described by this CM. This > again falls into the document-editing world. The XML spec only discusses > performing this test at the time the document is loaded into the "processor", > which most of us have taken to mean that this check should be performed at > parse time. But it is obviously desirable to be able to validate again a > document -- or selected subtrees -- at other times. One such case would be > validating an edited or newly constructed document before serializing it or > otherwise passing it to other users. This issue also arises if the "internal > subset" is altered -- or if the whole Content Model changes.</p> > <p> In the past, the DOM has allowed users to create invalid documents, and > assumed the serializer would accept the task of detecting problems and > announcing/repairing them when the document was written out in XML syntax... or > that they would be checked for validity when read back in. We considered adding > validity checks to the DOM's existing editing operations to prevent creation of > invalid documents, but are currently inclined against this for several reasons. > First, it would impose a significant amount of computational overhead to the > DOM, which might be unnecessary in many situations, e.g., if the change is > occurring in a context where we know the result will be valid. Second, "the > shortest distance between two good documents may be through a bad document". > Preventing a document from becoming temporarily invalid may impose a > considerable amount of additional work on higher-level code and users Hence our > current plan is to continue to permit editing to produce invalid DOMs, but > provide operations which permit a user to check the validity of a node on > demand.</p> > <p>Note that validation includes checking that ID attributes are unique, > and that IDREFs point to IDs which actually exist.</p> 2073,2080c2527,2534 < which are parsed without reference to their DTDs. Knowing that a document is < well-formed may be useful by itself even when a DTD is available. For example, < users may wish to deliberately save an invalid document, perhaps as a < checkpoint before further editing. Hence, the CM feature will permit both full < validity checking (see next section) and "lightweight" WF checking, as < requested by the caller, as well as processing entity declarations in the CM < even if validation is not turned on. This falls within the document-editing < world.</p> --- > which are parsed without reference to their DTDs. Knowing that a document is > well-formed may be useful by itself even when a DTD is available. For example, > users may wish to deliberately save an invalid document, perhaps as a > checkpoint before further editing. Hence, the CM feature will permit both full > validity checking (see previous section) and "lightweight" WF checking, as > requested by the caller, as well as processing entity declarations in the CM > even if validation is not turned on. This falls within the document-editing > world.</p> 2082,2084c2536,2538 < conditions (proper nesting of elements, constraints on which children may be < placed within each node), there are some checks that are not yet performed. < These include:</p> --- > conditions (proper nesting of elements, constraints on which children may be > placed within each node), there are some checks that are not yet performed. > These include:</p> 2087,2089c2541,2543 < <p>Character restrictions for text content and attribute values. < Some characters aren't permitted even when expressed as numeric character < entities</p> --- > <p>Character restrictions for text content and attribute values. Some > characters aren't permitted even when expressed as numeric character > entities</p> 2095,2096c2549,2550 < <p>The two-character sequence "--" in comments. (Which, be it < noted, some XML validators don't currently remember to test...)</p> --- > <p>The two-character sequence "--" in comments. (Which, be it noted, > some XML validators don't currently remember to test...)</p> 2099,2100c2553,2554 < <p>In addition, Namespaces introduce their own concepts of < well-formedness. Specifically:</p> --- > <p>In addition, Namespaces introduce their own concepts of well-formedness. > Specifically:</p> 2103,2105c2557,2559 < <p>No two attributes on a single Element may have the same < combination of namespaceURI and localName, even if their prefixes are different < and hence they don't conflict under XML 1.0 rules.</p> --- > <p>No two attributes on a single Element may have the same combination > of namespaceURI and localName, even if their prefixes are different and hence > they don't conflict under XML 1.0 rules.</p> 2108,2110c2562,2564 < <p>NamespaceURIs must be legal URI syntax. (Note that once we have < this code, it may be reusable for the URI "datatype" in document content; see < discussion of datatypes.)</p> --- > <p>NamespaceURIs must be legal URI syntax. (Note that once we have this > code, it may be reusable for the URI "datatype" in document content; see > discussion of datatypes.)</p> 2113,2124c2567,2576 < <p>The mapping of namespace prefixes to their URIs must be declared < and consistent. That isn't required during normal DOM operation, since we < perform "early binding" and thereafter refer to nodes primarily via their namespaceURIs < and localName. But it does become an issue when we want to serialize the DOM to < XML syntax, and may be an issue if an application is assuming that all the < declarations are present and correct. This may imply that we should provide a < <code>namespaceNormalize</code> operation, which would create the implied < declarations and reconcile conflicts in some reasonably standardized manner. < This may be a major undertaking, since some DOMs may be using the namespace to < direct subclassing of the nodes or similar special treatment; as with the < existing <code>normalize</code> method, you may be left with a < different-but-equivalent set of node objects.</p> --- > <p>The mapping of namespace prefixes to their URIs must be declared and > consistent. That isn't required during normal DOM operation, since we perform > "early binding" and thereafter refer to nodes primarily via their namespaceURIs > and localName. But it does become an issue when we want to serialize the DOM to > XML syntax, and may be an issue if an application is assuming that all the > declarations are present and correct. This may imply that we should provide a <code>namespaceNormalize</code> operation, which would create the implied declarations and reconcile > conflicts in some reasonably standardized manner. This may be a major > undertaking, since some DOMs may be using the namespace to direct subclassing > of the nodes or similar special treatment; as with the existing <code>normalize</code> method, you may be left with a different-but-equivalent set of node > objects.</p> 2128,2145c2580,2598 < violate these rules, and assumed the serializer would accept the task of < detecting problems and announcing/repairing them when the document was written < out in XML syntax. We considered adding WF checks to the DOM's existing editing < operations to prevent WF violations from arising, but are currently inclined < against this for two reasons. First, it would impose a significant amount of < computational overhead to the DOM, which might be unnecessary in many < situations (for example, if the change is occurring in a context where we know < the illegal characters have already been prevented from arising). Second, "the < shortest distance between two good documents may be through a bad document" -- < preventing a document from becoming temporarily ill-formed may impose a < considerable amount of additional work on higher-level code and users. (Note < possible issue for Serialization: In some applications, being able to save and < reload marginally poorly-formed DOMs might be useful -- editor checkpoint < files, for example.) Hence our current plan is to continue to permit editing to < produce ill-formed DOMs, but provide operations which permit a user to check < the well-formedness of a node on demand, and possibly provide some of the < primitive (e.g., string-checking) functions directly.</p> < </div2></div1><!-- --- > violate these rules, and assumed the serializer would accept the task of > detecting problems and announcing/repairing them when the document was written > out in XML syntax. We considered adding WF checks to the DOM's existing editing > operations to prevent WF violations from arising, but are currently inclined > against this for two reasons. First, it would impose a significant amount of > computational overhead to the DOM, which might be unnecessary in many > situations (for example, if the change is occurring in a context where we know > the illegal characters have already been prevented from arising). Second, "the > shortest distance between two good documents may be through a bad document" -- > preventing a document from becoming temporarily ill-formed may impose a > considerable amount of additional work on higher-level code and users. (Note > possible issue for Serialization: In some applications, being able to save and > reload marginally poorly-formed DOMs might be useful -- editor checkpoint > files, for example.) Hence our current plan is to continue to permit editing to > produce ill-formed DOMs, but provide operations which permit a user to check > the well-formedness of a node on demand, and possibly provide some of the > primitive (e.g., string-checking) functions directly.</p> > </div2> > </div1><!--
Received on Thursday, 19 April 2001 13:06:18 UTC