/[suikacvs]/markup/xml/xmlcc/xmlcc-work.en.html
Suika

Diff of /markup/xml/xmlcc/xmlcc-work.en.html

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by wakaba, Mon Nov 12 12:22:48 2007 UTC revision 1.9 by wakaba, Tue Nov 13 01:11:21 2007 UTC
# Line 1  Line 1 
1  <!DOCTYPE html>  <!DOCTYPE html>
2  <html lang="en" class="formal-specification status-work-in-progress">  <html lang="en" class="formal-specification status-work-in-progress">
3  <head>  <head>
4  <title class=ed>DOM XML Checking</title>  <title>manakai's XML Conformance Checking</title>
5  <link rel="stylesheet" href="http://suika.fam.cx/www/style/html/spec">  <link rel="stylesheet" href="http://suika.fam.cx/www/style/html/spec">
6  <link rel="license" href="http://suika.fam.cx/c/gnu/fdl">  <link rel="license" href="http://suika.fam.cx/c/gnu/fdl">
7    <style>
8      a[id]::before {
9        content: "[" attr(id) "]";
10        color: gray;
11        font-size: 70%;
12        font-family: Courier New, monospace;
13        vertical-align: 60%;
14      }
15    </style>
16  </head>  </head>
17  <body class="has-abstract">  <body class="has-abstract">
18    
19  <div class="header">  <div class="header">
20  <h1 class=ed>DOM XML Checking</h1>  <h1>manakai's XML Conformance Checking</h1>
21  <h2>Working Draft <time datetime=2007-10-27>27 October 2007</time></h2>  <h2>Working Draft <time datetime=2007-11-13>13 November 2007</time></h2>
22    
23  <dl class="versions-uri ed">  <dl class="versions-uri">
24  <dt>This Version</dt>  <dt>This Version</dt>
25    <dd><code class="URI">&lt;<a href="http://suika.fam.cx/www/markup/selectors/ssft/ssft"    <dd><code class="URI">&lt;<a href="http://suika.fam.cx/www/markup/xml/xmlcc/xmlcc-work"
26        >http://suika.fam.cx/www/markup/selectors/ssft/ssft</a>&gt;</code></dd>        >http://suika.fam.cx/www/markup/xml/xmlcc/xmlcc-work</a>&gt;</code></dd>
27  <dt>Latest Version</dt>  <dt>Latest Version</dt>
28    <dd><code class="URI">&lt;<a href="http://suika.fam.cx/www/markup/selectors/ssft/ssft"    <dd><code class="URI">&lt;<a href="http://suika.fam.cx/www/markup/xml/xmlcc/xmlcc"
29        >http://suika.fam.cx/www/markup/selectors/ssft/ssft</a>&gt;</code></dd>        >http://suika.fam.cx/www/markup/xml/xmlcc/xmlcc</a>&gt;</code></dd>
 <!--  
