/[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.25 by wakaba, Sat Mar 29 02:22:57 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 class=switch>
230  <a href="#xml-misc-recommentation" id=xmr-xml-decl><code>xml-misc-recommendation</code></a>.</li>  <dt>For the 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 the document type declaration
236      <dd class=ed>@@ read external entity
237    <dt>For each internal general entity declaration being processed by the parser
238      <dd>If the
239      <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-EntityValue"><code>EntityValue</code></a>
240      part of the general entity declaration contains a bare <code>U+003C</code>
241      <code>LESS-THAN SIGN</code> (<code>&lt;</code>) character, then the parser
242      <em class=rfc2119>MUST</em> raise an
243      <a href="#xml-misc-warning" id=xmw-entity-value-lt><code>xml-misc-warning</code></a>.<!--
244  "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].
245  --></li>  -->
246  <li>If there is an element type declaration whose <code>Name</code>  <dt>For each element type declaration being processed by the parser
247  value is already declared, then raise an    <dd>If there is another processed element type declaration whose
248  <a href="#xml-validity-error" id=vc-edunique><code>xml-validity-error</code></a>.</li>    <code>Name</code> is equal to the <code>Name</code> of the element type
249  <li>If attribute definition whose <code>Name</code> is    declaration, then the parser <em class=rfc2119>MUST</em> raise an
250  <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>.
251  (default|preserve), (default), or (preserve)</span>, then raise an  <dt>For each attribute definition list declaration being processed by the
252  <a href="#xml-misc-error" id=xme-ad-xml-space><code>xml-misc-error</code></a>.  parser
253  <span class=ed>@@ duplication with    <dd>If there is another processed attribute defintion list declaration whose
254  <a href="#xml-at-xml-space">#xml-at-xml-space</a>.<!--    <code>Name</code> is equal to the <code>Name</code> of the attribute
255  <!ATTLIST e xml:space CDATA #IMPLIED xml:space CDATA #IMPLIED> --></span></li>    definition list declaration, then the parser <em class=rfc2119>MUST</em>
256  <li>If an empty-element tag is used for an element which is <em>not</em>    raise an
257  declared <code>EMPTY</code>, then raise an    <a href="#xml-misc-warning" id=xme-attlist-unique><code>xml-misc-warning</code></a>.
258  <a href="#xml-misc-recommentation" id=xmr-emptyelemtag-not-empty><code>xml-misc-recommendation</code></a>.</li>    <dd>For each attribute definition in the attribute definition list
259  <li>If an empty-element tag is <em>not</em> used for an element which is    declaration, if there is another processed attribute definition whose
260  declared <code>EMPTY</code>, then raise an    <code>Name</code> is equal to the <code>Name</code> of the attribute
261  <a href="#xml-misc-recommentation" id=xmr-empty-not-emptyelemtag><code>xml-misc-recommendation</code></a>.</li>    definition (whether or not in the same attribute definition list
262      declaration), then the parser <em class=rfc2119>MUST</em> raise an
263      <a href="#xml-misc-warning" id=xme-attrdef-unique><code>xml-misc-warning</code></a>.
264      <!--
265        <q>For interoperability, an XML processor <em class=rfc2119>MAY</em> at
266        user option issue a warning when more than one attribute-list declaration
267        is provided for a given element type, or more than one attribute definition
268        is provided for a given attribute, but this is not an error.</q>
269      -->
270    <!--
271      NOTE: <!ATTLIST a xml:space (default) #IMPLIED xml:space CDATA #IMPLIED>
272      will not be warned.
273    -->
274    
275    <dt>For each entity declaration being processed by the parser
276      <dd>If the entity declaration declares a parameter entity and the
277      <code>Name</code> of the entity begins with the string <code>xml</code>
278      (in any combination of upper- and lowercase letters), then the parser
279      <em class=rfc2119>MUST</em> raise an
280      <a href="#xml-misc-warning" id=xmw-reserved-pe-name><code>xml-misc-warning</code></a>.
281      <dd>If the entity declaration contains the <code>EntityValue</code>, then
282      for each occurence of any references to unparsed entities in the
283      <code>EntityValue</code>, the parser <em class=rfc2119>MUST</em> raise an
284      <a href="#xml-misc-error" id=xme-unparsed-in-ev><code>xml-misc-error</code></a>.
285      <!--
286        <q>It is an error for a reference to an unparsed entity to appear in the
287        EntityValue in an entity declaration.</q>
288      -->
289    
290    <dt>For each notation declaration being processed by the parser
291      <dd>If there is another processed notation declaration whose
292      <code>Name</code> is equal to the <code>Name</code> of the notation
293      declaration, then the parser <em class=rfc2119>MUST</em> raise an
294      <a href="#xml-validity-error" id=vc-uniquenotationname><code>xml-validity-error</code></a>.
295      <!-- <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#UniqueNotationName">Validity constraint: Unique Notation Name</a> -->
296    
297    <dt>For each empty-element tag
298      <dd>If the <code>Name</code> of the tag is not declared by a processed
299      element type declaration as <code>EMPTY</code> content, then the parser
300      <em class=rfc2119>MUST</em> raise an
301      <a href="#xml-misc-recommentation" id=xmr-emptyelemtag-not-empty><code>xml-misc-recommendation</code></a>.
302    <dt>For each start-tag
303      <dd>If the <code>Name</code> of the tag is declared by a processed element
304      type declaration as <code>EMPTY</code> content, then the parser
305      <em class=rfc2119>MUST</em> raise an
306      <a href="#xml-misc-recommentation" id=xmr-empty-not-emptyelemtag><code>xml-misc-recommendation</code></a>.
307    
308    <dt>For each parameter entity reference
309      <dd>If the declaration for the entity is not read (i.e. no declaration
310      for the entity is processed or the external entity referenced by the
311      declaration cannot be retrieved), then:
312        <ul>
313        <li>If the parameter entity is contained in a declaration, then the
314        declaration <em class=rfc2119>MUST</em> be ignored <em>except</em> that
315        any error before the parameter entity <em class=rfc2119>MUST</em> be
316        raised as usual.
317        <li>If the parameter entity is contained in the status portion of a
318        conditional section, then the conditional section
319        <em class=rfc2119>MUST</em> be processed as if it were an
320        <code>IGNORE</code>d section.
321        <li>The parser <em class=rfc2119>MUST NOT</em> process any entity or
322        attribute-list declaration after the parameter entity reference in the DTD
323        <em>except</em> when the <code>standalone</code> pseudo-attribute of the
324        XML declaration (if any) is set to <code>yes</code>.
325        <!-- This requirement is enforced for internal DTD subset case in
326        XML 1.0/1.1 specification (section 5.1) but not for any other cases. -->
327        <!-- According to this definition, element type declarations, notation
328        declarations, and PIs ARE processed. -->
329        <li>If the parameter entity reference is the first reference to an entity
330        that is not read, then the parser <em class=rfc2119>MUST</em> raise an
331        <a href="#entity-error" id=ee-unread-pe><code>entity-error</code></a>.
332        <li>The <code>allDeclarationsProcessed</code> <span class=ed>@@ ref</span>
333        attribute of the <code>Document</code> node <em class=rfc2119>MUST</em> be
334        set to <code>false</code>.
335        </ul>
336    <dt>For each general entity reference in an attribute value or in the content
337    of an element
338      <dd>If the declaration for the entity is not read (i.e. no declaration for
339      the entity is processed or the external entity referenced by the declaration
340      cannot be retrieved), then:
341        <ul>
342        <li>If the general entity reference is the first reference to an entity
343        that is not read, then the parser <em class=rfc2119>MUST</em> raise an
344        <a href="#entity-error" id=ee-unread-ge><code>entity-error</code></a>.
345        <span class=ed>@@ entity declared WFC?</span>
346        <li class=ed>An unexpended entity reference node <em class=rfc2119>MUST</em> be inserted to the current node.
347        </ul>
348    </dl>
349    
350    <p class=ed>@@ MUST try to read external entity
351    
352    <p>In addition, the parser has to check whether the
353    following constraints are met.
354    
355    <p><strong>Well-formedness constraints</strong>.  For each violation to
356    one of constraints below, an
357    <a href="#xml-well-formedness-error"><code>xml-well-formedness-error</code></a>
358    <em class=rfc2119>MUST</em> be raised.  The list of well-formedness
359    constraints is below:
360    <ul>
361    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#wfc-PEinInternalSubset">Well-formedness constraint: PEs in Internal Subset</a>
362    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#GIMatch">Well-formedness constraint: Element Type Match</a>
363    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#uniqattspec">Well-formedness constraint: Unique Att Spec</a>
364    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NoExternalRefs">Well-formedness constraint: No External Entity References</a>
365    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#CleanAttrVals">Well-formedness constraint: No &lt; in Attribute Values</a>
366    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#wf-Legalchar">Well-formedness constraint: Legal Character</a>
367    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#textent">Well-formedness constraint: Parsed Entity</a>
368    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#norecursion">Well-formedness constraint: No Recursion</a>
369    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#indtd">Well-formedness constraint: In DTD</a>
370    </ul>
371    
372    <p><strong>Validity constraints</strong>.  For each violation to
373    one of constraints below, an
374    <a href="#xml-validity-error"><code>xml-validity-error</code></a>.
375    <em class=rfc2119>MUST</em> be raised.  The list of validity
376    constraints is below:
377    <ul>
378    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#vc-PEinMarkupDecl">Validity constraint: Proper Declaration/PE Nesting</a>
379    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#vc-PEinGroup">Validity constraint: Proper Group/PE Nesting</a>
380    <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#condsec-nesting">Validity constraint: Proper Conditional Section/PE Nesting</a>
381    </ul>
382    
383    <p><strong>Other creteria</strong>.  For each violation to
384    one of constraints below, an
385    <a href="#xml-misc-recommendation"><code>xml-misc-recommendation</code></a>
386    <em class=rfc2119>MUST</em> be raised.  The list of constraints is below:
387    <ul>
388    <li><q>For interoperability, if a parameter-entity reference appears in a
389    <code>choice</code>, <code>seq</code>, or <code>Mixed</code> construct, its
390    replacement text <em class=rfc2119>SHOULD</em> contain at least one non-blank
391    character, and neither the first nor last non-blank character of the
392    replacement text <em class=rfc2119>SHOULD</em> be a connector (<code>|</code>
393    or <code>,</code>).</q>
394    <li><q>External parsed entities <em class=rfc2119>SHOULD</em> each begin with a
395    text declaration.</q>
396    </ul>
397    
398    
399  <!--  <!--
400    
 #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  
401    
402  @@ Need detailed review, but maybe should be in parsing phase  @@ Need detailed review, but maybe should be in parsing phase
403    
# Line 284  declared <code>EMPTY</code>, then raise Line 420  declared <code>EMPTY</code>, then raise
420    
421  "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."
422    
423    @@ We should phrase out what the parser should do where the XML specification
424    left undefined.  For example: Comment must be converted to a Comment node,
425    illegal xml:space value must be preserved, so on.
426    
427    Warn <!ENTITY % xml... ...>
428    
429    -->
430    
431    <p>The parser <em class=rfc2119>MUST</em> raise an
432    <a href="#xml-well-formedness-error" id=wfe-syntax><code>xml-well-formedness-error</code></a>
433    for any failure to match to a production rule in the XML specification.
434    <!--
435      <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#ExtSubset">Well-formedness constraint: External Subset</a>
436      <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#PE-between-Decls">Well-formedness constraint: PE Between Declarations</a>
437  -->  -->
 </ul>  
438  </div>  </div>
439    
440  <div class="section" id=checking-dom>  <div class="section" id=checking-dom>
# Line 314  is that of the <code>Document</code> nod Line 463  is that of the <code>Document</code> nod
463    
464    
465  <div class=section id=checking-components>  <div class=section id=checking-components>
466  <h3>Checking Components</h3>  <h3>Conformance Checking Algorithms for Components</h3>
467    
468  <p>The algorithm  <p>To
469  <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
470  validate an <abbr>XML</abbr> character data  validate an <abbr>XML</abbr> string (<dfn id=var-s><var>s</var></dfn>)</dfn>,
471  (<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>
472  <ol>  <ol>
473  <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
474  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 493  U+000D will be serialized as &#x000D; (s
493  will be raised).</span></li>  will be raised).</span></li>
494  </ol>  </ol>
495    
496  <p>The algorithm  <p>To
497  <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
498  <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
499  as following:</p>  algorithm <em class=rfc2119>MUST</em> be used:</p>
500  <ol>  <ol>
501    <li>If <var>s</var> is an empty string, then raise an
502    <a href="#xml-well-formedness-error" id=wfe-name-empty><code>xml-well-formedness-error</code></a>.
503    Abort these steps.</li>
504    <li><a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">Validate
505    <var>s</var> as an <abbr>XML</abbr> string</a>.</li>
506    <li>If the first character in <var>s</var> is a character that is
507    <em>not</em> in the character class
508    <a href="#class-NameStartChar10"><code>NameStartChar10</code></a>, then raise
509    an
510    <a href="#xml-well-formedness-error" id=wfe-name-startchar><code>xml-well-formedness-error</code></a>.</li>
511    <li>If a character other than the first character in <var>s</var> is a
512    character that is <em>not</em> in the character class
513    <a href="#class-NameChar10"><code>NameChar10</code></a>, then raise an
514    <a href="#xml-well-formedness-error" id=wfe-name-char><code>xml-well-formedness-error</code></a>.</li>
515  <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
516  case combination), then raise an  case combination), then raise an
517  <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>.
518  <span class=ed>@@ except for attribute names <code>xml:lang</code>,  <span class=ed>@@ except for attribute names <code>xml:lang</code>,
519  <code>xml:space</code>, <code>xml:base</code>, <code>xml:id</code>,  <code>xml:space</code><!--, <code>xml:base</code>, <code>xml:id</code>,
520  <code>xmlns</code>, <code>xmlns:<var>*</var></code>,  <code>xmlns</code>, <code>xmlns:<var>*</var></code>,
521  pi name <code>xml-stylesheet</code>.</span><!--  pi name <code>xml-stylesheet</code>-->.</span><!--
522  "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.":
523  xml:base and xml:id specifications violate to this sentense!  xmlns, xml-stylesheet, xml:base and xml:id specifications violate to this sentense!
524  --></li>  --></li>
525  <!-- 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],
526  [XML11]. -->  [XML11]. -->
527  <li class=ed>@@</li>  <li class=ed>@@ XML 1.1 support</li>
528  </ol>  </ol>
529    
530  <p>The algorithm  <p>To
531  <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
532  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
533  is defined as following:</p>  following algorithm <em class=rfc2119>MUST</em> be used:</p>
534  <ol>  <ol>
535    <li><a href="#algorithm-to-validate-a-name" title="validate a Name">Validate
536    <var>s</var> as a <code>Name</code></a>.</li>
537  <li class=ed>@@</li>  <li class=ed>@@</li>
538  </ol>  </ol>
539    
540  <p>To <dfn id=algorithm-to-validate-a-public-identifier title="validate a public identifier">validate  <p>To
541    <dfn id=algorithm-to-validate-a-public-identifier title="validate a public identifier">validate
542  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
543  algorithm below <em class=rfc2119>MUST</em> be used:</p>  following algorithm <em class=rfc2119>MUST</em> be used:</p>
544  <ol>  <ol>
545    <li>If <var>pid</var> contains any character  <li>If <var>pid</var> is <code>null</code>, abort these steps.</li>
546    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
547    [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]</code><!-- @@ TODO: formal def -->,  character class <a href="#class-PubidChar"><code>PubidChar</code></a>, then
548    then it is an  raise an
549    <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>
550    <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>
551    <code class=charname>CHARACTER TABULATION</code>,    <code class=charname>CHARACTER TABULATION</code>,
552    <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 558  algorithm below <em class=rfc2119>MUST</
558    <code class=char>U+0020</code> <code class=charname>SPACE</code> character    <code class=char>U+0020</code> <code class=charname>SPACE</code> character
559    immediately followed by another <code class=char>U+0020</code>    immediately followed by another <code class=char>U+0020</code>
560    <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
561    <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>.
562    <li class=ed>@@ Should we check formal-public-identifierness?</li>    <span class=ed>Is this really a roundtripness problem?  XML spec
563      does only define the way to match public identifiers in fact, no
564      canonical form.</span></li>
565    </ol>
566    
567    <p>To
568    <dfn id=algorithm-to-validate-a-system-identifier title="validate a system identifier">validate
569    a system identifier (<dfn id=var-sid><var>sid</var></dfn>)</dfn>, the
570    following algorithm <em class=rfc2119>MUST</em> be used:</p>
571    <ol>
572      <li>If <var>sid</var> is <code>null</code>, abort these steps.</li>
573    <li><a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">Validate
574    <var>sid</var> as an <abbr>XML</abbr> string</a>.</li>
575      <li>If <var>sid</var> contains both <code class=char>U+0022</code>
576      <code class=charname>QUOTATION MARK</code> (<code class=char>"</code>) and
577      <code class=char>U+0027</code> <code class=charname>APOSTROPHE</code>
578      (<code class=char>'</code>) characters, raise an
579      <a href="#xml-well-formedness-error" id=wfe-sid-lit><code>xml-well-formedness-error</code></a>.</li>
580      <li>If <var>sid</var> contains at least one <code class=char>U+0023</code>
581      <code class=charname>NUMBER SIGN</code> (<code class=char>#</code>)
582      character, then raise an
583      <a href="#xml-misc-error" id=xme-sid-fragment><code>xml-misc-error</code></a>.</li>
584      <li class=ed>@@ If <var>sid</var> cannot be converted to a URI
585      reference, then raise a fact-level error (xml-misc-warning?).<!--
586      XML 1.0 has no conformance language for system identifier being
587      a URI reference. --></li>
588  </ol>  </ol>
589    
590  </div>  </div>
# Line 408  following:</p> Line 599  following:</p>
599  <dt>If <var>n</var> is an <code>Attr</code> node</dt>  <dt>If <var>n</var> is an <code>Attr</code> node</dt>
600    <dd>    <dd>
601      <ol>      <ol>
602      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-an-ncname">Validate the
603      <code>localName</code> attribute value as an <code>NCName</code></a>.</li>      <code>localName</code> attribute value as an <code>NCName</code></a>.</li>
604      <li>If the <code>prefix</code> attribute value is different from      <li>If the <code>prefix</code> attribute value is different from
605      <code>null</code>, then <a href="#algorithm-to-validate-a-ncname">validate      <code>null</code>, then <a href="#algorithm-to-validate-an-ncname">validate
606      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>
607      <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
608      <code>childNodes</code> list of <var>n</var>,      <code>childNodes</code> list of <var>n</var>,
# Line 517  following:</p> Line 708  following:</p>
708      <li>If <code>nodeName</code> attribute of <var>n</var> is      <li>If <code>nodeName</code> attribute of <var>n</var> is
709      <code>xml:space</code> <span class=ed>@@ or {xml namespace}:space ?</span>      <code>xml:space</code> <span class=ed>@@ or {xml namespace}:space ?</span>
710      and <span class=ed>its declared type is different from (default|preserve),      and <span class=ed>its declared type is different from (default|preserve),
711      (default), or (preserve)</span>, then raise an      (preserve|default), (default), or (preserve)</span>, then raise an
712      <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>
713      <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
714      <code>childNodes</code> list of <var>n</var>,      <code>childNodes</code> list of <var>n</var>,
# Line 547  following:</p> Line 738  following:</p>
738  <dt>If <var>n</var> is a <code>CDATASection</code> node</dt>  <dt>If <var>n</var> is a <code>CDATASection</code> node</dt>
739    <dd>    <dd>
740      <ol>      <ol>
741      <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
742      <code>data</code> attribute value as an <abbr>XML</abbr> character      <code>data</code> attribute value as an <abbr>XML</abbr> character
743      data</a>.</li>      data</a>.</li>
744      <li>If the <code>data</code> attribute value contains      <li>If the <code>data</code> attribute value contains
# Line 563  following:</p> Line 754  following:</p>
754      <ol>      <ol>
755      <li>Raise an      <li>Raise an
756      <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>
757      <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
758      <code>data</code> attribute value as an <abbr>XML</abbr> character      <code>data</code> attribute value as an <abbr>XML</abbr> character
759      data</a>.</li>      data</a>.</li>
760      <li>If the <code>data</code> attribute value contains      <li>If the <code>data</code> attribute value contains
# Line 630  following:</p> Line 821  following:</p>
821  <dt>If <var>n</var> is a <code>DocumentType</code> node</dt>  <dt>If <var>n</var> is a <code>DocumentType</code> node</dt>
822    <dd>    <dd>
823      <ol>      <ol>
824      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-an-ncname">Validate the
825      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
826      <li>Follow the following substeps:      <li>Follow the following substeps:
827        <ol>        <ol>
# Line 649  following:</p> Line 840  following:</p>
840      </li>      </li>
841      <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
842      the <code>publicId</code> attribute value as a public identifier</a>.</li>      the <code>publicId</code> attribute value as a public identifier</a>.</li>
843      <li>If the <code>systemId</code> attribute value contains      <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
844      both <code>"</code> and <code>'</code> characters, it is a      the <code>systemId</code> attribute value as a system identifier</a>.</li>
845      <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
846      <!-- @@ "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
847      <!-- publicId = non-null and systemId = null -->      value of <var>n</var> is <code>null</code>, then raise an
848        <a href="#xml-well-formedness-error" id=wfe-dt-sid><code>xml-well-formedness-error</code></a>.
849        <span class=ed>@@ publicId == null?  Or, publicId == ""</span></li>
850      <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>
851      in the <code>childNodes</code> list of <var>n</var>,      in the <code>childNodes</code> list of <var>n</var>,
852        <ol>        <ol>
# Line 665  following:</p> Line 858  following:</p>
858        <a href="#algorithm-to-check-a-node" title="check a node">check        <a href="#algorithm-to-check-a-node" title="check a node">check
859        <var>n<sub><var>c</var></sub></var></a> recusrively.</li>        <var>n<sub><var>c</var></sub></var></a> recusrively.</li>
860        </ol></li>        </ol></li>
861      <li class=ed>@@ <code>entities</code>, <code>notations</code>,      <li>For each node in the <code>entities</code>, <code>notations</code>,
862      <code>elementTypes</code>, externally declared?</li>      and <code>elementTypes</code> lists of <var>n</var>,
863        <a href="#algorithm-to-check-a-node" title="check a node">check the
864        node</a> recursively.</li>
865        <li class=ed>@@ externally declared?</li>
866      </ol>      </ol>
867    </dd>    </dd>
868  <dt>If <var>n</var> is an <code>Element</code> node</dt>  <dt>If <var>n</var> is an <code>Element</code> node</dt>
869    <dd>    <dd>
870      <ol>      <ol>
871      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-an-ncname">Validate the
872      <code>localName</code> attribute value as an <code>NCName</code></a>.</li>      <code>localName</code> attribute value as an <code>NCName</code></a>.</li>
873      <li>If the <code>prefix</code> attribute value is different from      <li>If the <code>prefix</code> attribute value is different from
874      <code>null</code>, then <a href="#algorithm-to-validate-a-ncname">validate      <code>null</code>, then <a href="#algorithm-to-validate-an-ncname">validate
875      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>
876      <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>
877      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 890  following:</p>
890        <var>n<sub><var>c</var></sub></var></a> recursively.</li>        <var>n<sub><var>c</var></sub></var></a> recursively.</li>
891        </ol></li>        </ol></li>
892      <li class=ed>@@ #elementvalid Validity constraint: Element Valid</li>      <li class=ed>@@ #elementvalid Validity constraint: Element Valid</li>
893      <li class=ed>@@ #uniqattspec Well-formedness constraint: Unique Att Spec</li>      <li>Let <var>attrs</var> be the value of the <code>attribute</code>
894      <li class=ed>@@ #RequiredAttr Validity constraint: Required Attribute</li>      attribute of <var>n</var>.  Check conformance of <var>attrs</var>
895        as following:
896          <ol>
897          <li>If <var>attrs</var> contains an <code>Attr</code> node whose
898          <code>nodeName</code> attribute value is equal to that of another
899          <code>Attr</code> node in <var>attrs</var>, then raise an
900          <a href="#xml-well-formedness-error" id=wfe-uniqattspec><code>xml-well-formedness-error</code></a>.<!--
901          #uniqattspec Well-formedness constraint: Unique Att Spec --></li>
902          <li class=ed>@@ #RequiredAttr Validity constraint: Required Attribute</li>
903          </ol>
904        </li>
905      </ol>      </ol>
906    </dd>    </dd>
907  <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 929  following:</p>
929      <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>
930      </ol>      </ol>
931    </dd>    </dd>
932  <dt>If <var>n</var> is an <code>Entity</code> node</dt>  <dt>If <var>n</var> is an <code>Entity</code> node whose
933    <code>notationName</code> attribute value is <code>null</code> (i.e. a
934    parsed entity)</dt>
935    <dd>    <dd>
936      <ol>      <ol>
937      <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
938      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <a href="#entity-error" id=ee-entity-node><code>entity-error</code></a>.</li>
939        <li><a href="#algorithm-to-validate-an-ncname">Validate the
940      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
941      <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
942      the <code>publicId</code> attribute value as a public identifier</a>.</li>      the <code>publicId</code> attribute value as a public identifier</a>.</li>
943      <li>If the <code>systemId</code> attribute value contains      <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
944      both <code>"</code> and <code>'</code> characters, it is a      the <code>systemId</code> attribute value as a system identifier</a>.</li>
945      <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
946      <!-- publicId = non-null and systemId = null -->      <em>not</em> <code>null</code> and the <code>systemId</code> attribute
947      <li class=ed>@@ <code>notationName</code></li>      value of <var>n</var> is <code>null</code>, then raise an
948      <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>
949      <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>
950      in the <code>childNodes</code> list of <var>n</var>,      in the <code>childNodes</code> list of <var>n</var>,
951        <ol>        <ol>
# Line 755  following:</p> Line 964  following:</p>
964        </ol></li>        </ol></li>
965      </ol>      </ol>
966    </dd>    </dd>
967    <dt>If <var>n</var> is an <code>Entity</code> node whose
968    <code>notationName</code> attribute value is <em>not</em> <code>null</code>
969    (i.e. an unparsed entity)</dt>
970      <dd>
971        <ol>
972        <li><a href="#algorithm-to-validate-an-ncname">Validate the
973        <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
974        <li><a href="#algorithm-to-validate-a-public-identifier" title="validate a public identifier">Validate
975        the <code>publicId</code> attribute value as a public identifier</a>.</li>
976        <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
977        the <code>systemId</code> attribute value as a system identifier</a>.</li>
978        <li>If the <code>systemId</code> attribute value of <var>n</var> is
979        <code>null</code>, then raise an
980        <a href="#xml-well-formedness-error" id=wfe-uentity-sid><code>xml-well-formedness-error</code></a>.</li>
981        <li><a href="#algorithm-to-validate-an-ncname">Validate the
982        <code>notationName</code> attribute value of <var>n</var> as an
983        <code>NCName</code></a>.</li>
984        <li class=ed>@@ #not-declared Validity constraint: Notation Declared</li>
985        <li>If the <code>childNodes</code> list of <var>n</var> contains
986        any nodes, they are in
987        <a href="#xml-well-formedness-error" id=wfe-uentity-child><code>xml-well-formedness-error</code></a>.</li>
988        </ol>
989      </dd>
990  <dt>If <var>n</var> is an <code>EntityReference</code> node</dt>  <dt>If <var>n</var> is an <code>EntityReference</code> node</dt>
991    <dd>    <dd>
992      <ol>      <ol>
993      <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>
994      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-an-ncname">Validate the
995      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
996      <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>
997      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 1014  following:</p>
1014  <dt>If <var>n</var> is a <code>Notation</code> node</dt>  <dt>If <var>n</var> is a <code>Notation</code> node</dt>
1015    <dd>    <dd>
1016      <ol>      <ol>
1017      <li><a href="#algorithm-to-validate-a-ncname">Validate the      <li><a href="#algorithm-to-validate-an-ncname">Validate the
1018      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>      <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
1019      <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
1020      the <code>publicId</code> attribute value as a public identifier</a>.</li>      the <code>publicId</code> attribute value as a public identifier</a>.</li>
1021      <li>If the <code>systemId</code> attribute value contains      <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
1022      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>  
1023      <li>If the <code>childNodes</code> list of <var>n</var> contains      <li>If the <code>childNodes</code> list of <var>n</var> contains
1024      any nodes, they are in      any nodes, they are in
1025      <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 1031  following:</p>
1031      <li>If the <code>target</code> attribute value matches to the string      <li>If the <code>target</code> attribute value matches to the string
1032      <code>xml</code> in any case combination, then raise a      <code>xml</code> in any case combination, then raise a
1033      <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>
1034      <li>Otherwise, <a href="#algorithm-to-validate-a-ncname">validate the      <li>Otherwise, <a href="#algorithm-to-validate-an-ncname">validate the
1035      <code>target</code> attribute value as an <code>NCName</code></a>.</li>      <code>target</code> attribute value as an <code>NCName</code></a>.</li>
1036      <li>Then,      <li>Then,
1037      <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
1038      the <code>data</code> attribute value as an <abbr>XML</abbr> character      the <code>data</code> attribute value as an <abbr>XML</abbr> character
1039      data</a>.</li>      data</a>.</li>
1040      <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 1055  following:</p>
1055  <dt>If <var>n</var> is a <code>Text</code> node</dt>  <dt>If <var>n</var> is a <code>Text</code> node</dt>
1056    <dd>    <dd>
1057      <ol>      <ol>
1058      <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
1059      <code>data</code> attribute value as an <abbr>XML</abbr> character      <code>data</code> attribute value as an <abbr>XML</abbr> character
1060      data</a>.</li>      data</a>.</li>
1061      <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 1139  as amended by
1139  <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>
1140  </div>  </div>
1141    
1142    <p>The character class <dfn id=class-NameStartChar10><code>NameStartChar10</code></dfn>
1143    contains the following characters:</p>
1144    <ul class=ed>
1145    </ul>
1146    <div class="note memo">
1147    <p>This character class contains all characters allowed as the first character
1148    of a string matching to the production rule
1149    <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-Name"><code>Name</code></a>
1150    of <abbr>XML</abbr> 1.0
1151    <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>.</p>
1152    </div>
1153    
1154    <p>The character class <dfn id=class-NameChar10><code>NameChar10</code></dfn>
1155    contains the following characters:</p>
1156    <ul>
1157    <li>The characters in the character class
1158    <a href="#class-NameStartChar10">NameStartChar10</a>.</li>
1159    <li class=ed></li>
1160    </ul>
1161    <div class="note memo">
1162    <p>This character class contains all characters allowed as the second
1163    character of a string matching to the production rule
1164    <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-Name"><code>Name</code></a>
1165    of <abbr>XML</abbr> 1.0
1166    <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>.</p>
1167    </div>
1168    
1169    <p>The character class <dfn id=class-PubidChar><code>PubidChar</code></dfn>
1170    contains the following characters:</p>
1171    <ul>
1172    <li><code class=char>U+0009</code> <code class=charname>CHARACTER
1173    TABULATION</code></li>
1174    <li><code class=char>U+000A</code> <code class=charname>LINE FEED</code></li>
1175    <li><code class=char>U+000D</code> <code class=charname>CARRIAGE
1176    RETURN</code></li>
1177    <li><code class=char>U+0020</code> <code class=charname>SPACE</code></li>
1178    <li><code class=char>U+0021</code> <code class=charname>EXCLAMATION MARK</code>
1179    (<code class=char>!</code>)</li>
1180    <li><code class=char>U+0023</code> <code class=charname>DOLLAR SIGN</code>
1181    (<code class=char>$</code>)</li>
1182    <li><code class=char>U+0024</code> <code class=charname>NUMBER SIGN</code>
1183    (<code class=char>#</code>)</li>
1184    <li><code class=char>U+0025</code> <code class=charname>PERCENT SIGN</code>
1185    (<code class=char>%</code>)</li>
1186    <li><code class=char>U+0027</code> <code class=charname>APOSTROPHE</code>
1187    (<code class=char>'</code>)</li>
1188    <li><code class=char>U+0028</code> <code class=charname>LEFT PARENTHESIS</code>
1189    (<code class=char>(</code>)</li>
1190    <li><code class=char>U+0029</code> <code class=charname>RIGHT
1191    PARENTHESIS</code> (<code class=char>)</code>)</li>
1192    <li><code class=char>U+002A</code> <code class=charname>ASTERISK</code>
1193    (<code class=char>*</code>)</li>
1194    <li><code class=char>U+002B</code> <code class=charname>PLUS SIGN</code>
1195    (<code class=char>+</code>)</li>
1196    <li><code class=char>U+002C</code> <code class=charname>COMMA</code>
1197    (<code class=char>,</code>)</li>
1198    <li><code class=char>U+002D</code> <code class=charname>HYPHEN-MINUS</code>
1199    (<code class=char>-</code>)</li>
1200    <li><code class=char>U+002E</code> <code class=charname>FULL STOP</code>
1201    (<code class=char>.</code>)</li>
1202    <li><code class=char>U+002F</code> <code class=charname>SOLIDUS</code>
1203    (<code class=char>/</code>)</li>
1204    <li><code class=char>U+0030</code> <code class=charname>DIGIT ZERO</code>
1205    (<code class=char>0</code>) .. <code class=char>U+0039</code>
1206    <code class=charname>DIGIT NINE</code> (<code class=char>9</code>)</li>
1207    <li><code class=char>U+003A</code> <code class=charname>COLON</code>
1208    (<code class=char>:</code>)</li>
1209    <li><code class=char>U+003B</code> <code class=charname>SEMICOLON</code>
1210    (<code class=char>;</code>)</li>
1211    <li><code class=char>U+003D</code> <code class=charname>EQUAL SIGN</code>
1212    (<code class=char>=</code>)</li>
1213    <li><code class=char>U+003F</code> <code class=charname>QUESTION MARK</code>
1214    (<code class=char>?</code>)</li>
1215    <li><code class=char>U+0040</code> <code class=charname>COMMERCIAL AT</code>
1216    (<code class=char>@</code>)</li>
1217    <li><code class=char>U+0041</code> <code class=charname>LATIN CAPITAL LETTER
1218    A</code> (<code class=char>A</code>) .. <code class=char>U+005A</code>
1219    <code class=charname>LATIN CAPITAL LETTER Z</code>
1220    (<code class=char>Z</code>)</li>
1221    <li><code class=char>U+005F</code> <code class=charname>LOW LINE</code>
1222    (<code class=char>_</code>)</li>
1223    <li><code class=char>U+0061</code> <code class=charname>LATIN CAPITAL LETTER
1224    A</code> (<code class=char>A</code>) .. <code class=char>U+007A</code>
1225    <code class=charname>LATIN CAPITAL LETTER Z</code>
1226    (<code class=char>Z</code>)</li>
1227    </ul>
1228    <div class="note memo">
1229    <p>This character class contains all characters allowed in the production rule
1230    <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-PubidChar"><code>PubidChar</code></a>
1231    of <abbr>XML</abbr> 1.0
1232    <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>.</p>
1233    </div>
1234    
1235  </div>  </div>
1236    
1237  <div id="references" class="section reference">  <div id="references" class="section reference">

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24