/[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.24 by wakaba, Fri Mar 28 15:37:01 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-29>29 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    </dl>
264    
265    <p>In addition, the parser <em class=rfc2119>MUST</em> check whether the
266    following constraints are met.
267    
268    <p><strong>Well-formedness constraints</strong>.  For each violation to
269    one of constraints below, an
270    <a href="#xml-well-formedness-error"><code>xml-well-formedness-error</code></a>
271    <em class=rfc2119>MUST</em> be raised.  The list of well-formedness
272    constraints is below:
273    <ul>
274    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#wfc-PEinInternalSubset">Well-formedness constraint: PEs in Internal Subset</a>
275    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#ExtSubset">Well-formedness constraint: External Subset</a>
276    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#PE-between-Decls">Well-formedness constraint: PE Between Declarations</a>
277    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#GIMatch">Well-formedness constraint: Element Type Match</a>
278    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#uniqattspec">Well-formedness constraint: Unique Att Spec</a>
279    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NoExternalRefs">Well-formedness constraint: No External Entity References</a>
280    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#CleanAttrVals">Well-formedness constraint: No &lt; in Attribute Values</a>
281    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#wf-Legalchar">Well-formedness constraint: Legal Character</a>
282    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#textent">Well-formedness constraint: Parsed Entity</a>
283    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#norecursion">Well-formedness constraint: No Recursion</a>
284    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#indtd">Well-formedness constraint: In DTD</a>
285    </ul>
286    
287    <p><strong>Validity constraints</strong>.  For each violation to
288    one of constraints below, an
289    <a href="#xml-validity-error"><code>xml-validity-error</code></a>.
290    <em class=rfc2119>MUST</em> be raised.  The list of validity
291    constraints is below:
292    <ul>
293    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#vc-PEinMarkupDecl">Validity constraint: Proper Declaration/PE Nesting</a>
294    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#vc-PEinGroup">Validity constraint: Proper Group/PE Nesting</a>
295    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#condsec-nesting">Validity constraint: Proper Conditional Section/PE Nesting</a>
296    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#UniqueNotationName">Validity constraint: Unique Notation Name</a>
297    </ul>
298    
299    <p><strong>Other creteria</strong>.  For each violation to
300    one of constraints below, an
301    <a href="#xml-misc-recommendation"><code>xml-misc-recommendation</code></a>
302    <em class=rfc2119>MUST</em> be raised.  The list of constraints is below:
303    <ul>
304    <li><q>For interoperability, if a parameter-entity reference appears in a
305    <code>choice</code>, <code>seq</code>, or <code>Mixed</code> construct, its
306    replacement text <em class=rfc2119>SHOULD</em> contain at least one non-blank
307    character, and neither the first nor last non-blank character of the
308    replacement text <em class=rfc2119>SHOULD</em> be a connector (<code>|</code>
309    or <code>,</code>).</q>
310    <li><q>External parsed entities <em class=rfc2119>SHOULD</em> each begin with a
311    text declaration.</q>
312    </ul>
313    
314    <!--
315    <li><q>For interoperability, an XML processor <em class=rfc2119>MAY</em> at user option issue a warning when more than one attribute-list declaration is provided for a given element type, or more than one attribute definition is provided for a given attribute, but this is not an error.</q>
316    
317    <a href="#xml-misc-error" id=xme-attr-xml-space><code>xml-misc-error</code></a>.
318    <li>It is an error for a reference to an unparsed entity to appear in the EntityValue in an entity declaration."
319    -->
320    
321  <!--  <!--
322    
 #vc-PEinMarkupDecl Validity constraint: Proper Declaration/PE Nesting  
 #wfc-PEinInternalSubset Well-formedness constraint: PEs in Internal Subset  
 #ExtSubset Well-formedness constraint: External Subset  
 #PE-between-Decls Well-formedness constraint: PE Between Declarations  
 #GIMatch Well-formedness constraint: Element Type Match  
 #uniqattspec Well-formedness constraint: Unique Att Spec  
 #NoExternalRefs Well-formedness constraint: No External Entity References  
 #CleanAttrVals Well-formedness constraint: No < in Attribute Values  
 #vc-PEinGroup Validity constraint: Proper Group/PE Nesting  
 "For interoperability, if a parameter-entity reference appears in a choice, seq, or Mixed construct, its replacement text SHOULD contain at least one non-blank character, and neither the first nor last non-blank character of the replacement text SHOULD be a connector (| or ,)."  
 "For interoperability, an XML processor MAY at user option issue a warning when more than one attribute-list declaration is provided for a given element type, or more than one attribute definition is provided for a given attribute, but this is not an error."  
 #condsec-nesting Validity constraint: Proper Conditional Section/PE Nesting  
 #wf-Legalchar Well-formedness constraint: Legal Character  
 #textent Well-formedness constraint: Parsed Entity  
 #norecursion Well-formedness constraint: No Recursion  
 #indtd Well-formedness constraint: In DTD  
 "External parsed entities SHOULD each begin with a text declaration."  
 "It is an error for a reference to an unparsed entity to appear in the EntityValue in an entity declaration."  
 #UniqueNotationName Validity constraint: Unique Notation Name  
323    
324  @@ Need detailed review, but maybe should be in parsing phase  @@ Need detailed review, but maybe should be in parsing phase
325    
# Line 284  declared <code>EMPTY</code>, then raise Line 342  declared <code>EMPTY</code>, then raise
342    
343  "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."
344    
345    @@ We should phrase out what the parser should do where the XML specification
346    left undefined.  For example: Comment must be converted to a Comment node,
347    illegal xml:space value must be preserved, so on.
348    
349  -->  -->
 </ul>  
350  </div>  </div>
351    
352  <div class="section" id=checking-dom>  <div class="section" id=checking-dom>
# Line 314  is that of the <code>Document</code> nod Line 375  is that of the <code>Document</code> nod
375    
376    
377  <div class=section id=checking-components>  <div class=section id=checking-components>
378  <h3>Checking Components</h3>  <h3>Conformance Checking Algorithms for Components</h3>
379    
380  <p>The algorithm  <p>To
381  <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
382  validate an <abbr>XML</abbr> character data  validate an <abbr>XML</abbr> string (<dfn id=var-s><var>s</var></dfn>)</dfn>,
383  (<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>
384  <ol>  <ol>
385  <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
386  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 405  U+000D will be serialized as &#x000D; (s
405  will be raised).</span></li>  will be raised).</span></li>
406  </ol>  </ol>
407    
408  <p>The algorithm  <p>To
409  <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
410  <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
411  as following:</p>  algorithm <em class=rfc2119>MUST</em> be used:</p>
412  <ol>  <ol>
413    <li>If <var>s</var> is an empty string, then raise an
414    <a href="#xml-well-formedness-error" id=wfe-name-empty><code>xml-well-formedness-error</code></a>.
415    Abort these steps.</li>
416    <li><a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">Validate
417    <var>s</var> as an <abbr>XML</abbr> string</a>.</li>
418    <li>If the first character in <var>s</var> is a character that is
419    <em>not</em> in the character class
420    <a href="#class-NameStartChar10"><code>NameStartChar10</code></a>, then raise
421    an
422    <a href="#xml-well-formedness-error" id=wfe-name-startchar><code>xml-well-formedness-error</code></a>.</li>
423    <li>If a character other than the first character in <var>s</var> is a
424    character that is <em>not</em> in the character class
425    <a href="#class-NameChar10"><code>NameChar10</code></a>, then raise an
426    <a href="#xml-well-formedness-error" id=wfe-name-char><code>xml-well-formedness-error</code></a>.</li>
427  <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
428  case combination), then raise an  case combination), then raise an
429  <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 432  case combination), then raise an
432  <code>xmlns</code>, <code>xmlns:<var>*</var></code>,  <code>xmlns</code>, <code>xmlns:<var>*</var></code>,
433  pi name <code>xml-stylesheet</code>.</span><!--  pi name <code>xml-stylesheet</code>.</span><!--
434  "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.":
435  xml:base and xml:id specifications violate to this sentense!  xmlns, xml-stylesheet, xml:base and xml:id specifications violate to this sentense!
436  --></li>  --></li>
437  <!-- 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],
438  [XML11]. -->  [XML11]. -->
439  <li class=ed>@@</li>  <li class=ed>@@ XML 1.1 support</li>
440  </ol>  </ol>
441    
442  <p>The algorithm  <p>To
443  <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
444  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
445  is defined as following:</p>  following algorithm <em class=rfc2119>MUST</em> be used:</p>
446  <ol>  <ol>
447    <li><a href="#algorithm-to-validate-a-name" title="validate a Name">Validate
448    <var>s</var> as a <code>Name</code></a>.</li>
449  <li class=ed>@@</li>  <li class=ed>@@</li>
450  </ol>  </ol>
451    
452  <p>To <dfn id=algorithm-to-validate-a-public-identifier title="validate a public identifier">validate  <p>To
453    <dfn id=algorithm-to-validate-a-public-identifier title="validate a public identifier">validate
454  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
455  algorithm below <em class=rfc2119>MUST</em> be used:</p>  following algorithm <em class=rfc2119>MUST</em> be used:</p>
456  <ol>  <ol>
457    <li>If <var>pid</var> contains any character  <li>If <var>pid</var> is <code>null</code>, abort these steps.</li>
458    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
459    [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]</code><!-- @@ TODO: formal def -->,  character class <a href="#class-PubidChar"><code>PubidChar</code></a>, then
460    then it is an  raise an
461    <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>
462    <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>
463    <code class=charname>CHARACTER TABULATION</code>,    <code class=charname>CHARACTER TABULATION</code>,
464    <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 470  algorithm below <em class=rfc2119>MUST</
470    <code class=char>U+0020</code> <code class=charname>SPACE</code> character    <code class=char>U+0020</code> <code class=charname>SPACE</code> character
471    immediately followed by another <code class=char>U+0020</code>    immediately followed by another <code class=char>U+0020</code>
472    <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
473    <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>.
474    <li class=ed>@@ Should we check formal-public-identifierness?</li>    <span class=ed>Is this really a roundtripness problem?  XML spec
475      does only define the way to match public identifiers in fact, no
476      canonical form.</span></li>
477    </ol>
478    
479    <p>To
480    <dfn id=algorithm-to-validate-a-system-identifier title="validate a system identifier">validate
481    a system identifier (<dfn id=var-sid><var>sid</var></dfn>)</dfn>, the
482    following algorithm <em class=rfc2119>MUST</em> be used:</p>
483    <ol>
484      <li>If <var>sid</var> is <code>null</code>, abort these steps.</li>
485    <li><a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">Validate
486    <var>sid</var> as an <abbr>XML</abbr> string</a>.</li>
487      <li>If <var>sid</var> contains both <code class=char>U+0022</code>
488      <code class=charname>QUOTATION MARK</code> (<code class=char>"</code>) and
489      <code class=char>U+0027</code> <code class=charname>APOSTROPHE</code>
490      (<code class=char>'</code>) characters, raise an
491      <a href="#xml-well-formedness-error" id=wfe-sid-lit><code>xml-well-formedness-error</code></a>.</li>
492      <li>If <var>sid</var> contains at least one <code class=char>U+0023</code>
493      <code class=charname>NUMBER SIGN</code> (<code class=char>#</code>)
494      character, then raise an
495      <a href="#xml-misc-error" id=xme-sid-fragment><code>xml-misc-error</code></a>.</li>
496      <li class=ed>@@ If <var>sid</var> cannot be converted to a URI
497      reference, then raise a fact-level error (xml-misc-warning?).<!--
498      XML 1.0 has no conformance language for system identifier being
499      a URI reference. --></li>
500  </ol>  </ol>
501    
502  </div>  </div>
# Line 408  following:</p> Line 511  following:</p>
511  <dt>If <var>n</var> is an <code>Attr</code> node</dt>  <dt>If <var>n</var> is an <code>Attr</code> node</dt>
512    <dd>    <dd>
513      <ol>      <ol>
514      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-an-ncname">Validate the
515      <code>localName</code> attribute value as an <code>NCName</code></a>.</li>      <code>localName</code> attribute value as an <code>NCName</code></a>.</li>
516      <li>If the <code>prefix</code> attribute value is different from      <li>If the <code>prefix</code> attribute value is different from
517      <code>null</code>, then <a href="#algorithm-to-validate-a-ncname">validate      <code>null</code>, then <a href="#algorithm-to-validate-an-ncname">validate
518      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>
519      <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
520      <code>childNodes</code> list of <var>n</var>,      <code>childNodes</code> list of <var>n</var>,
# Line 517  following:</p> Line 620  following:</p>
620      <li>If <code>nodeName</code> attribute of <var>n</var> is      <li>If <code>nodeName</code> attribute of <var>n</var> is
621      <code>xml:space</code> <span class=ed>@@ or {xml namespace}:space ?</span>      <code>xml:space</code> <span class=ed>@@ or {xml namespace}:space ?</span>
622      and <span class=ed>its declared type is different from (default|preserve),      and <span class=ed>its declared type is different from (default|preserve),
623      (default), or (preserve)</span>, then raise an      (preserve|default), (default), or (preserve)</span>, then raise an
624      <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>
625      <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
626      <code>childNodes</code> list of <var>n</var>,      <code>childNodes</code> list of <var>n</var>,
# Line 547  following:</p> Line 650  following:</p>
650  <dt>If <var>n</var> is a <code>CDATASection</code> node</dt>  <dt>If <var>n</var> is a <code>CDATASection</code> node</dt>
651    <dd>    <dd>
652      <ol>      <ol>
653      <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
654      <code>data</code> attribute value as an <abbr>XML</abbr> character      <code>data</code> attribute value as an <abbr>XML</abbr> character
655      data</a>.</li>      data</a>.</li>
656      <li>If the <code>data</code> attribute value contains      <li>If the <code>data</code> attribute value contains
# Line 563  following:</p> Line 666  following:</p>
666      <ol>      <ol>
667      <li>Raise an      <li>Raise an
668      <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>
669      <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
670      <code>data</code> attribute value as an <abbr>XML</abbr> character      <code>data</code> attribute value as an <abbr>XML</abbr> character
671      data</a>.</li>      data</a>.</li>
672      <li>If the <code>data</code> attribute value contains      <li>If the <code>data</code> attribute value contains
# Line 630  following:</p> Line 733  following:</p>
733  <dt>If <var>n</var> is a <code>DocumentType</code> node</dt>  <dt>If <var>n</var> is a <code>DocumentType</code> node</dt>
734    <dd>    <dd>
735      <ol>      <ol>
736      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-an-ncname">Validate the
737      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
738      <li>Follow the following substeps:      <li>Follow the following substeps:
739        <ol>        <ol>
# Line 649  following:</p> Line 752  following:</p>
752      </li>      </li>
753      <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
754      the <code>publicId</code> attribute value as a public identifier</a>.</li>      the <code>publicId</code> attribute value as a public identifier</a>.</li>
755      <li>If the <code>systemId</code> attribute value contains      <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
756      both <code>"</code> and <code>'</code> characters, it is a      the <code>systemId</code> attribute value as a system identifier</a>.</li>
757      <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
758      <!-- @@ "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
759      <!-- publicId = non-null and systemId = null -->      value of <var>n</var> is <code>null</code>, then raise an
760        <a href="#xml-well-formedness-error" id=wfe-dt-sid><code>xml-well-formedness-error</code></a>.
761        <span class=ed>@@ publicId == null?  Or, publicId == ""</span></li>
762      <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>
763      in the <code>childNodes</code> list of <var>n</var>,      in the <code>childNodes</code> list of <var>n</var>,
764        <ol>        <ol>
# Line 665  following:</p> Line 770  following:</p>
770        <a href="#algorithm-to-check-a-node" title="check a node">check        <a href="#algorithm-to-check-a-node" title="check a node">check
771        <var>n<sub><var>c</var></sub></var></a> recusrively.</li>        <var>n<sub><var>c</var></sub></var></a> recusrively.</li>
772        </ol></li>        </ol></li>
773      <li class=ed>@@ <code>entities</code>, <code>notations</code>,      <li>For each node in the <code>entities</code>, <code>notations</code>,
774      <code>elementTypes</code>, externally declared?</li>      and <code>elementTypes</code> lists of <var>n</var>,
775        <a href="#algorithm-to-check-a-node" title="check a node">check the
776        node</a> recursively.</li>
777        <li class=ed>@@ externally declared?</li>
778      </ol>      </ol>
779    </dd>    </dd>
780  <dt>If <var>n</var> is an <code>Element</code> node</dt>  <dt>If <var>n</var> is an <code>Element</code> node</dt>
781    <dd>    <dd>
782      <ol>      <ol>
783      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-an-ncname">Validate the
784      <code>localName</code> attribute value as an <code>NCName</code></a>.</li>      <code>localName</code> attribute value as an <code>NCName</code></a>.</li>
785      <li>If the <code>prefix</code> attribute value is different from      <li>If the <code>prefix</code> attribute value is different from
786      <code>null</code>, then <a href="#algorithm-to-validate-a-ncname">validate      <code>null</code>, then <a href="#algorithm-to-validate-an-ncname">validate
787      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>
788      <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>
789      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 802  following:</p>
802        <var>n<sub><var>c</var></sub></var></a> recursively.</li>        <var>n<sub><var>c</var></sub></var></a> recursively.</li>
803        </ol></li>        </ol></li>
804      <li class=ed>@@ #elementvalid Validity constraint: Element Valid</li>      <li class=ed>@@ #elementvalid Validity constraint: Element Valid</li>
805      <li class=ed>@@ #uniqattspec Well-formedness constraint: Unique Att Spec</li>      <li>Let <var>attrs</var> be the value of the <code>attribute</code>
806      <li class=ed>@@ #RequiredAttr Validity constraint: Required Attribute</li>      attribute of <var>n</var>.  Check conformance of <var>attrs</var>
807        as following:
808          <ol>
809          <li>If <var>attrs</var> contains an <code>Attr</code> node whose
810          <code>nodeName</code> attribute value is equal to that of another
811          <code>Attr</code> node in <var>attrs</var>, then raise an
812          <a href="#xml-well-formedness-error" id=wfe-uniqattspec><code>xml-well-formedness-error</code></a>.<!--
813          #uniqattspec Well-formedness constraint: Unique Att Spec --></li>
814          <li class=ed>@@ #RequiredAttr Validity constraint: Required Attribute</li>
815          </ol>
816        </li>
817      </ol>      </ol>
818    </dd>    </dd>
819  <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 841  following:</p>
841      <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>
842      </ol>      </ol>
843    </dd>    </dd>
844  <dt>If <var>n</var> is an <code>Entity</code> node</dt>  <dt>If <var>n</var> is an <code>Entity</code> node whose
845    <code>notationName</code> attribute value is <code>null</code> (i.e. a
846    parsed entity)</dt>
847    <dd>    <dd>
848      <ol>      <ol>
849      <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
850      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <a href="#entity-error" id=ee-entity-node><code>entity-error</code></a>.</li>
851        <li><a href="#algorithm-to-validate-an-ncname">Validate the
852      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
853      <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
854      the <code>publicId</code> attribute value as a public identifier</a>.</li>      the <code>publicId</code> attribute value as a public identifier</a>.</li>
855      <li>If the <code>systemId</code> attribute value contains      <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
856      both <code>"</code> and <code>'</code> characters, it is a      the <code>systemId</code> attribute value as a system identifier</a>.</li>
857      <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
858      <!-- publicId = non-null and systemId = null -->      <em>not</em> <code>null</code> and the <code>systemId</code> attribute
859      <li class=ed>@@ <code>notationName</code></li>      value of <var>n</var> is <code>null</code>, then raise an
860      <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>
861      <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>
862      in the <code>childNodes</code> list of <var>n</var>,      in the <code>childNodes</code> list of <var>n</var>,
863        <ol>        <ol>
# Line 755  following:</p> Line 876  following:</p>
876        </ol></li>        </ol></li>
877      </ol>      </ol>
878    </dd>    </dd>
879    <dt>If <var>n</var> is an <code>Entity</code> node whose
880    <code>notationName</code> attribute value is <em>not</em> <code>null</code>
881    (i.e. an unparsed entity)</dt>
882      <dd>
883        <ol>
884        <li><a href="#algorithm-to-validate-an-ncname">Validate the
885        <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
887        the <code>publicId</code> attribute value as a public identifier</a>.</li>
888        <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
889        the <code>systemId</code> attribute value as a system identifier</a>.</li>
890        <li>If the <code>systemId</code> attribute value of <var>n</var> is
891        <code>null</code>, then raise an
892        <a href="#xml-well-formedness-error" id=wfe-uentity-sid><code>xml-well-formedness-error</code></a>.</li>
893        <li><a href="#algorithm-to-validate-an-ncname">Validate the
894        <code>notationName</code> attribute value of <var>n</var> as an
895        <code>NCName</code></a>.</li>
896        <li class=ed>@@ #not-declared Validity constraint: Notation Declared</li>
897        <li>If the <code>childNodes</code> list of <var>n</var> contains
898        any nodes, they are in
899        <a href="#xml-well-formedness-error" id=wfe-uentity-child><code>xml-well-formedness-error</code></a>.</li>
900        </ol>
901      </dd>
902  <dt>If <var>n</var> is an <code>EntityReference</code> node</dt>  <dt>If <var>n</var> is an <code>EntityReference</code> node</dt>
903    <dd>    <dd>
904      <ol>      <ol>
905      <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>
906      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-an-ncname">Validate the
907      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
908      <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>
909      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 926  following:</p>
926  <dt>If <var>n</var> is a <code>Notation</code> node</dt>  <dt>If <var>n</var> is a <code>Notation</code> node</dt>
927    <dd>    <dd>
928      <ol>      <ol>
929      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-an-ncname">Validate the
930      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
931      <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
932      the <code>publicId</code> attribute value as a public identifier</a>.</li>      the <code>publicId</code> attribute value as a public identifier</a>.</li>
933      <li>If the <code>systemId</code> attribute value contains      <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
934      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>  
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
936      any nodes, they are in      any nodes, they are in
937      <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 943  following:</p>
943      <li>If the <code>target</code> attribute value matches to the string      <li>If the <code>target</code> attribute value matches to the string
944      <code>xml</code> in any case combination, then raise a      <code>xml</code> in any case combination, then raise a
945      <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>
946      <li>Otherwise, <a href="#algorithm-to-validate-a-ncname">validate the      <li>Otherwise, <a href="#algorithm-to-validate-an-ncname">validate the
947      <code>target</code> attribute value as an <code>NCName</code></a>.</li>      <code>target</code> attribute value as an <code>NCName</code></a>.</li>
948      <li>Then,      <li>Then,
949      <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
950      the <code>data</code> attribute value as an <abbr>XML</abbr> character      the <code>data</code> attribute value as an <abbr>XML</abbr> character
951      data</a>.</li>      data</a>.</li>
952      <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 967  following:</p>
967  <dt>If <var>n</var> is a <code>Text</code> node</dt>  <dt>If <var>n</var> is a <code>Text</code> node</dt>
968    <dd>    <dd>
969      <ol>      <ol>
970      <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
971      <code>data</code> attribute value as an <abbr>XML</abbr> character      <code>data</code> attribute value as an <abbr>XML</abbr> character
972      data</a>.</li>      data</a>.</li>
973      <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 1051  as amended by
1051  <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>
1052  </div>  </div>
1053    
1054    <p>The character class <dfn id=class-NameStartChar10><code>NameStartChar10</code></dfn>
1055    contains the following characters:</p>
1056    <ul class=ed>
1057    </ul>
1058    <div class="note memo">
1059    <p>This character class contains all characters allowed as the first character
1060    of a string matching to the production rule
1061    <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-Name"><code>Name</code></a>
1062    of <abbr>XML</abbr> 1.0
1063    <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>.</p>
1064    </div>
1065    
1066    <p>The character class <dfn id=class-NameChar10><code>NameChar10</code></dfn>
1067    contains the following characters:</p>
1068    <ul>
1069    <li>The characters in the character class
1070    <a href="#class-NameStartChar10">NameStartChar10</a>.</li>
1071    <li class=ed></li>
1072    </ul>
1073    <div class="note memo">
1074    <p>This character class contains all characters allowed as the second
1075    character of a string matching to the production rule
1076    <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-Name"><code>Name</code></a>
1077    of <abbr>XML</abbr> 1.0
1078    <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>.</p>
1079    </div>
1080    
1081    <p>The character class <dfn id=class-PubidChar><code>PubidChar</code></dfn>
1082    contains the following characters:</p>
1083    <ul>
1084    <li><code class=char>U+0009</code> <code class=charname>CHARACTER
1085    TABULATION</code></li>
1086    <li><code class=char>U+000A</code> <code class=charname>LINE FEED</code></li>
1087    <li><code class=char>U+000D</code> <code class=charname>CARRIAGE
1088    RETURN</code></li>
1089    <li><code class=char>U+0020</code> <code class=charname>SPACE</code></li>
1090    <li><code class=char>U+0021</code> <code class=charname>EXCLAMATION MARK</code>
1091    (<code class=char>!</code>)</li>
1092    <li><code class=char>U+0023</code> <code class=charname>DOLLAR SIGN</code>
1093    (<code class=char>$</code>)</li>
1094    <li><code class=char>U+0024</code> <code class=charname>NUMBER SIGN</code>
1095    (<code class=char>#</code>)</li>
1096    <li><code class=char>U+0025</code> <code class=charname>PERCENT SIGN</code>
1097    (<code class=char>%</code>)</li>
1098    <li><code class=char>U+0027</code> <code class=charname>APOSTROPHE</code>
1099    (<code class=char>'</code>)</li>
1100    <li><code class=char>U+0028</code> <code class=charname>LEFT PARENTHESIS</code>
1101    (<code class=char>(</code>)</li>
1102    <li><code class=char>U+0029</code> <code class=charname>RIGHT
1103    PARENTHESIS</code> (<code class=char>)</code>)</li>
1104    <li><code class=char>U+002A</code> <code class=charname>ASTERISK</code>
1105    (<code class=char>*</code>)</li>
1106    <li><code class=char>U+002B</code> <code class=charname>PLUS SIGN</code>
1107    (<code class=char>+</code>)</li>
1108    <li><code class=char>U+002C</code> <code class=charname>COMMA</code>
1109    (<code class=char>,</code>)</li>
1110    <li><code class=char>U+002D</code> <code class=charname>HYPHEN-MINUS</code>
1111    (<code class=char>-</code>)</li>
1112    <li><code class=char>U+002E</code> <code class=charname>FULL STOP</code>
1113    (<code class=char>.</code>)</li>
1114    <li><code class=char>U+002F</code> <code class=charname>SOLIDUS</code>
1115    (<code class=char>/</code>)</li>
1116    <li><code class=char>U+0030</code> <code class=charname>DIGIT ZERO</code>
1117    (<code class=char>0</code>) .. <code class=char>U+0039</code>
1118    <code class=charname>DIGIT NINE</code> (<code class=char>9</code>)</li>
1119    <li><code class=char>U+003A</code> <code class=charname>COLON</code>
1120    (<code class=char>:</code>)</li>
1121    <li><code class=char>U+003B</code> <code class=charname>SEMICOLON</code>
1122    (<code class=char>;</code>)</li>
1123    <li><code class=char>U+003D</code> <code class=charname>EQUAL SIGN</code>
1124    (<code class=char>=</code>)</li>
1125    <li><code class=char>U+003F</code> <code class=charname>QUESTION MARK</code>
1126    (<code class=char>?</code>)</li>
1127    <li><code class=char>U+0040</code> <code class=charname>COMMERCIAL AT</code>
1128    (<code class=char>@</code>)</li>
1129    <li><code class=char>U+0041</code> <code class=charname>LATIN CAPITAL LETTER
1130    A</code> (<code class=char>A</code>) .. <code class=char>U+005A</code>
1131    <code class=charname>LATIN CAPITAL LETTER Z</code>
1132    (<code class=char>Z</code>)</li>
1133    <li><code class=char>U+005F</code> <code class=charname>LOW LINE</code>
1134    (<code class=char>_</code>)</li>
1135    <li><code class=char>U+0061</code> <code class=charname>LATIN CAPITAL LETTER
1136    A</code> (<code class=char>A</code>) .. <code class=char>U+007A</code>
1137    <code class=charname>LATIN CAPITAL LETTER Z</code>
1138    (<code class=char>Z</code>)</li>
1139    </ul>
1140    <div class="note memo">
1141    <p>This character class contains all characters allowed in the production rule
1142    <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-PubidChar"><code>PubidChar</code></a>
1143    of <abbr>XML</abbr> 1.0
1144    <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>.</p>
1145    </div>
1146    
1147  </div>  </div>
1148    
1149  <div id="references" class="section reference">  <div id="references" class="section reference">

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24