30  <dt>Latest Working Draft</dt>  <dt>Latest Working Draft</dt>
31  -->    <dd><code class="URI">&lt;<a href="http://suika.fam.cx/www/markup/xml/xmlcc/xmlcc-work"
32          >http://suika.fam.cx/www/markup/xml/xmlcc/xmlcc-work</a>&gt;</code></dd>
33  <!-- <dt>Previous Version</dt> -->  <!-- <dt>Previous Version</dt> -->
34  <dt>Version History</dt>  <dt>Version History</dt>
35    <dd><code class=URI>&lt;<a href="http://suika.fam.cx/gate/cvs/markup/selectors/ssft/ssft.en.html">http://suika.fam.cx/gate/cvs/markup/selectors/ssft/ssft.en.html</a>&gt;</code></dd>    <dd><code class=URI>&lt;<a href="http://suika.fam.cx/gate/cvs/markup/xml/xmlcc/xmlcc-work.en.html">http://suika.fam.cx/gate/cvs/markup/xml/xmlcc/xmlcc-work.en.html</a>&gt;</code></dd>
36  </dl>  </dl>
37  <dl class="authors" id="author">  <dl class="authors" id="author">
38  <dt>Author</dt>  <dt>Author</dt>
# Line 111  In addition, the order in which <a href= Line 120  In addition, the order in which <a href=
120  raised is undefined.</p>  raised is undefined.</p>
121  </div>  </div>
122    
123  <div class="section">  <div class="section" id=checking-dom>
124  <h2 class=ed>Algorithms</h2>  <h2>Checking <abbr>DOM</abbr></h2>
125    
126  <p>The following algorithms and definitions are applied to  <p>The following algorithms and definitions are applied to
127  <abbr>XML</abbr> documents; especially, they are not applied  <abbr>XML</abbr> documents; especially, they are not applied
128  to <abbr>HTML</abbr> documents.<!-- TODO: ref to HTML5 --></p>  to <abbr>HTML</abbr> documents.<!-- TODO: ref to HTML5 --></p>
129    
130    <div class=section id=error-categories>
131    <h3>Error Classification</h3>
132    
133  <p class=ed>If a <code>Document</code> node has no  <p class=ed>If a <code>Document</code> node has no
134  xml-well-formedness-error, entity-error, and unknown-error,  xml-well-formedness-error, entity-error, and unknown-error,
135  then it is well-formed.  If a well-formed <code>Document</code>  then it is well-formed.  If a well-formed <code>Document</code>
# Line 134  can be easily serialized into a valid XM Line 146  can be easily serialized into a valid XM
146    
147  <dl id=errors>  <dl id=errors>
148  <dt><dfn id=entity-error><code>entity-error</code></dfn></dt>  <dt><dfn id=entity-error><code>entity-error</code></dfn></dt>
149    <dd class=ed>@@</dd>    <dd>
150        <p class=ed>@@</p>
151        <div class="note memo">
152          <p>This <span class=ed>algorithm</span> does not support
153          <abbr>DOM</abbr> tree with one or more <code>EntityReference</code>
154          nodes.  It is expected that any entity references are expanded
155          at the parse time and any unexpandable entity references
156          make parse time errors raised so that never result in
157          <abbr>DOM</abbr> tree with <code>EntityReference</code> nodes.</p>
158        </div>
159      </dd>
160  <dt><dfn id=round-trip-error><code>round-trip-error</code></dfn></dt>  <dt><dfn id=round-trip-error><code>round-trip-error</code></dfn></dt>
161    <dd class=ed>@@</dd>    <dd class=ed>@@</dd>
162  <dt class=ed><dfn id=unknown-error><code>unknown-error</code></dfn>?</dt>  <dt class=ed><dfn id=unknown-error><code>unknown-error</code></dfn>?</dt>
# Line 172  can be easily serialized into a valid XM Line 194  can be easily serialized into a valid XM
194  (MAY or MUST), #dt-compat for compatibility,  (MAY or MUST), #dt-compat for compatibility,
195  #dt-interop for interoperability</p></div>  #dt-interop for interoperability</p></div>
196    
197    </div>
198    
199    <div class=section id=definitions>
200    <h3>Definitions</h3>
201    
202  <p>The <dfn id=xml-version><abbr>XML</abbr> version</dfn> of a node is  <p>The <dfn id=xml-version><abbr>XML</abbr> version</dfn> of a node is
203  the <abbr>XML</abbr> version of the document to which the node belongs.  the <abbr>XML</abbr> version of the document to which the node belongs.
204  For a <code>Documemt</code> node, the <abbr>XML</abbr> version  For a <code>Documemt</code> node, the <abbr>XML</abbr> version
205  of the document is the value of the <code>xmlVersion</code>  of the document is the value of the <code>xmlVersion</code>
206  attribute.  For a <code>DocumentType</code> node whose  attribute of the node.  For a <code>DocumentType</code> node whose
207  <code>ownerDocument</code> is set to <code>null</code>,  <code>ownerDocument</code> attribute is set to <code>null</code>,
208  the <abbr>XML</abbr> version of the document is <code>1.0</code>.  the <abbr>XML</abbr> version of the document is <code>1.0</code><!--
209    since createDocumentType [DOM3CORE] assumes XML 1.0 [XML10TE] -->.
210  For any other node, the <abbr>XML</abbr> version of the document  For any other node, the <abbr>XML</abbr> version of the document
211  is that of the <code>Document</code> node contained in the  is that of the <code>Document</code> node contained in the
212  <code>ownerDocument</code> attribute of the node.</p>  <code>ownerDocument</code> attribute of the node.</p>
213    
214    </div>
215    
216    <div class=section id=checking-node>
217    <h3>Checking <code>Node</code></h3>
218    
219  <p>The algorithm <dfn title="to check a node" id=algorithm-to-check-a-node>to  <p>The algorithm <dfn title="to check a node" id=algorithm-to-check-a-node>to
220  check a node (<dfn id=var-n><var>n</var></dfn>)</dfn> is defined as  check a node (<dfn id=var-n><var>n</var></dfn>)</dfn> is defined as
221  following:</p>  following:</p>
# Line 195  following:</p> Line 228  following:</p>
228      <li>If the <code>prefix</code> attribute value is different from      <li>If the <code>prefix</code> attribute value is different from
229      <code>null</code>, then <a href="#algorithm-to-validate-a-ncname">validate      <code>null</code>, then <a href="#algorithm-to-validate-a-ncname">validate
230      the <code>prefix</code> attribute value as an <code>NCName</code></a>.</li>      the <code>prefix</code> attribute value as an <code>NCName</code></a>.</li>
231      <li>If the <code>childNodes</code> list of <var>n</var> contains      <li>For each node <dfn id=var-attr-nc><var>n<sub><var>c</var></sub></var></dfn> in the
232      a node which is <em>not</em> <code>Text</code> or      <code>childNodes</code> list of <var>n</var>,
233      <code>EntityReference</code> node, then it is a        <ol>
234      <a href="#xml-well-formedness-error" id=wfe-attr-child><code>xml-well-formedness-error</code></a>.</li>        <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> a
235      <li>If the <code>childNodes</code> list of <var>n</var> contains        <code>Text</code> or <code>EntityReference</code> node, then it is an
236      an <code>EntityReference</code> node, it is an        <a href="#xml-well-formedness-error" id=wfe-attr-child><code>xml-well-formedness-error</code></a>.</li>
237      <a href="#entity-error" id=ee-er-in-attr><code>entity-error</code></a>.</li>        <li>Otherwise, if <var>n<sub><var>c</var></sub></var> is an
238      <li><a href="#algorithm-to-check-a-node">Check each node</a>        <code>EntityReference</code> node, then it is an
239      which is different from <code>EntityReference</code> in        <a href="#entity-error" id=ee-attr-er><code>entity-error</code></a>.</li>
240      <code>childNodes</code> list of <var>n</var> recursively.</li>        <li>Otherwise,
241          <a href="#algorithm-to-check-a-node" title="check a node">check
242          <var>n<sub><var>c</var></sub></var></a> recusrively.</li>
243          </ol></li>
244      <li class=ed>@@ <code>specified</code>,      <li class=ed>@@ <code>specified</code>,
245      <code>manakaiAttributeType</code></li>      <code>manakaiAttributeType</code></li>
246      </ol>      </ol>
247    </dd>    </dd>
248  <dt>If <var>n</var> is an <code>AttributeDefinition</code> node</dt>  <dt>If <var>n</var> is an <code>AttributeDefinition</code> node</dt>
249    <dd class=ed></dd>    <dd>
250        <ol>
251        <li class=ed></li>
252        <li>For each node <dfn id=var-ad-nc><var>n<sub><var>c</var></sub></var></dfn> in the
253        <code>childNodes</code> list of <var>n</var>,
254          <ol>
255          <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> a
256          <code>Text</code> or <code>EntityReference</code> node, then it is an
257          <a href="#xml-well-formedness-error" id=wfe-at-child><code>xml-well-formedness-error</code></a>.</li>
258          <li>Otherwise, if <var>n<sub><var>c</var></sub></var> is an
259          <code>EntityReference</code> node, then it is an
260          <a href="#entity-error" id=ee-at-er><code>entity-error</code></a>.</li>
261          <li>Otherwise,
262          <a href="#algorithm-to-check-a-node" title="check a node">check
263          <var>n<sub><var>c</var></sub></var></a> recusrively.</li>
264          </ol></li>
265        </ol>
266      </dd>
267  <dt>If <var>n</var> is a <code>CDATASection</code> node</dt>  <dt>If <var>n</var> is a <code>CDATASection</code> node</dt>
268    <dd>    <dd>
269      <ol>      <ol>
# Line 218  following:</p> Line 271  following:</p>
271      <code>data</code> attribute value as an <abbr>XML</abbr> character      <code>data</code> attribute value as an <abbr>XML</abbr> character
272      data</a>.</li>      data</a>.</li>
273      <li>If the <code>data</code> attribute value contains      <li>If the <code>data</code> attribute value contains
274      a string <code>]]></code>, then it is a      a string <code>]]></code>, then it is an
275      <a href="#xml-well-formedness-error" id=wfe-cs-mse><code>xml-well-formedness-error</code></a>.</li>      <a href="#xml-well-formedness-error" id=wfe-cs-mse><code>xml-well-formedness-error</code></a>.</li>
276      <li>If the <code>childNodes</code> list of <var>n</var> contains      <li>If the <code>childNodes</code> list of <var>n</var> contains
277      any nodes, they are in      any nodes, they are in
278      <a href="#xml-well-formedness-error" id=wfe-cs-child><code>xml-well-formedness-error</code></a>s.</li>      <a href="#xml-well-formedness-error" id=wfe-cs-child><code>xml-well-formedness-error</code></a>.</li>
279      </ol>      </ol>
280    </dd>    </dd>
281  <dt>If <var>n</var> is a <code>Comment</code> node</dt>  <dt>If <var>n</var> is a <code>Comment</code> node</dt>
# Line 233  following:</p> Line 286  following:</p>
286      data</a>.</li>      data</a>.</li>
287      <li>If the <code>data</code> attribute value contains      <li>If the <code>data</code> attribute value contains
288      a string <code>--</code>, or if it ends with a character      a string <code>--</code>, or if it ends with a character
289      <code>-</code>, then it is a      <code>-</code>, then it is an
290      <a href="#xml-well-formedness-error" id=wfe-comment-com><code>xml-well-formedness-error</code></a>.</li>      <a href="#xml-well-formedness-error" id=wfe-comment-com><code>xml-well-formedness-error</code></a>.</li>
291      <li>If the <code>childNodes</code> list of <var>n</var> contains      <li>If the <code>childNodes</code> list of <var>n</var> contains
292      any nodes, they are in      any nodes, they are in
293      <a href="#xml-well-formedness-error" id=wfe-comment-child><code>xml-well-formedness-error</code></a>s.</li>      <a href="#xml-well-formedness-error" id=wfe-comment-child><code>xml-well-formedness-error</code></a>.</li>
294      </ol>      </ol>
295    </dd>    </dd>
296  <dt>If <var>n</var> is a <code>Document</code> node</dt>  <dt>If <var>n</var> is a <code>Document</code> node</dt>
# Line 248  following:</p> Line 301  following:</p>
301      then it is an <code class=ed>unknown-error?</code>.</li>      then it is an <code class=ed>unknown-error?</code>.</li>
302      <li>If the <code>xmlEncoding</code> attribute value does <em>not</em>      <li>If the <code>xmlEncoding</code> attribute value does <em>not</em>
303      match to <code>[A-Za-z] ([A-Za-z0-9._] | '-')*</code>      match to <code>[A-Za-z] ([A-Za-z0-9._] | '-')*</code>
304      <span class=ed>@@ formal def</span>, then it is a      <span class=ed>@@ formal def</span>, then it is an
305      <a href="#xml-well-formedness-error" id=wfe-encoding><code>xml-well-formedness-error</code></a>.</li>      <a href="#xml-well-formedness-error" id=wfe-encoding><code>xml-well-formedness-error</code></a>.</li>
306      <li>The <code>childNodes</code> list of <var>n</var> have to      <li>The <code>childNodes</code> list of <var>n</var> have to
307      consist of zero or more <code>Comment</code> and/or      consist of zero or more <code>Comment</code> and/or
# Line 258  following:</p> Line 311  following:</p>
311      <code>ProcessingInstruction</code> nodes, followed by      <code>ProcessingInstruction</code> nodes, followed by
312      an <code>Element</code> node, followed      an <code>Element</code> node, followed
313      by zero or more <code>Comment</code> and/or      by zero or more <code>Comment</code> and/or
314      <code>ProcessingInstruction</code> nodes.  Any violation to this is a      <code>ProcessingInstruction</code> nodes.  Any violation to this is an
315      <a href="#xml-well-formedness-error" id=wfe-document-child><code>xml-well-formedness-error</code></a>.</li>      <a href="#xml-well-formedness-error" id=wfe-document-child><code>xml-well-formedness-error</code></a>.</li>
316      <li><a href="#algorithm-to-check-a-node">Check each node</a>      <li>For each node <dfn id=var-document-nc><var>n<sub><var>c</var></sub></var></dfn>
317      which is different from <code>EntityReference</code> in      in the <code>childNodes</code> list of <var>n</var>,
318      <code>childNodes</code> list of <var>n</var> recursively.</li>        <ol>
319          <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> an
320          <code>EntityReference</code> node, then
321          <a href="#algorithm-to-check-a-node" title="check a node">check
322          <var>n<sub><var>c</var></sub></var></a> recursively.</li>
323          </ol></li>
324      <li class=ed>@@ <code>allDeclarationsProcessed</code></li>      <li class=ed>@@ <code>allDeclarationsProcessed</code></li>
325      </ol>      </ol>
326    </dd>    </dd>
327  <dt>If <var>n</var> is a <code>DocumentFragment</code> node</dt>  <dt>If <var>n</var> is a <code>DocumentFragment</code> node</dt>
328    <dd>    <dd>
329      <ol>      <ol>
330      <li>If the <code>childNodes</code> list of <var>n</var> contains      <li>For each node <dfn id=var-df-nc><var>n<sub><var>c</var></sub></var></dfn>
331      a node which is <em>not</em> <code>Element</code>,      in the <code>childNodes</code> list of <var>n</var>,
332      <code>Text</code>, <code>CDATASection</code>, <code>Comment</code>,        <ol>
333      <code>ProcessingInstruction</code>, or        <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> an
334      <code>EntityReference</code> node, then it is a        <code>Element</code>, <code>Text</code>, <code>CDATASection</code>,
335      <a href="#xml-well-formedness-error" id=wfe-df-child><code>xml-well-formedness-error</code></a>.</li>        <code>Comment</code>, <code>ProcessingInstruction</code>, or
336      <li>If the <code>childNodes</code> list of <var>n</var> contains        <code>EntityReference</code> node, then it is an
337      an <code>EntityReference</code> node, it is an        <a href="#xml-well-formedness-error" id=wfe-df-child><code>xml-well-formedness-error</code></a>.</li>
338      <a href="#entity-error" id=ee-er-in-df><code>entity-error</code></a>.</li>        <li>Otherwise, if <var>n<sub><var>c</var></sub></var> is an
339      <li><a href="#algorithm-to-check-a-node">Check each node</a>        <code>EntityReference</code> node, then it is an
340      which is different from <code>EntityReference</code> in        <a href="#entity-error" id=ee-df-er><code>entity-error</code></a>.</li>
341      <code>childNodes</code> list of <var>n</var> recursively.</li>        <li>Otherwise,
342          <a href="#algorithm-to-check-a-node" title="check a node">check
343          <var>n<sub><var>c</var></sub></var></a> recursively.</li>
344          </ol></li>
345      </ol>      </ol>
346    </dd>    </dd>
347  <dt>If <var>n</var> is a <code>DocumentType</code> node</dt>  <dt>If <var>n</var> is a <code>DocumentType</code> node</dt>
# Line 288  following:</p> Line 349  following:</p>
349      <ol>      <ol>
350      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-a-ncname">Validate the
351      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
352      <li>If the <code>publicId</code> attribute value contains any character      <li><a href="#algorithm-to-validate-a-public-identifier" title="validate a public identifier">Validate
353      that is outside of the range of <code>#x20 | <!--#xD | #xA |-->      the <code>publicId</code> attribute value as a public identifier</a>.</li>
     [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]</code><!-- @@ TODO: formal def -->,  
     or contains a leading <code class=char>U+0020</code> character,  
     a trailing <code class=char>U+0020</code> character, or a  
     sequence of two or more <code class=char>U+0020</code> characters,  
     then it is a  
     <a href="#xml-well-formedness-error" id=wfe-dt-public-id><code>xml-well-formedness-error</code></a>.</li>  
