|
1 <?xml version='1.0'?> |
|
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
|
3 |
|
4 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
|
5 |
|
6 <!-- |
|
7 <<<<<<< conformance.xsl |
|
8 Original version copyright 1999 by Sun Microsystems, Inc. |
|
9 All Rights Reserved. |
|
10 Modifications copyright 1999 by OASIS. |
|
11 Modifications copyright 2001 by OASIS. |
|
12 Modifications copyright 2002 by W3C. |
|
13 ======= |
|
14 XSL Stylesheet for documenting XML conformance tests. |
|
15 Tested against LOTUS Xalan processor. |
|
16 >>>>>>> 1.3 |
|
17 |
|
18 XSL 2001-03-15 Stylesheet for documenting XML conformance tests. |
|
19 |
|
20 This expects to be run on a document matching the DTD that Sun |
|
21 defined for merging collections of self-descriptive XML tests. |
|
22 |
|
23 Since all those collections will have (by design) the same test |
|
24 architecture, this includes boilerplate describing that design, |
|
25 to be used by all test documentation. |
|
26 |
|
27 ISSUES: |
|
28 - Sorting is a bit odd; section numbers can are like "3.3.3" |
|
29 rather than straight numbers, so numeric sort can't work, |
|
30 and yet neither does text sort (2.12 should be after 2.2). |
|
31 --> |
|
32 |
|
33 |
|
34 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> |
|
35 <xsl:output method="html" indent="yes"/> |
|
36 |
|
37 <!-- ROOT: write an HTML wrapper --> |
|
38 <xsl:template match="/TESTSUITE"> |
|
39 <!-- XHTML namespace --> |
|
40 |
|
41 <html xmlns="http://www.w3.org/1999/xhtml"><head> |
|
42 <title> XML Conformance Tests </title> |
|
43 <meta http-equiv="Content-Type" |
|
44 content="text/html;charset=utf-8"/> |
|
45 <style type="text/css"> |
|
46 |
|
47 tr.premiere { background-color: #BEDCE6; } |
|
48 |
|
49 th { text-align: left; vertical-align: top } |
|
50 |
|
51 .editor { color: red; } |
|
52 |
|
53 .countdown { color: white; background-color: red; } |
|
54 |
|
55 blockquote, q { font-family: Arial, Helvetica, sans-serif; } |
|
56 |
|
57 .quote { font-family: Arial, Helvetica, sans-serif; } |
|
58 |
|
59 pre.quote { margin-left: 2.5em; } |
|
60 |
|
61 ol.quote { font-family: Arial, Helvetica, sans-serif; margin-left: 3em; } |
|
62 |
|
63 .diff-add { background-color: yellow; } |
|
64 |
|
65 .diff-chg { background-color: lime; } |
|
66 |
|
67 .diff-del { text-decoration: line-through; } |
|
68 |
|
69 </style> |
|
70 |
|
71 </head><body bgcolor='#ffffff'> |
|
72 <p> |
|
73 <a shape="rect" href="http://www.w3.org/"> |
|
74 <img border="0" width="72" height="48" alt="W3C" src="http://www.w3.org/Icons/WWW/w3c_home"/> |
|
75 </a> |
|
76 |
|
77 <a href="http://www.w3.org/Architecture/" |
|
78 |
|
79 rel="in-domain"><img src="http://www.w3.org/Icons/arch" alt="Architecture Domain" border="0"/></a> <a |
|
80 |
|
81 href="../" rel="in-area"> XML</a> | <a href="/Member/#confidential">Member-Confidential!</a></p> |
|
82 |
|
83 <h1 align="center">XML W3C Conformance Test Suite</h1> |
|
84 <h1 align="center">30 October 2003</h1> <dl> |
|
85 |
|
86 |
|
87 <dt><b>This version:</b></dt> |
|
88 <dd><ul> |
|
89 <li><p><a shape="rect" href="xmlconf-20031030.htm"> |
|
90 http://www.w3.org/XML/Test/xmlconf-20031030.htm</a> |
|
91 </p> |
|
92 </li> |
|
93 </ul> |
|
94 </dd> |
|
95 |
|
96 <dt><b>Current Version:</b></dt> |
|
97 <dd> |
|
98 <ul> |
|
99 <li><p><a shape="rect" href="xmlconf-20031030.htm"> |
|
100 http://www.w3.org/XML/Test/xmlconf-20031030.htm</a> |
|
101 </p></li> |
|
102 </ul> |
|
103 </dd> |
|
104 |
|
105 <dt><b>Previous Version:</b></dt> |
|
106 <dd> |
|
107 <ul> |
|
108 <li><p><a shape="rect" href="xmlconf-20020606.htm"> |
|
109 http://www.w3.org/XML/Test/xmlconf-20020606.htm</a> |
|
110 </p></li> |
|
111 </ul> |
|
112 </dd> |
|
113 |
|
114 <dt><b>Test Archive:</b></dt> |
|
115 <dd><ul> |
|
116 <li><p><a shape="rect" href="xmlts20031030.zip">http://www.w3.org/XML/Test/xmlts20031030.zip</a> |
|
117 </p></li> |
|
118 <li><p><a shape="rect" href="xmlts20031030.tar">http://www.w3.org/XML/Test/xmlts20031030.tar</a> |
|
119 </p></li> |
|
120 </ul></dd> |
|
121 |
|
122 <dt><b>W3C XML Core Working Group:</b></dt> |
|
123 <dd><ul><li><p><a href="http://www.w3.org/XML/Group/Core">http://www.w3.org/XML/Group/Core</a> |
|
124 </p></li></ul></dd> |
|
125 |
|
126 <dt><b>Comments:</b></dt> |
|
127 <dd><ul><li>Sandra I. Martinez, NIST <a href="mailto:public-xml-testsuite@w3.org"> public-xml-testsuite@w3.org</a> |
|
128 </li></ul></dd> |
|
129 |
|
130 </dl> |
|
131 |
|
132 <a name="contents"/> |
|
133 <h2>Table of Contents</h2> |
|
134 <ol > |
|
135 <li><a href="#intro">Introduction</a></li> |
|
136 <li><a href="#matrix">Test Matrix</a></li> |
|
137 <ol > |
|
138 <li ><a href="#binary">Binary Tests</a></li> |
|
139 <li><a href="#output">Output Tests</a></li> |
|
140 </ol> |
|
141 <li><a href="#listings">Test Case Descriptions</a></li> |
|
142 <ol > |
|
143 <li><a href="#valid">Valid Documents</a></li> |
|
144 <li><a href="#invalid">Invalid Documents</a></li> |
|
145 <li><a href="#not-wf">Not-WF Documents</a></li> |
|
146 <li><a href="#error">Optional Errors</a></li> |
|
147 </ol> |
|
148 <li><a href="#contrib">Contributors</a></li> |
|
149 </ol> |
|
150 <a name="intro"/> |
|
151 <h2>1. Introduction </h2> |
|
152 <p> |
|
153 The tests described in this document provide an initial set of metrics to determine how well a |
|
154 particular implementation conforms to the following recommendations: |
|
155 <a href="http://www.w3.org/TR/REC-xml">W3C XML |
|
156 1.0 (Second Edition) Recommendation</a>, |
|
157 <a href="http://www.w3.org/XML/Group/2003/09/PER-xml-20030911"> |
|
158 Extensible Markup Language (XML) 1.0 (Third Edition)</a>, |
|
159 <a href="http://www.w3.org/XML/Group/2003/10/PR-xml11-20031010/Overview.html">Extensible Markup Language (XML) 1.1 (First Edition)</a>, |
|
160 and <a href="http://www.w3.org/XML/Group/2003/05/PR-xml-names11/">Namespaces in XML 1.1</a>. |
|
161 The report properly identify the tests associated to each recommendation. |
|
162 All interpretations of these Recommendations are subject to confirmation by the |
|
163 <a href="http://www.w3.org/XML/"> |
|
164 W3C XML Group </a>. |
|
165 </p> |
|
166 <p> |
|
167 Conformance tests can be used by developers, content creators, and |
|
168 users alike to increase their level of confidence in product quality. In |
|
169 circumstances where interoperability is necessary, these tests can also |
|
170 be used to determine that differing implementations support the same set |
|
171 of features. </p> |
|
172 |
|
173 <p>The XML Test Suite was transferred from OASIS to W3C and is being augmented to reflect the |
|
174 current work of the W3C XML Core Working Group, |
|
175 This report provides supporting documentation for all the tests included in |
|
176 the test suite. Sources from which these tests have been collected |
|
177 include: <em> |
|
178 <xsl:for-each select="TESTCASES"> |
|
179 <xsl:value-of select="@PROFILE"/> |
|
180 <xsl:text>; </xsl:text> |
|
181 </xsl:for-each> |
|
182 </em>. </p> |
|
183 |
|
184 <a name="matrix"/> |
|
185 <h2>2. Test Matrix </h2> |
|
186 |
|
187 <p> Two basic types of test are presented here. These are |
|
188 respectively <em><a href="#binary">Binary Tests</a></em> |
|
189 and <em><a href="#output">Output Tests</a></em>. </p> |
|
190 |
|
191 <a name="binary"/> |
|
192 <h3>2.1 Binary Tests </h3> |
|
193 |
|
194 <p> <em>Binary</em> conformance tests are documents which |
|
195 are grouped into one of four categories. Given a document |
|
196 in a given category, each kind of XML parser must treat it |
|
197 consistently and either accept it (a <em>positive test</em>) |
|
198 or reject it (a <em>negative test</em>). It is in that sense |
|
199 that the tests are termed "binary". The XML 1.0 (Second Edition) Recommendation |
|
200 talks in terms of two types of XML processor: |
|
201 <em>validating</em> ones, and <em>nonvalidating</em> ones. |
|
202 There are two differences between these types of processors: </p> |
|
203 |
|
204 <ol> |
|
205 <li> Validating processors check special productions that |
|
206 nonvalidating parsers don't, called <em>validity |
|
207 constraints</em>. (Both must check a basic set of productions, |
|
208 requiring XML documents to be <em>well formed</em>.) </li> |
|
209 |
|
210 <li> Nonvalidating processors are permitted to not |
|
211 include <em>external entities</em>, such as files with |
|
212 text. Accordingly, they may not report errors which |
|
213 would have been detected had those entities been read.</li> |
|
214 </ol> |
|
215 |
|
216 <p> There are two types of such entity, <em>parameter |
|
217 entities</em> holding definitions which affect validation |
|
218 and other processing; and <em>general entities</em> which |
|
219 hold marked up text. It will be appreciated that there are |
|
220 then five kinds of XML processor: validating processors, |
|
221 and four kinds of nonvalidating processor based on the |
|
222 combinations of external entity which they include.</p> |
|
223 |
|
224 <center> |
|
225 <table border="1" bgcolor="#ffffff" cellpadding="4"> |
|
226 |
|
227 <caption> |
|
228 <b>Basic XML Parsing Test Matrix</b><br/> |
|
229 Test Document Type v. Parser Type |
|
230 </caption> |
|
231 |
|
232 <tr bgcolor="#ffffcc"> |
|
233 <th widthH="5%" rowspan="2"><xsl:text> </xsl:text></th> |
|
234 <th widthH="20%" colspan="2">Nonvalidating</th> |
|
235 <th widthH="5%" rowspan="2">Validating</th> |
|
236 </tr> |
|
237 |
|
238 <tr bgcolor="#ffffcc"> |
|
239 <th>External Entities<br/>Ignored (3 cases)</th> |
|
240 <th>External Entities<br/>Read</th> |
|
241 </tr> |
|
242 |
|
243 <tr> |
|
244 <th bgcolor="#ffffcc">Valid Documents</th> |
|
245 <td align="center"><b>accept</b></td> |
|
246 <td align="center"><b>accept</b></td> |
|
247 <td align="center"><b>accept</b></td> |
|
248 </tr> |
|
249 |
|
250 <tr> |
|
251 <th bgcolor="#ffffcc">Invalid Documents</th> |
|
252 <td align="center"><b>accept</b></td> |
|
253 <td align="center"><b>accept</b></td> |
|
254 <td align="center">reject</td> |
|
255 </tr> |
|
256 |
|
257 <tr> |
|
258 <th bgcolor="#ffffcc">Non-WF Documents</th> |
|
259 <td align="center">reject</td> |
|
260 <td align="center">reject</td> |
|
261 <td align="center">reject</td> |
|
262 </tr> |
|
263 |
|
264 <tr> |
|
265 <th bgcolor="#ffffcc">WF Errors tied<br/> |
|
266 to External Entity</th> |
|
267 <td align="center"><b>accept</b><br/>(varies)</td> |
|
268 <td align="center">reject</td> |
|
269 <td align="center">reject</td> |
|
270 </tr> |
|
271 |
|
272 <tr> |
|
273 <th bgcolor="#ffffcc">Documents with<br/> Optional Errors</th> |
|
274 <td align="center">(not specified)</td> |
|
275 <td align="center">(not specified)</td> |
|
276 <td align="center">(not specified)</td> |
|
277 </tr> |
|
278 |
|
279 </table> |
|
280 </center> |
|
281 |
|
282 <p> At this time, the XML community primarily uses parsers |
|
283 which are in the rightmost two columns of this table, calling |
|
284 them <em>Well Formed XML Parsers</em> (or "WF Parsers") and |
|
285 <em>Validating XML Parsers</em>. A second test matrix |
|
286 could be defined to address the variations in the types of |
|
287 of XML processor which do not read all external entities. |
|
288 That additional matrix is not provided here at this time. </p> |
|
289 |
|
290 |
|
291 <a name="output"/> |
|
292 <h3>2.2 Output Tests</h3> |
|
293 |
|
294 <p> The XML 1.0 (Second Edition) Recommendation places a number of requirements |
|
295 on XML processors, to ensure that they report information to |
|
296 applications as needed. Such requirements are testable. |
|
297 Validating processors are required to report slightly more |
|
298 information than nonvalidating ones, so some tests will |
|
299 require separate output files. Some of the information that |
|
300 must be reported will not be reportable without reading all |
|
301 the external entities in a particular test. Many of the tests for |
|
302 valid documents are paired with an output file as the canonical |
|
303 representation of the input file, to ensure that the XML |
|
304 processor provides the correct information. </p> |
|
305 |
|
306 <a name="listings"/> |
|
307 <h2>3. Test Case Descriptions</h2> |
|
308 |
|
309 <p> This section of this report contains descriptions of test |
|
310 cases, each of which fits into the categories noted above. |
|
311 Each test case includes a document of one of the types in the |
|
312 binary test matrix above (e.g. valid or invalid documents). |
|
313 </p> |
|
314 |
|
315 <p> In some cases, an <a href="#output">output file </a>, as |
|
316 described in Section 2.2, will also be associated with |
|
317 a valid document, which is used for output testing. If such |
|
318 a file exists, it will be noted at the end of the description |
|
319 of the input document. </p> |
|
320 |
|
321 <p> The description for each test case is presented as a two |
|
322 part table. The right part describes what the test does. |
|
323 This description is intended to have enough detail to evaluate |
|
324 diagnostic messages. The left part includes: <ul> |
|
325 |
|
326 <li> An entry describing the <em>Sections and/or Rules</em> |
|
327 from the <a href="http://www.w3.org/TR/2000/REC-xml-20001006"> |
|
328 XML 1.0 (Second Edition) Recommendation</a> which this case excercises.</li> |
|
329 |
|
330 <li> The unique <em>Test ID</em> within a given <em>Collection</em> |
|
331 for this test. </li> |
|
332 |
|
333 <li> The <em>Collection</em> from which this test originated. |
|
334 Given the <em>Test ID</em> and the <em>Collection</em>, each |
|
335 test can be uniquely identified.</li> |
|
336 |
|
337 <li> Some tests may have a field identifying the kinds of |
|
338 external <em>Entities</em> a nonvalidating processor must |
|
339 include (parameter, general, or both) to be able to |
|
340 detect any errors in that test case. </li> |
|
341 |
|
342 </ul></p> |
|
343 |
|
344 <a name="valid"/> |
|
345 <h3>3.1 Valid XML Documents</h3> |
|
346 |
|
347 <p> All conforming <em> XML 1.0 Processors </em> are |
|
348 <b>required</b> to accept valid documents, reporting no |
|
349 errors. In this section of this test report are found |
|
350 descriptions of test cases which fit into this category. </p> |
|
351 |
|
352 <xsl:apply-templates select="//TEST[@TYPE='valid']"> |
|
353 <xsl:sort select="@SECTIONS"/> |
|
354 </xsl:apply-templates> |
|
355 |
|
356 <a name="invalid"/> |
|
357 <h3>3.2 Invalid XML Documents</h3> |
|
358 |
|
359 <p> All conforming XML 1.0 <em> Validating Processors </em> |
|
360 are <b>required</b> to report recoverable errors in the case |
|
361 of documents which are <em>Invalid</em>. Such errors are |
|
362 violations of some <em>validity constraint (VC)</em>. </p> |
|
363 |
|
364 <p> If a validating processor does not report an error when |
|
365 given one of these test cases, or if the error reported is |
|
366 a fatal error, it is not conformant. If the error reported |
|
367 does not correspond to the problem listed in this test |
|
368 description, that could also be a conformance problem; it |
|
369 might instead be a faulty diagnostic. </p> |
|
370 |
|
371 <p> All conforming XML 1.0 <em> Nonvalidating Processors </em> |
|
372 should accept these documents, reporting no errors. </p> |
|
373 |
|
374 <xsl:apply-templates select="//TEST[@TYPE='invalid']"> |
|
375 <xsl:sort select="@SECTIONS"/> |
|
376 </xsl:apply-templates> |
|
377 |
|
378 <a name="not-wf"/> |
|
379 <h3>3.3 Documents that are Not Well Formed</h3> |
|
380 |
|
381 <p> All conforming XML 1.0 Processors are <b>required</b> to |
|
382 report fatal errors in the case of documents which are not |
|
383 <em>Well Formed</em>. Such errors are basically of two types: |
|
384 <em>(a)</em> the document violates the XML grammar; or else |
|
385 <em>(b)</em> it violates a <em>well formedness constraint |
|
386 (WFC)</em>. There is a single <em>exception to that |
|
387 requirement</em>: nonvalidating processors which do not read |
|
388 certain types of external entities are not required to detect |
|
389 (and hence report) these errors. </p> |
|
390 |
|
391 <p> If a processor does not report a fatal error when given |
|
392 one of these test cases, it is not conformant. If the error |
|
393 reported does not correspond to the problem listed in this |
|
394 test description, that could also be a conformance problem; |
|
395 it might instead be a faulty diagnostic. </p> |
|
396 |
|
397 <xsl:apply-templates select="//TEST[@TYPE='not-wf']"> |
|
398 <xsl:sort select="@SECTIONS"/> |
|
399 </xsl:apply-templates> |
|
400 |
|
401 <a name="error"/> |
|
402 <h3>3.4 XML Documents with Optional Errors</h3> |
|
403 |
|
404 <p> Conforming XML 1.0 Processors are permitted to ignore |
|
405 certain errors, or to report them at user option. In this |
|
406 section of this test report are found descriptions of |
|
407 test cases which fit into this category. </p> |
|
408 |
|
409 <p> Processor behavior on such test cases does not affect |
|
410 conformance to the XML 1.0 (Second Edition) Recommendation, except as noted. </p> |
|
411 |
|
412 <xsl:apply-templates select="//TEST[@TYPE='error']"> |
|
413 <xsl:sort select="@SECTIONS"/> |
|
414 </xsl:apply-templates> |
|
415 |
|
416 <a name="contrib"/> |
|
417 <h3>4. Contributors (Non-normative)</h3> |
|
418 |
|
419 <p> A team of volunteer members have participated in the |
|
420 development of this work. Contributions have come from: |
|
421 </p> |
|
422 <ul> |
|
423 <li>Murry Altheim, Sun Microsystems</li> |
|
424 <li>Mary Brady, NIST</li> |
|
425 <li>Tim Boland, NIST</li> |
|
426 <li>David Brownell, Sun Microsystems</li> |
|
427 <li>James Clark</li> |
|
428 <li>Karin Donker, IBM</li> |
|
429 <li>Irina Golfman, Inera Incorporated</li> |
|
430 <li>Tony Graham, Mulberry Technologies</li> |
|
431 <li>G. Ken Holman, Crane Softwrights Ltd</li> |
|
432 <li>Alex Milowski, Veo Systems, Inc</li> |
|
433 <li>Makota Murata, Fuji Xerox</li> |
|
434 <li>Miles O'Reilly, Microstar Software, Ltd</li> |
|
435 <li>Matt Timmermans, Microstar Software, Ltd</li> |
|
436 <li>Richard Rivello, NIST</li> |
|
437 <li>Lynne Rosenthal, NIST</li> |
|
438 <li>Brian Schellar, Chrystal Software</li> |
|
439 <li>Bill Smith, Sun Microsystems</li> |
|
440 <li>Trevor Veary, Software AG</li> |
|
441 <li>Richard Tobin, University of Edinburgh</li> |
|
442 <li>Jonathan Marsh, Microsoft </li> |
|
443 <li>Daniel Veillard, Red Hat Network </li> |
|
444 <li>Jonathan Marsh, Microsoft</li> |
|
445 <li>Paul Grosso, Arbortext</li> |
|
446 |
|
447 </ul> |
|
448 |
|
449 <p>End</p> |
|
450 </body></html> |
|
451 </xsl:template> |
|
452 |
|
453 <xsl:template match="TEST"> |
|
454 <table width="100%"> |
|
455 <tr valign="top"> |
|
456 <td width='40%'><table bgcolor='#eeeeff' |
|
457 border='1' width='100%' height="100%"> |
|
458 <tr> |
|
459 <td width='50%'><b>Sections [Rules]:</b></td> |
|
460 <td bgcolor='#ffffcc'> |
|
461 <xsl:value-of select="@SECTIONS"/></td> |
|
462 </tr> |
|
463 <tr valign="top"> |
|
464 <td width='50%'><b>Test ID:</b></td> |
|
465 <td bgcolor='#ffffcc'> |
|
466 <xsl:value-of select="@ID"/></td> |
|
467 </tr> |
|
468 <tr valign="top"> |
|
469 <td width='50%'><b>RECOMMENDATION:</b></td> |
|
470 <td bgcolor='#ffffcc'> |
|
471 <xsl:value-of select="@RECOMMENDATION"/></td> |
|
472 </tr> |
|
473 <xsl:if test="not ( @ENTITIES = 'none') |
|
474 and ( @TYPE = 'not-wf' )"> |
|
475 <tr valign="top"> |
|
476 <td width='50%'><b>Entities:</b></td> |
|
477 <td bgcolor='#ffffcc'><font color='blue'> |
|
478 <xsl:value-of select="@ENTITIES"/> |
|
479 </font></td> |
|
480 </tr> |
|
481 </xsl:if> |
|
482 <xsl:if test="../@PROFILE"> |
|
483 <tr valign="top"> |
|
484 <td width='50%'><b>Collection:</b></td> |
|
485 <td bgcolor='#ffffcc'> |
|
486 <xsl:value-of select="../@PROFILE"/> |
|
487 </td> |
|
488 </tr> |
|
489 </xsl:if> |
|
490 </table></td> |
|
491 <td bgcolor='#ccffff'> |
|
492 <p> |
|
493 <xsl:apply-templates/></p> |
|
494 <xsl:if test="@OUTPUT | @OUTPUT3"> |
|
495 <p>There is an output test associated with this |
|
496 input file.</p> |
|
497 </xsl:if> |
|
498 </td> |
|
499 </tr> |
|
500 </table> |
|
501 </xsl:template> |
|
502 |
|
503 <!-- XT takes 'B|EM' and xsl:copy, IE5b2 doesn't --> |
|
504 <xsl:template match="EM"> |
|
505 <em><xsl:apply-templates/></em> |
|
506 </xsl:template> |
|
507 <xsl:template match="B"> |
|
508 <b><xsl:apply-templates/></b> |
|
509 </xsl:template> |
|
510 </xsl:stylesheet> |
|
511 |
|
512 |