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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.29 - (hide annotations) (download) (as text)
Fri Oct 17 05:57:26 2008 UTC (15 years, 6 months ago) by wakaba
Branch: MAIN
CVS Tags: HEAD
Changes since 1.28: +115 -42 lines
File MIME type: text/html
Clarify the scope of the specification; Clarify that the specification defines the parser requirements and the conformance checker requirements; Clarify what specifications define the parser requirements not in this specification; Remove a requirement to read unused general entities; Parser no longer has to raise a well-formedness error for a production rule violation if it will be raised by a conformance checker; Minor editorial fixes

1 wakaba 1.1 <!DOCTYPE html>
2     <html lang="en" class="formal-specification status-work-in-progress">
3     <head>
4 wakaba 1.2 <title>manakai's XML Conformance Checking</title>
5 wakaba 1.1 <link rel="stylesheet" href="http://suika.fam.cx/www/style/html/spec">
6     <link rel="license" href="http://suika.fam.cx/c/gnu/fdl">
7 wakaba 1.6 <style>
8     a[id]::before {
9     content: "[" attr(id) "]";
10     color: gray;
11     font-size: 70%;
12     font-family: Courier New, monospace;
13     vertical-align: 60%;
14     }
15     </style>
16 wakaba 1.1 </head>
17     <body class="has-abstract">
18    
19     <div class="header">
20 wakaba 1.12 <h1>manakai's <abbr>XML</abbr> Conformance Checking</h1>
21 wakaba 1.29 <h2>Working Draft <time datetime=2008-10-17>17 October 2008</time></h2>
22 wakaba 1.1
23 wakaba 1.2 <dl class="versions-uri">
24 wakaba 1.1 <dt>This Version</dt>
25 wakaba 1.2 <dd><code class="URI">&lt;<a href="http://suika.fam.cx/www/markup/xml/xmlcc/xmlcc-work"
26     >http://suika.fam.cx/www/markup/xml/xmlcc/xmlcc-work</a>&gt;</code></dd>
27 wakaba 1.1 <dt>Latest Version</dt>
28 wakaba 1.2 <dd><code class="URI">&lt;<a href="http://suika.fam.cx/www/markup/xml/xmlcc/xmlcc"
29     >http://suika.fam.cx/www/markup/xml/xmlcc/xmlcc</a>&gt;</code></dd>
30 wakaba 1.1 <dt>Latest Working Draft</dt>
31 wakaba 1.2 <dd><code class="URI">&lt;<a href="http://suika.fam.cx/www/markup/xml/xmlcc/xmlcc-work"
32     >http://suika.fam.cx/www/markup/xml/xmlcc/xmlcc-work</a>&gt;</code></dd>
33 wakaba 1.1 <!-- <dt>Previous Version</dt> -->
34     <dt>Version History</dt>
35 wakaba 1.2 <dd><code class=URI>&lt;<a href="http://suika.fam.cx/gate/cvs/markup/xml/xmlcc/xmlcc-work.en.html">http://suika.fam.cx/gate/cvs/markup/xml/xmlcc/xmlcc-work.en.html</a>&gt;</code></dd>
36 wakaba 1.1 </dl>
37     <dl class="authors" id="author">
38     <dt>Author</dt>
39     <dd><a href="http://suika.fam.cx/~wakaba/who?" rel="author"
40     lang=ja>Wakaba</a>
41     <code class="mail">&lt;<a href="mailto:w@suika.fam.cx" rel="author"
42     >w@suika.fam.cx</a>&gt;</code></dd>
43     </dl>
44    
45 wakaba 1.22 <p class="copyright" lang="en">&#xA9; <time>2007</time>$B!>(B<time>2008</time> <a
46 wakaba 1.1 href="http://suika.fam.cx/~wakaba/who?" rel="author">Wakaba</a>.
47     Permission is granted to copy, distribute and/or modify this document
48     under the terms of the <a rel="license"
49     href="http://www.gnu.org/copyleft/fdl.html">GNU Free Documentation License</a>,
50     Version 1.2
51     or any later version published by the <a
52     href="http://www.fsf.org/">Free Software Foundation</a>;
53     with no Invariant Sections, no Front$B!>(BCover Texts, and no Back$B!>(BCover
54     Texts. A copy of the license is
55     available at <code class="URI">&lt;<a
56     href="http://www.gnu.org/copyleft/fdl.html"
57     rel="license">http://www.gnu.org/copyleft/fdl.html</a>&gt;</code>.</p>
58     </div>
59    
60     <div id="abstract" class="section">
61     <h2>Abstract</h2>
62    
63     <div class="ed issue">...</div>
64    
65     </div>
66    
67     <div id="status" class="section">
68     <h2>Status of This Document</h2>
69    
70     <p class=section-info><em>This section describes the status of this document
71     at the time of its publication. Other documents
72     might supersede this document.</em></p>
73    
74     <p>This document is a working draft, produced as part of the
75     <a href="http://suika.fam.cx/www/markup/html/whatpm/readme">Whatpm</a>
76     subproject of the
77     <a href="http://suika.fam.cx/www/manakai-core/doc/web/">manakai</a>
78     project. It might be updated, replaced, or obsoleted by
79     other documents at any time. It is inappropriate to
80     cite this document as other than <q>work in progress</q>.</p>
81    
82 wakaba 1.29 <p>The scope of this specification is explicitly limited to the <a
83     href="http://suika.fam.cx/www/markup/html/whatpm/readme">Whatpm</a>
84     implementation. It is <em>not</em> the purpose of this specification
85     to define a general guideline to parse or to check XML documents.
86     This specification does <em>not</em> try to define a new version of
87     XML at all.
88    
89     <p>This version of the specification supports the fourth edition of
90     XML 1.0 and the second edition of XML 1.1. The fifth edition of XML
91     1.0 might be supported in a later version. XML namespaces
92     specifications is expected to be supported in a later version of this
93     specification.
94    
95 wakaba 1.1 <p>Comments on this document are welcome and
96     may be sent to the <a href="#author">author</a>.</p>
97    
98     <p>Translations of thie document might be available.
99     The English version of the document is the only
100     normative version.</p>
101     </div>
102    
103     <div id="introduction" class="section">
104     <h2>Introduction</h2>
105    
106     <p class=section-info>This section is <em>non$B!>(Bnormative</em>.</p>
107    
108 wakaba 1.29 <p>This specification defines how the parsing and the conformance
109     checking of XML documents should be implemented in the <a
110     href="http://suika.fam.cx/www/markup/html/whatpm/readme">Whatpm</a>
111     XML parser and conformance checker.
112    
113     <p>It is <em>not</em> the purpose of this specification to define,
114     e.g., how to parse XML documents in general; its scope is explicitly
115     limited to the <a
116     href="http://suika.fam.cx/www/markup/html/whatpm/readme">Whatpm</a>
117     implementation.
118    
119 wakaba 1.27 <div class="issue ed">...
120    
121     <p>Much of invalid (well-formed or not) XML document parsing and XML document
122     / XML DOM conformance is left undefined so that this document provides a
123     guideline for conformance checkers.
124     </div>
125 wakaba 1.1
126    
127     </div>
128    
129     <div class="section" id="terminology">
130     <h2>Terminology</h2>
131    
132     <p>The key words <q><em class="rfc2119">MUST</em></q>,
133     <q><em class="rfc2119">MUST NOT</em></q>,
134     <q><em class="rfc2119">SHOULD</em></q>,
135     <q><em class="rfc2119">SHOULD NOT</em></q>, and
136     <q><em class=rfc2119>MAY</em></q> in this
137     document are to be interpreted as described in
138     <a href="urn:ietf:rfc:2119"><abbr title="Request for Comments">RFC</abbr>
139     2119</a>
140     <cite class="bibref normative">[<a href="#ref-KEYWORDS">KEYWORDS</a>]</cite>.</p>
141    
142     <!-- Strictly speaking the paragraph below is not part of terminology. -->
143     <p>All examples and notes in this specification are non$B!>(Bnormative,
144     as are all sections explicitly marked non$B!>(Bnormative. Everything
145     else in this specification is normative.</p>
146    
147     <p><span class=ed>Algorithm is normative but non-normative</span>.
148     In addition, the order in which <a href="#errors">errors</a> are
149     raised is undefined.</p>
150 wakaba 1.22
151     <p>This document sometimes cites parts of <abbr>XML</abbr> 1.0 specification
152     by hyperlinks. When the document being processed is an <abbr>XML</abbr> 1.1
153     document, however, corresponding parts of the <abbr>XML</abbr> 1.1
154     specification should be consulted instead.</p>
155 wakaba 1.1 </div>
156    
157 wakaba 1.29 <div class=section id=processing-model>
158     <h2>Processing Model</h2>
159    
160     <p>Conceptually, validation of an XML document is split into two
161     stages for the purpose of this specification: the <dfn
162     id=xml-document-parsing>XML document parsing</dfn> stage and the <dfn
163     id=dom-xml-conformance-checking>DOM XML conformance checking</dfn>
164     stage.
165    
166     <p>The input to the XML document parsing stage is a byte sequence
167     representing the parsed XML document (and any additional metadata),
168     and the output are a DOM tree representing the XML document and zero
169     or more <a href="#error">errors</a>. The processor that implements
170     this stage is called <dfn id=parser>parser</dfn>. Requirements for a
171     parser are defined in the section of <a href="#parsing-xml">Parsing an
172     XML Document</a>.
173    
174     <p>The input to the DOM XML conformance chcking stage is a DOM tree,
175     and the output are zero or more <a href="#error">errors</a>. The
176     processor that implements this stage is called <dfn
177     id=conformance-checker>conformance checker</dfn>. Requirements for a
178     conformance checker are defined in the section of <a
179     href="#checking-dom">Checking an XML DOM Tree</a>.
180    
181 wakaba 1.1
182 wakaba 1.9 <div class=section id=error-categories>
183 wakaba 1.29 <h3>Error Classification</h3>
184    
185     <p class=ed>An <dfn id=error>error</dfn> is ...
186 wakaba 1.9
187 wakaba 1.1 <p class=ed>If a <code>Document</code> node has no
188     xml-well-formedness-error, entity-error, and unknown-error,
189     then it is well-formed. If a well-formed <code>Document</code>
190     node has no xml-validity-error, it is valid.</p>
191    
192     <div class="note memo">
193     <p>A well$B!>(Bformed <code>Document</code> can be safely serialized
194     into a well$B!>(Bformed XML document. A valid <code>Document</code>
195     can be easily serialized into a valid XML document.</p>
196     </div>
197    
198 wakaba 1.17 <p class=ed>To be a conforming <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#dt-validating">validating XML processor</a>,
199     ...</p>
200    
201 wakaba 1.1 <p>Errors are classified into these
202     <dfn id=error-category title="error category">error categories</dfn>:</p>
203    
204     <dl id=errors>
205     <dt><dfn id=entity-error><code>entity-error</code></dfn></dt>
206 wakaba 1.4 <dd>
207     <p class=ed>@@</p>
208     <div class="note memo">
209     <p>This <span class=ed>algorithm</span> does not support
210     <abbr>DOM</abbr> tree with one or more <code>EntityReference</code>
211     nodes. It is expected that any entity references are expanded
212     at the parse time and any unexpandable entity references
213     make parse time errors raised so that never result in
214     <abbr>DOM</abbr> tree with <code>EntityReference</code> nodes.</p>
215     </div>
216     </dd>
217 wakaba 1.1 <dt><dfn id=round-trip-error><code>round-trip-error</code></dfn></dt>
218     <dd class=ed>@@</dd>
219 wakaba 1.12 <dt><dfn id=round-trip-warning><code>round-trip-warning</code></dfn></dt>
220     <dd>
221     <p>A <a href="#round-trip-warning"><code>round-trip-warning</code></a>
222     will be raised when a construct, which might not be restored to the same
223     construct when it is serialized and then re-parsed by a conforming
224     processor, is encountered.</p>
225     <div class="example memo">
226     <p>For a <code>Comment</code> node a
227     <a href="#round-trip-warning"><code>round-trip-warning</code></a> will
228     be raised, since <abbr>XML</abbr> processors are not required to
229     report texts of comments for applications.</p>
230     </div>
231     </dd>
232 wakaba 1.1 <dt class=ed><dfn id=unknown-error><code>unknown-error</code></dfn>?</dt>
233     <dd class=ed>@@</dd>
234     <dt><dfn id=xml-misc-error><code>xml-misc-error</code></dt>
235     <dd>An <abbr>XML</abbr> <i>error</i> (<abbr>XML</abbr> 1.0
236     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>
237     <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#dt-error">error</a> /
238     <abbr>XML</abbr> 1.1
239     <cite class="bibref normative">[<a href="#ref-XML11">XML11</a>]</cite>
240     <a href="@@/#dt-error">error</a>)
241     that is not classified to any other <a href="#error-category">error
242     category</a>.</dd>
243     <dt><dfn id=xml-misc-fatal-error><code>xml-misc-fatal-error</code></dt>
244     <dd>An <abbr>XML</abbr> <i>fatal error</i> (<abbr>XML</abbr> 1.0
245     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>
246     <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#dt-fatal">fatal
247     error</a> / <abbr>XML</abbr> 1.1
248     <cite class="bibref normative">[<a href="#ref-XML11">XML11</a>]</cite>
249     <a href="@@/#dt-fatal">fatal error</a>)
250     that is not classified to any other <a href="#error-category">error
251     category</a>. <span class=ed>@@ What errors fall into this category?</span></dd>
252 wakaba 1.13 <dt><dfn id=xml-misc-recommendation><code>xml-misc-recommendation</code></dfn></dt>
253     <dd>
254     <p>An
255     <a href="#xml-misc-recommendation"><code>xml-misc-recommendation</code></a>
256     will be raised if a <em class=rfc2119>SHOULD</em>$B!>(Blevel requirement
257     in <abbr>XML</abbr> specification is not met.</p>
258     </dd>
259 wakaba 1.1 <dt><dfn id=xml-validity-error><code>xml-validity-error</code></dfn></dt>
260     <dd>A violation of validity constraint in XML document.</dd>
261     <dt><dfn id=xml-well-formedness-error><code>xml-well-formedness-error</code></dfn></dt>
262     <dd><p>If an <code>xml-well-formedness-error</code> is raised,
263     it would not be possible to generate an XML serialization that
264     would match to the appropriate production rule and that would not
265     violate to any well$B!>(Bformedness constraint in XML
266     specification <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>,
267     <a href="#ref-XML11">XML11</a>]</cite>.</p></dd>
268 wakaba 1.26 <dt><dfn id=misc-info><code>misc-info</code></dfn>
269     <dd><p>A <code>misc-info</code> is raised when some status information
270     on parsing or checking process that are considered useful for debugging
271     and so on is available. It by no means implies the non-conformance of
272     the document.
273 wakaba 1.1 </dl>
274    
275     <div class=ed><p>@@ TODO: #dt-atuseroption at user option
276     (MAY or MUST), #dt-compat for compatibility,
277 wakaba 1.23 #dt-interop for interoperability</p>
278    
279     <p>TODO: XML 1.1, XML Namespace 1.0/1.1, xml:base, xml:id
280 wakaba 1.27
281     <p>TODO: XML "error"/"fatal error" is not always non-conforming (only
282     when MUST or SHOULD).
283 wakaba 1.23 </div>
284 wakaba 1.1
285 wakaba 1.29 </div>
286    
287     </div>
288    
289     <div class=section id=parsing-xml>
290     <h2>Parsing an <abbr>XML</abbr> Document</h2>
291    
292     <p>When a byte stream that represents an XML document is given to a
293     parser, it <em class=rfc2119>MUST</em> create a DOM tree according to
294     relevant specifications <span class=ed>[XML10, XML11, XMLNAMES10,
295     XMLNAMES11, DOM3CORE, WEBDOMCORE, DOMDTDEF, MANAKAIDOMEXT]</span>.
296    
297     <p>The parser <em class=rfc2119>MAY</em> continue the parsing of the
298     document even after a fatal error (as defined by the relavant
299     specifications) is encountered. How the parsing ought to be continued
300     is not defined by this specification.
301 wakaba 1.27
302 wakaba 1.29 <!--
303 wakaba 1.27 <div class="note memo informative">
304     <p>It is expected that the XML5 specification <span class=ed>@@ ref</span>
305     will define how the parser has to convert any string into DOM tree
306     completely.
307     </div>
308 wakaba 1.29 -->
309 wakaba 1.27
310 wakaba 1.29 <p class=ed>A future version of this specification might define the
311     entire parser in terms of input stream preprocessor, tokenizer, and
312     tree constructor.
313 wakaba 1.14
314 wakaba 1.29 <p>In addition, the following requirements are applied to the parser:
315 wakaba 1.14
316 wakaba 1.25 <dl class=switch>
317 wakaba 1.27 <dt>For each external entity (including the document entity and the external
318     subset entity, if any)
319     <dd>If there is a byte sequence that are not legal in the encoding in use,
320     then the parser <em class=rfc2119>MUST</em> raise an
321     <a href="#xml-misc-error" id=xme-illegal-bytes><code>xml-misc-error</code></a>.
322     <!--
323     <q>It is a fatal error when an XML processor encounters an entity with an
324     encoding that it is unable to process. It is a fatal error if an XML
325     entity is determined (via default, encoding declaration, or higher-level
326     protocol) to be in a certain encoding but contains byte sequences that are
327     not legal in that encoding.</q>
328     -->
329    
330     <dd>If it is the document entity or a general entity, then:
331     <ul>
332     <li>If the input byte sequence for the entity begins with the
333     <abbr title="BYTE ORDER MARK" class=charname>BOM</abbr>, then the parser
334     <em class=rfc2119>MUST</em> set the <span class=ed>BOM flag</span> of
335     the node corresponding to the entity (the <code>Document</code> node
336     for the document entity or an <code>Entity</code> node for a general
337     entity) to <code>true</code>.
338     <!--
339     <q>Entities encoded in UTF-16 MUST and entities encoded in UTF-8 MAY
340     begin with the Byte Order Mark</q>
341     -->
342     <span class=ed>@@ flag must be checked later</span>
343     <!-- <?xml encoding=""?> must be reflected to xmlEncoding; this should be
344     enforced by DOM Core spec. -->
345     </ul>
346     <dd>If it is a parameter entity or the external subset entity, then:
347     <ul>
348     <li>If the character encoding of the entity is <code>UTF-16</code> but
349     the input byte stream for the entity does not begin with the
350     <abbr title="BYTE ORDER MARK" class=charname>BOM</abbr>, then the parser
351     <em class=rfc2119>MUST</em> raise an
352     <a href="#xml-misc-error" id=xme-pe-bom><code>xml-misc-error</code></a>.
353     <li class=ed>@@ encoding="" preferred name?
354     <!--
355     "In an encoding declaration, the values "UTF-8", "UTF-16", "ISO-10646-UCS-2", and "ISO-10646-UCS-4" SHOULD be used for the various encodings and transformations of Unicode / ISO/IEC 10646, the values "ISO-8859-1", "ISO-8859-2", ... "ISO-8859-n" (where n is the part number) SHOULD be used for the parts of ISO 8859, and the values "ISO-2022-JP", "Shift_JIS", and "EUC-JP" SHOULD be used for the various encoded forms of JIS X-0208-1997. It is RECOMMENDED that character encodings registered (as charsets) with the Internet Assigned Numbers Authority [IANA-CHARSETS], other than those just listed, be referred to using their registered names; other encodings SHOULD use names starting with an "x-" prefix."
356    
357     In addition, this should be checked later for Document and Entity nodes.
358     -->
359     </ul>
360    
361 wakaba 1.25 <dt>For the document
362 wakaba 1.22 <dd>If the <abbr>XML</abbr> document does not begin with an
363     <abbr>XML</abbr> declaration, then the parser <em class=rfc2119>MUST</em>
364     raise an
365     <a href="#xml-misc-recommentation" id=xmr-xml-decl><code>xml-misc-recommendation</code></a>.
366 wakaba 1.27 <dd>If the document does not contain the document type declaration, or
367     if it does but the document type definition does not contain entity
368     declaration for any of <code>amp</code>, <code>lt</code>, <code>gt</code>,
369     <code>apos</code>, or <code>quot</code>, then the parser
370     <em class=rfc2119>MUST</em> raise
371     <a href="#xml-misc-recommentation" id=xmr-predefined-decl><code>xml-misc-recommendation</code></a>(s).
372     <!--
373     <q>For interoperability, valid documents SHOULD declare the entities
374     amp, lt, gt, apos, quot, in the form specified in 4.6 Predefined
375     Entities.</q>
376     -->
377 wakaba 1.25 <dt>For the document type declaration
378     <dd class=ed>@@ read external entity
379 wakaba 1.26 <dd>The <code>entities</code> attribute of the <code>DocumentType</code>
380     node <em class=rfc2119>MUST</em> contain a <code>NamedNodeMap</code> object
381     whose first five items are as follows:
382     <ol start=0>
383     <li>An <code>Entity</code> node whose <code>nodeName</code> attribute
384     is <code>amp</code>. It contains a <code>Text</code> node whose
385     <code>data</code> attribute is set to <code>&amp;</code>.
386     <li>An <code>Entity</code> node whose <code>nodeName</code> attribute
387     is <code>lt</code>. It contains a <code>Text</code> node whose
388     <code>data</code> attribute is set to <code>&lt;</code>.
389     <li>An <code>Entity</code> node whose <code>nodeName</code> attribute
390     is <code>gt</code>. It contains a <code>Text</code> node whose
391     <code>data</code> attribute is set to <code>></code>.
392     <li>An <code>Entity</code> node whose <code>nodeName</code> attribute
393     is <code>quot</code>. It contains a <code>Text</code> node whose
394     <code>data</code> attribute is set to <code>"</code>.
395     <li>An <code>Entity</code> node whose <code>nodeName</code> attribute
396     is <code>apos</code>. It contains a <code>Text</code> node whose
397     <code>data</code> attribute is set to <code>'</code>.
398     </ol>
399 wakaba 1.25 <dt>For each internal general entity declaration being processed by the parser
400 wakaba 1.22 <dd>If the
401     <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-EntityValue"><code>EntityValue</code></a>
402     part of the general entity declaration contains a bare <code>U+003C</code>
403     <code>LESS-THAN SIGN</code> (<code>&lt;</code>) character, then the parser
404     <em class=rfc2119>MUST</em> raise an
405     <a href="#xml-misc-warning" id=xmw-entity-value-lt><code>xml-misc-warning</code></a>.<!--
406 wakaba 1.14 "strongly advised to avoid" in a Note in Section 2.3 of [XML10], [XML11].
407 wakaba 1.22 -->
408 wakaba 1.25 <dt>For each element type declaration being processed by the parser
409     <dd>If there is another processed element type declaration whose
410     <code>Name</code> is equal to the <code>Name</code> of the element type
411     declaration, then the parser <em class=rfc2119>MUST</em> raise an
412 wakaba 1.22 <a href="#xml-validity-error" id=vc-edunique><code>xml-validity-error</code></a>.
413 wakaba 1.25 <dt>For each attribute definition list declaration being processed by the
414     parser
415     <dd>If there is another processed attribute defintion list declaration whose
416     <code>Name</code> is equal to the <code>Name</code> of the attribute
417     definition list declaration, then the parser <em class=rfc2119>MUST</em>
418     raise an
419     <a href="#xml-misc-warning" id=xme-attlist-unique><code>xml-misc-warning</code></a>.
420     <dd>For each attribute definition in the attribute definition list
421     declaration, if there is another processed attribute definition whose
422     <code>Name</code> is equal to the <code>Name</code> of the attribute
423     definition (whether or not in the same attribute definition list
424     declaration), then the parser <em class=rfc2119>MUST</em> raise an
425     <a href="#xml-misc-warning" id=xme-attrdef-unique><code>xml-misc-warning</code></a>.
426     <!--
427     <q>For interoperability, an XML processor <em class=rfc2119>MAY</em> at
428     user option issue a warning when more than one attribute-list declaration
429     is provided for a given element type, or more than one attribute definition
430     is provided for a given attribute, but this is not an error.</q>
431     -->
432 wakaba 1.22 <!--
433     NOTE: <!ATTLIST a xml:space (default) #IMPLIED xml:space CDATA #IMPLIED>
434     will not be warned.
435     -->
436 wakaba 1.25
437     <dt>For each entity declaration being processed by the parser
438 wakaba 1.26 <dd>Handle as follows:
439     <ol>
440     <li><p>If the entity declaration declares a general entity, the following
441     is applied:
442     <dl>
443     <dt>If the <code>Name</code> is <code>lt</code> or <code>amp</code>
444     <dd><p>If the entity declaration does not declare an internal entity,
445     or if the replacement text of the entity is not the escaped form of
446     <code>&lt;</code> (if <code>lt</code>) or <code>&amp;</code> (if
447     <code>amp</code>), then the parser <em class=rfc2119>MUST</em> raise an
448     <a href="#xml-misc-error" id=xme-double-escape><code>xml-misc-error</code></a>.
449    
450     <div class="note memo informative">
451     <p>In other word, the character in the <code>EntityValue</code>
452     has to be double-escaped.
453     </div>
454     <dt>If the <code>Name</code> is <code>gt</code>, <code>quot</code>, or
455     <code>apos</code>
456     <dd><p>If the entity declaration does not declare an internal entity,
457     or if the replacement text of the entity is not equal to or not the
458     escaped form of <code>></code> (if <code>gt</code>), <code>"</code> (if
459     <code>quot</code>), or <code>'</code> (if <code>apos</code>), then the
460     parser <em class=rfc2119>MUST</em> raise an
461     <a href="#xml-misc-error" id=xme-single-escape><code>xml-misc-error</code></a>.
462    
463     <div class="note memo informative">
464     <p>In other word, the character in the <code>EntityValue</code>
465     has to be single- or double-escaped.
466     </div>
467     </dl>
468     <!--
469     <q>If the entities lt or amp are declared, they MUST be declared as internal entities whose replacement text is a character reference to the respective character (less-than sign or ampersand) being escaped; the double escaping is REQUIRED for these entities so that references to them produce a well-formed result. If the entities gt, apos, or quot are declared, they MUST be declared as internal entities whose replacement text is the single character being escaped (or a character reference to that character; the double escaping here is OPTIONAL but harmless).</q>
470     -->
471    
472     <li><p>If the entity declaration has to be ignored since there has already
473     been declared an entity with the same <code>Name</code> as the declaration,
474     then the parser <em class=rfc2119>MUST</em> raise a
475     <a href="#misc-info" id=mi-ent-unique><code>misc-info</code></a>
476     and abort these steps.
477    
478     <div class="informative note memo">
479     <p>Five predefined entities, i.e. <code>amp</code>, <code>lt</code>,
480     <code>gt</code>, <code>quot</code>, and <code>apos</code>, are always
481     declared implicitly and therefore any declaration for such an entity
482     always raises an
483     <a href="#misc-info" id=mi-ent-unique><code>misc-info</code></a>.
484     </div>
485    
486     <li><p>If the entity declaration declares a parameter entity and the
487     <code>Name</code> of the entity begins with the string <code>xml</code>
488     (in any combination of upper- and lowercase letters), then the parser
489     <em class=rfc2119>MUST</em> raise an
490     <a href="#xml-misc-warning" id=xmw-reserved-pe-name><code>xml-misc-warning</code></a>.
491    
492     <li><p>If the entity declaration contains the <code>EntityValue</code>,
493     then for each occurence of any references to unparsed entities in the
494     <code>EntityValue</code>, the parser <em class=rfc2119>MUST</em> raise an
495     <a href="#xml-misc-error" id=xme-unparsed-in-ev><code>xml-misc-error</code></a>.
496     <!--
497     <q>It is an error for a reference to an unparsed entity to appear in the
498     EntityValue in an entity declaration.</q>
499     -->
500     <li><p>If the entity declaration declares a general entity, then an
501     <code>Entity</code> node <em class=rfc2119>MUST</em> be created and
502     appended to the <code>NamedNodeMap</code> object in the
503     <code>entities</code> attribute of the <code>DocumentType</code> node.
504    
505     <p class=ed>Read the external entity
506    
507     <p>If the replacement text of the entity is read, then parse the
508     replacement text as if it were referenced from the content of an
509     element (with no namespace bindings). If no <span class=ed>@@ parse error</span>
510     is raised by the parsing process, then the nodes generated by the
511     parsing <em class=rfc2119>MUST</em> be appended to the <code>Entity</code>
512     node. The parse error <em class=rfc2119>MUST NOT</em> be propagated to
513     the entire parsing process. Other kinds of errors
514     <em class=rfc2119>MUST</em> be propagated. The first parse error
515     <em class=rfc2119>MUST</em> abort the internal parsing process.
516     <span class=ed>@@ better wording</span>
517    
518     <p class=ed>@@ prop
519    
520     <p>Then, the <code>Entity</code> node and its descendant
521     <em class=rfc2119>MUST</em> be marked as read-only.
522     </ol>
523 wakaba 1.25
524     <dt>For each notation declaration being processed by the parser
525     <dd>If there is another processed notation declaration whose
526     <code>Name</code> is equal to the <code>Name</code> of the notation
527     declaration, then the parser <em class=rfc2119>MUST</em> raise an
528     <a href="#xml-validity-error" id=vc-uniquenotationname><code>xml-validity-error</code></a>.
529     <!-- <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#UniqueNotationName">Validity constraint: Unique Notation Name</a> -->
530    
531 wakaba 1.22 <dt>For each empty-element tag
532     <dd>If the <code>Name</code> of the tag is not declared by a processed
533     element type declaration as <code>EMPTY</code> content, then the parser
534     <em class=rfc2119>MUST</em> raise an
535     <a href="#xml-misc-recommentation" id=xmr-emptyelemtag-not-empty><code>xml-misc-recommendation</code></a>.
536     <dt>For each start-tag
537     <dd>If the <code>Name</code> of the tag is declared by a processed element
538     type declaration as <code>EMPTY</code> content, then the parser
539     <em class=rfc2119>MUST</em> raise an
540     <a href="#xml-misc-recommentation" id=xmr-empty-not-emptyelemtag><code>xml-misc-recommendation</code></a>.
541 wakaba 1.27 <dt>For each attribute
542     <dd><p>The parser <em class=rfc2119>MUST</em> set the normalized value of
543     the attribute to the <code>value</code> attribute of the <code>Attr</code>
544     node created for the attribute.
545    
546     <div class="note memo informative">
547     <p>That is, any entity reference has to be expanded. Unexpanded entity
548     references in attribute values are discarded.
549     </div>
550     <dt>For each <code>xml:space</code> attribute
551     <dd>The parser <em class=rfc2119>MUST</em> set the normalized value of
552     the <code>xml:space</code> attribute to the <code>value</code> attribute
553     of the <code>Attr</code> node created for the attribute even if the
554     normalized value is different from <code>default</code> or
555     <code>preserve</code>.
556     <!-- In XML 1.0/1.1 specification, the attribute specification MAY be
557     ignored. -->
558 wakaba 1.25
559     <dt>For each parameter entity reference
560 wakaba 1.28 <dd><p>Process as follows:
561     <ol>
562     <li>If the declaration for the entity is <em>not</em> processed,
563     then:
564     <dl class=switch>
565     <dt>If the document contains no external entity or if the document
566     contains the <code>standalone</code> pseudo-attribute set to
567     <code>yes</code><!-- or the document contains no DTD -->
568     <dd>The parser <em class=rfc2119>MUST</em> raise an
569     <a href="#xml-well-formedness-error" id=wf-entdeclared-pe><code>xml-well-formedness-error</code></a>.
570     <dt>Otherwise
571     <dd>The parser <em class=rfc2119>MUST</em> raise an
572     <a href="#xml-validity-error" id=vc-entdeclared-pe><code>xml-validity-error</code></a>.
573     </dl>
574     <li>If the declaration for the entity <em>is</em> processed but the
575     referenced entity cannot be retrieved, then the parser
576     <em class=rfc2119>MUST</em> raise an
577     <span class=ed>@@ ??-error</span>.
578     </ol>
579    
580     <p>In any of two cases above, process as follows:
581 wakaba 1.25 <ul>
582 wakaba 1.28 <li>If the parameter entity reference is contained in a declaration, then
583     the declaration <em class=rfc2119>MUST</em> be ignored <em>except</em> that
584 wakaba 1.25 any error before the parameter entity <em class=rfc2119>MUST</em> be
585     raised as usual.
586 wakaba 1.28 <li>If the parameter entity reference is contained in the status portion of
587     a conditional section, then the conditional section
588 wakaba 1.25 <em class=rfc2119>MUST</em> be processed as if it were an
589     <code>IGNORE</code>d section.
590     <li>The parser <em class=rfc2119>MUST NOT</em> process any entity or
591     attribute-list declaration after the parameter entity reference in the DTD
592     <em>except</em> when the <code>standalone</code> pseudo-attribute of the
593     XML declaration (if any) is set to <code>yes</code>.
594     <!-- This requirement is enforced for internal DTD subset case in
595     XML 1.0/1.1 specification (section 5.1) but not for any other cases. -->
596     <!-- According to this definition, element type declarations, notation
597     declarations, and PIs ARE processed. -->
598     <li>If the parameter entity reference is the first reference to an entity
599     that is not read, then the parser <em class=rfc2119>MUST</em> raise an
600     <a href="#entity-error" id=ee-unread-pe><code>entity-error</code></a>.
601     <li>The <code>allDeclarationsProcessed</code> <span class=ed>@@ ref</span>
602     attribute of the <code>Document</code> node <em class=rfc2119>MUST</em> be
603     set to <code>false</code>.
604     </ul>
605     <dt>For each general entity reference in an attribute value or in the content
606     of an element
607 wakaba 1.28 <dd><p>Process as follows:
608     <ol>
609     <li>If the <code>Name</code> of the entity reference is either
610     <code>amp</code>, <code>lt</code>, <code>gt</code>, <code>quot</code>,
611     or <code>apos</code>, then abort these steps.
612     <li>If the declaration for the entity is <em>not</em> processed,
613     then:
614     <dl class=switch>
615     <dt>If the document contains no external entity or if the document
616     contains the <code>standalone</code> pseudo-attribute set to
617     <code>yes</code><!-- or the document contains no DTD -->
618     <dd>The parser <em class=rfc2119>MUST</em> raise an
619     <a href="#xml-well-formedness-error" id=wf-entdeclared-ge><code>xml-well-formedness-error</code></a>.
620     <dt>Otherwise
621     <dd>The parser <em class=rfc2119>MUST</em> raise an
622     <a href="#xml-validity-error" id=vc-entdeclared-ge><code>xml-validity-error</code></a>.
623     </dl>
624     <li>If the declaration for the entity <em>is</em> processed but the
625     referenced entity cannot be retrieved, then the parser
626     <em class=rfc2119>MUST</em> raise an
627     <span class=ed>@@ ??-error</span>.
628     </ol>
629    
630     <p>In any of two cases above, process as follows:
631 wakaba 1.25 <ul>
632     <li>If the general entity reference is the first reference to an entity
633     that is not read, then the parser <em class=rfc2119>MUST</em> raise an
634     <a href="#entity-error" id=ee-unread-ge><code>entity-error</code></a>.
635     <span class=ed>@@ entity declared WFC?</span>
636     <li class=ed>An unexpended entity reference node <em class=rfc2119>MUST</em> be inserted to the current node.
637     </ul>
638 wakaba 1.27
639     <dt>For each comment <em>outside</em> of document type declaration
640     <dd>A <code>Comment</code> node <em class=rfc2119>MUST</em> be created
641     and inserted appropriately.
642     <!-- In XML 1.0/1.1 spec, this is optional. -->
643 wakaba 1.24 </dl>
644    
645 wakaba 1.29 <p>The parser <em class=rfc2119>MUST</em> try to read any entity
646     referenced by general or parameter entity references<!--,--> and the
647     external subset entity, if any<!--, and any general entity declared-->
648     in the document type definition.
649    
650     <p><strong>Well-formedness constraints</strong>. When the parser
651     detects a voilation to one of certain well-formedness constraints, it
652     <em class=rfc2119>MUST</em> raise an <a
653     href="#xml-well-formedness-error"><code>xml-well-formedness-error</code></a>.
654     The list of such well-formed constraints is as follows:
655    
656 wakaba 1.24 <ul>
657     <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#wfc-PEinInternalSubset">Well-formedness constraint: PEs in Internal Subset</a>
658     <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#GIMatch">Well-formedness constraint: Element Type Match</a>
659     <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#uniqattspec">Well-formedness constraint: Unique Att Spec</a>
660     <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NoExternalRefs">Well-formedness constraint: No External Entity References</a>
661     <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#CleanAttrVals">Well-formedness constraint: No &lt; in Attribute Values</a>
662     <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#wf-Legalchar">Well-formedness constraint: Legal Character</a>
663     <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#textent">Well-formedness constraint: Parsed Entity</a>
664     <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#norecursion">Well-formedness constraint: No Recursion</a>
665     <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#indtd">Well-formedness constraint: In DTD</a>
666     </ul>
667    
668 wakaba 1.29 <p><strong>Validity constraints</strong>. When the parser detects a
669     violation to one of certain validity contraints, it <em
670     class=rfc2119>MUST</em> raise an <a
671     href="#xml-validity-error"><code>xml-validity-error</code></a>. The
672     list of such validity constraints is as follows:
673    
674 wakaba 1.24 <ul>
675     <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#vc-PEinMarkupDecl">Validity constraint: Proper Declaration/PE Nesting</a>
676     <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#vc-PEinGroup">Validity constraint: Proper Group/PE Nesting</a>
677     <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#condsec-nesting">Validity constraint: Proper Conditional Section/PE Nesting</a>
678 wakaba 1.28 <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#vc-check-rmd">Validity constraint: Standalone Document Declaration</a>
679 wakaba 1.24 </ul>
680    
681 wakaba 1.29 <p><strong>Other creteria</strong>. If the parser detects a violation
682     to one of certain additional constraints, it <em
683     class=rfc2119>MUST</em> raise an <a
684     href="#xml-misc-recommendation"><code>xml-misc-recommendation</code></a>.
685     The list of such constraints is as follows:
686    
687 wakaba 1.24 <ul>
688     <li><q>For interoperability, if a parameter-entity reference appears in a
689     <code>choice</code>, <code>seq</code>, or <code>Mixed</code> construct, its
690     replacement text <em class=rfc2119>SHOULD</em> contain at least one non-blank
691     character, and neither the first nor last non-blank character of the
692     replacement text <em class=rfc2119>SHOULD</em> be a connector (<code>|</code>
693     or <code>,</code>).</q>
694     <li><q>External parsed entities <em class=rfc2119>SHOULD</em> each begin with a
695     text declaration.</q>
696     </ul>
697    
698 wakaba 1.29 <p>The parser <em class=rfc2119>MUST</em> act as if it is a <a
699     href="http://www.w3.org/TR/2006/REC-xml-20060816/#dt-validating">validating
700     XML processor</a> for the purpose of informing of white space
701     characters appearing in <a
702     href="http://www.w3.org/TR/2006/REC-xml-20060816/#dt-elemcontent">element
703     content</a> (See <a
704     href="http://www.w3.org/TR/2006/REC-xml-20060816/#sec-white-space">Section
705 wakaba 1.27 2.10</a> of the XML specification).
706    
707     <div class="note memo informative">
708     <p>In other word, the <code>isElementContentWhitespace</code> attribute
709     of <code>Text</code> nodes has to be set appropriately. Note that the
710     value of the attribute will be set to <code>false</code> for any
711     <code>Text</code> node in the content of an element whose declaration
712     is not processed.
713     </div>
714 wakaba 1.25
715 wakaba 1.29 <p>The parser <em class=rfc2119>MUST</em> raise at least one <a
716     href="#xml-well-formedness-error"
717     id=wfe-syntax><code>xml-well-formedness-error</code></a> if the entity
718     it parses does not match to the appropriate production rule in the XML
719     specification. As an exception to this requirement, it <em
720     class=rfc2119>MAY</em> choose not to raise such an error if the error
721     will be raised by the conformance checker when the conformance checker
722     <a href="#algorithm-to-check-a-node" title="check a node">checks</a>
723     the <code>Document</code> object produced by the parser.
724    
725 wakaba 1.25 <!--
726     <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#ExtSubset">Well-formedness constraint: External Subset</a>
727     <li><a href="http://www.w3.org/TR/2006/REC-xml-20060816/#PE-between-Decls">Well-formedness constraint: PE Between Declarations</a>
728 wakaba 1.14 -->
729 wakaba 1.27
730     <!--
731     Inpossible to test:
732     "In the absence of external character encoding information (such as MIME
733     headers), parsed entities which are stored in an encoding other than UTF-8
734     or UTF-16 MUST begin with a text declaration"
735     -->
736 wakaba 1.14 </div>
737    
738     <div class="section" id=checking-dom>
739 wakaba 1.29 <h2>Checking an <abbr>XML</abbr> <abbr>DOM</abbr> Tree</h2>
740 wakaba 1.14
741     <p>The following algorithms and definitions are applied to
742     <abbr>XML</abbr> documents; especially, they are not applied
743     to <abbr>HTML</abbr> documents.<!-- TODO: ref to HTML5 --></p>
744 wakaba 1.9
745     <div class=section id=definitions>
746     <h3>Definitions</h3>
747    
748 wakaba 1.1 <p>The <dfn id=xml-version><abbr>XML</abbr> version</dfn> of a node is
749     the <abbr>XML</abbr> version of the document to which the node belongs.
750     For a <code>Documemt</code> node, the <abbr>XML</abbr> version
751     of the document is the value of the <code>xmlVersion</code>
752 wakaba 1.9 attribute of the node. For a <code>DocumentType</code> node whose
753     <code>ownerDocument</code> attribute is set to <code>null</code>,
754     the <abbr>XML</abbr> version of the document is <code>1.0</code><!--
755     since createDocumentType [DOM3CORE] assumes XML 1.0 [XML10TE] -->.
756 wakaba 1.1 For any other node, the <abbr>XML</abbr> version of the document
757     is that of the <code>Document</code> node contained in the
758     <code>ownerDocument</code> attribute of the node.</p>
759    
760 wakaba 1.9 </div>
761    
762 wakaba 1.10
763     <div class=section id=checking-components>
764 wakaba 1.19 <h3>Conformance Checking Algorithms for Components</h3>
765 wakaba 1.10
766 wakaba 1.19 <p>To
767     <dfn id=algorithm-to-validate-an-xml-character-data title="validate an XML string">to
768     validate an <abbr>XML</abbr> string (<dfn id=var-s><var>s</var></dfn>)</dfn>,
769     the following algorithm <em class=rfc2119>MUST</em> be used:</p>
770 wakaba 1.10 <ol>
771 wakaba 1.11 <li>If <var>s</var> contains a character that is <em>not</em> in
772     the character class <a href="#class-Char10"><code>Char10</code></a>,
773     then raise an
774     <a href="#xml-well-formedness-error" id=wfe-illegal-char><code>xml-well-formedness-error</code></a>.</li>
775     <li>If <var>s</var> contains a character that is in the character
776     class <a href="#class-CompatChar10"><code>CompatChar10</code></a>,
777     then raise an
778     <a href="#xml-misc-warning" id=xmw-compat-char><code>xml-misc-warning</code></a>.</li>
779     <li>If <var>s</var> contains a character that is in the character
780     class <a href="#class-ControlChar10"><code>ControlChar10</code></a>,
781     then raise an
782     <a href="#xml-misc-warning" id=xmw-control-char><code>xml-misc-warning</code></a>.</li>
783     <li class=ed>@@ XML 1.1 support</li>
784 wakaba 1.13 <li>If <var>s</var> contains a <code class=char>U+000D</code>
785     <code class=charname>CARRIAGE RETURN</code> character, then
786     raise a
787     <a href="#round-trip-error" id=rte-cr><code>round-trip-error</code></a>.
788     <span class=ed>@@ We should not raise duplicate errors for U+000D
789     in attribute values. In addition, we should support a mode where
790     U+000D will be serialized as &#x000D; (so that no round-trip-error
791     will be raised).</span></li>
792 wakaba 1.10 </ol>
793    
794 wakaba 1.19 <p>To
795     <dfn id=algorithm-to-validate-a-name title="validate a Name">validate a
796     <code>Name</code> (<dfn id=var-name-s><var>s</var></dfn>)</dfn>, the following
797     algorithm <em class=rfc2119>MUST</em> be used:</p>
798 wakaba 1.10 <ol>
799 wakaba 1.19 <li>If <var>s</var> is an empty string, then raise an
800     <a href="#xml-well-formedness-error" id=wfe-name-empty><code>xml-well-formedness-error</code></a>.
801     Abort these steps.</li>
802     <li><a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">Validate
803     <var>s</var> as an <abbr>XML</abbr> string</a>.</li>
804     <li>If the first character in <var>s</var> is a character that is
805     <em>not</em> in the character class
806     <a href="#class-NameStartChar10"><code>NameStartChar10</code></a>, then raise
807     an
808     <a href="#xml-well-formedness-error" id=wfe-name-startchar><code>xml-well-formedness-error</code></a>.</li>
809     <li>If a character other than the first character in <var>s</var> is a
810     character that is <em>not</em> in the character class
811     <a href="#class-NameChar10"><code>NameChar10</code></a>, then raise an
812     <a href="#xml-well-formedness-error" id=wfe-name-char><code>xml-well-formedness-error</code></a>.</li>
813 wakaba 1.12 <li>If <var>s</var> begins with the string <code>xml</code> (in any
814     case combination), then raise an
815     <a href="#xml-misc-warning" id=xmw-reserved-name><code>xml-misc-warning</code></a>.
816     <span class=ed>@@ except for attribute names <code>xml:lang</code>,
817 wakaba 1.25 <code>xml:space</code><!--, <code>xml:base</code>, <code>xml:id</code>,
818 wakaba 1.12 <code>xmlns</code>, <code>xmlns:<var>*</var></code>,
819 wakaba 1.25 pi name <code>xml-stylesheet</code>-->.</span><!--
820 wakaba 1.15 "names beginning with a match to (('X'|'x')('M'|'m')('L'|'l')) are reserved for standardization in this or future versions of this specification.":
821 wakaba 1.19 xmlns, xml-stylesheet, xml:base and xml:id specifications violate to this sentense!
822 wakaba 1.15 --></li>
823 wakaba 1.12 <!-- COLON in Name is a lowercase "should not" in a Note of [XML10],
824     [XML11]. -->
825 wakaba 1.19 <li class=ed>@@ XML 1.1 support</li>
826 wakaba 1.10 </ol>
827    
828 wakaba 1.19 <p>To
829     <dfn id=algorithm-to-validate-an-ncname title="validate an NCName">validate
830     an <code>NCName</code> (<dfn id=var-ncname-s><var>s</var></dfn>)</dfn>, the
831     following algorithm <em class=rfc2119>MUST</em> be used:</p>
832 wakaba 1.10 <ol>
833 wakaba 1.19 <li><a href="#algorithm-to-validate-a-name" title="validate a Name">Validate
834     <var>s</var> as a <code>Name</code></a>.</li>
835 wakaba 1.10 <li class=ed>@@</li>
836     </ol>
837    
838 wakaba 1.18 <p>To
839     <dfn id=algorithm-to-validate-a-public-identifier title="validate a public identifier">validate
840 wakaba 1.10 a public identifier (<dfn id=var-pid><var>pid</var></dfn>)</dfn>, the
841 wakaba 1.18 following algorithm <em class=rfc2119>MUST</em> be used:</p>
842 wakaba 1.10 <ol>
843 wakaba 1.20 <li>If <var>pid</var> is <code>null</code>, abort these steps.</li>
844     <li>If <var>pid</var> contains a character that is <em>not</em> in the
845     character class <a href="#class-PubidChar"><code>PubidChar</code></a>, then
846     raise an
847     <a href="#xml-well-formedness-error" id=wfe-pubid-char><code>xml-well-formedness-error</code></a>.</li>
848 wakaba 1.10 <li>If <var>pid</var> contains one of <code class=char>U+0009</code>
849     <code class=charname>CHARACTER TABULATION</code>,
850     <code class=char>U+000A</code> <code class=charname>CARRIAGE RETURN</code>,
851     and <code class=char>U+000D</code> <code class=charname>LINE FEED</code>
852     characters, if the first character of <var>pid</var> is
853     <code class=char>U+0020</code> <code class=charname>SPACE</code> character,
854     if the last character of <var>pid</var> is <code class=char>U+0020</code>
855     <code class=charname>SPACE</code> character, or if there is a
856     <code class=char>U+0020</code> <code class=charname>SPACE</code> character
857     immediately followed by another <code class=char>U+0020</code>
858     <code class=charname>SPACE</code> character in <var>pid</var>, then it is a
859 wakaba 1.18 <a href="#round-trip-error" id=rte-pubid-space><code>round-trip-error</code></a>.
860     <span class=ed>Is this really a roundtripness problem? XML spec
861     does only define the way to match public identifiers in fact, no
862     canonical form.</span></li>
863 wakaba 1.10 </ol>
864    
865 wakaba 1.18 <p>To
866     <dfn id=algorithm-to-validate-a-system-identifier title="validate a system identifier">validate
867     a system identifier (<dfn id=var-sid><var>sid</var></dfn>)</dfn>, the
868     following algorithm <em class=rfc2119>MUST</em> be used:</p>
869     <ol>
870     <li>If <var>sid</var> is <code>null</code>, abort these steps.</li>
871 wakaba 1.19 <li><a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">Validate
872     <var>sid</var> as an <abbr>XML</abbr> string</a>.</li>
873 wakaba 1.18 <li>If <var>sid</var> contains both <code class=char>U+0022</code>
874     <code class=charname>QUOTATION MARK</code> (<code class=char>"</code>) and
875     <code class=char>U+0027</code> <code class=charname>APOSTROPHE</code>
876     (<code class=char>'</code>) characters, raise an
877     <a href="#xml-well-formedness-error" id=wfe-sid-lit><code>xml-well-formedness-error</code></a>.</li>
878     <li>If <var>sid</var> contains at least one <code class=char>U+0023</code>
879     <code class=charname>NUMBER SIGN</code> (<code class=char>#</code>)
880     character, then raise an
881     <a href="#xml-misc-error" id=xme-sid-fragment><code>xml-misc-error</code></a>.</li>
882     <li class=ed>@@ If <var>sid</var> cannot be converted to a URI
883     reference, then raise a fact-level error (xml-misc-warning?).<!--
884     XML 1.0 has no conformance language for system identifier being
885     a URI reference. --></li>
886     </ol>
887    
888 wakaba 1.10 </div>
889    
890 wakaba 1.9 <div class=section id=checking-node>
891     <h3>Checking <code>Node</code></h3>
892    
893 wakaba 1.1 <p>The algorithm <dfn title="to check a node" id=algorithm-to-check-a-node>to
894     check a node (<dfn id=var-n><var>n</var></dfn>)</dfn> is defined as
895     following:</p>
896     <dl class=switch>
897     <dt>If <var>n</var> is an <code>Attr</code> node</dt>
898     <dd>
899     <ol>
900 wakaba 1.18 <li><a href="#algorithm-to-validate-an-ncname">Validate the
901 wakaba 1.1 <code>localName</code> attribute value as an <code>NCName</code></a>.</li>
902     <li>If the <code>prefix</code> attribute value is different from
903 wakaba 1.18 <code>null</code>, then <a href="#algorithm-to-validate-an-ncname">validate
904 wakaba 1.1 the <code>prefix</code> attribute value as an <code>NCName</code></a>.</li>
905 wakaba 1.8 <li>For each node <dfn id=var-attr-nc><var>n<sub><var>c</var></sub></var></dfn> in the
906 wakaba 1.4 <code>childNodes</code> list of <var>n</var>,
907 wakaba 1.8 <ol>
908     <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> a
909     <code>Text</code> or <code>EntityReference</code> node, then it is an
910     <a href="#xml-well-formedness-error" id=wfe-attr-child><code>xml-well-formedness-error</code></a>.</li>
911     <li>Otherwise, if <var>n<sub><var>c</var></sub></var> is an
912     <code>EntityReference</code> node, then it is an
913     <a href="#entity-error" id=ee-attr-er><code>entity-error</code></a>.</li>
914     <li>Otherwise,
915     <a href="#algorithm-to-check-a-node" title="check a node">check
916     <var>n<sub><var>c</var></sub></var></a> recusrively.</li>
917     </ol></li>
918 wakaba 1.13 <li>If <code>nodeName</code> attribute of <var>n</var> is
919     <code>xml:space</code> <span class=ed>@@ or {xml namespace}:space ?</span>
920     and <code>value</code> attribute of <var>n</var> is neither
921     <code>default</code> nor <code>preserve</code>, then it is an
922     <a href="#xml-misc-error" id=xme-attr-xml-space><code>xml-misc-error</code></a>.<!--
923     Note that <!ATTLIST e xml:space (default|preserve) "a">...
924     <e xml:space="default"/> is conforming and valid. --></li>
925     <li class=ed>@@ xml:lang value is not a language tag [RFC 3066 or its
926     successor] or an empty string, then xml-misc-warning
927     (a "fact"-level error; not an XML error).</li>
928 wakaba 1.1 <li class=ed>@@ <code>specified</code>,
929 wakaba 1.15 <code>manakaiAttributeType</code> (#ValueType Validity constraint: Attribute Value Type)</li>
930 wakaba 1.13 <!-- xml:space MUST be declared to be valid. -->
931 wakaba 1.16 <li>Let <dfn id=var-v><var>v</var></dfn> be the value of the
932     attribute <code>value</code> of <var>n</var>.</li>
933     <li>Validate the <var>n</var> against the <span class=ed>declared
934     type</span> as following:
935     <dl class=switch>
936     <dt class=ed><code>ID_ATTR</code></dt>
937     <dd>
938     <ol>
939     <li><span class=ed>Validate <var>v</var> as an
940     <code>Name</code>.</span> If it fails, then raise an
941     <a href="#xml-validity-error" id=vc-id-name><code>xml-validity-error</code></a>.</li>
942     <li><span class=ed>If <code>ID</code> <var>v</var> is defined,</span>
943     then raise an
944     <a href="#xml-validity-error" id=vc-id-duplication><code>xml-validity-error</code></a>.</li>
945     </ol>
946     </dd>
947     <dt class=ed>IDREF_ATTR</dt>
948     <dd>
949     <ol>
950     <li><span class=ed>Validate <var>v</var> as an
951     <code>Name</code>.</span> If it fails, then raise an
952     <a href="#xml-validity-error" id=vc-idref-name><code>xml-validity-error</code></a>.</li>
953     <li><span class=ed>If <code>ID</code> <var>v</var> is NOT
954     defined,</span> then raise an
955     <a href="#xml-validity-error" id=vc-idref-match><code>xml-validity-error</code></a>.</li>
956     </ol>
957     </dd>
958     <dt class=ed>IDREFS_ATTR</dt>
959     <dd class=ed>@@</dd>
960     <dt class=ed>ENTITY_ATTR</dt>
961     <dd>
962     <ol>
963     <li><span class=ed>Validate <var>v</var> as an
964     <code>Name</code>.</span> If it fails, then raise an
965     <a href="#xml-validity-error" id=vc-entname-name><code>xml-validity-error</code></a>.</li>
966     <li><span class=ed>If <code>Entity</code> <var>v</var> is NOT
967     defined,</span> then raise an
968     <a href="#xml-validity-error" id=vc-entname-match><code>xml-validity-error</code></a>.</li>
969     </ol>
970     </dd>
971     <dt class=ed>ENTITIES_ATTR</dt>
972     <dd class=ed>@@</dd>
973     <dt class=ed>NMTOKEN_ATTR</dt>
974     <dd>
975     <ol>
976     <li><span class=ed>Validate <var>v</var> as an
977     <code>Nmtoken</code>.</span> If it fails, then raise an
978     <a href="#xml-validity-error" id=vc-nmtok-name><code>xml-validity-error</code></a>.</li>
979     </ol>
980     </dd>
981     <dt class=ed>NMTOKENS_ATTR</dt>
982     <dd class=ed>@@</dd>
983     <dt class=ed>NOTATION_ATTR</dt>
984     <dd class=ed><var>v</var> must be one of enumerated values.
985     If not, then raise an
986     <a href="#xml-validity-error" id=vc-notatn-match><code>xml-validity-error</code></a>.</dd>
987     <dt class=ed>ENUMERATED_ATTR</dt>
988     <dd class=ed><var>v</var> must be one of enumerated values.
989     If not, then raise an
990     <a href="#xml-validity-error" id=vc-enum><code>xml-validity-error</code></a>.</dd>
991     <dt class=ed>@@</dt>
992     </dl>
993     </li>
994 wakaba 1.17 <li>If <span class=ed>type ID and default is NOT #IMPLIED or #REQUIRED</span>, then
995 wakaba 1.16 raise an
996     <a href="#xml-validity-error" id=vc-id-default><code>xml-validity-error</code></a>.</li>
997 wakaba 1.17 <li class=ed>@@ #FixedAttr Validity constraint: Fixed Attribute Default</li>
998     <li class=ed>@@ strict serialization error for U+000D, U+000A, and
999     U+0009 characters, leading/trailing U+0020, and U+0020{2,} string?</li>
1000 wakaba 1.1 </ol>
1001     </dd>
1002     <dt>If <var>n</var> is an <code>AttributeDefinition</code> node</dt>
1003 wakaba 1.8 <dd>
1004     <ol>
1005     <li class=ed></li>
1006 wakaba 1.13 <li>If <code>nodeName</code> attribute of <var>n</var> is
1007     <code>xml:space</code> <span class=ed>@@ or {xml namespace}:space ?</span>
1008     and <span class=ed>its declared type is different from (default|preserve),
1009 wakaba 1.22 (preserve|default), (default), or (preserve)</span>, then raise an
1010 wakaba 1.13 <a href="#xml-misc-error" id=xme-at-xml-space><code>xml-misc-error</code></a>.</li>
1011 wakaba 1.8 <li>For each node <dfn id=var-ad-nc><var>n<sub><var>c</var></sub></var></dfn> in the
1012     <code>childNodes</code> list of <var>n</var>,
1013     <ol>
1014     <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> a
1015     <code>Text</code> or <code>EntityReference</code> node, then it is an
1016     <a href="#xml-well-formedness-error" id=wfe-at-child><code>xml-well-formedness-error</code></a>.</li>
1017     <li>Otherwise, if <var>n<sub><var>c</var></sub></var> is an
1018     <code>EntityReference</code> node, then it is an
1019     <a href="#entity-error" id=ee-at-er><code>entity-error</code></a>.</li>
1020     <li>Otherwise,
1021     <a href="#algorithm-to-check-a-node" title="check a node">check
1022     <var>n<sub><var>c</var></sub></var></a> recusrively.</li>
1023     </ol></li>
1024 wakaba 1.16 <li class=ed>If <code>NOTATION_ATTR</code>, enumerated values MUST
1025     be declared. If not, then raise an
1026     <a href="#xml-validity-error" id=vc-notatn-declared><code>xml-validity-error</code></a>.</li>
1027     <li class=ed>If <code>NOTATION_ATTR</code> or <code>ENUMERATED_ATTR</code>,
1028     values MUST all be distinct. If not, then raise an
1029     <a href="#xml-validity-error" id=vc-no-duplicate-tokens><code>xml-validity-error</code></a>.</li>
1030     <li class=ed>If <code>NOTATION_ATTR</code> on an <code>EMPTY</code>
1031     element, then raise an
1032     <a href="#xml-validity-error" id=vc-no-notation-empty><code>xml-validity-error</code></a>.</li>
1033 wakaba 1.17 <li class=ed>@@ #defattrvalid Validity constraint: Attribute Default Value Syntactically Correct</li>
1034 wakaba 1.8 </ol>
1035     </dd>
1036 wakaba 1.1 <dt>If <var>n</var> is a <code>CDATASection</code> node</dt>
1037     <dd>
1038     <ol>
1039 wakaba 1.19 <li><a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">Validate the
1040 wakaba 1.1 <code>data</code> attribute value as an <abbr>XML</abbr> character
1041     data</a>.</li>
1042     <li>If the <code>data</code> attribute value contains
1043 wakaba 1.12 a string <code>]]></code>, then raise an
1044     <a href="#xml-well-formedness-error" id=wfe-cs-mse><code>xml-well-formedness-error</code></a>.<!-- "for compatibility" --></li>
1045 wakaba 1.1 <li>If the <code>childNodes</code> list of <var>n</var> contains
1046     any nodes, they are in
1047 wakaba 1.8 <a href="#xml-well-formedness-error" id=wfe-cs-child><code>xml-well-formedness-error</code></a>.</li>
1048 wakaba 1.1 </ol>
1049     </dd>
1050     <dt>If <var>n</var> is a <code>Comment</code> node</dt>
1051     <dd>
1052     <ol>
1053 wakaba 1.12 <li>Raise an
1054     <a href="#round-trip-warning" id=rtw-comment><code>round-trip-warning</code></a>.</li>
1055 wakaba 1.19 <li><a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">Validate the
1056 wakaba 1.1 <code>data</code> attribute value as an <abbr>XML</abbr> character
1057     data</a>.</li>
1058     <li>If the <code>data</code> attribute value contains
1059     a string <code>--</code>, or if it ends with a character
1060 wakaba 1.12 <code>-</code>, then raise an
1061     <a href="#xml-well-formedness-error" id=wfe-comment-com><code>xml-well-formedness-error</code></a>.<!--
1062     "for compatibility" --></li>
1063 wakaba 1.1 <li>If the <code>childNodes</code> list of <var>n</var> contains
1064     any nodes, they are in
1065 wakaba 1.8 <a href="#xml-well-formedness-error" id=wfe-comment-child><code>xml-well-formedness-error</code></a>.</li>
1066 wakaba 1.1 </ol>
1067     </dd>
1068     <dt>If <var>n</var> is a <code>Document</code> node</dt>
1069     <dd>
1070     <ol>
1071     <li>If <a href="#xml-version"><abbr>XML</abbr> version</a> of <var>n</var>
1072     is different from <code>1.0</code> or <code>1.1</code>,
1073     then it is an <code class=ed>unknown-error?</code>.</li>
1074     <li>If the <code>xmlEncoding</code> attribute value does <em>not</em>
1075     match to <code>[A-Za-z] ([A-Za-z0-9._] | '-')*</code>
1076 wakaba 1.8 <span class=ed>@@ formal def</span>, then it is an
1077 wakaba 1.1 <a href="#xml-well-formedness-error" id=wfe-encoding><code>xml-well-formedness-error</code></a>.</li>
1078     <li>The <code>childNodes</code> list of <var>n</var> have to
1079     consist of zero or more <code>Comment</code> and/or
1080     <code>ProcessingInstruction</code> nodes, followed by
1081     an optional <code>DocumentType</code> node, followed
1082     by zero or more <code>Comment</code> and/or
1083     <code>ProcessingInstruction</code> nodes, followed by
1084     an <code>Element</code> node, followed
1085     by zero or more <code>Comment</code> and/or
1086 wakaba 1.8 <code>ProcessingInstruction</code> nodes. Any violation to this is an
1087 wakaba 1.1 <a href="#xml-well-formedness-error" id=wfe-document-child><code>xml-well-formedness-error</code></a>.</li>
1088 wakaba 1.8 <li>For each node <dfn id=var-document-nc><var>n<sub><var>c</var></sub></var></dfn>
1089     in the <code>childNodes</code> list of <var>n</var>,
1090     <ol>
1091     <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> an
1092     <code>EntityReference</code> node, then
1093     <a href="#algorithm-to-check-a-node" title="check a node">check
1094     <var>n<sub><var>c</var></sub></var></a> recursively.</li>
1095     </ol></li>
1096 wakaba 1.1 <li class=ed>@@ <code>allDeclarationsProcessed</code></li>
1097     </ol>
1098     </dd>
1099     <dt>If <var>n</var> is a <code>DocumentFragment</code> node</dt>
1100     <dd>
1101     <ol>
1102 wakaba 1.8 <li>For each node <dfn id=var-df-nc><var>n<sub><var>c</var></sub></var></dfn>
1103     in the <code>childNodes</code> list of <var>n</var>,
1104     <ol>
1105     <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> an
1106     <code>Element</code>, <code>Text</code>, <code>CDATASection</code>,
1107     <code>Comment</code>, <code>ProcessingInstruction</code>, or
1108     <code>EntityReference</code> node, then it is an
1109     <a href="#xml-well-formedness-error" id=wfe-df-child><code>xml-well-formedness-error</code></a>.</li>
1110     <li>Otherwise, if <var>n<sub><var>c</var></sub></var> is an
1111     <code>EntityReference</code> node, then it is an
1112     <a href="#entity-error" id=ee-df-er><code>entity-error</code></a>.</li>
1113     <li>Otherwise,
1114     <a href="#algorithm-to-check-a-node" title="check a node">check
1115     <var>n<sub><var>c</var></sub></var></a> recursively.</li>
1116     </ol></li>
1117 wakaba 1.1 </ol>
1118     </dd>
1119     <dt>If <var>n</var> is a <code>DocumentType</code> node</dt>
1120     <dd>
1121     <ol>
1122 wakaba 1.18 <li><a href="#algorithm-to-validate-an-ncname">Validate the
1123 wakaba 1.1 <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
1124 wakaba 1.13 <li>Follow the following substeps:
1125     <ol>
1126     <li>If <code>ownerDocument</code> attribute of <var>n</var> is
1127     <code>null</code>, then abort these substeps.</li>
1128     <li>If <code>documentElement</code> attribute of the node
1129     set to <code>ownerDocument</code> attribute of <var>n</var> is
1130     <code>null</code>, then abort these substeps.</li>
1131     <li>If <code>nodeName</code> attribute of the node set to
1132     <code>documentElement</code> attribute of the node set to
1133     <code>ownerDocument</code> attribute of <var>n</var> is
1134     different from <code>nodeName</code> of <var>n</var>,
1135     then raise an
1136     <a href="#xml-validity-error" id=vc-roottype><code>xml-validity-error</code></a>.</li></li>
1137     </ol>
1138     </li>
1139 wakaba 1.5 <li><a href="#algorithm-to-validate-a-public-identifier" title="validate a public identifier">Validate
1140     the <code>publicId</code> attribute value as a public identifier</a>.</li>
1141 wakaba 1.18 <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
1142     the <code>systemId</code> attribute value as a system identifier</a>.</li>
1143     <li>If the <code>publicId</code> attribute value of <var>n</var> is
1144     <em>not</em> <code>null</code> and the <code>systemId</code> attribute
1145     value of <var>n</var> is <code>null</code>, then raise an
1146     <a href="#xml-well-formedness-error" id=wfe-dt-sid><code>xml-well-formedness-error</code></a>.
1147     <span class=ed>@@ publicId == null? Or, publicId == ""</span></li>
1148 wakaba 1.8 <li>For each node <dfn id=var-dt-nc><var>n<sub><var>c</var></sub></var></dfn>
1149     in the <code>childNodes</code> list of <var>n</var>,
1150     <ol>
1151     <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> a
1152     <code>ProcessingInstruction</code> node, then it is an
1153     <a href="#xml-well-formedness-error" id=wfe-dt-child><code>xml-well-formedness-error</code></a>.
1154     <span class=ed>@@ ref to manakai's extensions</span></li>
1155     <li>Otherwise, <!-- if n_c is not an EntityReference node, -->
1156     <a href="#algorithm-to-check-a-node" title="check a node">check
1157     <var>n<sub><var>c</var></sub></var></a> recusrively.</li>
1158     </ol></li>
1159 wakaba 1.18 <li>For each node in the <code>entities</code>, <code>notations</code>,
1160     and <code>elementTypes</code> lists of <var>n</var>,
1161     <a href="#algorithm-to-check-a-node" title="check a node">check the
1162     node</a> recursively.</li>
1163     <li class=ed>@@ externally declared?</li>
1164 wakaba 1.26 <li>If the <code>NamedNodeMap</code> object in the <code>entities</code>
1165     attribute of <var>n</var> does not contain <code>Entity</code> nodes
1166     whose <code>nodeName</code> attribute are <code>amp</code>,
1167     <code>lt</code>, <code>gt</code>, <code>apos</code>, and <code>quot</code>
1168     then raise
1169     <a href="#xml-misc-recommentation" id=xmr-predefined><code>xml-misc-recommendation</code></a>(s).
1170 wakaba 1.1 </ol>
1171     </dd>
1172     <dt>If <var>n</var> is an <code>Element</code> node</dt>
1173     <dd>
1174     <ol>
1175 wakaba 1.18 <li><a href="#algorithm-to-validate-an-ncname">Validate the
1176 wakaba 1.1 <code>localName</code> attribute value as an <code>NCName</code></a>.</li>
1177     <li>If the <code>prefix</code> attribute value is different from
1178 wakaba 1.18 <code>null</code>, then <a href="#algorithm-to-validate-an-ncname">validate
1179 wakaba 1.1 the <code>prefix</code> attribute value as an <code>NCName</code></a>.</li>
1180 wakaba 1.8 <li>For each node <dfn id=var-element-nc><var>n<sub><var>c</var></sub></var></dfn>
1181     in the <code>childNodes</code> list of <var>n</var>,
1182     <ol>
1183     <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> an
1184     <code>Element</code>,
1185     <code>Text</code>, <code>CDATASection</code>, <code>Comment</code>,
1186     <code>ProcessingInstruction</code>, or
1187     <code>EntityReference</code> node, then it is an
1188     <a href="#xml-well-formedness-error" id=wfe-element-child><code>xml-well-formedness-error</code></a>.</li>
1189     <li>Otherwise, if <var>n<sub><var>c</var></sub></var> is an
1190     <code>EntityReference</code> node, then it is an
1191     <a href="#entity-error" id=ee-element-er><code>entity-error</code></a>.</li>
1192     <li>Otherwise,
1193     <a href="#algorithm-to-check-a-node" title="check a node">check
1194     <var>n<sub><var>c</var></sub></var></a> recursively.</li>
1195     </ol></li>
1196 wakaba 1.15 <li class=ed>@@ #elementvalid Validity constraint: Element Valid</li>
1197 wakaba 1.18 <li>Let <var>attrs</var> be the value of the <code>attribute</code>
1198     attribute of <var>n</var>. Check conformance of <var>attrs</var>
1199     as following:
1200     <ol>
1201     <li>If <var>attrs</var> contains an <code>Attr</code> node whose
1202     <code>nodeName</code> attribute value is equal to that of another
1203     <code>Attr</code> node in <var>attrs</var>, then raise an
1204     <a href="#xml-well-formedness-error" id=wfe-uniqattspec><code>xml-well-formedness-error</code></a>.<!--
1205     #uniqattspec Well-formedness constraint: Unique Att Spec --></li>
1206     <li class=ed>@@ #RequiredAttr Validity constraint: Required Attribute</li>
1207     </ol>
1208     </li>
1209 wakaba 1.8 </ol>
1210     </dd>
1211     <dt>If <var>n</var> is an <code>ElementTypeDefinition</code> node</dt>
1212     <dd>
1213     <ol>
1214     <li class=ed></li>
1215 wakaba 1.1 <li>If the <code>childNodes</code> list of <var>n</var> contains
1216 wakaba 1.8 any nodes, they are in
1217     <a href="#xml-well-formedness-error" id=wfe-et-child><code>xml-well-formedness-error</code></a>.</li>
1218 wakaba 1.16 <li class=ed>@@ <q cite="http://www.w3.org/TR/2006/REC-xml-20060816/#elemdecls">At user option, an XML processor MAY issue a warning when a declaration mentions an element type for which no declaration is provided, but this is not an error.</q></li>
1219     <li class=ed>@@ <q cite="http://www.w3.org/TR/2006/REC-xml-20060816/#sec-element-content">For compatibility, it is an error if the content model allows an element to match more than one occurrence of an element type in the content model. </q></li>
1220     <li class=ed>@@ #vc-MixedChildrenUnique
1221     Validity constraint: No Duplicate Types</li>
1222     <li class=ed>@@ <q cite="http://www.w3.org/TR/2006/REC-xml-20060816/#attdecls">At user option, an XML processor MAY issue a warning if attributes are declared for an element type not itself declared, but this is not an error.</q></li>
1223     <li>If there is more than one <code>AttributeDefinition</code> node
1224     with <span class=ed>attribute type <code>ID</code></span> in the
1225     <code>NamedNodeMap</code> list contained in the
1226     <code>attributeDefinitions</code> attribute of <var>n</var>, then raise an
1227     <a href="#xml-validity-error" id=vc-one-id-per-el><code>xml-validity-error</code></a>.</li>
1228     <li>If there is more than one <code>AttributeDefinition</code> node
1229     with <span class=ed>attribute type <code>NOTATION</code></span> in the
1230     <code>NamedNodeMap</code> list contained in the
1231     <code>attributeDefinitions</code> attribute of <var>n</var>, then raise an
1232     <a href="#xml-validity-error" id=vc-one-notation-per><code>xml-validity-error</code></a>.</li>
1233     <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>
1234 wakaba 1.1 </ol>
1235     </dd>
1236 wakaba 1.18 <dt>If <var>n</var> is an <code>Entity</code> node whose
1237     <code>notationName</code> attribute value is <code>null</code> (i.e. a
1238     parsed entity)</dt>
1239 wakaba 1.1 <dd>
1240     <ol>
1241 wakaba 1.18 <li>Raise an
1242     <a href="#entity-error" id=ee-entity-node><code>entity-error</code></a>.</li>
1243     <li><a href="#algorithm-to-validate-an-ncname">Validate the
1244 wakaba 1.1 <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
1245 wakaba 1.5 <li><a href="#algorithm-to-validate-a-public-identifier" title="validate a public identifier">Validate
1246     the <code>publicId</code> attribute value as a public identifier</a>.</li>
1247 wakaba 1.18 <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
1248     the <code>systemId</code> attribute value as a system identifier</a>.</li>
1249     <li>If the <code>publicId</code> attribute value of <var>n</var> is
1250     <em>not</em> <code>null</code> and the <code>systemId</code> attribute
1251     value of <var>n</var> is <code>null</code>, then raise an
1252     <a href="#xml-well-formedness-error" id=wfe-entity-sid><code>xml-well-formedness-error</code></a>.</li>
1253 wakaba 1.8 <li>For each node <dfn id=var-entity-nc><var>n<sub><var>c</var></sub></var></dfn>
1254     in the <code>childNodes</code> list of <var>n</var>,
1255     <ol>
1256     <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> an
1257     <code>Element</code>,
1258     <code>Text</code>, <code>CDATASection</code>, <code>Comment</code>,
1259     <code>ProcessingInstruction</code>, or <code>EntityReference</code>
1260     node, then it is an
1261     <a href="#xml-well-formedness-error" id=wfe-entity-child><code>xml-well-formedness-error</code></a>.</li>
1262     <li>Otherwise, if <var>n<sub><var>c</var></sub></var> is an
1263     <code>EntityReference</code> node, then it is an
1264     <a href="#entity-error" id=ee-er-er><code>entity-error</code></a>.</li>
1265     <li>Otherwise,
1266     <a href="#algorithm-to-check-a-node" title="check a node">check
1267     <var>n<sub><var>c</var></sub></var></a> recursively.</li>
1268     </ol></li>
1269 wakaba 1.1 </ol>
1270     </dd>
1271 wakaba 1.18 <dt>If <var>n</var> is an <code>Entity</code> node whose
1272     <code>notationName</code> attribute value is <em>not</em> <code>null</code>
1273     (i.e. an unparsed entity)</dt>
1274     <dd>
1275     <ol>
1276     <li><a href="#algorithm-to-validate-an-ncname">Validate the
1277     <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
1278     <li><a href="#algorithm-to-validate-a-public-identifier" title="validate a public identifier">Validate
1279     the <code>publicId</code> attribute value as a public identifier</a>.</li>
1280     <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
1281     the <code>systemId</code> attribute value as a system identifier</a>.</li>
1282     <li>If the <code>systemId</code> attribute value of <var>n</var> is
1283     <code>null</code>, then raise an
1284     <a href="#xml-well-formedness-error" id=wfe-uentity-sid><code>xml-well-formedness-error</code></a>.</li>
1285     <li><a href="#algorithm-to-validate-an-ncname">Validate the
1286     <code>notationName</code> attribute value of <var>n</var> as an
1287     <code>NCName</code></a>.</li>
1288     <li class=ed>@@ #not-declared Validity constraint: Notation Declared</li>
1289     <li>If the <code>childNodes</code> list of <var>n</var> contains
1290     any nodes, they are in
1291     <a href="#xml-well-formedness-error" id=wfe-uentity-child><code>xml-well-formedness-error</code></a>.</li>
1292     </ol>
1293     </dd>
1294 wakaba 1.1 <dt>If <var>n</var> is an <code>EntityReference</code> node</dt>
1295     <dd>
1296     <ol>
1297     <li>An <a href="#entity-error" id=ee-er-node><code>entity-error</code></a>.</li>
1298 wakaba 1.18 <li><a href="#algorithm-to-validate-an-ncname">Validate the
1299 wakaba 1.1 <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
1300 wakaba 1.8 <li>For each node <dfn id=var-er-nc><var>n<sub><var>c</var></sub></var></dfn>
1301     in the <code>childNodes</code> list of <var>n</var>,
1302     <ol>
1303     <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> an
1304     <code>Element</code>,
1305     <code>Text</code>, <code>CDATASection</code>, <code>Comment</code>,
1306     <code>ProcessingInstruction</code>, or <code>EntityReference</code>
1307     node, then it is an
1308     <a href="#xml-well-formedness-error" id=wfe-er-child><code>xml-well-formedness-error</code></a>.</li>
1309     <li>Otherwise, if <var>n<sub><var>c</var></sub></var> is <em>not</em> an
1310     <code>EntityReference</code> node, then it is an
1311     <a href="#entity-error" id=ee-entity-er><code>entity-error</code></a>.</li>
1312     <li>Otherwise,
1313     <a href="#algorithm-to-check-a-node" title="check a node">check
1314     <var>n<sub><var>c</var></sub></var></a> recursively.</li>
1315     </ol></li>
1316 wakaba 1.1 </ol>
1317     </dd>
1318     <dt>If <var>n</var> is a <code>Notation</code> node</dt>
1319     <dd>
1320     <ol>
1321 wakaba 1.18 <li><a href="#algorithm-to-validate-an-ncname">Validate the
1322 wakaba 1.1 <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
1323 wakaba 1.5 <li><a href="#algorithm-to-validate-a-public-identifier" title="validate a public identifier">Validate
1324     the <code>publicId</code> attribute value as a public identifier</a>.</li>
1325 wakaba 1.18 <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
1326     the <code>systemId</code> attribute value as a system identifier</a>.</li>
1327 wakaba 1.1 <li>If the <code>childNodes</code> list of <var>n</var> contains
1328     any nodes, they are in
1329 wakaba 1.8 <a href="#xml-well-formedness-error" id=wfe-notation-child><code>xml-well-formedness-error</code></a>.</li>
1330 wakaba 1.1 </ol>
1331     </dd>
1332     <dt>If <var>n</var> is a <code>ProcessingInstruction</code> node</dt>
1333     <dd>
1334     <ol>
1335 wakaba 1.13 <li>If the <code>target</code> attribute value matches to the string
1336     <code>xml</code> in any case combination, then raise a
1337     <a href="#xml-well-formedness-error" id=wfe-pi-xml><code>xml-well-formedness-error</code></a>.</li>
1338 wakaba 1.18 <li>Otherwise, <a href="#algorithm-to-validate-an-ncname">validate the
1339 wakaba 1.1 <code>target</code> attribute value as an <code>NCName</code></a>.</li>
1340 wakaba 1.13 <li>Then,
1341 wakaba 1.19 <a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">validate
1342 wakaba 1.13 the <code>data</code> attribute value as an <abbr>XML</abbr> character
1343 wakaba 1.1 data</a>.</li>
1344 wakaba 1.13 <li>If the <code>data</code> attribute value contains a string
1345     <code>?></code>, then raise a
1346     <a href="#xml-well-formedness-error" id=wfe-pi-pic><code>xml-well-formedness-error</code></a>.</li>
1347     <li>If the <code>data</code> attribute value starts with either
1348     <code class=char>U+0009</code> <code class=charname>CHARACTER
1349     TABULATION</code>, <code class=char>U+000A</code> <code class=charname>LINE
1350     FEED</code>, <code class=char>U+000D</code> <code class=charname>CARRIAGE
1351     RETURN</code>, or <code class=char>U+0020</code>
1352     <code class=charname>SPACE</code> character, then raise a
1353     <a href="#round-trip-error" id=rte-pi-s><code>round-trip-error</code></a>.</li>
1354 wakaba 1.1 <li>If the <code>childNodes</code> list of <var>n</var> contains
1355 wakaba 1.13 any nodes, then raise an
1356 wakaba 1.8 <a href="#xml-well-formedness-error" id=wfe-pi-child><code>xml-well-formedness-error</code></a>.</li>
1357 wakaba 1.27 <li class=ed>@@ Warn if not declared
1358 wakaba 1.1 </ol>
1359     </dd>
1360     <dt>If <var>n</var> is a <code>Text</code> node</dt>
1361     <dd>
1362     <ol>
1363 wakaba 1.19 <li><a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">Validate the
1364 wakaba 1.1 <code>data</code> attribute value as an <abbr>XML</abbr> character
1365     data</a>.</li>
1366     <li>If the <code>childNodes</code> list of <var>n</var> contains
1367     any nodes, they are in
1368 wakaba 1.8 <a href="#xml-well-formedness-error" id=wfe-text-child><code>xml-well-formedness-error</code></a>.</li>
1369 wakaba 1.1 </ol>
1370     </dd>
1371     <dt>Otherwise</dt>
1372     <dd><span class=ed>xml-well-formedness-error? unknown-error?</span></dd>
1373     </dl>
1374    
1375 wakaba 1.11 </div>
1376    
1377     </div>
1378    
1379     <div id=classes class=section>
1380     <h2>Character Classes</h2>
1381    
1382     <p>This section defines a couple of character classes.
1383     These classes are referred to by algorithms specified above.</p>
1384    
1385     <p>Character class <dfn id=class-Char10><code>Char10</code></dfn>
1386     contains the following characters:</p>
1387     <ul>
1388     <li><code class=char>U+0009</code> <code class=charname>CHARACTER
1389     TABULATION</code></li>
1390     <li><code class=char>U+000A</code> <code class=charname>LINE FEED</code></li>
1391     <li><code class=char>U+000D</code> <code class=charname>CARRIAGE
1392     RETURN</code></li>
1393     <li><code class=char>U+0020</code> <code class=charname>SPACE</code>
1394     .. <code class=char>U+D7FF</code></li>
1395     <li><code class=char>U+E000</code> .. <code class=char>U+FFFD</code>
1396     <code class=charname>REPLACEMENT CHARACTER</code></li>
1397     <li><code class=char>U+10000</code> .. <code class=char>U+10FFFF</code></li>
1398     </ul>
1399     <div class="note memo">
1400     <p>This character class contains all characters allowed in the production rule
1401     <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-Char"><code>Char</code></a>
1402     of <abbr>XML</abbr> 1.0
1403     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>.</p>
1404     </div>
1405    
1406     <p>Character class <dfn id=class-CompatChar10><code>CompatChar10</code></dfn>
1407     contains the following characters:</p>
1408     <ul>
1409     <li class=ed>@@ <q>Document authors are encouraged to avoid "compatibility characters", as defined in section 6.8 of [Unicode @@ Unicode 2.0 @@] (see also D21 in section 3.6 of [Unicode3]).</q></li>
1410     </ul>
1411    
1412     <p>Character class <dfn id=class-ControlChar10><code>ControlChar10</code></dfn>
1413     contains the following characters:</p>
1414     <ul>
1415     <li><code class=char>U+007F</code> <code class=charname>DELETE</code> ..
1416     <code class=char>U+0084</code> <code class=charname>INDEX</code></li>
1417     <li><code class=char>U+0086</code> <code class=charname>START OF SELECTED
1418     AREA</code> .. <code class=char>U+009F</code> <code class=charname>APPLICATION
1419     PROGRAM COMMAND</code></li>
1420     <li><code class=char>U+FDD0</code> .. <code class=char>U+FDEF</code></li>
1421     <li><code class=char>U+1FFFE</code> .. <code class=char>U+1FFFF</code></li>
1422     <li><code class=char>U+2FFFE</code> .. <code class=char>U+2FFFF</code></li>
1423     <li><code class=char>U+3FFFE</code> .. <code class=char>U+3FFFF</code></li>
1424     <li><code class=char>U+4FFFE</code> .. <code class=char>U+4FFFF</code></li>
1425     <li><code class=char>U+5FFFE</code> .. <code class=char>U+5FFFF</code></li>
1426     <li><code class=char>U+6FFFE</code> .. <code class=char>U+6FFFF</code></li>
1427     <li><code class=char>U+7FFFE</code> .. <code class=char>U+7FFFF</code></li>
1428     <li><code class=char>U+8FFFE</code> .. <code class=char>U+8FFFF</code></li>
1429     <li><code class=char>U+9FFFE</code> .. <code class=char>U+9FFFF</code></li>
1430     <li><code class=char>U+AFFFE</code> .. <code class=char>U+AFFFF</code></li>
1431     <li><code class=char>U+BFFFE</code> .. <code class=char>U+BFFFF</code></li>
1432     <li><code class=char>U+CFFFE</code> .. <code class=char>U+CFFFF</code></li>
1433     <li><code class=char>U+DFFFE</code> .. <code class=char>U+DFFFF</code></li>
1434     <li><code class=char>U+EFFFE</code> .. <code class=char>U+EFFFF</code></li>
1435     <li><code class=char>U+FFFFE</code> .. <code class=char>U+FFFFF</code></li>
1436     <li><code class=char>U+10FFFE</code> .. <code class=char>U+10FFFF</code></li>
1437     </ul>
1438     <div class="note memo">
1439     <p>This character class contains the characters listed in the Note in
1440     <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#charsets">Section 2.2</a>
1441     of <abbr>XML</abbr> 1.0
1442     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>,
1443     as amended by
1444     <a href="http://www.w3.org/XML/xml-V10-4e-errata#E02">errata</a>.</p>
1445 wakaba 1.1 </div>
1446 wakaba 1.19
1447     <p>The character class <dfn id=class-NameStartChar10><code>NameStartChar10</code></dfn>
1448     contains the following characters:</p>
1449     <ul class=ed>
1450     </ul>
1451 wakaba 1.20 <div class="note memo">
1452     <p>This character class contains all characters allowed as the first character
1453     of a string matching to the production rule
1454     <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-Name"><code>Name</code></a>
1455     of <abbr>XML</abbr> 1.0
1456     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>.</p>
1457     </div>
1458 wakaba 1.19
1459     <p>The character class <dfn id=class-NameChar10><code>NameChar10</code></dfn>
1460     contains the following characters:</p>
1461     <ul>
1462     <li>The characters in the character class
1463     <a href="#class-NameStartChar10">NameStartChar10</a>.</li>
1464     <li class=ed></li>
1465     </ul>
1466 wakaba 1.20 <div class="note memo">
1467     <p>This character class contains all characters allowed as the second
1468     character of a string matching to the production rule
1469     <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-Name"><code>Name</code></a>
1470     of <abbr>XML</abbr> 1.0
1471     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>.</p>
1472     </div>
1473    
1474     <p>The character class <dfn id=class-PubidChar><code>PubidChar</code></dfn>
1475     contains the following characters:</p>
1476     <ul>
1477     <li><code class=char>U+0009</code> <code class=charname>CHARACTER
1478     TABULATION</code></li>
1479     <li><code class=char>U+000A</code> <code class=charname>LINE FEED</code></li>
1480     <li><code class=char>U+000D</code> <code class=charname>CARRIAGE
1481     RETURN</code></li>
1482     <li><code class=char>U+0020</code> <code class=charname>SPACE</code></li>
1483     <li><code class=char>U+0021</code> <code class=charname>EXCLAMATION MARK</code>
1484     (<code class=char>!</code>)</li>
1485     <li><code class=char>U+0023</code> <code class=charname>DOLLAR SIGN</code>
1486     (<code class=char>$</code>)</li>
1487     <li><code class=char>U+0024</code> <code class=charname>NUMBER SIGN</code>
1488     (<code class=char>#</code>)</li>
1489     <li><code class=char>U+0025</code> <code class=charname>PERCENT SIGN</code>
1490     (<code class=char>%</code>)</li>
1491     <li><code class=char>U+0027</code> <code class=charname>APOSTROPHE</code>
1492     (<code class=char>'</code>)</li>
1493     <li><code class=char>U+0028</code> <code class=charname>LEFT PARENTHESIS</code>
1494     (<code class=char>(</code>)</li>
1495     <li><code class=char>U+0029</code> <code class=charname>RIGHT
1496     PARENTHESIS</code> (<code class=char>)</code>)</li>
1497     <li><code class=char>U+002A</code> <code class=charname>ASTERISK</code>
1498     (<code class=char>*</code>)</li>
1499     <li><code class=char>U+002B</code> <code class=charname>PLUS SIGN</code>
1500     (<code class=char>+</code>)</li>
1501     <li><code class=char>U+002C</code> <code class=charname>COMMA</code>
1502     (<code class=char>,</code>)</li>
1503     <li><code class=char>U+002D</code> <code class=charname>HYPHEN-MINUS</code>
1504     (<code class=char>-</code>)</li>
1505     <li><code class=char>U+002E</code> <code class=charname>FULL STOP</code>
1506     (<code class=char>.</code>)</li>
1507     <li><code class=char>U+002F</code> <code class=charname>SOLIDUS</code>
1508     (<code class=char>/</code>)</li>
1509 wakaba 1.21 <li><code class=char>U+0030</code> <code class=charname>DIGIT ZERO</code>
1510     (<code class=char>0</code>) .. <code class=char>U+0039</code>
1511     <code class=charname>DIGIT NINE</code> (<code class=char>9</code>)</li>
1512 wakaba 1.20 <li><code class=char>U+003A</code> <code class=charname>COLON</code>
1513     (<code class=char>:</code>)</li>
1514     <li><code class=char>U+003B</code> <code class=charname>SEMICOLON</code>
1515     (<code class=char>;</code>)</li>
1516     <li><code class=char>U+003D</code> <code class=charname>EQUAL SIGN</code>
1517     (<code class=char>=</code>)</li>
1518     <li><code class=char>U+003F</code> <code class=charname>QUESTION MARK</code>
1519     (<code class=char>?</code>)</li>
1520     <li><code class=char>U+0040</code> <code class=charname>COMMERCIAL AT</code>
1521     (<code class=char>@</code>)</li>
1522 wakaba 1.21 <li><code class=char>U+0041</code> <code class=charname>LATIN CAPITAL LETTER
1523     A</code> (<code class=char>A</code>) .. <code class=char>U+005A</code>
1524     <code class=charname>LATIN CAPITAL LETTER Z</code>
1525     (<code class=char>Z</code>)</li>
1526 wakaba 1.20 <li><code class=char>U+005F</code> <code class=charname>LOW LINE</code>
1527     (<code class=char>_</code>)</li>
1528 wakaba 1.21 <li><code class=char>U+0061</code> <code class=charname>LATIN CAPITAL LETTER
1529     A</code> (<code class=char>A</code>) .. <code class=char>U+007A</code>
1530     <code class=charname>LATIN CAPITAL LETTER Z</code>
1531     (<code class=char>Z</code>)</li>
1532 wakaba 1.20 </ul>
1533     <div class="note memo">
1534     <p>This character class contains all characters allowed in the production rule
1535     <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-PubidChar"><code>PubidChar</code></a>
1536     of <abbr>XML</abbr> 1.0
1537     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>.</p>
1538     </div>
1539 wakaba 1.1
1540     </div>
1541    
1542     <div id="references" class="section reference">
1543     <h2>References</h2>
1544    
1545     <div id="normative-references" class="section normative reference">
1546     <h3>Normative References</h3>
1547    
1548     <dl>
1549 wakaba 1.3 <dt id=ref-DOM3CORE>DOM3CORE</dt>
1550     <dd class=ed>@@ W3C DOM Level 3 Core</dd>
1551     <dt id=ref-DOMDTDEF>DOMDTDEF</dt>
1552     <dd class=ed>@@ manakai's extension to DOM for document type definitions</dd>
1553 wakaba 1.1 <dt id="ref-KEYWORDS">KEYWORDS</dt>
1554     <dd><cite><a href="urn:ietf:rfc:2119">Key words for use in
1555     <abbr>RFCs</abbr> to Indicate Requirement Levels</a></cite>,
1556     <abbr title="Internet Engineering Task Force">IETF</abbr>
1557     <a href="urn:ietf:bcp:14"><abbr title="Best Current Practice">BCP</abbr>
1558     14</a>, <abbr title="Request for Comments">RFC</abbr> 2119,
1559     <time datetime=1997-03>March 1997</time>.
1560     <em>This</em> version of the specification is referenced.</dd>
1561     <dt id=ref-INFOSET>INFOSET</dt>
1562     <dd class=ed>@@</dd>
1563     <dt id=ref-XML10">XML10</dt>
1564     <dd><cite><a href="http://www.w3.org/TR/2006/REC-xml-20060816">Extensible
1565     Markup Language (<abbr>XML</abbr>) 1.0 (Fourth Edition)</a></cite>,
1566     <abbr>W3C</abbr> Recommendation, <time datetime=2006-08-16>16 August
1567     2006</time>, edited in place <time datetime=2006-09-29>29 September
1568     2006</time>. Tje latest version of the specification is available at
1569     <code class=uri>&lt;<a href="http://www.w3.org/TR/xml">http://www.w3.org/TR/xml</a>&gt;</code>.
1570     <em>This</em> version of the specification is referenced.</dd>
1571     <dt id=ref-XML11>XML11</dt>
1572     <dd class=ed>@@</dd>
1573     </dl>
1574     </div>
1575    
1576     <div id="informative-references" class="section informative reference">
1577     <h3>Non$B!>(Bnormative References</h3>
1578    
1579     <dl class=ed>
1580     <dt id=ref-CSS>CSS</dt>
1581     <dd><cite><a href="http://www.w3.org/TR/2007/CR-CSS21-20070719">Cascading
1582     Style Sheets Level 2 Revision 1 (<abbr>CSS</abbr> 2.1)
1583     Specification</a></cite>,
1584     <abbr title="World Wide Web Consortium">W3C</abbr> Candidate
1585     Recommendation, <time datetime=2007-07-19>19 July 2007</time>.
1586     Work in progress. The latest version of the specification is
1587     available at
1588     <code class=URI>&lt;<a href="http://www.w3.org/TR/CSS21">http://www.w3.org/TR/CSS21</a>></code>.</dd>
1589     <dt id=ref-CSSOM>CSSOM</dt>
1590     <dd><cite><a href="http://dev.w3.org/cvsweb/~checkout~/csswg/cssom/Overview.html?rev=1.55&amp;content-type=text/html;%20charset=utf-8">Cascading
1591     Style Sheets Object Model (<abbr>CSSOM</abbr>)</a></cite>,
1592     <abbr title="World Wide Web Consortium">W3C</abbr> Editor's Draft,
1593     <time datetime=2007-06-18>18 June 2007</time>. Work in progress.
1594     The latest Editor's Draft of the specification is available at
1595     <code class=URI>&lt;<a href="http://dev.w3.org/csswg/cssom/Overview.html">http://dev.w3.org/csswg/cssom/Overview.html</a>></code>.</dd>
1596     <dt id=ref-HTML5>HTML5</dt>
1597     <dd><cite><a href="http://whatwg.org/html5"><abbr>HTML</abbr> 5</a></cite>,
1598     <abbr title="Web Hypertext Application Technology Working Group">WHATWG</abbr>
1599     Working Draft. Work in progress.</dd>
1600     <dt id=ref-SAPI>SAPI</dt>
1601     <dd><cite><a href="http://dev.w3.org/cvsweb/~checkout~/2006/webapi/selectors-api/Overview.html?rev=1.28&amp;content-type=text/html;%20charset=utf-8">Selectors <abbr>API</abbr></a></cite>,
1602     <abbr title="World Wide Web Consortium">W3C</abbr> Editor's Draft,
1603     <time datetime=2007-08-29>29 August 2007</time>. Work in progress.
1604     The latest Editor's Draft of the specification is available at
1605     <code class=URI>&lt;<a href="http://dev.w3.org/2006/webapi/selectors-api/Overview.html">http://dev.w3.org/2006/webapi/selectors-api/Overview.html</a>></code>.
1606     The latest published version of the specification is available at
1607     <code class=URI>&lt;<a href="http://www.w3.org/TR/selectors-api/">http://www.w3.org/TR/selectors-api/</a>></code>.</dd>
1608     <dt id=XBL2>XBL2</dt>
1609     <dd><cite><a href="http://www.mozilla.org/projects/xbl/xbl2.html"><abbr>XBL</abbr>
1610     2.0</a></cite>, Mozilla.org, <time datetime=2007-03-15>15 Mar 2007</time>.
1611     Work in progress. The latest
1612     <abbr title="World Wide Web Consortium">W3C</abbr>$B!>(Bpublished
1613     version of the specification is available at
1614     <code class=URI>&lt;<a href="http://www.w3.org/TR/xbl/">http://www.w3.org/TR/xbl/</a>></code>.</dd>
1615 wakaba 1.3 <dt id=ref-XML5>XML5</dt>
1616     <dd class=ed>@@</dd>
1617 wakaba 1.1 </dl>
1618     </div>
1619    
1620     </div>
1621    
1622     </body>
1623     </html>

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24