354      <li>If the <code>systemId</code> attribute value contains      <li>If the <code>systemId</code> attribute value contains
355      both <code>"</code> and <code>'</code> characters, it is a      both <code>"</code> and <code>'</code> characters, it is a
356      <a href="#xml-well-formedness-error" id=wfe-dt-system-id><code>xml-well-formedness-error</code></a>.</li>      <a href="#xml-well-formedness-error" id=wfe-dt-system-id><code>xml-well-formedness-error</code></a>.</li>
357      <!-- publicId = non-null and systemId = null -->      <!-- publicId = non-null and systemId = null -->
358      <li>If the <code>childNodes</code> list of <var>n</var> contains      <li>For each node <dfn id=var-dt-nc><var>n<sub><var>c</var></sub></var></dfn>
359      a node which is <em>not</em> <code>ProcessingInstruction</code> node,      in the <code>childNodes</code> list of <var>n</var>,
360      then it is a        <ol>
361      <a href="#xml-well-formedness-error" id=wfe-dt-child><code>xml-well-formedness-error</code></a>.        <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> a
362      <span class=ed>@@ ref to manakai's extensions</span></li>        <code>ProcessingInstruction</code> node, then it is an
363      <li><a href="#algorithm-to-check-a-node">Check each node</a>        <a href="#xml-well-formedness-error" id=wfe-dt-child><code>xml-well-formedness-error</code></a>.
364      which is different from <code>EntityReference</code> in        <span class=ed>@@ ref to manakai's extensions</span></li>
365      <code>childNodes</code> list of <var>n</var> recursively.</li>        <li>Otherwise, <!-- if n_c is not an EntityReference node, -->
366          <a href="#algorithm-to-check-a-node" title="check a node">check
367          <var>n<sub><var>c</var></sub></var></a> recusrively.</li>
368          </ol></li>
369      <li class=ed>@@ <code>entities</code>, <code>notations</code>,      <li class=ed>@@ <code>entities</code>, <code>notations</code>,
370      <code>elementTypes</code>, externally declared?</li>      <code>elementTypes</code>, externally declared?</li>
371      </ol>      </ol>
# Line 320  following:</p> Line 378  following:</p>
378      <li>If the <code>prefix</code> attribute value is different from      <li>If the <code>prefix</code> attribute value is different from
379      <code>null</code>, then <a href="#algorithm-to-validate-a-ncname">validate      <code>null</code>, then <a href="#algorithm-to-validate-a-ncname">validate
380      the <code>prefix</code> attribute value as an <code>NCName</code></a>.</li>      the <code>prefix</code> attribute value as an <code>NCName</code></a>.</li>
381      <li>If the <code>childNodes</code> list of <var>n</var> contains      <li>For each node <dfn id=var-element-nc><var>n<sub><var>c</var></sub></var></dfn>
382      a node which is <em>not</em> <code>Element</code>,      in the <code>childNodes</code> list of <var>n</var>,
383      <code>Text</code>, <code>CDATASection</code>, <code>Comment</code>,        <ol>
384      <code>ProcessingInstruction</code>, or        <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> an
385      <code>EntityReference</code> node, then it is a        <code>Element</code>,
386      <a href="#xml-well-formedness-error" id=wfe-element-child><code>xml-well-formedness-error</code></a>.</li>        <code>Text</code>, <code>CDATASection</code>, <code>Comment</code>,
387      <li>If the <code>childNodes</code> list of <var>n</var> contains        <code>ProcessingInstruction</code>, or
388      an <code>EntityReference</code> node, it is an        <code>EntityReference</code> node, then it is an
389      <a href="#entity-error" id=ee-er-in-element><code>entity-error</code></a>.</li>        <a href="#xml-well-formedness-error" id=wfe-element-child><code>xml-well-formedness-error</code></a>.</li>
390      <li><a href="#algorithm-to-check-a-node">Check each node</a>        <li>Otherwise, if <var>n<sub><var>c</var></sub></var> is an
391      which is different from <code>EntityReference</code> in        <code>EntityReference</code> node, then it is an
392      <code>childNodes</code> list of <var>n</var> recursively.</li>        <a href="#entity-error" id=ee-element-er><code>entity-error</code></a>.</li>
393          <li>Otherwise,
394          <a href="#algorithm-to-check-a-node" title="check a node">check
395          <var>n<sub><var>c</var></sub></var></a> recursively.</li>
396          </ol></li>
397      </ol>      </ol>
398    </dd>    </dd>
399  <dt>If <var>n</var> is an <code>ElementTypeDefinition</code> node</dt>  <dt>If <var>n</var> is an <code>ElementTypeDefinition</code> node</dt>
400    <dd class=ed></dd>    <dd>
401        <ol>
402        <li class=ed></li>
403        <li>If the <code>childNodes</code> list of <var>n</var> contains
404        any nodes, they are in
405        <a href="#xml-well-formedness-error" id=wfe-et-child><code>xml-well-formedness-error</code></a>.</li>
406        </ol>
407      </dd>
408  <dt>If <var>n</var> is an <code>Entity</code> node</dt>  <dt>If <var>n</var> is an <code>Entity</code> node</dt>
409    <dd>    <dd>
410      <ol>      <ol>
411      <li>An <a href="#entity-error" id=ee-entity-node><code>entity-error</code></a> <span class=ed>@@ if !notationName</span>.</li>      <li>An <a href="#entity-error" id=ee-entity-node><code>entity-error</code></a> <span class=ed>@@ if !notationName</span>.</li>
412      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-a-ncname">Validate the
413      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
414      <li>If the <code>publicId</code> attribute value contains any character      <li><a href="#algorithm-to-validate-a-public-identifier" title="validate a public identifier">Validate
415      that is outside of the range of <code>#x20 | <!--#xD | #xA |-->      the <code>publicId</code> attribute value as a public identifier</a>.</li>
     [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]</code><!-- @@ TODO: formal def -->,  
     or contains a leading <code class=char>U+0020</code> character,  
     a trailing <code class=char>U+0020</code> character, or a  
     sequence of two or more <code class=char>U+0020</code> characters,  
     then it is a  
     <a href="#xml-well-formedness-error" id=wfe-dt-public-id><code>xml-well-formedness-error</code></a>.</li>  
