/[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.22 - (hide annotations) (download) (as text)
Sun Mar 16 12:33:53 2008 UTC (16 years, 1 month ago) by wakaba
Branch: MAIN
Changes since 1.21: +44 -28 lines
File MIME type: text/html
Use MUST for parsing section

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.22 <h2>Working Draft <time datetime=2008-03-16>16 March 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     <p>Comments on this document are welcome and
83     may be sent to the <a href="#author">author</a>.</p>
84    
85     <p>Translations of thie document might be available.
86     The English version of the document is the only
87     normative version.</p>
88     </div>
89    
90     <div id="introduction" class="section">
91     <h2>Introduction</h2>
92    
93     <p class=section-info>This section is <em>non$B!>(Bnormative</em>.</p>
94    
95     <div class="issue ed">...</div>
96    
97    
98     </div>
99    
100     <div class="section" id="terminology">
101     <h2>Terminology</h2>
102    
103     <p>The key words <q><em class="rfc2119">MUST</em></q>,
104     <q><em class="rfc2119">MUST NOT</em></q>,
105     <q><em class="rfc2119">SHOULD</em></q>,
106     <q><em class="rfc2119">SHOULD NOT</em></q>, and
107     <q><em class=rfc2119>MAY</em></q> in this
108     document are to be interpreted as described in
109     <a href="urn:ietf:rfc:2119"><abbr title="Request for Comments">RFC</abbr>
110     2119</a>
111     <cite class="bibref normative">[<a href="#ref-KEYWORDS">KEYWORDS</a>]</cite>.</p>
112    
113     <!-- Strictly speaking the paragraph below is not part of terminology. -->
114     <p>All examples and notes in this specification are non$B!>(Bnormative,
115     as are all sections explicitly marked non$B!>(Bnormative. Everything
116     else in this specification is normative.</p>
117    
118     <p><span class=ed>Algorithm is normative but non-normative</span>.
119     In addition, the order in which <a href="#errors">errors</a> are
120     raised is undefined.</p>
121 wakaba 1.22
122     <p>This document sometimes cites parts of <abbr>XML</abbr> 1.0 specification
123     by hyperlinks. When the document being processed is an <abbr>XML</abbr> 1.1
124     document, however, corresponding parts of the <abbr>XML</abbr> 1.1
125     specification should be consulted instead.</p>
126 wakaba 1.1 </div>
127    
128    
129 wakaba 1.9 <div class=section id=error-categories>
130 wakaba 1.14 <h2>Error Classification</h2>
131 wakaba 1.9
132 wakaba 1.1 <p class=ed>If a <code>Document</code> node has no
133     xml-well-formedness-error, entity-error, and unknown-error,
134     then it is well-formed. If a well-formed <code>Document</code>
135     node has no xml-validity-error, it is valid.</p>
136    
137     <div class="note memo">
138     <p>A well$B!>(Bformed <code>Document</code> can be safely serialized
139     into a well$B!>(Bformed XML document. A valid <code>Document</code>
140     can be easily serialized into a valid XML document.</p>
141     </div>
142    
143 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>,
144     ...</p>
145    
146 wakaba 1.1 <p>Errors are classified into these
147     <dfn id=error-category title="error category">error categories</dfn>:</p>
148    
149     <dl id=errors>
150     <dt><dfn id=entity-error><code>entity-error</code></dfn></dt>
151 wakaba 1.4 <dd>
152     <p class=ed>@@</p>
153     <div class="note memo">
154     <p>This <span class=ed>algorithm</span> does not support
155     <abbr>DOM</abbr> tree with one or more <code>EntityReference</code>
156     nodes. It is expected that any entity references are expanded
157     at the parse time and any unexpandable entity references
158     make parse time errors raised so that never result in
159     <abbr>DOM</abbr> tree with <code>EntityReference</code> nodes.</p>
160     </div>
161     </dd>
162 wakaba 1.1 <dt><dfn id=round-trip-error><code>round-trip-error</code></dfn></dt>
163     <dd class=ed>@@</dd>
164 wakaba 1.12 <dt><dfn id=round-trip-warning><code>round-trip-warning</code></dfn></dt>
165     <dd>
166     <p>A <a href="#round-trip-warning"><code>round-trip-warning</code></a>
167     will be raised when a construct, which might not be restored to the same
168     construct when it is serialized and then re-parsed by a conforming
169     processor, is encountered.</p>
170     <div class="example memo">
171     <p>For a <code>Comment</code> node a
172     <a href="#round-trip-warning"><code>round-trip-warning</code></a> will
173     be raised, since <abbr>XML</abbr> processors are not required to
174     report texts of comments for applications.</p>
175     </div>
176     </dd>
177 wakaba 1.1 <dt class=ed><dfn id=unknown-error><code>unknown-error</code></dfn>?</dt>
178     <dd class=ed>@@</dd>
179     <dt><dfn id=xml-misc-error><code>xml-misc-error</code></dt>
180     <dd>An <abbr>XML</abbr> <i>error</i> (<abbr>XML</abbr> 1.0
181     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>
182     <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#dt-error">error</a> /
183     <abbr>XML</abbr> 1.1
184     <cite class="bibref normative">[<a href="#ref-XML11">XML11</a>]</cite>
185     <a href="@@/#dt-error">error</a>)
186     that is not classified to any other <a href="#error-category">error
187     category</a>.</dd>
188     <dt><dfn id=xml-misc-fatal-error><code>xml-misc-fatal-error</code></dt>
189     <dd>An <abbr>XML</abbr> <i>fatal error</i> (<abbr>XML</abbr> 1.0
190     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>
191     <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#dt-fatal">fatal
192     error</a> / <abbr>XML</abbr> 1.1
193     <cite class="bibref normative">[<a href="#ref-XML11">XML11</a>]</cite>
194     <a href="@@/#dt-fatal">fatal error</a>)
195     that is not classified to any other <a href="#error-category">error
196     category</a>. <span class=ed>@@ What errors fall into this category?</span></dd>
197 wakaba 1.13 <dt><dfn id=xml-misc-recommendation><code>xml-misc-recommendation</code></dfn></dt>
198     <dd>
199     <p>An
200     <a href="#xml-misc-recommendation"><code>xml-misc-recommendation</code></a>
201     will be raised if a <em class=rfc2119>SHOULD</em>$B!>(Blevel requirement
202     in <abbr>XML</abbr> specification is not met.</p>
203     </dd>
204 wakaba 1.1 <dt><dfn id=xml-validity-error><code>xml-validity-error</code></dfn></dt>
205     <dd>A violation of validity constraint in XML document.</dd>
206     <dt><dfn id=xml-well-formedness-error><code>xml-well-formedness-error</code></dfn></dt>
207     <dd><p>If an <code>xml-well-formedness-error</code> is raised,
208     it would not be possible to generate an XML serialization that
209     would match to the appropriate production rule and that would not
210     violate to any well$B!>(Bformedness constraint in XML
211     specification <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>,
212     <a href="#ref-XML11">XML11</a>]</cite>.</p></dd>
213     </dl>
214    
215     <div class=ed><p>@@ TODO: #dt-atuseroption at user option
216     (MAY or MUST), #dt-compat for compatibility,
217     #dt-interop for interoperability</p></div>
218    
219 wakaba 1.9 </div>
220 wakaba 1.14
221     <div class=section id=parsing-xml>
222     <h2>Parsing <abbr>XML</abbr> Document</h2>
223    
224 wakaba 1.22 <p>When an <abbr>XML</abbr> document is parsed, the following clauses
225     are applied:</p>
226     <dl>
227     <dt>For each document
228     <dd>If the <abbr>XML</abbr> document does not begin with an
229     <abbr>XML</abbr> declaration, then the parser <em class=rfc2119>MUST</em>
230     raise an
231     <a href="#xml-misc-recommentation" id=xmr-xml-decl><code>xml-misc-recommendation</code></a>.
232     <dt>For each internal general entity declaration processed by the parser
233     <dd>If the
234     <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-EntityValue"><code>EntityValue</code></a>
235     part of the general entity declaration contains a bare <code>U+003C</code>
236     <code>LESS-THAN SIGN</code> (<code>&lt;</code>) character, then the parser
237     <em class=rfc2119>MUST</em> raise an
238     <a href="#xml-misc-warning" id=xmw-entity-value-lt><code>xml-misc-warning</code></a>.<!--
239 wakaba 1.14 "strongly advised to avoid" in a Note in Section 2.3 of [XML10], [XML11].
240 wakaba 1.22 -->
241     <dt>For each element type declaration processed by the parser
242     <dd>If there is another element type declaration whose <code>Name</code>
243     is equal to the <code>Name</code> of the element type declaration, then
244     the parser <em class=rfc2119>MUST</em> raise an
245     <a href="#xml-validity-error" id=vc-edunique><code>xml-validity-error</code></a>.
246     <!--
247     NOTE: <!ATTLIST a xml:space (default) #IMPLIED xml:space CDATA #IMPLIED>
248     will not be warned.
249     -->
250     <dt>For each empty-element tag
251     <dd>If the <code>Name</code> of the tag is not declared by a processed
252     element type declaration as <code>EMPTY</code> content, then the parser
253     <em class=rfc2119>MUST</em> raise an
254     <a href="#xml-misc-recommentation" id=xmr-emptyelemtag-not-empty><code>xml-misc-recommendation</code></a>.
255     <dt>For each start-tag
256     <dd>If the <code>Name</code> of the tag is declared by a processed element
257     type declaration as <code>EMPTY</code> content, then the parser
258     <em class=rfc2119>MUST</em> raise an
259     <a href="#xml-misc-recommentation" id=xmr-empty-not-emptyelemtag><code>xml-misc-recommendation</code></a>.
260 wakaba 1.14 <!--
261    
262     #vc-PEinMarkupDecl Validity constraint: Proper Declaration/PE Nesting
263     #wfc-PEinInternalSubset Well-formedness constraint: PEs in Internal Subset
264     #ExtSubset Well-formedness constraint: External Subset
265     #PE-between-Decls Well-formedness constraint: PE Between Declarations
266 wakaba 1.15 #GIMatch Well-formedness constraint: Element Type Match
267     #uniqattspec Well-formedness constraint: Unique Att Spec
268     #NoExternalRefs Well-formedness constraint: No External Entity References
269     #CleanAttrVals Well-formedness constraint: No < in Attribute Values
270 wakaba 1.16 #vc-PEinGroup Validity constraint: Proper Group/PE Nesting
271     "For interoperability, if a parameter-entity reference appears in a choice, seq, or Mixed construct, its replacement text SHOULD contain at least one non-blank character, and neither the first nor last non-blank character of the replacement text SHOULD be a connector (| or ,)."
272     "For interoperability, an XML processor MAY at user option issue a warning when more than one attribute-list declaration is provided for a given element type, or more than one attribute definition is provided for a given attribute, but this is not an error."
273 wakaba 1.17 #condsec-nesting Validity constraint: Proper Conditional Section/PE Nesting
274     #wf-Legalchar Well-formedness constraint: Legal Character
275     #textent Well-formedness constraint: Parsed Entity
276     #norecursion Well-formedness constraint: No Recursion
277     #indtd Well-formedness constraint: In DTD
278     "External parsed entities SHOULD each begin with a text declaration."
279     "It is an error for a reference to an unparsed entity to appear in the EntityValue in an entity declaration."
280     #UniqueNotationName Validity constraint: Unique Notation Name
281 wakaba 1.14
282     @@ Need detailed review, but maybe should be in parsing phase
283    
284     #vc-check-rmd Validity constraint: Standalone Document Declaration
285    
286 wakaba 1.17 @@ Need dtailed review
287    
288     #wf-entdeclared Well-formedness constraint: Entity Declared
289     #vc-entdeclared Validity constraint: Entity Declared
290     "For interoperability, valid documents SHOULD declare the entities amp, lt, gt, apos, quot, in the form specified in 4.6 Predefined Entities."
291     "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)."
292    
293     @@ flaged and then reported in DOM check phase
294    
295     "Entities encoded in UTF-16 MUST and entities encoded in UTF-8 MAY begin with the Byte Order Mark"
296     "In the absence of external character encoding information (such as MIME headers), parsed entities which are stored in an encoding other than UTF-8 or UTF-16 MUST begin with a text declaration"
297     "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."
298    
299     @@ in parsing phase
300    
301     "It is a fatal error when an XML processor encounters an entity with an encoding that it is unable to process. It is a fatal error if an XML entity is determined (via default, encoding declaration, or higher-level protocol) to be in a certain encoding but contains byte sequences that are not legal in that encoding."
302    
303 wakaba 1.14 -->
304 wakaba 1.22 </dl>
305 wakaba 1.14 </div>
306    
307     <div class="section" id=checking-dom>
308     <h2>Checking <abbr>DOM</abbr></h2>
309    
310     <p>The following algorithms and definitions are applied to
311     <abbr>XML</abbr> documents; especially, they are not applied
312     to <abbr>HTML</abbr> documents.<!-- TODO: ref to HTML5 --></p>
313 wakaba 1.9
314     <div class=section id=definitions>
315     <h3>Definitions</h3>
316    
317 wakaba 1.1 <p>The <dfn id=xml-version><abbr>XML</abbr> version</dfn> of a node is
318     the <abbr>XML</abbr> version of the document to which the node belongs.
319     For a <code>Documemt</code> node, the <abbr>XML</abbr> version
320     of the document is the value of the <code>xmlVersion</code>
321 wakaba 1.9 attribute of the node. For a <code>DocumentType</code> node whose
322     <code>ownerDocument</code> attribute is set to <code>null</code>,
323     the <abbr>XML</abbr> version of the document is <code>1.0</code><!--
324     since createDocumentType [DOM3CORE] assumes XML 1.0 [XML10TE] -->.
325 wakaba 1.1 For any other node, the <abbr>XML</abbr> version of the document
326     is that of the <code>Document</code> node contained in the
327     <code>ownerDocument</code> attribute of the node.</p>
328    
329 wakaba 1.9 </div>
330    
331 wakaba 1.10
332     <div class=section id=checking-components>
333 wakaba 1.19 <h3>Conformance Checking Algorithms for Components</h3>
334 wakaba 1.10
335 wakaba 1.19 <p>To
336     <dfn id=algorithm-to-validate-an-xml-character-data title="validate an XML string">to
337     validate an <abbr>XML</abbr> string (<dfn id=var-s><var>s</var></dfn>)</dfn>,
338     the following algorithm <em class=rfc2119>MUST</em> be used:</p>
339 wakaba 1.10 <ol>
340 wakaba 1.11 <li>If <var>s</var> contains a character that is <em>not</em> in
341     the character class <a href="#class-Char10"><code>Char10</code></a>,
342     then raise an
343     <a href="#xml-well-formedness-error" id=wfe-illegal-char><code>xml-well-formedness-error</code></a>.</li>
344     <li>If <var>s</var> contains a character that is in the character
345     class <a href="#class-CompatChar10"><code>CompatChar10</code></a>,
346     then raise an
347     <a href="#xml-misc-warning" id=xmw-compat-char><code>xml-misc-warning</code></a>.</li>
348     <li>If <var>s</var> contains a character that is in the character
349     class <a href="#class-ControlChar10"><code>ControlChar10</code></a>,
350     then raise an
351     <a href="#xml-misc-warning" id=xmw-control-char><code>xml-misc-warning</code></a>.</li>
352     <li class=ed>@@ XML 1.1 support</li>
353 wakaba 1.13 <li>If <var>s</var> contains a <code class=char>U+000D</code>
354     <code class=charname>CARRIAGE RETURN</code> character, then
355     raise a
356     <a href="#round-trip-error" id=rte-cr><code>round-trip-error</code></a>.
357     <span class=ed>@@ We should not raise duplicate errors for U+000D
358     in attribute values. In addition, we should support a mode where
359     U+000D will be serialized as &#x000D; (so that no round-trip-error
360     will be raised).</span></li>
361 wakaba 1.10 </ol>
362    
363 wakaba 1.19 <p>To
364     <dfn id=algorithm-to-validate-a-name title="validate a Name">validate a
365     <code>Name</code> (<dfn id=var-name-s><var>s</var></dfn>)</dfn>, the following
366     algorithm <em class=rfc2119>MUST</em> be used:</p>
367 wakaba 1.10 <ol>
368 wakaba 1.19 <li>If <var>s</var> is an empty string, then raise an
369     <a href="#xml-well-formedness-error" id=wfe-name-empty><code>xml-well-formedness-error</code></a>.
370     Abort these steps.</li>
371     <li><a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">Validate
372     <var>s</var> as an <abbr>XML</abbr> string</a>.</li>
373     <li>If the first character in <var>s</var> is a character that is
374     <em>not</em> in the character class
375     <a href="#class-NameStartChar10"><code>NameStartChar10</code></a>, then raise
376     an
377     <a href="#xml-well-formedness-error" id=wfe-name-startchar><code>xml-well-formedness-error</code></a>.</li>
378     <li>If a character other than the first character in <var>s</var> is a
379     character that is <em>not</em> in the character class
380     <a href="#class-NameChar10"><code>NameChar10</code></a>, then raise an
381     <a href="#xml-well-formedness-error" id=wfe-name-char><code>xml-well-formedness-error</code></a>.</li>
382 wakaba 1.12 <li>If <var>s</var> begins with the string <code>xml</code> (in any
383     case combination), then raise an
384     <a href="#xml-misc-warning" id=xmw-reserved-name><code>xml-misc-warning</code></a>.
385     <span class=ed>@@ except for attribute names <code>xml:lang</code>,
386     <code>xml:space</code>, <code>xml:base</code>, <code>xml:id</code>,
387     <code>xmlns</code>, <code>xmlns:<var>*</var></code>,
388 wakaba 1.15 pi name <code>xml-stylesheet</code>.</span><!--
389     "names beginning with a match to (('X'|'x')('M'|'m')('L'|'l')) are reserved for standardization in this or future versions of this specification.":
390 wakaba 1.19 xmlns, xml-stylesheet, xml:base and xml:id specifications violate to this sentense!
391 wakaba 1.15 --></li>
392 wakaba 1.12 <!-- COLON in Name is a lowercase "should not" in a Note of [XML10],
393     [XML11]. -->
394 wakaba 1.19 <li class=ed>@@ XML 1.1 support</li>
395 wakaba 1.10 </ol>
396    
397 wakaba 1.19 <p>To
398     <dfn id=algorithm-to-validate-an-ncname title="validate an NCName">validate
399     an <code>NCName</code> (<dfn id=var-ncname-s><var>s</var></dfn>)</dfn>, the
400     following algorithm <em class=rfc2119>MUST</em> be used:</p>
401 wakaba 1.10 <ol>
402 wakaba 1.19 <li><a href="#algorithm-to-validate-a-name" title="validate a Name">Validate
403     <var>s</var> as a <code>Name</code></a>.</li>
404 wakaba 1.10 <li class=ed>@@</li>
405     </ol>
406    
407 wakaba 1.18 <p>To
408     <dfn id=algorithm-to-validate-a-public-identifier title="validate a public identifier">validate
409 wakaba 1.10 a public identifier (<dfn id=var-pid><var>pid</var></dfn>)</dfn>, the
410 wakaba 1.18 following algorithm <em class=rfc2119>MUST</em> be used:</p>
411 wakaba 1.10 <ol>
412 wakaba 1.20 <li>If <var>pid</var> is <code>null</code>, abort these steps.</li>
413     <li>If <var>pid</var> contains a character that is <em>not</em> in the
414     character class <a href="#class-PubidChar"><code>PubidChar</code></a>, then
415     raise an
416     <a href="#xml-well-formedness-error" id=wfe-pubid-char><code>xml-well-formedness-error</code></a>.</li>
417 wakaba 1.10 <li>If <var>pid</var> contains one of <code class=char>U+0009</code>
418     <code class=charname>CHARACTER TABULATION</code>,
419     <code class=char>U+000A</code> <code class=charname>CARRIAGE RETURN</code>,
420     and <code class=char>U+000D</code> <code class=charname>LINE FEED</code>
421     characters, if the first character of <var>pid</var> is
422     <code class=char>U+0020</code> <code class=charname>SPACE</code> character,
423     if the last character of <var>pid</var> is <code class=char>U+0020</code>
424     <code class=charname>SPACE</code> character, or if there is a
425     <code class=char>U+0020</code> <code class=charname>SPACE</code> character
426     immediately followed by another <code class=char>U+0020</code>
427     <code class=charname>SPACE</code> character in <var>pid</var>, then it is a
428 wakaba 1.18 <a href="#round-trip-error" id=rte-pubid-space><code>round-trip-error</code></a>.
429     <span class=ed>Is this really a roundtripness problem? XML spec
430     does only define the way to match public identifiers in fact, no
431     canonical form.</span></li>
432 wakaba 1.10 </ol>
433    
434 wakaba 1.18 <p>To
435     <dfn id=algorithm-to-validate-a-system-identifier title="validate a system identifier">validate
436     a system identifier (<dfn id=var-sid><var>sid</var></dfn>)</dfn>, the
437     following algorithm <em class=rfc2119>MUST</em> be used:</p>
438     <ol>
439     <li>If <var>sid</var> is <code>null</code>, abort these steps.</li>
440 wakaba 1.19 <li><a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">Validate
441     <var>sid</var> as an <abbr>XML</abbr> string</a>.</li>
442 wakaba 1.18 <li>If <var>sid</var> contains both <code class=char>U+0022</code>
443     <code class=charname>QUOTATION MARK</code> (<code class=char>"</code>) and
444     <code class=char>U+0027</code> <code class=charname>APOSTROPHE</code>
445     (<code class=char>'</code>) characters, raise an
446     <a href="#xml-well-formedness-error" id=wfe-sid-lit><code>xml-well-formedness-error</code></a>.</li>
447     <li>If <var>sid</var> contains at least one <code class=char>U+0023</code>
448     <code class=charname>NUMBER SIGN</code> (<code class=char>#</code>)
449     character, then raise an
450     <a href="#xml-misc-error" id=xme-sid-fragment><code>xml-misc-error</code></a>.</li>
451     <li class=ed>@@ If <var>sid</var> cannot be converted to a URI
452     reference, then raise a fact-level error (xml-misc-warning?).<!--
453     XML 1.0 has no conformance language for system identifier being
454     a URI reference. --></li>
455     </ol>
456    
457 wakaba 1.10 </div>
458    
459 wakaba 1.9 <div class=section id=checking-node>
460     <h3>Checking <code>Node</code></h3>
461    
462 wakaba 1.1 <p>The algorithm <dfn title="to check a node" id=algorithm-to-check-a-node>to
463     check a node (<dfn id=var-n><var>n</var></dfn>)</dfn> is defined as
464     following:</p>
465     <dl class=switch>
466     <dt>If <var>n</var> is an <code>Attr</code> node</dt>
467     <dd>
468     <ol>
469 wakaba 1.18 <li><a href="#algorithm-to-validate-an-ncname">Validate the
470 wakaba 1.1 <code>localName</code> attribute value as an <code>NCName</code></a>.</li>
471     <li>If the <code>prefix</code> attribute value is different from
472 wakaba 1.18 <code>null</code>, then <a href="#algorithm-to-validate-an-ncname">validate
473 wakaba 1.1 the <code>prefix</code> attribute value as an <code>NCName</code></a>.</li>
474 wakaba 1.8 <li>For each node <dfn id=var-attr-nc><var>n<sub><var>c</var></sub></var></dfn> in the
475 wakaba 1.4 <code>childNodes</code> list of <var>n</var>,
476 wakaba 1.8 <ol>
477     <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> a
478     <code>Text</code> or <code>EntityReference</code> node, then it is an
479     <a href="#xml-well-formedness-error" id=wfe-attr-child><code>xml-well-formedness-error</code></a>.</li>
480     <li>Otherwise, if <var>n<sub><var>c</var></sub></var> is an
481     <code>EntityReference</code> node, then it is an
482     <a href="#entity-error" id=ee-attr-er><code>entity-error</code></a>.</li>
483     <li>Otherwise,
484     <a href="#algorithm-to-check-a-node" title="check a node">check
485     <var>n<sub><var>c</var></sub></var></a> recusrively.</li>
486     </ol></li>
487 wakaba 1.13 <li>If <code>nodeName</code> attribute of <var>n</var> is
488     <code>xml:space</code> <span class=ed>@@ or {xml namespace}:space ?</span>
489     and <code>value</code> attribute of <var>n</var> is neither
490     <code>default</code> nor <code>preserve</code>, then it is an
491     <a href="#xml-misc-error" id=xme-attr-xml-space><code>xml-misc-error</code></a>.<!--
492     Note that <!ATTLIST e xml:space (default|preserve) "a">...
493     <e xml:space="default"/> is conforming and valid. --></li>
494     <li class=ed>@@ xml:lang value is not a language tag [RFC 3066 or its
495     successor] or an empty string, then xml-misc-warning
496     (a "fact"-level error; not an XML error).</li>
497 wakaba 1.1 <li class=ed>@@ <code>specified</code>,
498 wakaba 1.15 <code>manakaiAttributeType</code> (#ValueType Validity constraint: Attribute Value Type)</li>
499 wakaba 1.13 <!-- xml:space MUST be declared to be valid. -->
500 wakaba 1.16 <li>Let <dfn id=var-v><var>v</var></dfn> be the value of the
501     attribute <code>value</code> of <var>n</var>.</li>
502     <li>Validate the <var>n</var> against the <span class=ed>declared
503     type</span> as following:
504     <dl class=switch>
505     <dt class=ed><code>ID_ATTR</code></dt>
506     <dd>
507     <ol>
508     <li><span class=ed>Validate <var>v</var> as an
509     <code>Name</code>.</span> If it fails, then raise an
510     <a href="#xml-validity-error" id=vc-id-name><code>xml-validity-error</code></a>.</li>
511     <li><span class=ed>If <code>ID</code> <var>v</var> is defined,</span>
512     then raise an
513     <a href="#xml-validity-error" id=vc-id-duplication><code>xml-validity-error</code></a>.</li>
514     </ol>
515     </dd>
516     <dt class=ed>IDREF_ATTR</dt>
517     <dd>
518     <ol>
519     <li><span class=ed>Validate <var>v</var> as an
520     <code>Name</code>.</span> If it fails, then raise an
521     <a href="#xml-validity-error" id=vc-idref-name><code>xml-validity-error</code></a>.</li>
522     <li><span class=ed>If <code>ID</code> <var>v</var> is NOT
523     defined,</span> then raise an
524     <a href="#xml-validity-error" id=vc-idref-match><code>xml-validity-error</code></a>.</li>
525     </ol>
526     </dd>
527     <dt class=ed>IDREFS_ATTR</dt>
528     <dd class=ed>@@</dd>
529     <dt class=ed>ENTITY_ATTR</dt>
530     <dd>
531     <ol>
532     <li><span class=ed>Validate <var>v</var> as an
533     <code>Name</code>.</span> If it fails, then raise an
534     <a href="#xml-validity-error" id=vc-entname-name><code>xml-validity-error</code></a>.</li>
535     <li><span class=ed>If <code>Entity</code> <var>v</var> is NOT
536     defined,</span> then raise an
537     <a href="#xml-validity-error" id=vc-entname-match><code>xml-validity-error</code></a>.</li>
538     </ol>
539     </dd>
540     <dt class=ed>ENTITIES_ATTR</dt>
541     <dd class=ed>@@</dd>
542     <dt class=ed>NMTOKEN_ATTR</dt>
543     <dd>
544     <ol>
545     <li><span class=ed>Validate <var>v</var> as an
546     <code>Nmtoken</code>.</span> If it fails, then raise an
547     <a href="#xml-validity-error" id=vc-nmtok-name><code>xml-validity-error</code></a>.</li>
548     </ol>
549     </dd>
550     <dt class=ed>NMTOKENS_ATTR</dt>
551     <dd class=ed>@@</dd>
552     <dt class=ed>NOTATION_ATTR</dt>
553     <dd class=ed><var>v</var> must be one of enumerated values.
554     If not, then raise an
555     <a href="#xml-validity-error" id=vc-notatn-match><code>xml-validity-error</code></a>.</dd>
556     <dt class=ed>ENUMERATED_ATTR</dt>
557     <dd class=ed><var>v</var> must be one of enumerated values.
558     If not, then raise an
559     <a href="#xml-validity-error" id=vc-enum><code>xml-validity-error</code></a>.</dd>
560     <dt class=ed>@@</dt>
561     </dl>
562     </li>
563 wakaba 1.17 <li>If <span class=ed>type ID and default is NOT #IMPLIED or #REQUIRED</span>, then
564 wakaba 1.16 raise an
565     <a href="#xml-validity-error" id=vc-id-default><code>xml-validity-error</code></a>.</li>
566 wakaba 1.17 <li class=ed>@@ #FixedAttr Validity constraint: Fixed Attribute Default</li>
567     <li class=ed>@@ strict serialization error for U+000D, U+000A, and
568     U+0009 characters, leading/trailing U+0020, and U+0020{2,} string?</li>
569 wakaba 1.1 </ol>
570     </dd>
571     <dt>If <var>n</var> is an <code>AttributeDefinition</code> node</dt>
572 wakaba 1.8 <dd>
573     <ol>
574     <li class=ed></li>
575 wakaba 1.13 <li>If <code>nodeName</code> attribute of <var>n</var> is
576     <code>xml:space</code> <span class=ed>@@ or {xml namespace}:space ?</span>
577     and <span class=ed>its declared type is different from (default|preserve),
578 wakaba 1.22 (preserve|default), (default), or (preserve)</span>, then raise an
579 wakaba 1.13 <a href="#xml-misc-error" id=xme-at-xml-space><code>xml-misc-error</code></a>.</li>
580 wakaba 1.8 <li>For each node <dfn id=var-ad-nc><var>n<sub><var>c</var></sub></var></dfn> in the
581     <code>childNodes</code> list of <var>n</var>,
582     <ol>
583     <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> a
584     <code>Text</code> or <code>EntityReference</code> node, then it is an
585     <a href="#xml-well-formedness-error" id=wfe-at-child><code>xml-well-formedness-error</code></a>.</li>
586     <li>Otherwise, if <var>n<sub><var>c</var></sub></var> is an
587     <code>EntityReference</code> node, then it is an
588     <a href="#entity-error" id=ee-at-er><code>entity-error</code></a>.</li>
589     <li>Otherwise,
590     <a href="#algorithm-to-check-a-node" title="check a node">check
591     <var>n<sub><var>c</var></sub></var></a> recusrively.</li>
592     </ol></li>
593 wakaba 1.16 <li class=ed>If <code>NOTATION_ATTR</code>, enumerated values MUST
594     be declared. If not, then raise an
595     <a href="#xml-validity-error" id=vc-notatn-declared><code>xml-validity-error</code></a>.</li>
596     <li class=ed>If <code>NOTATION_ATTR</code> or <code>ENUMERATED_ATTR</code>,
597     values MUST all be distinct. If not, then raise an
598     <a href="#xml-validity-error" id=vc-no-duplicate-tokens><code>xml-validity-error</code></a>.</li>
599     <li class=ed>If <code>NOTATION_ATTR</code> on an <code>EMPTY</code>
600     element, then raise an
601     <a href="#xml-validity-error" id=vc-no-notation-empty><code>xml-validity-error</code></a>.</li>
602 wakaba 1.17 <li class=ed>@@ #defattrvalid Validity constraint: Attribute Default Value Syntactically Correct</li>
603 wakaba 1.8 </ol>
604     </dd>
605 wakaba 1.1 <dt>If <var>n</var> is a <code>CDATASection</code> node</dt>
606     <dd>
607     <ol>
608 wakaba 1.19 <li><a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">Validate the
609 wakaba 1.1 <code>data</code> attribute value as an <abbr>XML</abbr> character
610     data</a>.</li>
611     <li>If the <code>data</code> attribute value contains
612 wakaba 1.12 a string <code>]]></code>, then raise an
613     <a href="#xml-well-formedness-error" id=wfe-cs-mse><code>xml-well-formedness-error</code></a>.<!-- "for compatibility" --></li>
614 wakaba 1.1 <li>If the <code>childNodes</code> list of <var>n</var> contains
615     any nodes, they are in
616 wakaba 1.8 <a href="#xml-well-formedness-error" id=wfe-cs-child><code>xml-well-formedness-error</code></a>.</li>
617 wakaba 1.1 </ol>
618     </dd>
619     <dt>If <var>n</var> is a <code>Comment</code> node</dt>
620     <dd>
621     <ol>
622 wakaba 1.12 <li>Raise an
623     <a href="#round-trip-warning" id=rtw-comment><code>round-trip-warning</code></a>.</li>
624 wakaba 1.19 <li><a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">Validate the
625 wakaba 1.1 <code>data</code> attribute value as an <abbr>XML</abbr> character
626     data</a>.</li>
627     <li>If the <code>data</code> attribute value contains
628     a string <code>--</code>, or if it ends with a character
629 wakaba 1.12 <code>-</code>, then raise an
630     <a href="#xml-well-formedness-error" id=wfe-comment-com><code>xml-well-formedness-error</code></a>.<!--
631     "for compatibility" --></li>
632 wakaba 1.1 <li>If the <code>childNodes</code> list of <var>n</var> contains
633     any nodes, they are in
634 wakaba 1.8 <a href="#xml-well-formedness-error" id=wfe-comment-child><code>xml-well-formedness-error</code></a>.</li>
635 wakaba 1.1 </ol>
636     </dd>
637     <dt>If <var>n</var> is a <code>Document</code> node</dt>
638     <dd>
639     <ol>
640     <li>If <a href="#xml-version"><abbr>XML</abbr> version</a> of <var>n</var>
641     is different from <code>1.0</code> or <code>1.1</code>,
642     then it is an <code class=ed>unknown-error?</code>.</li>
643     <li>If the <code>xmlEncoding</code> attribute value does <em>not</em>
644     match to <code>[A-Za-z] ([A-Za-z0-9._] | '-')*</code>
645 wakaba 1.8 <span class=ed>@@ formal def</span>, then it is an
646 wakaba 1.1 <a href="#xml-well-formedness-error" id=wfe-encoding><code>xml-well-formedness-error</code></a>.</li>
647     <li>The <code>childNodes</code> list of <var>n</var> have to
648     consist of zero or more <code>Comment</code> and/or
649     <code>ProcessingInstruction</code> nodes, followed by
650     an optional <code>DocumentType</code> node, followed
651     by zero or more <code>Comment</code> and/or
652     <code>ProcessingInstruction</code> nodes, followed by
653     an <code>Element</code> node, followed
654     by zero or more <code>Comment</code> and/or
655 wakaba 1.8 <code>ProcessingInstruction</code> nodes. Any violation to this is an
656 wakaba 1.1 <a href="#xml-well-formedness-error" id=wfe-document-child><code>xml-well-formedness-error</code></a>.</li>
657 wakaba 1.8 <li>For each node <dfn id=var-document-nc><var>n<sub><var>c</var></sub></var></dfn>
658     in the <code>childNodes</code> list of <var>n</var>,
659     <ol>
660     <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> an
661     <code>EntityReference</code> node, then
662     <a href="#algorithm-to-check-a-node" title="check a node">check
663     <var>n<sub><var>c</var></sub></var></a> recursively.</li>
664     </ol></li>
665 wakaba 1.1 <li class=ed>@@ <code>allDeclarationsProcessed</code></li>
666     </ol>
667     </dd>
668     <dt>If <var>n</var> is a <code>DocumentFragment</code> node</dt>
669     <dd>
670     <ol>
671 wakaba 1.8 <li>For each node <dfn id=var-df-nc><var>n<sub><var>c</var></sub></var></dfn>
672     in the <code>childNodes</code> list of <var>n</var>,
673     <ol>
674     <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> an
675     <code>Element</code>, <code>Text</code>, <code>CDATASection</code>,
676     <code>Comment</code>, <code>ProcessingInstruction</code>, or
677     <code>EntityReference</code> node, then it is an
678     <a href="#xml-well-formedness-error" id=wfe-df-child><code>xml-well-formedness-error</code></a>.</li>
679     <li>Otherwise, if <var>n<sub><var>c</var></sub></var> is an
680     <code>EntityReference</code> node, then it is an
681     <a href="#entity-error" id=ee-df-er><code>entity-error</code></a>.</li>
682     <li>Otherwise,
683     <a href="#algorithm-to-check-a-node" title="check a node">check
684     <var>n<sub><var>c</var></sub></var></a> recursively.</li>
685     </ol></li>
686 wakaba 1.1 </ol>
687     </dd>
688     <dt>If <var>n</var> is a <code>DocumentType</code> node</dt>
689     <dd>
690     <ol>
691 wakaba 1.18 <li><a href="#algorithm-to-validate-an-ncname">Validate the
692 wakaba 1.1 <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
693 wakaba 1.13 <li>Follow the following substeps:
694     <ol>
695     <li>If <code>ownerDocument</code> attribute of <var>n</var> is
696     <code>null</code>, then abort these substeps.</li>
697     <li>If <code>documentElement</code> attribute of the node
698     set to <code>ownerDocument</code> attribute of <var>n</var> is
699     <code>null</code>, then abort these substeps.</li>
700     <li>If <code>nodeName</code> attribute of the node set to
701     <code>documentElement</code> attribute of the node set to
702     <code>ownerDocument</code> attribute of <var>n</var> is
703     different from <code>nodeName</code> of <var>n</var>,
704     then raise an
705     <a href="#xml-validity-error" id=vc-roottype><code>xml-validity-error</code></a>.</li></li>
706     </ol>
707     </li>
708 wakaba 1.5 <li><a href="#algorithm-to-validate-a-public-identifier" title="validate a public identifier">Validate
709     the <code>publicId</code> attribute value as a public identifier</a>.</li>
710 wakaba 1.18 <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
711     the <code>systemId</code> attribute value as a system identifier</a>.</li>
712     <li>If the <code>publicId</code> attribute value of <var>n</var> is
713     <em>not</em> <code>null</code> and the <code>systemId</code> attribute
714     value of <var>n</var> is <code>null</code>, then raise an
715     <a href="#xml-well-formedness-error" id=wfe-dt-sid><code>xml-well-formedness-error</code></a>.
716     <span class=ed>@@ publicId == null? Or, publicId == ""</span></li>
717 wakaba 1.8 <li>For each node <dfn id=var-dt-nc><var>n<sub><var>c</var></sub></var></dfn>
718     in the <code>childNodes</code> list of <var>n</var>,
719     <ol>
720     <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> a
721     <code>ProcessingInstruction</code> node, then it is an
722     <a href="#xml-well-formedness-error" id=wfe-dt-child><code>xml-well-formedness-error</code></a>.
723     <span class=ed>@@ ref to manakai's extensions</span></li>
724     <li>Otherwise, <!-- if n_c is not an EntityReference node, -->
725     <a href="#algorithm-to-check-a-node" title="check a node">check
726     <var>n<sub><var>c</var></sub></var></a> recusrively.</li>
727     </ol></li>
728 wakaba 1.18 <li>For each node in the <code>entities</code>, <code>notations</code>,
729     and <code>elementTypes</code> lists of <var>n</var>,
730     <a href="#algorithm-to-check-a-node" title="check a node">check the
731     node</a> recursively.</li>
732     <li class=ed>@@ externally declared?</li>
733 wakaba 1.1 </ol>
734     </dd>
735     <dt>If <var>n</var> is an <code>Element</code> node</dt>
736     <dd>
737     <ol>
738 wakaba 1.18 <li><a href="#algorithm-to-validate-an-ncname">Validate the
739 wakaba 1.1 <code>localName</code> attribute value as an <code>NCName</code></a>.</li>
740     <li>If the <code>prefix</code> attribute value is different from
741 wakaba 1.18 <code>null</code>, then <a href="#algorithm-to-validate-an-ncname">validate
742 wakaba 1.1 the <code>prefix</code> attribute value as an <code>NCName</code></a>.</li>
743 wakaba 1.8 <li>For each node <dfn id=var-element-nc><var>n<sub><var>c</var></sub></var></dfn>
744     in the <code>childNodes</code> list of <var>n</var>,
745     <ol>
746     <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> an
747     <code>Element</code>,
748     <code>Text</code>, <code>CDATASection</code>, <code>Comment</code>,
749     <code>ProcessingInstruction</code>, or
750     <code>EntityReference</code> node, then it is an
751     <a href="#xml-well-formedness-error" id=wfe-element-child><code>xml-well-formedness-error</code></a>.</li>
752     <li>Otherwise, if <var>n<sub><var>c</var></sub></var> is an
753     <code>EntityReference</code> node, then it is an
754     <a href="#entity-error" id=ee-element-er><code>entity-error</code></a>.</li>
755     <li>Otherwise,
756     <a href="#algorithm-to-check-a-node" title="check a node">check
757     <var>n<sub><var>c</var></sub></var></a> recursively.</li>
758     </ol></li>
759 wakaba 1.15 <li class=ed>@@ #elementvalid Validity constraint: Element Valid</li>
760 wakaba 1.18 <li>Let <var>attrs</var> be the value of the <code>attribute</code>
761     attribute of <var>n</var>. Check conformance of <var>attrs</var>
762     as following:
763     <ol>
764     <li>If <var>attrs</var> contains an <code>Attr</code> node whose
765     <code>nodeName</code> attribute value is equal to that of another
766     <code>Attr</code> node in <var>attrs</var>, then raise an
767     <a href="#xml-well-formedness-error" id=wfe-uniqattspec><code>xml-well-formedness-error</code></a>.<!--
768     #uniqattspec Well-formedness constraint: Unique Att Spec --></li>
769     <li class=ed>@@ #RequiredAttr Validity constraint: Required Attribute</li>
770     </ol>
771     </li>
772 wakaba 1.8 </ol>
773     </dd>
774     <dt>If <var>n</var> is an <code>ElementTypeDefinition</code> node</dt>
775     <dd>
776     <ol>
777     <li class=ed></li>
778 wakaba 1.1 <li>If the <code>childNodes</code> list of <var>n</var> contains
779 wakaba 1.8 any nodes, they are in
780     <a href="#xml-well-formedness-error" id=wfe-et-child><code>xml-well-formedness-error</code></a>.</li>
781 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>
782     <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>
783     <li class=ed>@@ #vc-MixedChildrenUnique
784     Validity constraint: No Duplicate Types</li>
785     <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>
786     <li>If there is more than one <code>AttributeDefinition</code> node
787     with <span class=ed>attribute type <code>ID</code></span> in the
788     <code>NamedNodeMap</code> list contained in the
789     <code>attributeDefinitions</code> attribute of <var>n</var>, then raise an
790     <a href="#xml-validity-error" id=vc-one-id-per-el><code>xml-validity-error</code></a>.</li>
791     <li>If there is more than one <code>AttributeDefinition</code> node
792     with <span class=ed>attribute type <code>NOTATION</code></span> in the
793     <code>NamedNodeMap</code> list contained in the
794     <code>attributeDefinitions</code> attribute of <var>n</var>, then raise an
795     <a href="#xml-validity-error" id=vc-one-notation-per><code>xml-validity-error</code></a>.</li>
796     <li class=ed>"For interoperability, the same Nmtoken SHOULD NOT occur more than once in the enumerated attribute types of a single element type."</li>
797 wakaba 1.1 </ol>
798     </dd>
799 wakaba 1.18 <dt>If <var>n</var> is an <code>Entity</code> node whose
800     <code>notationName</code> attribute value is <code>null</code> (i.e. a
801     parsed entity)</dt>
802 wakaba 1.1 <dd>
803     <ol>
804 wakaba 1.18 <li>Raise an
805     <a href="#entity-error" id=ee-entity-node><code>entity-error</code></a>.</li>
806     <li><a href="#algorithm-to-validate-an-ncname">Validate the
807 wakaba 1.1 <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
808 wakaba 1.5 <li><a href="#algorithm-to-validate-a-public-identifier" title="validate a public identifier">Validate
809     the <code>publicId</code> attribute value as a public identifier</a>.</li>
810 wakaba 1.18 <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
811     the <code>systemId</code> attribute value as a system identifier</a>.</li>
812     <li>If the <code>publicId</code> attribute value of <var>n</var> is
813     <em>not</em> <code>null</code> and the <code>systemId</code> attribute
814     value of <var>n</var> is <code>null</code>, then raise an
815     <a href="#xml-well-formedness-error" id=wfe-entity-sid><code>xml-well-formedness-error</code></a>.</li>
816 wakaba 1.8 <li>For each node <dfn id=var-entity-nc><var>n<sub><var>c</var></sub></var></dfn>
817     in the <code>childNodes</code> list of <var>n</var>,
818     <ol>
819     <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> an
820     <code>Element</code>,
821     <code>Text</code>, <code>CDATASection</code>, <code>Comment</code>,
822     <code>ProcessingInstruction</code>, or <code>EntityReference</code>
823     node, then it is an
824     <a href="#xml-well-formedness-error" id=wfe-entity-child><code>xml-well-formedness-error</code></a>.</li>
825     <li>Otherwise, if <var>n<sub><var>c</var></sub></var> is an
826     <code>EntityReference</code> node, then it is an
827     <a href="#entity-error" id=ee-er-er><code>entity-error</code></a>.</li>
828     <li>Otherwise,
829     <a href="#algorithm-to-check-a-node" title="check a node">check
830     <var>n<sub><var>c</var></sub></var></a> recursively.</li>
831     </ol></li>
832 wakaba 1.1 </ol>
833     </dd>
834 wakaba 1.18 <dt>If <var>n</var> is an <code>Entity</code> node whose
835     <code>notationName</code> attribute value is <em>not</em> <code>null</code>
836     (i.e. an unparsed entity)</dt>
837     <dd>
838     <ol>
839     <li><a href="#algorithm-to-validate-an-ncname">Validate the
840     <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
841     <li><a href="#algorithm-to-validate-a-public-identifier" title="validate a public identifier">Validate
842     the <code>publicId</code> attribute value as a public identifier</a>.</li>
843     <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
844     the <code>systemId</code> attribute value as a system identifier</a>.</li>
845     <li>If the <code>systemId</code> attribute value of <var>n</var> is
846     <code>null</code>, then raise an
847     <a href="#xml-well-formedness-error" id=wfe-uentity-sid><code>xml-well-formedness-error</code></a>.</li>
848     <li><a href="#algorithm-to-validate-an-ncname">Validate the
849     <code>notationName</code> attribute value of <var>n</var> as an
850     <code>NCName</code></a>.</li>
851     <li class=ed>@@ #not-declared Validity constraint: Notation Declared</li>
852     <li>If the <code>childNodes</code> list of <var>n</var> contains
853     any nodes, they are in
854     <a href="#xml-well-formedness-error" id=wfe-uentity-child><code>xml-well-formedness-error</code></a>.</li>
855     </ol>
856     </dd>
857 wakaba 1.1 <dt>If <var>n</var> is an <code>EntityReference</code> node</dt>
858     <dd>
859     <ol>
860     <li>An <a href="#entity-error" id=ee-er-node><code>entity-error</code></a>.</li>
861 wakaba 1.18 <li><a href="#algorithm-to-validate-an-ncname">Validate the
862 wakaba 1.1 <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
863 wakaba 1.8 <li>For each node <dfn id=var-er-nc><var>n<sub><var>c</var></sub></var></dfn>
864     in the <code>childNodes</code> list of <var>n</var>,
865     <ol>
866     <li>If <var>n<sub><var>c</var></sub></var> is <em>not</em> an
867     <code>Element</code>,
868     <code>Text</code>, <code>CDATASection</code>, <code>Comment</code>,
869     <code>ProcessingInstruction</code>, or <code>EntityReference</code>
870     node, then it is an
871     <a href="#xml-well-formedness-error" id=wfe-er-child><code>xml-well-formedness-error</code></a>.</li>
872     <li>Otherwise, if <var>n<sub><var>c</var></sub></var> is <em>not</em> an
873     <code>EntityReference</code> node, then it is an
874     <a href="#entity-error" id=ee-entity-er><code>entity-error</code></a>.</li>
875     <li>Otherwise,
876     <a href="#algorithm-to-check-a-node" title="check a node">check
877     <var>n<sub><var>c</var></sub></var></a> recursively.</li>
878     </ol></li>
879 wakaba 1.1 </ol>
880     </dd>
881     <dt>If <var>n</var> is a <code>Notation</code> node</dt>
882     <dd>
883     <ol>
884 wakaba 1.18 <li><a href="#algorithm-to-validate-an-ncname">Validate the
885 wakaba 1.1 <code>nodeName</code> attribute value as an <code>NCName</code></a>.</li>
886 wakaba 1.5 <li><a href="#algorithm-to-validate-a-public-identifier" title="validate a public identifier">Validate
887     the <code>publicId</code> attribute value as a public identifier</a>.</li>
888 wakaba 1.18 <li><a href="#algorithm-to-validate-a-system-identifier" title="validate a system identifier">Validate
889     the <code>systemId</code> attribute value as a system identifier</a>.</li>
890 wakaba 1.1 <li>If the <code>childNodes</code> list of <var>n</var> contains
891     any nodes, they are in
892 wakaba 1.8 <a href="#xml-well-formedness-error" id=wfe-notation-child><code>xml-well-formedness-error</code></a>.</li>
893 wakaba 1.1 </ol>
894     </dd>
895     <dt>If <var>n</var> is a <code>ProcessingInstruction</code> node</dt>
896     <dd>
897     <ol>
898 wakaba 1.13 <li>If the <code>target</code> attribute value matches to the string
899     <code>xml</code> in any case combination, then raise a
900     <a href="#xml-well-formedness-error" id=wfe-pi-xml><code>xml-well-formedness-error</code></a>.</li>
901 wakaba 1.18 <li>Otherwise, <a href="#algorithm-to-validate-an-ncname">validate the
902 wakaba 1.1 <code>target</code> attribute value as an <code>NCName</code></a>.</li>
903 wakaba 1.13 <li>Then,
904 wakaba 1.19 <a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">validate
905 wakaba 1.13 the <code>data</code> attribute value as an <abbr>XML</abbr> character
906 wakaba 1.1 data</a>.</li>
907 wakaba 1.13 <li>If the <code>data</code> attribute value contains a string
908     <code>?></code>, then raise a
909     <a href="#xml-well-formedness-error" id=wfe-pi-pic><code>xml-well-formedness-error</code></a>.</li>
910     <li>If the <code>data</code> attribute value starts with either
911     <code class=char>U+0009</code> <code class=charname>CHARACTER
912     TABULATION</code>, <code class=char>U+000A</code> <code class=charname>LINE
913     FEED</code>, <code class=char>U+000D</code> <code class=charname>CARRIAGE
914     RETURN</code>, or <code class=char>U+0020</code>
915     <code class=charname>SPACE</code> character, then raise a
916     <a href="#round-trip-error" id=rte-pi-s><code>round-trip-error</code></a>.</li>
917 wakaba 1.1 <li>If the <code>childNodes</code> list of <var>n</var> contains
918 wakaba 1.13 any nodes, then raise an
919 wakaba 1.8 <a href="#xml-well-formedness-error" id=wfe-pi-child><code>xml-well-formedness-error</code></a>.</li>
920 wakaba 1.1 </ol>
921     </dd>
922     <dt>If <var>n</var> is a <code>Text</code> node</dt>
923     <dd>
924     <ol>
925 wakaba 1.19 <li><a href="#algorithm-to-validate-an-xml-character-data" title="validate an XML string">Validate the
926 wakaba 1.1 <code>data</code> attribute value as an <abbr>XML</abbr> character
927     data</a>.</li>
928     <li>If the <code>childNodes</code> list of <var>n</var> contains
929     any nodes, they are in
930 wakaba 1.8 <a href="#xml-well-formedness-error" id=wfe-text-child><code>xml-well-formedness-error</code></a>.</li>
931 wakaba 1.1 </ol>
932     </dd>
933     <dt>Otherwise</dt>
934     <dd><span class=ed>xml-well-formedness-error? unknown-error?</span></dd>
935     </dl>
936    
937 wakaba 1.11 </div>
938    
939     </div>
940    
941     <div id=classes class=section>
942     <h2>Character Classes</h2>
943    
944     <p>This section defines a couple of character classes.
945     These classes are referred to by algorithms specified above.</p>
946    
947     <p>Character class <dfn id=class-Char10><code>Char10</code></dfn>
948     contains the following characters:</p>
949     <ul>
950     <li><code class=char>U+0009</code> <code class=charname>CHARACTER
951     TABULATION</code></li>
952     <li><code class=char>U+000A</code> <code class=charname>LINE FEED</code></li>
953     <li><code class=char>U+000D</code> <code class=charname>CARRIAGE
954     RETURN</code></li>
955     <li><code class=char>U+0020</code> <code class=charname>SPACE</code>
956     .. <code class=char>U+D7FF</code></li>
957     <li><code class=char>U+E000</code> .. <code class=char>U+FFFD</code>
958     <code class=charname>REPLACEMENT CHARACTER</code></li>
959     <li><code class=char>U+10000</code> .. <code class=char>U+10FFFF</code></li>
960     </ul>
961     <div class="note memo">
962     <p>This character class contains all characters allowed in the production rule
963     <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-Char"><code>Char</code></a>
964     of <abbr>XML</abbr> 1.0
965     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>.</p>
966     </div>
967    
968     <p>Character class <dfn id=class-CompatChar10><code>CompatChar10</code></dfn>
969     contains the following characters:</p>
970     <ul>
971     <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>
972     </ul>
973    
974     <p>Character class <dfn id=class-ControlChar10><code>ControlChar10</code></dfn>
975     contains the following characters:</p>
976     <ul>
977     <li><code class=char>U+007F</code> <code class=charname>DELETE</code> ..
978     <code class=char>U+0084</code> <code class=charname>INDEX</code></li>
979     <li><code class=char>U+0086</code> <code class=charname>START OF SELECTED
980     AREA</code> .. <code class=char>U+009F</code> <code class=charname>APPLICATION
981     PROGRAM COMMAND</code></li>
982     <li><code class=char>U+FDD0</code> .. <code class=char>U+FDEF</code></li>
983     <li><code class=char>U+1FFFE</code> .. <code class=char>U+1FFFF</code></li>
984     <li><code class=char>U+2FFFE</code> .. <code class=char>U+2FFFF</code></li>
985     <li><code class=char>U+3FFFE</code> .. <code class=char>U+3FFFF</code></li>
986     <li><code class=char>U+4FFFE</code> .. <code class=char>U+4FFFF</code></li>
987     <li><code class=char>U+5FFFE</code> .. <code class=char>U+5FFFF</code></li>
988     <li><code class=char>U+6FFFE</code> .. <code class=char>U+6FFFF</code></li>
989     <li><code class=char>U+7FFFE</code> .. <code class=char>U+7FFFF</code></li>
990     <li><code class=char>U+8FFFE</code> .. <code class=char>U+8FFFF</code></li>
991     <li><code class=char>U+9FFFE</code> .. <code class=char>U+9FFFF</code></li>
992     <li><code class=char>U+AFFFE</code> .. <code class=char>U+AFFFF</code></li>
993     <li><code class=char>U+BFFFE</code> .. <code class=char>U+BFFFF</code></li>
994     <li><code class=char>U+CFFFE</code> .. <code class=char>U+CFFFF</code></li>
995     <li><code class=char>U+DFFFE</code> .. <code class=char>U+DFFFF</code></li>
996     <li><code class=char>U+EFFFE</code> .. <code class=char>U+EFFFF</code></li>
997     <li><code class=char>U+FFFFE</code> .. <code class=char>U+FFFFF</code></li>
998     <li><code class=char>U+10FFFE</code> .. <code class=char>U+10FFFF</code></li>
999     </ul>
1000     <div class="note memo">
1001     <p>This character class contains the characters listed in the Note in
1002     <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#charsets">Section 2.2</a>
1003     of <abbr>XML</abbr> 1.0
1004     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>,
1005     as amended by
1006     <a href="http://www.w3.org/XML/xml-V10-4e-errata#E02">errata</a>.</p>
1007 wakaba 1.1 </div>
1008 wakaba 1.19
1009     <p>The character class <dfn id=class-NameStartChar10><code>NameStartChar10</code></dfn>
1010     contains the following characters:</p>
1011     <ul class=ed>
1012     </ul>
1013 wakaba 1.20 <div class="note memo">
1014     <p>This character class contains all characters allowed as the first character
1015     of a string matching to the production rule
1016     <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-Name"><code>Name</code></a>
1017     of <abbr>XML</abbr> 1.0
1018     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>.</p>
1019     </div>
1020 wakaba 1.19
1021     <p>The character class <dfn id=class-NameChar10><code>NameChar10</code></dfn>
1022     contains the following characters:</p>
1023     <ul>
1024     <li>The characters in the character class
1025     <a href="#class-NameStartChar10">NameStartChar10</a>.</li>
1026     <li class=ed></li>
1027     </ul>
1028 wakaba 1.20 <div class="note memo">
1029     <p>This character class contains all characters allowed as the second
1030     character of a string matching to the production rule
1031     <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-Name"><code>Name</code></a>
1032     of <abbr>XML</abbr> 1.0
1033     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>.</p>
1034     </div>
1035    
1036     <p>The character class <dfn id=class-PubidChar><code>PubidChar</code></dfn>
1037     contains the following characters:</p>
1038     <ul>
1039     <li><code class=char>U+0009</code> <code class=charname>CHARACTER
1040     TABULATION</code></li>
1041     <li><code class=char>U+000A</code> <code class=charname>LINE FEED</code></li>
1042     <li><code class=char>U+000D</code> <code class=charname>CARRIAGE
1043     RETURN</code></li>
1044     <li><code class=char>U+0020</code> <code class=charname>SPACE</code></li>
1045     <li><code class=char>U+0021</code> <code class=charname>EXCLAMATION MARK</code>
1046     (<code class=char>!</code>)</li>
1047     <li><code class=char>U+0023</code> <code class=charname>DOLLAR SIGN</code>
1048     (<code class=char>$</code>)</li>
1049     <li><code class=char>U+0024</code> <code class=charname>NUMBER SIGN</code>
1050     (<code class=char>#</code>)</li>
1051     <li><code class=char>U+0025</code> <code class=charname>PERCENT SIGN</code>
1052     (<code class=char>%</code>)</li>
1053     <li><code class=char>U+0027</code> <code class=charname>APOSTROPHE</code>
1054     (<code class=char>'</code>)</li>
1055     <li><code class=char>U+0028</code> <code class=charname>LEFT PARENTHESIS</code>
1056     (<code class=char>(</code>)</li>
1057     <li><code class=char>U+0029</code> <code class=charname>RIGHT
1058     PARENTHESIS</code> (<code class=char>)</code>)</li>
1059     <li><code class=char>U+002A</code> <code class=charname>ASTERISK</code>
1060     (<code class=char>*</code>)</li>
1061     <li><code class=char>U+002B</code> <code class=charname>PLUS SIGN</code>
1062     (<code class=char>+</code>)</li>
1063     <li><code class=char>U+002C</code> <code class=charname>COMMA</code>
1064     (<code class=char>,</code>)</li>
1065     <li><code class=char>U+002D</code> <code class=charname>HYPHEN-MINUS</code>
1066     (<code class=char>-</code>)</li>
1067     <li><code class=char>U+002E</code> <code class=charname>FULL STOP</code>
1068     (<code class=char>.</code>)</li>
1069     <li><code class=char>U+002F</code> <code class=charname>SOLIDUS</code>
1070     (<code class=char>/</code>)</li>
1071 wakaba 1.21 <li><code class=char>U+0030</code> <code class=charname>DIGIT ZERO</code>
1072     (<code class=char>0</code>) .. <code class=char>U+0039</code>
1073     <code class=charname>DIGIT NINE</code> (<code class=char>9</code>)</li>
1074 wakaba 1.20 <li><code class=char>U+003A</code> <code class=charname>COLON</code>
1075     (<code class=char>:</code>)</li>
1076     <li><code class=char>U+003B</code> <code class=charname>SEMICOLON</code>
1077     (<code class=char>;</code>)</li>
1078     <li><code class=char>U+003D</code> <code class=charname>EQUAL SIGN</code>
1079     (<code class=char>=</code>)</li>
1080     <li><code class=char>U+003F</code> <code class=charname>QUESTION MARK</code>
1081     (<code class=char>?</code>)</li>
1082     <li><code class=char>U+0040</code> <code class=charname>COMMERCIAL AT</code>
1083     (<code class=char>@</code>)</li>
1084 wakaba 1.21 <li><code class=char>U+0041</code> <code class=charname>LATIN CAPITAL LETTER
1085     A</code> (<code class=char>A</code>) .. <code class=char>U+005A</code>
1086     <code class=charname>LATIN CAPITAL LETTER Z</code>
1087     (<code class=char>Z</code>)</li>
1088 wakaba 1.20 <li><code class=char>U+005F</code> <code class=charname>LOW LINE</code>
1089     (<code class=char>_</code>)</li>
1090 wakaba 1.21 <li><code class=char>U+0061</code> <code class=charname>LATIN CAPITAL LETTER
1091     A</code> (<code class=char>A</code>) .. <code class=char>U+007A</code>
1092     <code class=charname>LATIN CAPITAL LETTER Z</code>
1093     (<code class=char>Z</code>)</li>
1094 wakaba 1.20 </ul>
1095     <div class="note memo">
1096     <p>This character class contains all characters allowed in the production rule
1097     <a href="http://www.w3.org/TR/2006/REC-xml-20060816/#NT-PubidChar"><code>PubidChar</code></a>
1098     of <abbr>XML</abbr> 1.0
1099     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>]</cite>.</p>
1100     </div>
1101 wakaba 1.1
1102     </div>
1103    
1104     <div id="references" class="section reference">
1105     <h2>References</h2>
1106    
1107     <div id="normative-references" class="section normative reference">
1108     <h3>Normative References</h3>
1109    
1110     <dl>
1111 wakaba 1.3 <dt id=ref-DOM3CORE>DOM3CORE</dt>
1112     <dd class=ed>@@ W3C DOM Level 3 Core</dd>
1113     <dt id=ref-DOMDTDEF>DOMDTDEF</dt>
1114     <dd class=ed>@@ manakai's extension to DOM for document type definitions</dd>
1115 wakaba 1.1 <dt id="ref-KEYWORDS">KEYWORDS</dt>
1116     <dd><cite><a href="urn:ietf:rfc:2119">Key words for use in
1117     <abbr>RFCs</abbr> to Indicate Requirement Levels</a></cite>,
1118     <abbr title="Internet Engineering Task Force">IETF</abbr>
1119     <a href="urn:ietf:bcp:14"><abbr title="Best Current Practice">BCP</abbr>
1120     14</a>, <abbr title="Request for Comments">RFC</abbr> 2119,
1121     <time datetime=1997-03>March 1997</time>.
1122     <em>This</em> version of the specification is referenced.</dd>
1123     <dt id=ref-INFOSET>INFOSET</dt>
1124     <dd class=ed>@@</dd>
1125     <dt id=ref-XML10">XML10</dt>
1126     <dd><cite><a href="http://www.w3.org/TR/2006/REC-xml-20060816">Extensible
1127     Markup Language (<abbr>XML</abbr>) 1.0 (Fourth Edition)</a></cite>,
1128     <abbr>W3C</abbr> Recommendation, <time datetime=2006-08-16>16 August
1129     2006</time>, edited in place <time datetime=2006-09-29>29 September
1130     2006</time>. Tje latest version of the specification is available at
1131     <code class=uri>&lt;<a href="http://www.w3.org/TR/xml">http://www.w3.org/TR/xml</a>&gt;</code>.
1132     <em>This</em> version of the specification is referenced.</dd>
1133     <dt id=ref-XML11>XML11</dt>
1134     <dd class=ed>@@</dd>
1135     </dl>
1136     </div>
1137    
1138     <div id="informative-references" class="section informative reference">
1139     <h3>Non$B!>(Bnormative References</h3>
1140    
1141     <dl class=ed>
1142     <dt id=ref-CSS>CSS</dt>
1143     <dd><cite><a href="http://www.w3.org/TR/2007/CR-CSS21-20070719">Cascading
1144     Style Sheets Level 2 Revision 1 (<abbr>CSS</abbr> 2.1)
1145     Specification</a></cite>,
1146     <abbr title="World Wide Web Consortium">W3C</abbr> Candidate
1147     Recommendation, <time datetime=2007-07-19>19 July 2007</time>.
1148     Work in progress. The latest version of the specification is
1149     available at
1150     <code class=URI>&lt;<a href="http://www.w3.org/TR/CSS21">http://www.w3.org/TR/CSS21</a>></code>.</dd>
1151     <dt id=ref-CSSOM>CSSOM</dt>
1152     <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
1153     Style Sheets Object Model (<abbr>CSSOM</abbr>)</a></cite>,
1154     <abbr title="World Wide Web Consortium">W3C</abbr> Editor's Draft,
1155     <time datetime=2007-06-18>18 June 2007</time>. Work in progress.
1156     The latest Editor's Draft of the specification is available at
1157     <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>
1158     <dt id=ref-HTML5>HTML5</dt>
1159     <dd><cite><a href="http://whatwg.org/html5"><abbr>HTML</abbr> 5</a></cite>,
1160     <abbr title="Web Hypertext Application Technology Working Group">WHATWG</abbr>
1161     Working Draft. Work in progress.</dd>
1162     <dt id=ref-SAPI>SAPI</dt>
1163     <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>,
1164     <abbr title="World Wide Web Consortium">W3C</abbr> Editor's Draft,
1165     <time datetime=2007-08-29>29 August 2007</time>. Work in progress.
1166     The latest Editor's Draft of the specification is available at
1167     <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>.
1168     The latest published version of the specification is available at
1169     <code class=URI>&lt;<a href="http://www.w3.org/TR/selectors-api/">http://www.w3.org/TR/selectors-api/</a>></code>.</dd>
1170     <dt id=XBL2>XBL2</dt>
1171     <dd><cite><a href="http://www.mozilla.org/projects/xbl/xbl2.html"><abbr>XBL</abbr>
1172     2.0</a></cite>, Mozilla.org, <time datetime=2007-03-15>15 Mar 2007</time>.
1173     Work in progress. The latest
1174     <abbr title="World Wide Web Consortium">W3C</abbr>$B!>(Bpublished
1175     version of the specification is available at
1176     <code class=URI>&lt;<a href="http://www.w3.org/TR/xbl/">http://www.w3.org/TR/xbl/</a>></code>.</dd>
1177 wakaba 1.3 <dt id=ref-XML5>XML5</dt>
1178     <dd class=ed>@@</dd>
1179 wakaba 1.1 </dl>
1180     </div>
1181    
1182     </div>
1183    
1184     </body>
1185     </html>

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24