/[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.17 by wakaba, Sat Dec 1 12:19:41 2007 UTC revision 1.23 by wakaba, Sun Mar 16 12:37:17 2008 UTC
# Line 18  Line 18 
18    
19  <div class="header">  <div class="header">
20  <h1>manakai's <abbr>XML</abbr> Conformance Checking</h1>  <h1>manakai's <abbr>XML</abbr> Conformance Checking</h1>
21  <h2>Working Draft <time datetime=2007-12-01>1 December 2007</time></h2>  <h2>Working Draft <time datetime=2008-03-16>16 March 2008</time></h2>
22    
23  <dl class="versions-uri">  <dl class="versions-uri">
24  <dt>This Version</dt>  <dt>This Version</dt>
# Line 42  Line 42 
42        >w@suika.fam.cx</a>&gt;</code></dd>        >w@suika.fam.cx</a>&gt;</code></dd>
43  </dl>  </dl>
44    
45  <p class="copyright" lang="en">&#xA9; <time>2007</time> <a  <p class="copyright" lang="en">&#xA9; <time>2007</time>$B!>(B<time>2008</time> <a
46      href="http://suika.fam.cx/~wakaba/who?" rel="author">Wakaba</a>.      href="http://suika.fam.cx/~wakaba/who?" rel="author">Wakaba</a>.
47  Permission is granted to copy, distribute and/or modify this document  Permission is granted to copy, distribute and/or modify this document
48  under the terms of the <a rel="license"  under the terms of the <a rel="license"
# Line 118  else in this specification is normative. Line 118  else in this specification is normative.
118  <p><span class=ed>Algorithm is normative but non-normative</span>.  <p><span class=ed>Algorithm is normative but non-normative</span>.
119  In addition, the order in which <a href="#errors">errors</a> are  In addition, the order in which <a href="#errors">errors</a> are
120  raised is undefined.</p>  raised is undefined.</p>
121    
122    <p>This document sometimes cites parts of <abbr>XML</abbr> 1.0 specification
123    by hyperlinks.  When the document being processed is an <abbr>XML</abbr> 1.1
124    document, however, corresponding parts of the <abbr>XML</abbr> 1.1
125    specification should be consulted instead.</p>
126  </div>  </div>
127    
128    
# Line 209  can be easily serialized into a valid XM Line 214  can be easily serialized into a valid XM
214    
215  <div class=ed><p>@@ TODO: #dt-atuseroption at user option  <div class=ed><p>@@ TODO: #dt-atuseroption at user option
216  (MAY or MUST), #dt-compat for compatibility,  (MAY or MUST), #dt-compat for compatibility,
217  #dt-interop for interoperability</p></div>  #dt-interop for interoperability</p>
218    
219    <p>TODO: XML 1.1, XML Namespace 1.0/1.1, xml:base, xml:id
220    </div>
221    
222  </div>  </div>
223    
224  <div class=section id=parsing-xml>  <div class=section id=parsing-xml>
225  <h2>Parsing <abbr>XML</abbr> Document</h2>  <h2>Parsing <abbr>XML</abbr> Document</h2>
226    
227  <ul>  <p>When an <abbr>XML</abbr> document is parsed, the following clauses
228  <li>If the <abbr>XML</abbr> document does not begin with an  are applied:</p>
229  <abbr>XML</abbr> declaration, then raise an  <dl>
230  <a href="#xml-misc-recommentation" id=xmr-xml-decl><code>xml-misc-recommendation</code></a>.</li>  <dt>For each document
231  <li>If the replacement text of an entity declaration is    <dd>If the <abbr>XML</abbr> document does not begin with an
232  <code>&lt;</code>, then raise an    <abbr>XML</abbr> declaration, then the parser <em class=rfc2119>MUST</em>
233  <a href="#xml-misc-warning" id=xmw-entity-value-lt><code>xml-misc-warning</code></a>.<!--    raise an
234      <a href="#xml-misc-recommentation" id=xmr-xml-decl><code>xml-misc-recommendation</code></a>.
235    <dt>For each internal general entity declaration processed by the parser
236      <dd>If the
237      <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-EntityValue"><code>EntityValue</code></a>
238      part of the general entity declaration contains a bare <code>U+003C</code>
239      <code>LESS-THAN SIGN</code> (<code>&lt;</code>) character, then the parser
240      <em class=rfc2119>MUST</em> raise an
241      <a href="#xml-misc-warning" id=xmw-entity-value-lt><code>xml-misc-warning</code></a>.<!--
242  "strongly advised to avoid" in a Note in Section 2.3 of [XML10], [XML11].  "strongly advised to avoid" in a Note in Section 2.3 of [XML10], [XML11].
243  --></li>  -->
244  <li>If there is an element type declaration whose <code>Name</code>  <dt>For each element type declaration processed by the parser
245  value is already declared, then raise an    <dd>If there is another element type declaration whose <code>Name</code>
246  <a href="#xml-validity-error" id=vc-edunique><code>xml-validity-error</code></a>.</li>    is equal to the <code>Name</code> of the element type declaration, then
247  <li>If attribute definition whose <code>Name</code> is    the parser <em class=rfc2119>MUST</em> raise an
248  <code>xml:space</code> has <span class=ed>declared type different from    <a href="#xml-validity-error" id=vc-edunique><code>xml-validity-error</code></a>.
249  (default|preserve), (default), or (preserve)</span>, then raise an  <!--
250  <a href="#xml-misc-error" id=xme-ad-xml-space><code>xml-misc-error</code></a>.    NOTE: <!ATTLIST a xml:space (default) #IMPLIED xml:space CDATA #IMPLIED>
251  <span class=ed>@@ duplication with    will not be warned.
252  <a href="#xml-at-xml-space">#xml-at-xml-space</a>.<!--  -->
253  <!ATTLIST e xml:space CDATA #IMPLIED xml:space CDATA #IMPLIED> --></span></li>  <dt>For each empty-element tag
254  <li>If an empty-element tag is used for an element which is <em>not</em>    <dd>If the <code>Name</code> of the tag is not declared by a processed
255  declared <code>EMPTY</code>, then raise an    element type declaration as <code>EMPTY</code> content, then the parser
256  <a href="#xml-misc-recommentation" id=xmr-emptyelemtag-not-empty><code>xml-misc-recommendation</code></a>.</li>    <em class=rfc2119>MUST</em> raise an
257  <li>If an empty-element tag is <em>not</em> used for an element which is    <a href="#xml-misc-recommentation" id=xmr-emptyelemtag-not-empty><code>xml-misc-recommendation</code></a>.
258  declared <code>EMPTY</code>, then raise an  <dt>For each start-tag
259  <a href="#xml-misc-recommentation" id=xmr-empty-not-emptyelemtag><code>xml-misc-recommendation</code></a>.</li>    <dd>If the <code>Name</code> of the tag is declared by a processed element
260      type declaration as <code>EMPTY</code> content, then the parser
261      <em class=rfc2119>MUST</em> raise an
262      <a href="#xml-misc-recommentation" id=xmr-empty-not-emptyelemtag><code>xml-misc-recommendation</code></a>.
263  <!--  <!--
264    
265  #vc-PEinMarkupDecl Validity constraint: Proper Declaration/PE Nesting  #vc-PEinMarkupDecl Validity constraint: Proper Declaration/PE Nesting
# Line 284  declared <code>EMPTY</code>, then raise Line 303  declared <code>EMPTY</code>, then raise
303    
304  "It is a fatal error when an XML processor encounters an entity with an encoding that it is unable to process. It is a fatal error if an XML entity is determined (via default, encoding declaration, or higher-level protocol) to be in a certain encoding but contains byte sequences that are not legal in that encoding."  "It is a fatal error when an XML processor encounters an entity with an encoding that it is unable to process. It is a fatal error if an XML entity is determined (via default, encoding declaration, or higher-level protocol) to be in a certain encoding but contains byte sequences that are not legal in that encoding."
305    
306    @@ We should phrase out what the parser should do where the XML specification
307    left undefined.  For example: Comment must be converted to a Comment node,
308    illegal xml:space value must be preserved, so on.
309    
310  -->  -->
311  </ul>  </dl>
312  </div>  </div>
313    
314  <div class="section" id=checking-dom>  <div class="section" id=checking-dom>
# Line 314  is that of the <code>Document</code> nod Line 337  is that of the <code>Document</code> nod
337    
338    
339  <div class=section id=checking-components>  <div class=section id=checking-components>
340  <h3>Checking Components</h3>  <h3>Conformance Checking Algorithms for Components</h3>
341    
342  <p>The algorithm  <p>To
343  <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="validate an XML string">to
344  validate an <abbr>XML</abbr> character data  validate an <abbr>XML</abbr> string (<dfn id=var-s><var>s</var></dfn>)</dfn>,
345  (<dfn id=var-s><var>s</var></dfn>)</dfn> is defined as following:</p>  the following algorithm <em class=rfc2119>MUST</em> be used:</p>
346  <ol>  <ol>
347  <li>If <var>s</var> contains a character that is <em>not</em> in  <li>If <var>s</var> contains a character that is <em>not</em> in
348  the character class <a href="#class-Char10"><code>Char10</code></a>,  the character class <a href="#class-Char10"><code>Char10</code></a>,
# Line 344  U+000D will be serialized as &#x000D; (s Line 367  U+000D will be serialized as &#x000D; (s
367  will be raised).</span></li>  will be raised).</span></li>
368  </ol>  </ol>
369    
370  <p>The algorithm  <p>To
371  <dfn id=algorithm-to-validate-a-name title="to validate a Name">to validate a  <dfn id=algorithm-to-validate-a-name title="validate a Name">validate a
372  <code>Name</code> (<dfn id=var-name-s><var>s</var></dfn>)</dfn> is defined  <code>Name</code> (<dfn id=var-name-s><var>s</var></dfn>)</dfn>, the following
373  as following:</p>  algorithm <em class=rfc2119>MUST</em> be used:</p>
374  <ol>  <ol>
375    <li>If <var>s</var> is an empty string, then raise an
376    <a href="#xml-well-formedness-error" id=wfe-name-empty><code>xml-well-formedness-error</code></a>.
377    Abort these steps.</li>
378    <li><a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">Validate
379    <var>s</var> as an <abbr>XML</abbr> string</a>.</li>
380    <li>If the first character in <var>s</var> is a character that is
381    <em>not</em> in the character class
382    <a href="#class-NameStartChar10"><code>NameStartChar10</code></a>, then raise
383    an
384    <a href="#xml-well-formedness-error" id=wfe-name-startchar><code>xml-well-formedness-error</code></a>.</li>
385    <li>If a character other than the first character in <var>s</var> is a
386    character that is <em>not</em> in the character class
387    <a href="#class-NameChar10"><code>NameChar10</code></a>, then raise an
388    <a href="#xml-well-formedness-error" id=wfe-name-char><code>xml-well-formedness-error</code></a>.</li>
389  <li>If <var>s</var> begins with the string <code>xml</code> (in any  <li>If <var>s</var> begins with the string <code>xml</code> (in any
390  case combination), then raise an  case combination), then raise an
391  <a href="#xml-misc-warning" id=xmw-reserved-name><code>xml-misc-warning</code></a>.  <a href="#xml-misc-warning" id=xmw-reserved-name><code>xml-misc-warning</code></a>.
# Line 357  case combination), then raise an Line 394  case combination), then raise an
394  <code>xmlns</code>, <code>xmlns:<var>*</var></code>,  <code>xmlns</code>, <code>xmlns:<var>*</var></code>,
395  pi name <code>xml-stylesheet</code>.</span><!--  pi name <code>xml-stylesheet</code>.</span><!--
396  "names beginning with a match to (('X'|'x')('M'|'m')('L'|'l')) are reserved for standardization in this or future versions of this specification.":  "names beginning with a match to (('X'|'x')('M'|'m')('L'|'l')) are reserved for standardization in this or future versions of this specification.":
397  xml:base and xml:id specifications violate to this sentense!  xmlns, xml-stylesheet, xml:base and xml:id specifications violate to this sentense!
398  --></li>  --></li>
399  <!-- COLON in Name is a lowercase "should not" in a Note of [XML10],  <!-- COLON in Name is a lowercase "should not" in a Note of [XML10],
400  [XML11]. -->  [XML11]. -->
401  <li class=ed>@@</li>  <li class=ed>@@ XML 1.1 support</li>
402  </ol>  </ol>
403    
404  <p>The algorithm  <p>To
405  <dfn id=algorithm-to-validate-a-ncname title="to validate an NCName">to  <dfn id=algorithm-to-validate-an-ncname title="validate an NCName">validate
406  validate an <code>NCName</code> (<dfn id=var-name><var>name</var></dfn>)</dfn>  an <code>NCName</code> (<dfn id=var-ncname-s><var>s</var></dfn>)</dfn>, the
407  is defined as following:</p>  following algorithm <em class=rfc2119>MUST</em> be used:</p>
408  <ol>  <ol>
409    <li><a href="#algorithm-to-validate-a-name" title="validate a Name">Validate
410    <var>s</var> as a <code>Name</code></a>.</li>
411  <li class=ed>@@</li>  <li class=ed>@@</li>
412  </ol>  </ol>
413    
414  <p>To <dfn id=algorithm-to-validate-a-public-identifier title="validate a public identifier">validate  <p>To
415    <dfn id=algorithm-to-validate-a-public-identifier title="validate a public identifier">validate
416  a public identifier (<dfn id=var-pid><var>pid</var></dfn>)</dfn>, the  a public identifier (<dfn id=var-pid><var>pid</var></dfn>)</dfn>, the
417  algorithm below <em class=rfc2119>MUST</em> be used:</p>  following algorithm <em class=rfc2119>MUST</em> be used:</p>
418  <ol>  <ol>
419    <li>If <var>pid</var> contains any character  <li>If <var>pid</var> is <code>null</code>, abort these steps.</li>
420    that is outside of the range of <code>#x20 | #xD | #xA |  <li>If <var>pid</var> contains a character that is <em>not</em> in the
421    [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]</code><!-- @@ TODO: formal def -->,  character class <a href="#class-PubidChar"><code>PubidChar</code></a>, then
422    then it is an  raise an
423    <a href="#xml-well-formedness-error" id=wfe-pubid-char><code>xml-well-formedness-error</code></a>.</li>  <a href="#xml-well-formedness-error" id=wfe-pubid-char><code>xml-well-formedness-error</code></a>.</li>
424    <li>If <var>pid</var> contains one of <code class=char>U+0009</code>    <li>If <var>pid</var> contains one of <code class=char>U+0009</code>
425    <code class=charname>CHARACTER TABULATION</code>,    <code class=charname>CHARACTER TABULATION</code>,
426    <code class=char>U+000A</code> <code class=charname>CARRIAGE RETURN</code>,    <code class=char>U+000A</code> <code class=charname>CARRIAGE RETURN</code>,
# Line 392  algorithm below <em class=rfc2119>MUST</ Line 432  algorithm below <em class=rfc2119>MUST</
432    <code class=char>U+0020</code> <code class=charname>SPACE</code> character    <code class=char>U+0020</code> <code class=charname>SPACE</code> character
433    immediately followed by another <code class=char>U+0020</code>    immediately followed by another <code class=char>U+0020</code>
434    <code class=charname>SPACE</code> character in <var>pid</var>, then it is a    <code class=charname>SPACE</code> character in <var>pid</var>, then it is a
435    <a href="#round-trip-error" id=rte-pubid-space><code>round-trip-error</code></a>.</li>    <a href="#round-trip-error" id=rte-pubid-space><code>round-trip-error</code></a>.
436    <li class=ed>@@ Should we check formal-public-identifierness?</li>    <span class=ed>Is this really a roundtripness problem?  XML spec
437      does only define the way to match public identifiers in fact, no
438      canonical form.</span></li>
439    </ol>
440    
441    <p>To
442    <dfn id=algorithm-to-validate-a-system-identifier title="validate a system identifier">validate
443    a system identifier (<dfn id=var-sid><var>sid</var></dfn>)</dfn>, the
444    following algorithm <em class=rfc2119>MUST</em> be used:</p>
445    <ol>
446      <li>If <var>sid</var> is <code>null</code>, abort these steps.</li>
447    <li><a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">Validate
448    <var>sid</var> as an <abbr>XML</abbr> string</a>.</li>
449      <li>If <var>sid</var> contains both <code class=char>U+0022</code>
450      <code class=charname>QUOTATION MARK</code> (<code class=char>"</code>) and
451      <code class=char>U+0027</code> <code class=charname>APOSTROPHE</code>
452      (<code class=char>'</code>) characters, raise an
453      <a href="#xml-well-formedness-error" id=wfe-sid-lit><code>xml-well-formedness-error</code></a>.</li>
454      <li>If <var>sid</var> contains at least one <code class=char>U+0023</code>
455      <code class=charname>NUMBER SIGN</code> (<code class=char>#</code>)
456      character, then raise an
457      <a href="#xml-misc-error" id=xme-sid-fragment><code>xml-misc-error</code></a>.</li>
458      <li class=ed>@@ If <var>sid</var> cannot be converted to a URI
459      reference, then raise a fact-level error (xml-misc-warning?).<!--
460      XML 1.0 has no conformance language for system identifier being
461      a URI reference. --></li>
462  </ol>  </ol>
463    
464  </div>  </div>
# Line 408  following:</p> Line 473  following:</p>
473  <dt>If <var>n</var> is an <code>Attr</code> node</dt>  <dt>If <var>n</var> is an <code>Attr</code> node</dt>
474    <dd>    <dd>
475      <ol>      <ol>
476      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-an-ncname">Validate the
477      <code>localName</code> attribute value as an <code>NCName</code></a>.</li>      <code>localName</code> attribute value as an <code>NCName</code></a>.</li>
478      <li>If the <code>prefix</code> attribute value is different from      <li>If the <code>prefix</code> attribute value is different from
479      <code>null</code>, then <a href="#algorithm-to-validate-a-ncname">validate      <code>null</code>, then <a href="#algorithm-to-validate-an-ncname">validate
480      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>
481      <li>For each node <dfn id=var-attr-nc><var>n<sub><var>c</var></sub></var></dfn> in the      <li>For each node <dfn id=var-attr-nc><var>n<sub><var>c</var></sub></var></dfn> in the
482      <code>childNodes</code> list of <var>n</var>,      <code>childNodes</code> list of <var>n</var>,
# Line 517  following:</p> Line 582  following:</p>
582      <li>If <code>nodeName</code> attribute of <var>n</var> is      <li>If <code>nodeName</code> attribute of <var>n</var> is
583      <code>xml:space</code> <span class=ed>@@ or {xml namespace}:space ?</span>      <code>xml:space</code> <span class=ed>@@ or {xml namespace}:space ?</span>
584      and <span class=ed>its declared type is different from (default|preserve),      and <span class=ed>its declared type is different from (default|preserve),
585      (default), or (preserve)</span>, then raise an      (preserve|default), (default), or (preserve)</span>, then raise an
586      <a href="#xml-misc-error" id=xme-at-xml-space><code>xml-misc-error</code></a>.</li>      <a href="#xml-misc-error" id=xme-at-xml-space><code>xml-misc-error</code></a>.</li>
587      <li>For each node <dfn id=var-ad-nc><var>n<sub><var>c</var></sub></var></dfn> in the      <li>For each node <dfn id=var-ad-nc><var>n<sub><var>c</var></sub></var></dfn> in the
588      <code>childNodes</code> list of <var>n</var>,      <code>childNodes</code> list of <var>n</var>,
# Line 547  following:</p> Line 612  following:</p>
612  <dt>If <var>n</var> is a <code>CDATASection</code> node</dt>  <dt>If <var>n</var> is a <code>CDATASection</code> node</dt>
613    <dd>    <dd>
614      <ol>      <ol>
615      <li><a href="#algorithm-to-validate-an-xml-character-data">Validate the      <li><a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">Validate the
616      <code>data</code> attribute value as an <abbr>XML</abbr> character      <code>data</code> attribute value as an <abbr>XML</abbr> character
617      data</a>.</li>      data</a>.</li>
618      <li>If the <code>data</code> attribute value contains      <li>If the <code>data</code> attribute value contains
# Line 563  following:</p> Line 628  following:</p>
628      <ol>      <ol>
629      <li>Raise an      <li>Raise an
630      <a href="#round-trip-warning" id=rtw-comment><code>round-trip-warning</code></a>.</li>      <a href="#round-trip-warning" id=rtw-comment><code>round-trip-warning</code></a>.</li>
631      <li><a href="#algorithm-to-validate-an-xml-character-data">Validate the      <li><a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">Validate the
632      <code>data</code> attribute value as an <abbr>XML</abbr> character      <code>data</code> attribute value as an <abbr>XML</abbr> character
633      data</a>.</li>      data</a>.</li>
634      <li>If the <code>data</code> attribute value contains      <li>If the <code>data</code> attribute value contains
# Line 630  following:</p> Line 695  following:</p>
695  <dt>If <var>n</var> is a <code>DocumentType</code> node</dt>  <dt>If <var>n</var> is a <code>DocumentType</code> node</dt>
696    <dd>    <dd>
697      <ol>      <ol>
698      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-an-ncname">Validate the
699      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
700      <li>Follow the following substeps:      <li>Follow the following substeps:
701        <ol>        <ol>
# Line 649  following:</p> Line 714  following:</p>
714      </li>      </li>
715      <li><a href="#algorithm-to-validate-a-public-identifier" title="validate a public identifier">Validate      <li><a href="#algorithm-to-validate-a-public-identifier" title="validate a public identifier">Validate
716      the <code>publicId</code> attribute value as a public identifier</a>.</li>      the <code>publicId</code> attribute value as a public identifier</a>.</li>
717      <li>If the <code>systemId</code> attribute value contains      <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
718      both <code>"</code> and <code>'</code> characters, it is a      the <code>systemId</code> attribute value as a system identifier</a>.</li>
719      <a href="#xml-well-formedness-error" id=wfe-dt-system-id><code>xml-well-formedness-error</code></a>.</li>      <li>If the <code>publicId</code> attribute value of <var>n</var> is
720      <!-- @@ "It is an error for a fragment identifier (beginning with a # character) to be part of a system identifier." -->      <em>not</em> <code>null</code> and the <code>systemId</code> attribute
721      <!-- publicId = non-null and systemId = null -->      value of <var>n</var> is <code>null</code>, then raise an
722        <a href="#xml-well-formedness-error" id=wfe-dt-sid><code>xml-well-formedness-error</code></a>.
723        <span class=ed>@@ publicId == null?  Or, publicId == ""</span></li>
724      <li>For each node <dfn id=var-dt-nc><var>n<sub><var>c</var></sub></var></dfn>      <li>For each node <dfn id=var-dt-nc><var>n<sub><var>c</var></sub></var></dfn>
725      in the <code>childNodes</code> list of <var>n</var>,      in the <code>childNodes</code> list of <var>n</var>,
726        <ol>        <ol>
# Line 665  following:</p> Line 732  following:</p>
732        <a href="#algorithm-to-check-a-node" title="check a node">check        <a href="#algorithm-to-check-a-node" title="check a node">check
733        <var>n<sub><var>c</var></sub></var></a> recusrively.</li>        <var>n<sub><var>c</var></sub></var></a> recusrively.</li>
734        </ol></li>        </ol></li>
735      <li class=ed>@@ <code>entities</code>, <code>notations</code>,      <li>For each node in the <code>entities</code>, <code>notations</code>,
736      <code>elementTypes</code>, externally declared?</li>      and <code>elementTypes</code> lists of <var>n</var>,
737        <a href="#algorithm-to-check-a-node" title="check a node">check the
738        node</a> recursively.</li>
739        <li class=ed>@@ externally declared?</li>
740      </ol>      </ol>
741    </dd>    </dd>
742  <dt>If <var>n</var> is an <code>Element</code> node</dt>  <dt>If <var>n</var> is an <code>Element</code> node</dt>
743    <dd>    <dd>
744      <ol>      <ol>
745      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-an-ncname">Validate the
746      <code>localName</code> attribute value as an <code>NCName</code></a>.</li>      <code>localName</code> attribute value as an <code>NCName</code></a>.</li>
747      <li>If the <code>prefix</code> attribute value is different from      <li>If the <code>prefix</code> attribute value is different from
748      <code>null</code>, then <a href="#algorithm-to-validate-a-ncname">validate      <code>null</code>, then <a href="#algorithm-to-validate-an-ncname">validate
749      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>
750      <li>For each node <dfn id=var-element-nc><var>n<sub><var>c</var></sub></var></dfn>      <li>For each node <dfn id=var-element-nc><var>n<sub><var>c</var></sub></var></dfn>
751      in the <code>childNodes</code> list of <var>n</var>,      in the <code>childNodes</code> list of <var>n</var>,
# Line 694  following:</p> Line 764  following:</p>
764        <var>n<sub><var>c</var></sub></var></a> recursively.</li>        <var>n<sub><var>c</var></sub></var></a> recursively.</li>
765        </ol></li>        </ol></li>
766      <li class=ed>@@ #elementvalid Validity constraint: Element Valid</li>      <li class=ed>@@ #elementvalid Validity constraint: Element Valid</li>
767      <li class=ed>@@ #uniqattspec Well-formedness constraint: Unique Att Spec</li>      <li>Let <var>attrs</var> be the value of the <code>attribute</code>
768      <li class=ed>@@ #RequiredAttr Validity constraint: Required Attribute</li>      attribute of <var>n</var>.  Check conformance of <var>attrs</var>
769        as following:
770          <ol>
771          <li>If <var>attrs</var> contains an <code>Attr</code> node whose
772          <code>nodeName</code> attribute value is equal to that of another
773          <code>Attr</code> node in <var>attrs</var>, then raise an
774          <a href="#xml-well-formedness-error" id=wfe-uniqattspec><code>xml-well-formedness-error</code></a>.<!--
775          #uniqattspec Well-formedness constraint: Unique Att Spec --></li>
776          <li class=ed>@@ #RequiredAttr Validity constraint: Required Attribute</li>
777          </ol>
778        </li>
779      </ol>      </ol>
780    </dd>    </dd>
781  <dt>If <var>n</var> is an <code>ElementTypeDefinition</code> node</dt>  <dt>If <var>n</var> is an <code>ElementTypeDefinition</code> node</dt>
# Line 723  following:</p> Line 803  following:</p>
803      <li class=ed>"For interoperability, the same Nmtoken  SHOULD NOT occur more than once in the enumerated attribute types of a single element type."</li>      <li class=ed>"For interoperability, the same Nmtoken  SHOULD NOT occur more than once in the enumerated attribute types of a single element type."</li>
804      </ol>      </ol>
805    </dd>    </dd>
806  <dt>If <var>n</var> is an <code>Entity</code> node</dt>  <dt>If <var>n</var> is an <code>Entity</code> node whose
807    <code>notationName</code> attribute value is <code>null</code> (i.e. a
808    parsed entity)</dt>
809    <dd>    <dd>
810      <ol>      <ol>
811      <li>An <a href="#entity-error" id=ee-entity-node><code>entity-error</code></a> <span class=ed>@@ if !notationName</span>.</li>      <li>Raise an
812      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <a href="#entity-error" id=ee-entity-node><code>entity-error</code></a>.</li>
813        <li><a href="#algorithm-to-validate-an-ncname">Validate the
814      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
815      <li><a href="#algorithm-to-validate-a-public-identifier" title="validate a public identifier">Validate      <li><a href="#algorithm-to-validate-a-public-identifier" title="validate a public identifier">Validate
816      the <code>publicId</code> attribute value as a public identifier</a>.</li>      the <code>publicId</code> attribute value as a public identifier</a>.</li>
817      <li>If the <code>systemId</code> attribute value contains      <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
818      both <code>"</code> and <code>'</code> characters, it is a      the <code>systemId</code> attribute value as a system identifier</a>.</li>
819      <a href="#xml-well-formedness-error" id=wfe-dt-system-id><code>xml-well-formedness-error</code></a>.</li>      <li>If the <code>publicId</code> attribute value of <var>n</var> is
820      <!-- publicId = non-null and systemId = null -->      <em>not</em> <code>null</code> and the <code>systemId</code> attribute
821      <li class=ed>@@ <code>notationName</code></li>      value of <var>n</var> is <code>null</code>, then raise an
822      <li class=ed>@@ #not-declared Validity constraint: Notation Declared</li>      <a href="#xml-well-formedness-error" id=wfe-entity-sid><code>xml-well-formedness-error</code></a>.</li>
823      <li>For each node <dfn id=var-entity-nc><var>n<sub><var>c</var></sub></var></dfn>      <li>For each node <dfn id=var-entity-nc><var>n<sub><var>c</var></sub></var></dfn>
824      in the <code>childNodes</code> list of <var>n</var>,      in the <code>childNodes</code> list of <var>n</var>,
825        <ol>        <ol>
# Line 755  following:</p> Line 838  following:</p>
838        </ol></li>        </ol></li>
839      </ol>      </ol>
840    </dd>    </dd>
841    <dt>If <var>n</var> is an <code>Entity</code> node whose
842    <code>notationName</code> attribute value is <em>not</em> <code>null</code>
843    (i.e. an unparsed entity)</dt>
844      <dd>
845        <ol>
846        <li><a href="#algorithm-to-validate-an-ncname">Validate the
847        <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
848        <li><a href="#algorithm-to-validate-a-public-identifier" title="validate a public identifier">Validate
849        the <code>publicId</code> attribute value as a public identifier</a>.</li>
850        <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
851        the <code>systemId</code> attribute value as a system identifier</a>.</li>
852        <li>If the <code>systemId</code> attribute value of <var>n</var> is
853        <code>null</code>, then raise an
854        <a href="#xml-well-formedness-error" id=wfe-uentity-sid><code>xml-well-formedness-error</code></a>.</li>
855        <li><a href="#algorithm-to-validate-an-ncname">Validate the
856        <code>notationName</code> attribute value of <var>n</var> as an
857        <code>NCName</code></a>.</li>
858        <li class=ed>@@ #not-declared Validity constraint: Notation Declared</li>
859        <li>If the <code>childNodes</code> list of <var>n</var> contains
860        any nodes, they are in
861        <a href="#xml-well-formedness-error" id=wfe-uentity-child><code>xml-well-formedness-error</code></a>.</li>
862        </ol>
863      </dd>
864  <dt>If <var>n</var> is an <code>EntityReference</code> node</dt>  <dt>If <var>n</var> is an <code>EntityReference</code> node</dt>
865    <dd>    <dd>
866      <ol>      <ol>
867      <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>
868      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-an-ncname">Validate the
869      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
870      <li>For each node <dfn id=var-er-nc><var>n<sub><var>c</var></sub></var></dfn>      <li>For each node <dfn id=var-er-nc><var>n<sub><var>c</var></sub></var></dfn>
871      in the <code>childNodes</code> list of <var>n</var>,      in the <code>childNodes</code> list of <var>n</var>,
# Line 782  following:</p> Line 888  following:</p>
888  <dt>If <var>n</var> is a <code>Notation</code> node</dt>  <dt>If <var>n</var> is a <code>Notation</code> node</dt>
889    <dd>    <dd>
890      <ol>      <ol>
891      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-an-ncname">Validate the
892      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
893      <li><a href="#algorithm-to-validate-a-public-identifier" title="validate a public identifier">Validate      <li><a href="#algorithm-to-validate-a-public-identifier" title="validate a public identifier">Validate
894      the <code>publicId</code> attribute value as a public identifier</a>.</li>      the <code>publicId</code> attribute value as a public identifier</a>.</li>
895      <li>If the <code>systemId</code> attribute value contains      <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
896      both <code>"</code> and <code>'</code> characters, it is a      the <code>systemId</code> attribute value as a system identifier</a>.</li>
     <a href="#xml-well-formedness-error" id=wfe-dt-system-id><code>xml-well-formedness-error</code></a>.</li>  
897      <li>If the <code>childNodes</code> list of <var>n</var> contains      <li>If the <code>childNodes</code> list of <var>n</var> contains
898      any nodes, they are in      any nodes, they are in
899      <a href="#xml-well-formedness-error" id=wfe-notation-child><code>xml-well-formedness-error</code></a>.</li>      <a href="#xml-well-formedness-error" id=wfe-notation-child><code>xml-well-formedness-error</code></a>.</li>
# Line 800  following:</p> Line 905  following:</p>
905      <li>If the <code>target</code> attribute value matches to the string      <li>If the <code>target</code> attribute value matches to the string
906      <code>xml</code> in any case combination, then raise a      <code>xml</code> in any case combination, then raise a
907      <a href="#xml-well-formedness-error" id=wfe-pi-xml><code>xml-well-formedness-error</code></a>.</li>      <a href="#xml-well-formedness-error" id=wfe-pi-xml><code>xml-well-formedness-error</code></a>.</li>
908      <li>Otherwise, <a href="#algorithm-to-validate-a-ncname">validate the      <li>Otherwise, <a href="#algorithm-to-validate-an-ncname">validate the
909      <code>target</code> attribute value as an <code>NCName</code></a>.</li>      <code>target</code> attribute value as an <code>NCName</code></a>.</li>
910      <li>Then,      <li>Then,
911      <a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML character data">validate      <a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">validate
912      the <code>data</code> attribute value as an <abbr>XML</abbr> character      the <code>data</code> attribute value as an <abbr>XML</abbr> character
913      data</a>.</li>      data</a>.</li>
914      <li>If the <code>data</code> attribute value contains a string      <li>If the <code>data</code> attribute value contains a string
# Line 824  following:</p> Line 929  following:</p>
929  <dt>If <var>n</var> is a <code>Text</code> node</dt>  <dt>If <var>n</var> is a <code>Text</code> node</dt>
930    <dd>    <dd>
931      <ol>      <ol>
932      <li><a href="#algorithm-to-validate-an-xml-character-data">Validate the      <li><a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">Validate the
933      <code>data</code> attribute value as an <abbr>XML</abbr> character      <code>data</code> attribute value as an <abbr>XML</abbr> character
934      data</a>.</li>      data</a>.</li>
935      <li>If the <code>childNodes</code> list of <var>n</var> contains      <li>If the <code>childNodes</code> list of <var>n</var> contains
# Line 908  as amended by Line 1013  as amended by
1013  <a href="http://www.w3.org/XML/xml-V10-4e-errata#E02">errata</a>.</p>  <a href="http://www.w3.org/XML/xml-V10-4e-errata#E02">errata</a>.</p>
1014  </div>  </div>
1015    
1016    <p>The character class <dfn id=class-NameStartChar10><code>NameStartChar10</code></dfn>
1017    contains the following characters:</p>
1018    <ul class=ed>
1019    </ul>
1020    <div class="note memo">
1021    <p>This character class contains all characters allowed as the first character
1022    of a string matching to the production rule
1023    <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-Name"><code>Name</code></a>
1024    of <abbr>XML</abbr> 1.0
1025    <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>.</p>
1026    </div>
1027    
1028    <p>The character class <dfn id=class-NameChar10><code>NameChar10</code></dfn>
1029    contains the following characters:</p>
1030    <ul>
1031    <li>The characters in the character class
1032    <a href="#class-NameStartChar10">NameStartChar10</a>.</li>
1033    <li class=ed></li>
1034    </ul>
1035    <div class="note memo">
1036    <p>This character class contains all characters allowed as the second
1037    character of a string matching to the production rule
1038    <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-Name"><code>Name</code></a>
1039    of <abbr>XML</abbr> 1.0
1040    <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>.</p>
1041    </div>
1042    
1043    <p>The character class <dfn id=class-PubidChar><code>PubidChar</code></dfn>
1044    contains the following characters:</p>
1045    <ul>
1046    <li><code class=char>U+0009</code> <code class=charname>CHARACTER
1047    TABULATION</code></li>
1048    <li><code class=char>U+000A</code> <code class=charname>LINE FEED</code></li>
1049    <li><code class=char>U+000D</code> <code class=charname>CARRIAGE
1050    RETURN</code></li>
1051    <li><code class=char>U+0020</code> <code class=charname>SPACE</code></li>
1052    <li><code class=char>U+0021</code> <code class=charname>EXCLAMATION MARK</code>
1053    (<code class=char>!</code>)</li>
1054    <li><code class=char>U+0023</code> <code class=charname>DOLLAR SIGN</code>
1055    (<code class=char>$</code>)</li>
1056    <li><code class=char>U+0024</code> <code class=charname>NUMBER SIGN</code>
1057    (<code class=char>#</code>)</li>
1058    <li><code class=char>U+0025</code> <code class=charname>PERCENT SIGN</code>
1059    (<code class=char>%</code>)</li>
1060    <li><code class=char>U+0027</code> <code class=charname>APOSTROPHE</code>
1061    (<code class=char>'</code>)</li>
1062    <li><code class=char>U+0028</code> <code class=charname>LEFT PARENTHESIS</code>
1063    (<code class=char>(</code>)</li>
1064    <li><code class=char>U+0029</code> <code class=charname>RIGHT
1065    PARENTHESIS</code> (<code class=char>)</code>)</li>
1066    <li><code class=char>U+002A</code> <code class=charname>ASTERISK</code>
1067    (<code class=char>*</code>)</li>
1068    <li><code class=char>U+002B</code> <code class=charname>PLUS SIGN</code>
1069    (<code class=char>+</code>)</li>
1070    <li><code class=char>U+002C</code> <code class=charname>COMMA</code>
1071    (<code class=char>,</code>)</li>
1072    <li><code class=char>U+002D</code> <code class=charname>HYPHEN-MINUS</code>
1073    (<code class=char>-</code>)</li>
1074    <li><code class=char>U+002E</code> <code class=charname>FULL STOP</code>
1075    (<code class=char>.</code>)</li>
1076    <li><code class=char>U+002F</code> <code class=charname>SOLIDUS</code>
1077    (<code class=char>/</code>)</li>
1078    <li><code class=char>U+0030</code> <code class=charname>DIGIT ZERO</code>
1079    (<code class=char>0</code>) .. <code class=char>U+0039</code>
1080    <code class=charname>DIGIT NINE</code> (<code class=char>9</code>)</li>
1081    <li><code class=char>U+003A</code> <code class=charname>COLON</code>
1082    (<code class=char>:</code>)</li>
1083    <li><code class=char>U+003B</code> <code class=charname>SEMICOLON</code>
1084    (<code class=char>;</code>)</li>
1085    <li><code class=char>U+003D</code> <code class=charname>EQUAL SIGN</code>
1086    (<code class=char>=</code>)</li>
1087    <li><code class=char>U+003F</code> <code class=charname>QUESTION MARK</code>
1088    (<code class=char>?</code>)</li>
1089    <li><code class=char>U+0040</code> <code class=charname>COMMERCIAL AT</code>
1090    (<code class=char>@</code>)</li>
1091    <li><code class=char>U+0041</code> <code class=charname>LATIN CAPITAL LETTER
1092    A</code> (<code class=char>A</code>) .. <code class=char>U+005A</code>
1093    <code class=charname>LATIN CAPITAL LETTER Z</code>
1094    (<code class=char>Z</code>)</li>
1095    <li><code class=char>U+005F</code> <code class=charname>LOW LINE</code>
1096    (<code class=char>_</code>)</li>
1097    <li><code class=char>U+0061</code> <code class=charname>LATIN CAPITAL LETTER
1098    A</code> (<code class=char>A</code>) .. <code class=char>U+007A</code>
1099    <code class=charname>LATIN CAPITAL LETTER Z</code>
1100    (<code class=char>Z</code>)</li>
1101    </ul>
1102    <div class="note memo">
1103    <p>This character class contains all characters allowed in the production rule
1104    <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-PubidChar"><code>PubidChar</code></a>
1105    of <abbr>XML</abbr> 1.0
1106    <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>.</p>
1107    </div>
1108    
1109  </div>  </div>
1110    
1111  <div id="references" class="section reference">  <div id="references" class="section reference">

Legend:
Removed from v.1.17  
changed lines
  Added in v.1.23

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24