416      <li>If the <code>systemId</code> attribute value contains      <li>If the <code>systemId</code> attribute value contains
417      both <code>"</code> and <code>'</code> characters, it is a      both <code>"</code> and <code>'</code> characters, it is a
418      <a href="#xml-well-formedness-error" id=wfe-dt-system-id><code>xml-well-formedness-error</code></a>.</li>      <a href="#xml-well-formedness-error" id=wfe-dt-system-id><code>xml-well-formedness-error</code></a>.</li>
419      <!-- publicId = non-null and systemId = null -->      <!-- publicId = non-null and systemId = null -->
420      <li class=ed>@@ <code>notationName</code></li>      <li class=ed>@@ <code>notationName</code></li>
421      <li>If the <code>childNodes</code> list of <var>n</var> contains      <li>For each node <dfn id=var-entity-nc><var>n<sub><var>c</var></sub></var></dfn>
422      a node which is <em>not</em> <code>Element</code>,      in the <code>childNodes</code> list of <var>n</var>,
423      <code>Text</code>, <code>CDATASection</code>, <code>Comment</code>,        <ol>
424      <code>ProcessingInstruction</code>, or        <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> an
425      <code>EntityReference</code> node, then it is a        <code>Element</code>,
426      <a href="#xml-well-formedness-error" id=wfe-entity-child><code>xml-well-formedness-error</code></a>.</li>        <code>Text</code>, <code>CDATASection</code>, <code>Comment</code>,
427      <li>If the <code>childNodes</code> list of <var>n</var> contains        <code>ProcessingInstruction</code>, or <code>EntityReference</code>
428      an <code>EntityReference</code> node, it is an        node, then it is an
429      <a href="#entity-error" id=ee-er-in-er><code>entity-error</code></a>.</li>        <a href="#xml-well-formedness-error" id=wfe-entity-child><code>xml-well-formedness-error</code></a>.</li>
430      <li><a href="#algorithm-to-check-a-node">Check each node</a>        <li>Otherwise, if <var>n<sub><var>c</var></sub></var> is an
431      which is different from <code>EntityReference</code> in        <code>EntityReference</code> node, then it is an
432      <code>childNodes</code> list of <var>n</var> recursively.</li>        <a href="#entity-error" id=ee-er-er><code>entity-error</code></a>.</li>
433          <li>Otherwise,
434          <a href="#algorithm-to-check-a-node" title="check a node">check
435          <var>n<sub><var>c</var></sub></var></a> recursively.</li>
436          </ol></li>
437      </ol>      </ol>
438    </dd>    </dd>
439  <dt>If <var>n</var> is an <code>EntityReference</code> node</dt>  <dt>If <var>n</var> is an <code>EntityReference</code> node</dt>
# Line 375  following:</p> Line 442  following:</p>
442      <li>An <a href="#entity-error" id=ee-er-node><code>entity-error</code></a>.</li>      <li>An <a href="#entity-error" id=ee-er-node><code>entity-error</code></a>.</li>
443      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-a-ncname">Validate the
444      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
445      <li>If the <code>childNodes</code> list of <var>n</var> contains      <li>For each node <dfn id=var-er-nc><var>n<sub><var>c</var></sub></var></dfn>
446      a node which is <em>not</em> <code>Element</code>,      in the <code>childNodes</code> list of <var>n</var>,
447      <code>Text</code>, <code>CDATASection</code>, <code>Comment</code>,        <ol>
448      <code>ProcessingInstruction</code>, or        <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> an
449      <code>EntityReference</code> node, then it is a        <code>Element</code>,
450      <a href="#xml-well-formedness-error" id=wfe-er-child><code>xml-well-formedness-error</code></a>.</li>        <code>Text</code>, <code>CDATASection</code>, <code>Comment</code>,
451      <li>If the <code>childNodes</code> list of <var>n</var> contains        <code>ProcessingInstruction</code>, or <code>EntityReference</code>
452      an <code>EntityReference</code> node, it is an        node, then it is an
453      <a href="#entity-error" id=ee-er-in-entity><code>entity-error</code></a>.</li>        <a href="#xml-well-formedness-error" id=wfe-er-child><code>xml-well-formedness-error</code></a>.</li>
454      <li><a href="#algorithm-to-check-a-node">Check each node</a>        <li>Otherwise, if <var>n<sub><var>c</var></sub></var> is <em>not</em> an
455      which is different from <code>EntityReference</code> in        <code>EntityReference</code> node, then it is an
456      <code>childNodes</code> list of <var>n</var> recursively.</li>        <a href="#entity-error" id=ee-entity-er><code>entity-error</code></a>.</li>
457          <li>Otherwise,
458          <a href="#algorithm-to-check-a-node" title="check a node">check
459          <var>n<sub><var>c</var></sub></var></a> recursively.</li>
460          </ol></li>
461      </ol>      </ol>
462    </dd>    </dd>
463  <dt>If <var>n</var> is a <code>Notation</code> node</dt>  <dt>If <var>n</var> is a <code>Notation</code> node</dt>
# Line 394  following:</p> Line 465  following:</p>
465      <ol>      <ol>
466      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-a-ncname">Validate the
467      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
468      <li>If the <code>publicId</code> attribute value contains any character      <li><a href="#algorithm-to-validate-a-public-identifier" title="validate a public identifier">Validate
469      that is outside of the range of <code>#x20 | <!--#xD | #xA |-->      the <code>publicId</code> attribute value as a public identifier</a>.</li>
     [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]</code><!-- @@ TODO: formal def -->,  
     or contains a leading <code class=char>U+0020</code> character,  
     a trailing <code class=char>U+0020</code> character, or a  
     sequence of two or more <code class=char>U+0020</code> characters,  
     then it is a  
     <a href="#xml-well-formedness-error" id=wfe-dt-public-id><code>xml-well-formedness-error</code></a>.</li>  
