/[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.22 by wakaba, Sun Mar 16 12:33:53 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 216  can be easily serialized into a valid XM Line 221  can be easily serialized into a valid XM
221  <div class=section id=parsing-xml>  <div class=section id=parsing-xml>
222  <h2>Parsing <abbr>XML</abbr> Document</h2>  <h2>Parsing <abbr>XML</abbr> Document</h2>
223    
224  <ul>  <p>When an <abbr>XML</abbr> document is parsed, the following clauses
225  <li>If the <abbr>XML</abbr> document does not begin with an  are applied:</p>
226  <abbr>XML</abbr> declaration, then raise an  <dl>
227  <a href="#xml-misc-recommentation" id=xmr-xml-decl><code>xml-misc-recommendation</code></a>.</li>  <dt>For each document
228  <li>If the replacement text of an entity declaration is    <dd>If the <abbr>XML</abbr> document does not begin with an
229  <code>&lt;</code>, then raise an    <abbr>XML</abbr> declaration, then the parser <em class=rfc2119>MUST</em>
230  <a href="#xml-misc-warning" id=xmw-entity-value-lt><code>xml-misc-warning</code></a>.<!--    raise an
231      <a href="#xml-misc-recommentation" id=xmr-xml-decl><code>xml-misc-recommendation</code></a>.
232    <dt>For each internal general entity declaration processed by the parser
233      <dd>If the
234      <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-EntityValue"><code>EntityValue</code></a>
235      part of the general entity declaration contains a bare <code>U+003C</code>
236      <code>LESS-THAN SIGN</code> (<code>&lt;</code>) character, then the parser
237      <em class=rfc2119>MUST</em> raise an
238      <a href="#xml-misc-warning" id=xmw-entity-value-lt><code>xml-misc-warning</code></a>.<!--
239  "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].
240  --></li>  -->
241  <li>If there is an element type declaration whose <code>Name</code>  <dt>For each element type declaration processed by the parser
242  value is already declared, then raise an    <dd>If there is another element type declaration whose <code>Name</code>
243  <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
244  <li>If attribute definition whose <code>Name</code> is    the parser <em class=rfc2119>MUST</em> raise an
245  <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>.
246  (default|preserve), (default), or (preserve)</span>, then raise an  <!--
247  <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>
248  <span class=ed>@@ duplication with    will not be warned.
249  <a href="#xml-at-xml-space">#xml-at-xml-space</a>.<!--  -->
250  <!ATTLIST e xml:space CDATA #IMPLIED xml:space CDATA #IMPLIED> --></span></li>  <dt>For each empty-element tag
251  <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
252  declared <code>EMPTY</code>, then raise an    element type declaration as <code>EMPTY</code> content, then the parser
253  <a href="#xml-misc-recommentation" id=xmr-emptyelemtag-not-empty><code>xml-misc-recommendation</code></a>.</li>    <em class=rfc2119>MUST</em> raise an
254  <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>.
255  declared <code>EMPTY</code>, then raise an  <dt>For each start-tag
256  <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
257      type declaration as <code>EMPTY</code> content, then the parser
258      <em class=rfc2119>MUST</em> raise an
259      <a href="#xml-misc-recommentation" id=xmr-empty-not-emptyelemtag><code>xml-misc-recommendation</code></a>.
260  <!--  <!--
261    
262  #vc-PEinMarkupDecl Validity constraint: Proper Declaration/PE Nesting  #vc-PEinMarkupDecl Validity constraint: Proper Declaration/PE Nesting
# Line 285  declared <code>EMPTY</code>, then raise Line 301  declared <code>EMPTY</code>, then raise
301  "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."
302    
303  -->  -->
304  </ul>  </dl>
305  </div>  </div>
306    
307  <div class="section" id=checking-dom>  <div class="section" id=checking-dom>
# Line 314  is that of the <code>Document</code> nod Line 330  is that of the <code>Document</code> nod
330    
331    
332  <div class=section id=checking-components>  <div class=section id=checking-components>
333  <h3>Checking Components</h3>  <h3>Conformance Checking Algorithms for Components</h3>
334    
335  <p>The algorithm  <p>To
336  <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
337  validate an <abbr>XML</abbr> character data  validate an <abbr>XML</abbr> string (<dfn id=var-s><var>s</var></dfn>)</dfn>,
338  (<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>
339  <ol>  <ol>
340  <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
341  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 360  U+000D will be serialized as &#x000D; (s
360  will be raised).</span></li>  will be raised).</span></li>
361  </ol>  </ol>
362    
363  <p>The algorithm  <p>To
364  <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
365  <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
366  as following:</p>  algorithm <em class=rfc2119>MUST</em> be used:</p>
367  <ol>  <ol>
368    <li>If <var>s</var> is an empty string, then raise an
369    <a href="#xml-well-formedness-error" id=wfe-name-empty><code>xml-well-formedness-error</code></a>.
370    Abort these steps.</li>
371    <li><a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">Validate
372    <var>s</var> as an <abbr>XML</abbr> string</a>.</li>
373    <li>If the first character in <var>s</var> is a character that is
374    <em>not</em> in the character class
375    <a href="#class-NameStartChar10"><code>NameStartChar10</code></a>, then raise
376    an
377    <a href="#xml-well-formedness-error" id=wfe-name-startchar><code>xml-well-formedness-error</code></a>.</li>
378    <li>If a character other than the first character in <var>s</var> is a
379    character that is <em>not</em> in the character class
380    <a href="#class-NameChar10"><code>NameChar10</code></a>, then raise an
381    <a href="#xml-well-formedness-error" id=wfe-name-char><code>xml-well-formedness-error</code></a>.</li>
382  <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
383  case combination), then raise an  case combination), then raise an
384  <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 387  case combination), then raise an
387  <code>xmlns</code>, <code>xmlns:<var>*</var></code>,  <code>xmlns</code>, <code>xmlns:<var>*</var></code>,
388  pi name <code>xml-stylesheet</code>.</span><!--  pi name <code>xml-stylesheet</code>.</span><!--
389  "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.":
390  xml:base and xml:id specifications violate to this sentense!  xmlns, xml-stylesheet, xml:base and xml:id specifications violate to this sentense!
391  --></li>  --></li>
392  <!-- 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],
393  [XML11]. -->  [XML11]. -->
394  <li class=ed>@@</li>  <li class=ed>@@ XML 1.1 support</li>
395  </ol>  </ol>
396    
397  <p>The algorithm  <p>To
398  <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
399  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
400  is defined as following:</p>  following algorithm <em class=rfc2119>MUST</em> be used:</p>
401  <ol>  <ol>
402    <li><a href="#algorithm-to-validate-a-name" title="validate a Name">Validate
403    <var>s</var> as a <code>Name</code></a>.</li>
404  <li class=ed>@@</li>  <li class=ed>@@</li>
405  </ol>  </ol>
406    
407  <p>To <dfn id=algorithm-to-validate-a-public-identifier title="validate a public identifier">validate  <p>To
408    <dfn id=algorithm-to-validate-a-public-identifier title="validate a public identifier">validate
409  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
410  algorithm below <em class=rfc2119>MUST</em> be used:</p>  following algorithm <em class=rfc2119>MUST</em> be used:</p>
411  <ol>  <ol>
412    <li>If <var>pid</var> contains any character  <li>If <var>pid</var> is <code>null</code>, abort these steps.</li>
413    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
414    [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]</code><!-- @@ TODO: formal def -->,  character class <a href="#class-PubidChar"><code>PubidChar</code></a>, then
415    then it is an  raise an
416    <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>
417    <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>
418    <code class=charname>CHARACTER TABULATION</code>,    <code class=charname>CHARACTER TABULATION</code>,
419    <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 425  algorithm below <em class=rfc2119>MUST</
425    <code class=char>U+0020</code> <code class=charname>SPACE</code> character    <code class=char>U+0020</code> <code class=charname>SPACE</code> character
426    immediately followed by another <code class=char>U+0020</code>    immediately followed by another <code class=char>U+0020</code>
427    <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
428    <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>.
429    <li class=ed>@@ Should we check formal-public-identifierness?</li>    <span class=ed>Is this really a roundtripness problem?  XML spec
430      does only define the way to match public identifiers in fact, no
431      canonical form.</span></li>
432    </ol>
433    
434    <p>To
435    <dfn id=algorithm-to-validate-a-system-identifier title="validate a system identifier">validate
436    a system identifier (<dfn id=var-sid><var>sid</var></dfn>)</dfn>, the
437    following algorithm <em class=rfc2119>MUST</em> be used:</p>
438    <ol>
439      <li>If <var>sid</var> is <code>null</code>, abort these steps.</li>
440    <li><a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">Validate
441    <var>sid</var> as an <abbr>XML</abbr> string</a>.</li>
442      <li>If <var>sid</var> contains both <code class=char>U+0022</code>
443      <code class=charname>QUOTATION MARK</code> (<code class=char>"</code>) and
444      <code class=char>U+0027</code> <code class=charname>APOSTROPHE</code>
445      (<code class=char>'</code>) characters, raise an
446      <a href="#xml-well-formedness-error" id=wfe-sid-lit><code>xml-well-formedness-error</code></a>.</li>
447      <li>If <var>sid</var> contains at least one <code class=char>U+0023</code>
448      <code class=charname>NUMBER SIGN</code> (<code class=char>#</code>)
449      character, then raise an
450      <a href="#xml-misc-error" id=xme-sid-fragment><code>xml-misc-error</code></a>.</li>
451      <li class=ed>@@ If <var>sid</var> cannot be converted to a URI
452      reference, then raise a fact-level error (xml-misc-warning?).<!--
453      XML 1.0 has no conformance language for system identifier being
454      a URI reference. --></li>
455  </ol>  </ol>
456    
457  </div>  </div>
# Line 408  following:</p> Line 466  following:</p>
466  <dt>If <var>n</var> is an <code>Attr</code> node</dt>  <dt>If <var>n</var> is an <code>Attr</code> node</dt>
467    <dd>    <dd>
468      <ol>      <ol>
469      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-an-ncname">Validate the
470      <code>localName</code> attribute value as an <code>NCName</code></a>.</li>      <code>localName</code> attribute value as an <code>NCName</code></a>.</li>
471      <li>If the <code>prefix</code> attribute value is different from      <li>If the <code>prefix</code> attribute value is different from
472      <code>null</code>, then <a href="#algorithm-to-validate-a-ncname">validate      <code>null</code>, then <a href="#algorithm-to-validate-an-ncname">validate
473      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>
474      <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
475      <code>childNodes</code> list of <var>n</var>,      <code>childNodes</code> list of <var>n</var>,
# Line 517  following:</p> Line 575  following:</p>
575      <li>If <code>nodeName</code> attribute of <var>n</var> is      <li>If <code>nodeName</code> attribute of <var>n</var> is
576      <code>xml:space</code> <span class=ed>@@ or {xml namespace}:space ?</span>      <code>xml:space</code> <span class=ed>@@ or {xml namespace}:space ?</span>
577      and <span class=ed>its declared type is different from (default|preserve),      and <span class=ed>its declared type is different from (default|preserve),
578      (default), or (preserve)</span>, then raise an      (preserve|default), (default), or (preserve)</span>, then raise an
579      <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>
580      <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
581      <code>childNodes</code> list of <var>n</var>,      <code>childNodes</code> list of <var>n</var>,
# Line 547  following:</p> Line 605  following:</p>
605  <dt>If <var>n</var> is a <code>CDATASection</code> node</dt>  <dt>If <var>n</var> is a <code>CDATASection</code> node</dt>
606    <dd>    <dd>
607      <ol>      <ol>
608      <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
609      <code>data</code> attribute value as an <abbr>XML</abbr> character      <code>data</code> attribute value as an <abbr>XML</abbr> character
610      data</a>.</li>      data</a>.</li>
611      <li>If the <code>data</code> attribute value contains      <li>If the <code>data</code> attribute value contains
# Line 563  following:</p> Line 621  following:</p>
621      <ol>      <ol>
622      <li>Raise an      <li>Raise an
623      <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>
624      <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
625      <code>data</code> attribute value as an <abbr>XML</abbr> character      <code>data</code> attribute value as an <abbr>XML</abbr> character
626      data</a>.</li>      data</a>.</li>
627      <li>If the <code>data</code> attribute value contains      <li>If the <code>data</code> attribute value contains
# Line 630  following:</p> Line 688  following:</p>
688  <dt>If <var>n</var> is a <code>DocumentType</code> node</dt>  <dt>If <var>n</var> is a <code>DocumentType</code> node</dt>
689    <dd>    <dd>
690      <ol>      <ol>
691      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-an-ncname">Validate the
692      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
693      <li>Follow the following substeps:      <li>Follow the following substeps:
694        <ol>        <ol>
# Line 649  following:</p> Line 707  following:</p>
707      </li>      </li>
708      <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
709      the <code>publicId</code> attribute value as a public identifier</a>.</li>      the <code>publicId</code> attribute value as a public identifier</a>.</li>
710      <li>If the <code>systemId</code> attribute value contains      <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
711      both <code>"</code> and <code>'</code> characters, it is a      the <code>systemId</code> attribute value as a system identifier</a>.</li>
712      <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
713      <!-- @@ "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
714      <!-- publicId = non-null and systemId = null -->      value of <var>n</var> is <code>null</code>, then raise an
715        <a href="#xml-well-formedness-error" id=wfe-dt-sid><code>xml-well-formedness-error</code></a>.
716        <span class=ed>@@ publicId == null?  Or, publicId == ""</span></li>
717      <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>
718      in the <code>childNodes</code> list of <var>n</var>,      in the <code>childNodes</code> list of <var>n</var>,
719        <ol>        <ol>
# Line 665  following:</p> Line 725  following:</p>
725        <a href="#algorithm-to-check-a-node" title="check a node">check        <a href="#algorithm-to-check-a-node" title="check a node">check
726        <var>n<sub><var>c</var></sub></var></a> recusrively.</li>        <var>n<sub><var>c</var></sub></var></a> recusrively.</li>
727        </ol></li>        </ol></li>
728      <li class=ed>@@ <code>entities</code>, <code>notations</code>,      <li>For each node in the <code>entities</code>, <code>notations</code>,
729      <code>elementTypes</code>, externally declared?</li>      and <code>elementTypes</code> lists of <var>n</var>,
730        <a href="#algorithm-to-check-a-node" title="check a node">check the
731        node</a> recursively.</li>
732        <li class=ed>@@ externally declared?</li>
733      </ol>      </ol>
734    </dd>    </dd>
735  <dt>If <var>n</var> is an <code>Element</code> node</dt>  <dt>If <var>n</var> is an <code>Element</code> node</dt>
736    <dd>    <dd>
737      <ol>      <ol>
738      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-an-ncname">Validate the
739      <code>localName</code> attribute value as an <code>NCName</code></a>.</li>      <code>localName</code> attribute value as an <code>NCName</code></a>.</li>
740      <li>If the <code>prefix</code> attribute value is different from      <li>If the <code>prefix</code> attribute value is different from
741      <code>null</code>, then <a href="#algorithm-to-validate-a-ncname">validate      <code>null</code>, then <a href="#algorithm-to-validate-an-ncname">validate
742      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>
743      <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>
744      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 757  following:</p>
757        <var>n<sub><var>c</var></sub></var></a> recursively.</li>        <var>n<sub><var>c</var></sub></var></a> recursively.</li>
758        </ol></li>        </ol></li>
759      <li class=ed>@@ #elementvalid Validity constraint: Element Valid</li>      <li class=ed>@@ #elementvalid Validity constraint: Element Valid</li>
760      <li class=ed>@@ #uniqattspec Well-formedness constraint: Unique Att Spec</li>      <li>Let <var>attrs</var> be the value of the <code>attribute</code>
761      <li class=ed>@@ #RequiredAttr Validity constraint: Required Attribute</li>      attribute of <var>n</var>.  Check conformance of <var>attrs</var>
762        as following:
763          <ol>
764          <li>If <var>attrs</var> contains an <code>Attr</code> node whose
765          <code>nodeName</code> attribute value is equal to that of another
766          <code>Attr</code> node in <var>attrs</var>, then raise an
767          <a href="#xml-well-formedness-error" id=wfe-uniqattspec><code>xml-well-formedness-error</code></a>.<!--
768          #uniqattspec Well-formedness constraint: Unique Att Spec --></li>
769          <li class=ed>@@ #RequiredAttr Validity constraint: Required Attribute</li>
770          </ol>
771        </li>
772      </ol>      </ol>
773    </dd>    </dd>
774  <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 796  following:</p>
796      <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>
797      </ol>      </ol>
798    </dd>    </dd>
799  <dt>If <var>n</var> is an <code>Entity</code> node</dt>  <dt>If <var>n</var> is an <code>Entity</code> node whose
800    <code>notationName</code> attribute value is <code>null</code> (i.e. a
801    parsed entity)</dt>
802    <dd>    <dd>
803      <ol>      <ol>
804      <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
805      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <a href="#entity-error" id=ee-entity-node><code>entity-error</code></a>.</li>
806        <li><a href="#algorithm-to-validate-an-ncname">Validate the
807      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
808      <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
809      the <code>publicId</code> attribute value as a public identifier</a>.</li>      the <code>publicId</code> attribute value as a public identifier</a>.</li>
810      <li>If the <code>systemId</code> attribute value contains      <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
811      both <code>"</code> and <code>'</code> characters, it is a      the <code>systemId</code> attribute value as a system identifier</a>.</li>
812      <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
813      <!-- publicId = non-null and systemId = null -->      <em>not</em> <code>null</code> and the <code>systemId</code> attribute
814      <li class=ed>@@ <code>notationName</code></li>      value of <var>n</var> is <code>null</code>, then raise an
815      <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>
816      <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>
817      in the <code>childNodes</code> list of <var>n</var>,      in the <code>childNodes</code> list of <var>n</var>,
818        <ol>        <ol>
# Line 755  following:</p> Line 831  following:</p>
831        </ol></li>        </ol></li>
832      </ol>      </ol>
833    </dd>    </dd>
834    <dt>If <var>n</var> is an <code>Entity</code> node whose
835    <code>notationName</code> attribute value is <em>not</em> <code>null</code>
836    (i.e. an unparsed entity)</dt>
837      <dd>
838        <ol>
839        <li><a href="#algorithm-to-validate-an-ncname">Validate the
840        <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
841        <li><a href="#algorithm-to-validate-a-public-identifier" title="validate a public identifier">Validate
842        the <code>publicId</code> attribute value as a public identifier</a>.</li>
843        <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
844        the <code>systemId</code> attribute value as a system identifier</a>.</li>
845        <li>If the <code>systemId</code> attribute value of <var>n</var> is
846        <code>null</code>, then raise an
847        <a href="#xml-well-formedness-error" id=wfe-uentity-sid><code>xml-well-formedness-error</code></a>.</li>
848        <li><a href="#algorithm-to-validate-an-ncname">Validate the
849        <code>notationName</code> attribute value of <var>n</var> as an
850        <code>NCName</code></a>.</li>
851        <li class=ed>@@ #not-declared Validity constraint: Notation Declared</li>
852        <li>If the <code>childNodes</code> list of <var>n</var> contains
853        any nodes, they are in
854        <a href="#xml-well-formedness-error" id=wfe-uentity-child><code>xml-well-formedness-error</code></a>.</li>
855        </ol>
856      </dd>
857  <dt>If <var>n</var> is an <code>EntityReference</code> node</dt>  <dt>If <var>n</var> is an <code>EntityReference</code> node</dt>
858    <dd>    <dd>
859      <ol>      <ol>
860      <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>
861      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-an-ncname">Validate the
862      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
863      <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>
864      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 881  following:</p>
881  <dt>If <var>n</var> is a <code>Notation</code> node</dt>  <dt>If <var>n</var> is a <code>Notation</code> node</dt>
882    <dd>    <dd>
883      <ol>      <ol>
884      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-an-ncname">Validate the
885      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
886      <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
887      the <code>publicId</code> attribute value as a public identifier</a>.</li>      the <code>publicId</code> attribute value as a public identifier</a>.</li>
888      <li>If the <code>systemId</code> attribute value contains      <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
889      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>  
890      <li>If the <code>childNodes</code> list of <var>n</var> contains      <li>If the <code>childNodes</code> list of <var>n</var> contains
891      any nodes, they are in      any nodes, they are in
892      <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 898  following:</p>
898      <li>If the <code>target</code> attribute value matches to the string      <li>If the <code>target</code> attribute value matches to the string
899      <code>xml</code> in any case combination, then raise a      <code>xml</code> in any case combination, then raise a
900      <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>
901      <li>Otherwise, <a href="#algorithm-to-validate-a-ncname">validate the      <li>Otherwise, <a href="#algorithm-to-validate-an-ncname">validate the
902      <code>target</code> attribute value as an <code>NCName</code></a>.</li>      <code>target</code> attribute value as an <code>NCName</code></a>.</li>
903      <li>Then,      <li>Then,
904      <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
905      the <code>data</code> attribute value as an <abbr>XML</abbr> character      the <code>data</code> attribute value as an <abbr>XML</abbr> character
906      data</a>.</li>      data</a>.</li>
907      <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 922  following:</p>
922  <dt>If <var>n</var> is a <code>Text</code> node</dt>  <dt>If <var>n</var> is a <code>Text</code> node</dt>
923    <dd>    <dd>
924      <ol>      <ol>
925      <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
926      <code>data</code> attribute value as an <abbr>XML</abbr> character      <code>data</code> attribute value as an <abbr>XML</abbr> character
927      data</a>.</li>      data</a>.</li>
928      <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 1006  as amended by
1006  <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>
1007  </div>  </div>
1008    
1009    <p>The character class <dfn id=class-NameStartChar10><code>NameStartChar10</code></dfn>
1010    contains the following characters:</p>
1011    <ul class=ed>
1012    </ul>
1013    <div class="note memo">
1014    <p>This character class contains all characters allowed as the first character
1015    of a string matching to the production rule
1016    <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-Name"><code>Name</code></a>
1017    of <abbr>XML</abbr> 1.0
1018    <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>.</p>
1019    </div>
1020    
1021    <p>The character class <dfn id=class-NameChar10><code>NameChar10</code></dfn>
1022    contains the following characters:</p>
1023    <ul>
1024    <li>The characters in the character class
1025    <a href="#class-NameStartChar10">NameStartChar10</a>.</li>
1026    <li class=ed></li>
1027    </ul>
1028    <div class="note memo">
1029    <p>This character class contains all characters allowed as the second
1030    character of a string matching to the production rule
1031    <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-Name"><code>Name</code></a>
1032    of <abbr>XML</abbr> 1.0
1033    <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>.</p>
1034    </div>
1035    
1036    <p>The character class <dfn id=class-PubidChar><code>PubidChar</code></dfn>
1037    contains the following characters:</p>
1038    <ul>
1039    <li><code class=char>U+0009</code> <code class=charname>CHARACTER
1040    TABULATION</code></li>
1041    <li><code class=char>U+000A</code> <code class=charname>LINE FEED</code></li>
1042    <li><code class=char>U+000D</code> <code class=charname>CARRIAGE
1043    RETURN</code></li>
1044    <li><code class=char>U+0020</code> <code class=charname>SPACE</code></li>
1045    <li><code class=char>U+0021</code> <code class=charname>EXCLAMATION MARK</code>
1046    (<code class=char>!</code>)</li>
1047    <li><code class=char>U+0023</code> <code class=charname>DOLLAR SIGN</code>
1048    (<code class=char>$</code>)</li>
1049    <li><code class=char>U+0024</code> <code class=charname>NUMBER SIGN</code>
1050    (<code class=char>#</code>)</li>
1051    <li><code class=char>U+0025</code> <code class=charname>PERCENT SIGN</code>
1052    (<code class=char>%</code>)</li>
1053    <li><code class=char>U+0027</code> <code class=charname>APOSTROPHE</code>
1054    (<code class=char>'</code>)</li>
1055    <li><code class=char>U+0028</code> <code class=charname>LEFT PARENTHESIS</code>
1056    (<code class=char>(</code>)</li>
1057    <li><code class=char>U+0029</code> <code class=charname>RIGHT
1058    PARENTHESIS</code> (<code class=char>)</code>)</li>
1059    <li><code class=char>U+002A</code> <code class=charname>ASTERISK</code>
1060    (<code class=char>*</code>)</li>
1061    <li><code class=char>U+002B</code> <code class=charname>PLUS SIGN</code>
1062    (<code class=char>+</code>)</li>
1063    <li><code class=char>U+002C</code> <code class=charname>COMMA</code>
1064    (<code class=char>,</code>)</li>
1065    <li><code class=char>U+002D</code> <code class=charname>HYPHEN-MINUS</code>
1066    (<code class=char>-</code>)</li>
1067    <li><code class=char>U+002E</code> <code class=charname>FULL STOP</code>
1068    (<code class=char>.</code>)</li>
1069    <li><code class=char>U+002F</code> <code class=charname>SOLIDUS</code>
1070    (<code class=char>/</code>)</li>
1071    <li><code class=char>U+0030</code> <code class=charname>DIGIT ZERO</code>
1072    (<code class=char>0</code>) .. <code class=char>U+0039</code>
1073    <code class=charname>DIGIT NINE</code> (<code class=char>9</code>)</li>
1074    <li><code class=char>U+003A</code> <code class=charname>COLON</code>
1075    (<code class=char>:</code>)</li>
1076    <li><code class=char>U+003B</code> <code class=charname>SEMICOLON</code>
1077    (<code class=char>;</code>)</li>
1078    <li><code class=char>U+003D</code> <code class=charname>EQUAL SIGN</code>
1079    (<code class=char>=</code>)</li>
1080    <li><code class=char>U+003F</code> <code class=charname>QUESTION MARK</code>
1081    (<code class=char>?</code>)</li>
1082    <li><code class=char>U+0040</code> <code class=charname>COMMERCIAL AT</code>
1083    (<code class=char>@</code>)</li>
1084    <li><code class=char>U+0041</code> <code class=charname>LATIN CAPITAL LETTER
1085    A</code> (<code class=char>A</code>) .. <code class=char>U+005A</code>
1086    <code class=charname>LATIN CAPITAL LETTER Z</code>
1087    (<code class=char>Z</code>)</li>
1088    <li><code class=char>U+005F</code> <code class=charname>LOW LINE</code>
1089    (<code class=char>_</code>)</li>
1090    <li><code class=char>U+0061</code> <code class=charname>LATIN CAPITAL LETTER
1091    A</code> (<code class=char>A</code>) .. <code class=char>U+007A</code>
1092    <code class=charname>LATIN CAPITAL LETTER Z</code>
1093    (<code class=char>Z</code>)</li>
1094    </ul>
1095    <div class="note memo">
1096    <p>This character class contains all characters allowed in the production rule
1097    <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-PubidChar"><code>PubidChar</code></a>
1098    of <abbr>XML</abbr> 1.0
1099    <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>.</p>
1100    </div>
1101    
1102  </div>  </div>
1103    
1104  <div id="references" class="section reference">  <div id="references" class="section reference">

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24