470      <li>If the <code>systemId</code> attribute value contains      <li>If the <code>systemId</code> attribute value contains
471      both <code>"</code> and <code>'</code> characters, it is a      both <code>"</code> and <code>'</code> characters, it is a
472      <a href="#xml-well-formedness-error" id=wfe-dt-system-id><code>xml-well-formedness-error</code></a>.</li>      <a href="#xml-well-formedness-error" id=wfe-dt-system-id><code>xml-well-formedness-error</code></a>.</li>
473      <li>If the <code>childNodes</code> list of <var>n</var> contains      <li>If the <code>childNodes</code> list of <var>n</var> contains
474      any nodes, they are in      any nodes, they are in
475      <a href="#xml-well-formedness-error" id=wfe-notation-child><code>xml-well-formedness-error</code></a>s.</li>      <a href="#xml-well-formedness-error" id=wfe-notation-child><code>xml-well-formedness-error</code></a>.</li>
476      </ol>      </ol>
477    </dd>    </dd>
478  <dt>If <var>n</var> is a <code>ProcessingInstruction</code> node</dt>  <dt>If <var>n</var> is a <code>ProcessingInstruction</code> node</dt>
# Line 429  following:</p> Line 494  following:</p>
494      <a href="#round-trip-error" id=rte-pi-data><code>round-trip-error</code></a>.</li>      <a href="#round-trip-error" id=rte-pi-data><code>round-trip-error</code></a>.</li>
495      <li>If the <code>childNodes</code> list of <var>n</var> contains      <li>If the <code>childNodes</code> list of <var>n</var> contains
496      any nodes, they are in      any nodes, they are in
497      <a href="#xml-well-formedness-error" id=wfe-pi-child><code>xml-well-formedness-error</code></a>s.</li>      <a href="#xml-well-formedness-error" id=wfe-pi-child><code>xml-well-formedness-error</code></a>.</li>
498      </ol>      </ol>
499    </dd>    </dd>
500  <dt>If <var>n</var> is a <code>Text</code> node</dt>  <dt>If <var>n</var> is a <code>Text</code> node</dt>
# Line 440  following:</p> Line 505  following:</p>
505      data</a>.</li>      data</a>.</li>
506      <li>If the <code>childNodes</code> list of <var>n</var> contains      <li>If the <code>childNodes</code> list of <var>n</var> contains
507      any nodes, they are in      any nodes, they are in
508      <a href="#xml-well-formedness-error" id=wfe-text-child><code>xml-well-formedness-error</code></a>s.</li>      <a href="#xml-well-formedness-error" id=wfe-text-child><code>xml-well-formedness-error</code></a>.</li>
509      </ol>      </ol>
510    </dd>    </dd>
511  <dt>Otherwise</dt>  <dt>Otherwise</dt>
512    <dd><span class=ed>xml-well-formedness-error?  unknown-error?</span></dd>    <dd><span class=ed>xml-well-formedness-error?  unknown-error?</span></dd>
513  </dl>  </dl>
514    
515    </div>
516    
517    <div class=section id=checking-components>
518    <h3>Checking Components</h3>
519    
520  <p>The algorithm  <p>The algorithm
521  <dfn id=algorithm-to-validate-an-xml-character-data title-"to validate an XML character data">to  <dfn id=algorithm-to-validate-an-xml-character-data title-"to validate an XML character data">to
522  validate an <abbr>XML</abbr> character data  validate an <abbr>XML</abbr> character data
# Line 471  is defined as following:</p> Line 541  is defined as following:</p>
541  <li class=ed>@@</li>  <li class=ed>@@</li>
542  </ol>  </ol>
543    
544  </div>  <p>To <dfn id=algorithm-to-validate-a-public-identifier title="validate a public identifier">validate
545    a public identifier (<dfn id=var-pid><var>pid</var></dfn>)</dfn>, the
546  <div class="section" id="examples">  algorithm below <em class=rfc2119>MUST</em> be used:</p>
547  <h2>Examples</h2>  <ol>
548      <li>If <var>pid</var> contains any character
549  <p class=section-info>This section is <em>non$B!>(Bnormative</em>.</p>    that is outside of the range of <code>#x20 | #xD | #xA |
550      [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]</code><!-- @@ TODO: formal def -->,
551  <div class="ed issue">    then it is an
552      <a href="#xml-well-formedness-error" id=wfe-pubid-char><code>xml-well-formedness-error</code></a>.</li>
553  <div class="example figure block">    <li>If <var>pid</var> contains one of <code class=char>U+0009</code>
554  <div class="caption">...</div>    <code class=charname>CHARACTER TABULATION</code>,
555      <code class=char>U+000A</code> <code class=charname>CARRIAGE RETURN</code>,
556  <pre><code>...</code></pre>    and <code class=char>U+000D</code> <code class=charname>LINE FEED</code>
557  </div>    characters, if the first character of <var>pid</var> is
558      <code class=char>U+0020</code> <code class=charname>SPACE</code> character,
559      if the last character of <var>pid</var> is <code class=char>U+0020</code>
560      <code class=charname>SPACE</code> character, or if there is a
561      <code class=char>U+0020</code> <code class=charname>SPACE</code> character
562      immediately followed by another <code class=char>U+0020</code>
563      <code class=charname>SPACE</code> character in <var>pid</var>, then it is a
564      <a href="#round-trip-error" id=rte-pubid-space><code>round-trip-error</code></a>.</li>
565      <li class=ed>@@ Should we check formal-public-identifierness?</li>
566    </ol>
567    
568  </div>  </div>
569    
# Line 497  is defined as following:</p> Line 576  is defined as following:</p>
576  <h3>Normative References</h3>  <h3>Normative References</h3>
577    
578  <dl>  <dl>
579    <dt id=ref-DOM3CORE>DOM3CORE</dt>
580      <dd class=ed>@@ W3C DOM Level 3 Core</dd>
581    <dt id=ref-DOMDTDEF>DOMDTDEF</dt>
582      <dd class=ed>@@ manakai's extension to DOM for document type definitions</dd>
583  <dt id="ref-KEYWORDS">KEYWORDS</dt>  <dt id="ref-KEYWORDS">KEYWORDS</dt>
584    <dd><cite><a href="urn:ietf:rfc:2119">Key words for use in    <dd><cite><a href="urn:ietf:rfc:2119">Key words for use in
585    <abbr>RFCs</abbr> to Indicate Requirement Levels</a></cite>,    <abbr>RFCs</abbr> to Indicate Requirement Levels</a></cite>,
# Line 559  is defined as following:</p> Line 642  is defined as following:</p>
642    <abbr title="World Wide Web Consortium">W3C</abbr>$B!>(Bpublished    <abbr title="World Wide Web Consortium">W3C</abbr>$B!>(Bpublished
643    version of the specification is available at    version of the specification is available at
644    <code class=URI>&lt;<a href="http://www.w3.org/TR/xbl/">http://www.w3.org/TR/xbl/</a>></code>.</dd>    <code class=URI>&lt;<a href="http://www.w3.org/TR/xbl/">http://www.w3.org/TR/xbl/</a>></code>.</dd>
645    <dt id=ref-XML5>XML5</dt>
646      <dd class=ed>@@</dd>
647  </dl>  </dl>
648  </div>  </div>
649    

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.9

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24