|
1 <?xml version='1.0'?> |
|
2 <!-- |
|
3 <<<<<<< conformance.xsl |
|
4 Original version copyright 1999 by Sun Microsystems, Inc. |
|
5 All Rights Reserved. |
|
6 Modifications copyright 1999 by OASIS. |
|
7 ======= |
|
8 XSL WD 1999-04-21 Stylesheet for documenting XML conformance tests. |
|
9 Tested against James Clark's XT processor. |
|
10 >>>>>>> 1.3 |
|
11 |
|
12 1999-06-08 22:50 |
|
13 |
|
14 XSL 1999-04-21 Stylesheet for documenting XML conformance tests. |
|
15 |
|
16 This expects to be run on a document matching the DTD that Sun |
|
17 defined for merging collections of self-descriptive XML tests. |
|
18 |
|
19 Since all those collections will have (by design) the same test |
|
20 architecture, this includes boilerplate describing that design, |
|
21 to be used by all test documentation. |
|
22 |
|
23 ISSUES: |
|
24 - Sorting is a bit odd; section numbers can are like "3.3.3" |
|
25 rather than straight numbers, so numeric sort can't work, |
|
26 and yet neither does text sort (2.12 should be after 2.2). |
|
27 --> |
|
28 |
|
29 <xsl:stylesheet |
|
30 xmlns:xsl="http://www.w3.org/XSL/Transform/1.0" |
|
31 > |
|
32 |
|
33 <!-- |
|
34 ### I don't have a nice algorithm to compare two QDomDocuments, so take |
|
35 out the following arguments of the above element for now, since they |
|
36 cause trouble (rms): |
|
37 |
|
38 xmlns="http://www.w3.org/TR/REC-html40" |
|
39 result-ns="" |
|
40 indent-result="yes" |
|
41 --> |
|
42 |
|
43 <!-- ROOT: write an HTML wrapper --> |
|
44 <xsl:template match="/TESTSUITE"> |
|
45 <!-- XHTML namespace --> |
|
46 <html><head> |
|
47 <xsl:comment>Generated by an XSL stylesheet.</xsl:comment> |
|
48 <title> XML Conformance Tests </title> |
|
49 <meta http-equiv="Content-Type" |
|
50 content="text/html;charset=utf-8"/> |
|
51 <style> |
|
52 <xsl:comment> |
|
53 BODY { |
|
54 font-family: Lucida, Helvetica, Univers, sans-serif; |
|
55 } |
|
56 H1, H2, H3, H4 { |
|
57 text-align: left; |
|
58 color: #0066CC; |
|
59 } |
|
60 </xsl:comment> |
|
61 </style> |
|
62 <style> |
|
63 <xsl:comment> |
|
64 a:hover { |
|
65 color: white; |
|
66 background-color: blue; |
|
67 } |
|
68 </xsl:comment> |
|
69 </style> |
|
70 </head><body bgcolor='#ffffff'> |
|
71 <img src="files/a_oasis-logo.gif"/> |
|
72 <h1> XML Conformance Tests </h1> |
|
73 <p/> |
|
74 <h4>OASIS XML Conformance Subcommittee<br/>Working Draft<br/>12 July 1999</h4> |
|
75 <dl> |
|
76 <dt><b>This version (normative at publishing time):</b></dt> |
|
77 <dd><ul> |
|
78 <li><a href="http://sdct-sunsrv1.ncsl.nist.gov/~brady/xml/conf/xmlconf-19990712.xml"> |
|
79 http://sdct-sunsrv1.ncsl.nist.gov/~brady/xml/conf/xmlconf-19990712.xml</a></li> |
|
80 </ul> |
|
81 </dd> |
|
82 <p/> |
|
83 <dt><b>Current Normative Version:</b></dt> |
|
84 <dd> |
|
85 <ul> |
|
86 <li><a href="http://sdct-sunsrv1.ncsl.nist.gov/~brady/xml/conf/xmlconf.xml"> |
|
87 http://sdct-sunsrv1.ncsl.nist.gov/~brady/xml/conf/xmlconf.xml</a></li> |
|
88 </ul> |
|
89 </dd> |
|
90 <p/> |
|
91 <dt><b>Non-normative Renditions:</b></dt> |
|
92 <dd> |
|
93 <ul> |
|
94 <li><a href="http://sdct-sunsrv1.ncsl.nist.gov/~brady/xml/conf/xmlconf-19990712.htm"> |
|
95 http://sdct-sunsrv1.ncsl.nist.gov/~brady/xml/conf/xmlconf-19990712.htm</a></li> |
|
96 <li><a href="http://sdct-sunsrv1.ncsl.nist.gov/~brady/xml/conf/xmlconf.htm"> |
|
97 http://sdct-sunsrv1.ncsl.nist.gov/~brady/xml/conf/xmlconf.htm</a></li> |
|
98 </ul> |
|
99 </dd> |
|
100 <p/> |
|
101 <dt><b>Available Stylesheets:</b></dt> |
|
102 <dd> |
|
103 <ul> |
|
104 <li><a href="http://sdct-sunsrv1.ncsl.nist.gov/~brady/xml/conf/xmlconformance.msxsl"> |
|
105 http://sdct-sunsrv1.ncsl.nist.gov/~brady/xml/conf/xmlconformance.msxsl</a></li> |
|
106 <li><a href="http://sdct-sunsrv1.ncsl.nist.gov/~brady/xml/conf/xmlconformance.xsl"> |
|
107 http://sdct-sunsrv1.ncsl.nist.gov/~brady/xml/conf/xmlconformance.xsl</a></li> |
|
108 </ul> |
|
109 </dd> |
|
110 <p/> |
|
111 <dt><b>Comments:</b></dt> |
|
112 <dd><ul><li>Mary Brady, NIST <a href="mailto:mbrady@nist.gov"><mbrady@nist.gov></a> |
|
113 </li></ul></dd> |
|
114 <p/> |
|
115 <dt><b>Public Information Page:</b></dt> |
|
116 <dd><ul><li><a href="http://www.oasis-open.org/committees/xmlconf-pub.html">http://www.oasis-open.org/committees/xmlconf-pub.html</a> |
|
117 </li></ul></dd> |
|
118 </dl> |
|
119 |
|
120 <a name="contents"/> |
|
121 <h2>Table of Contents</h2> |
|
122 <ol > |
|
123 <li><a href="#intro">Introduction</a></li> |
|
124 <li><a href="#matrix">Test Matrix</a></li> |
|
125 <ol > |
|
126 <li ><a href="#binary">Binary Tests</a></li> |
|
127 <li><a href="#output">Output Tests</a></li> |
|
128 </ol> |
|
129 <li><a href="#listings">Test Case Descriptions</a></li> |
|
130 <ol > |
|
131 <li><a href="#valid">Valid Documents</a></li> |
|
132 <li><a href="#invalid">Invalid Documents</a></li> |
|
133 <li><a href="#not-wf">Not-WF Documents</a></li> |
|
134 <li><a href="#error">Optional Errors</a></li> |
|
135 </ol> |
|
136 <li><a href="#contrib">Contributors</a></li> |
|
137 </ol> |
|
138 <a name="intro"/> |
|
139 <h2>1. Introduction </h2> |
|
140 <p> The <i>OASIS</i> XML Conformance Subcommittee is concerned with |
|
141 improving the quality of XML processors. The tests described in this |
|
142 document provide an initial set of metrics to determine how well a |
|
143 particular implementation conforms to the |
|
144 <a href="http://www.w3.org/TR/REC-xml">W3C XML 1.0 Recommendation</a>. |
|
145 It is anticipated that this test suite will grow over time, and will |
|
146 be expanded to test additional XML functionality as the set of XML |
|
147 Recommendations evolve. The XML Conformance Test Suite is intended |
|
148 to complement the W3C XML 1.0 Recommendation. All interpretations |
|
149 of this Recommendation are subject to confirmation by the |
|
150 <a href="http://www.w3.org/XML/Activity.html">W3C XML Coordination |
|
151 Group</a>. |
|
152 </p> |
|
153 <p> |
|
154 Conformance tests can be used by developers, content creators, and |
|
155 users alike to increase their level of confidence in product quality. In |
|
156 circumstances where interoperability is necessary, these tests can also |
|
157 be used to determine that differing implementations support the same set |
|
158 of features. </p> |
|
159 |
|
160 <p>This report provides supporting documentation for all of the tests |
|
161 contributed by members of the <i>OASIS</i> XML Conformance Subcommittee. |
|
162 Sources from which these tests have been collected |
|
163 include: <em> |
|
164 <xsl:for-each select="//TESTCASES"> |
|
165 <xsl:value-of select="@PROFILE"/> |
|
166 <xsl:text>; </xsl:text> |
|
167 </xsl:for-each> |
|
168 </em>. Although the tests came from a variety of sources, the actual test |
|
169 descriptions and references back to the specification were in many instances |
|
170 added by members of this subcommittee. It is anticipated that this report |
|
171 will supplement the actual tests, which are available from |
|
172 <a href="http://sdct-sunsrv1.ncsl.nist.gov/~brady/xml/"> |
|
173 http://sdct-sunsrv1.ncsl.nist.gov/~brady/xml/.</a></p> |
|
174 |
|
175 <p>Comments/suggestions should be |
|
176 forwarded to the XML Conformance Subcommittee Chair, Mary Brady |
|
177 <a href="mailto:mbrady@nist.gov"><mbrady@nist.gov></a>.</p> |
|
178 |
|
179 <a name="matrix"/> |
|
180 <h2>2. Test Matrix </h2> |
|
181 |
|
182 <p> Two basic types of test are presented here. These are |
|
183 respectively <em><a href="#binary">Binary Tests</a></em> |
|
184 and <em><a href="#output">Output Tests</a></em>. </p> |
|
185 |
|
186 <a name="binary"/> |
|
187 <h3>2.1 Binary Tests </h3> |
|
188 |
|
189 <p> <em>Binary</em> conformance tests are documents which |
|
190 are grouped into one of four categories. Given a document |
|
191 in a given category, each kind of XML parser must treat it |
|
192 consistently and either accept it (a <em>positive test</em>) |
|
193 or reject it (a <em>negative test</em>). It is in that sense |
|
194 that the tests are termed "binary". The XML 1.0 Recommendation |
|
195 talks in terms of two types of XML processor: |
|
196 <em>validating</em> ones, and <em>nonvalidating</em> ones. |
|
197 There are two differences between these types of processors: </p> |
|
198 |
|
199 <ol> |
|
200 <li> Validating processors check special productions that |
|
201 nonvalidating parsers don't, called <em>validity |
|
202 constraints</em>. (Both must check a basic set of productions, |
|
203 requiring XML documents to be <em>well formed</em>.) </li> |
|
204 |
|
205 <li> Nonvalidating processors are permitted to not |
|
206 include <em>external entities</em>, such as files with |
|
207 text. Accordingly, they may not report errors which |
|
208 would have been detected had those entities been read.</li> |
|
209 </ol> |
|
210 |
|
211 <p> There are two types of such entity, <em>parameter |
|
212 entities</em> holding definitions which affect validation |
|
213 and other processing; and <em>general entities</em> which |
|
214 hold marked up text. It will be appreciated that there are |
|
215 then five kinds of XML processor: validating processors, |
|
216 and four kinds of nonvalidating processor based on the |
|
217 combinations of external entity which they include.</p> |
|
218 |
|
219 <center> |
|
220 <table border="1" bgcolor="#ffffff" cellpadding="4"> |
|
221 |
|
222 <caption> |
|
223 <b>Basic XML Parsing Test Matrix</b><br/> |
|
224 Test Document Type v. Parser Type |
|
225 </caption> |
|
226 |
|
227 <tr bgcolor="#ffffcc"> |
|
228 <th widthH="5%" rowspan="2"> </th> |
|
229 <th widthH="20%" colspan="2">Nonvalidating</th> |
|
230 <th widthH="5%" rowspan="2">Validating</th> |
|
231 </tr> |
|
232 |
|
233 <tr bgcolor="#ffffcc"> |
|
234 <th>External Entities<br/>Ignored (3 cases)</th> |
|
235 <th>External Entities<br/>Read</th> |
|
236 </tr> |
|
237 |
|
238 <tr> |
|
239 <th bgcolor="#ffffcc">Valid Documents</th> |
|
240 <td align="center"><b>accept</b></td> |
|
241 <td align="center"><b>accept</b></td> |
|
242 <td align="center"><b>accept</b></td> |
|
243 </tr> |
|
244 |
|
245 <tr> |
|
246 <th bgcolor="#ffffcc">Invalid Documents</th> |
|
247 <td align="center"><b>accept</b></td> |
|
248 <td align="center"><b>accept</b></td> |
|
249 <td align="center">reject</td> |
|
250 </tr> |
|
251 |
|
252 <tr> |
|
253 <th bgcolor="#ffffcc">Non-WF Documents</th> |
|
254 <td align="center">reject</td> |
|
255 <td align="center">reject</td> |
|
256 <td align="center">reject</td> |
|
257 </tr> |
|
258 |
|
259 <tr> |
|
260 <th bgcolor="#ffffcc">WF Errors tied<br/> |
|
261 to External Entity</th> |
|
262 <td align="center"><b>accept</b><br/>(varies)</td> |
|
263 <td align="center">reject</td> |
|
264 <td align="center">reject</td> |
|
265 </tr> |
|
266 |
|
267 <tr> |
|
268 <th bgcolor="#ffffcc">Documents with<br/> Optional Errors</th> |
|
269 <td align="center">(not specified)</td> |
|
270 <td align="center">(not specified)</td> |
|
271 <td align="center">(not specified)</td> |
|
272 </tr> |
|
273 |
|
274 </table> |
|
275 </center> |
|
276 |
|
277 <p> At this time, the XML community primarily uses parsers |
|
278 which are in the rightmost two columns of this table, calling |
|
279 them <em>Well Formed XML Parsers</em> (or "WF Parsers") and |
|
280 <em>Validating XML Parsers</em>. A second test matrix |
|
281 could be defined to address the variations in the types of |
|
282 of XML processor which do not read all external entities. |
|
283 That additional matrix is not provided here at this time. </p> |
|
284 |
|
285 |
|
286 <a name="output"/> |
|
287 <h3>2.2 Output Tests</h3> |
|
288 |
|
289 <p> The XML 1.0 Recommendation places a number of requirements |
|
290 on XML processors, to ensure that they report information to |
|
291 applications as needed. Such requirements are testable. |
|
292 Validating processors are required to report slightly more |
|
293 information than nonvalidating ones, so some tests will |
|
294 require separate output files. Some of the information that |
|
295 must be reported will not be reportable without reading all |
|
296 the external entities in a particular test. Many of the tests for |
|
297 valid documents are paired with an output file to ensure that the XML |
|
298 processor provides the correct information. </p> |
|
299 |
|
300 <p>The output of these tests is provided in one of two forms, as |
|
301 described in <a href="sun/cxml.html">SUN Microsystems XML |
|
302 Canonical Forms</a>. At present, the <em>James Clark</em> |
|
303 collection provides corresponding output in <em>First XML |
|
304 Canonical Form</em>, and the <em>SUN Microsystems</em> |
|
305 collection provides corresponding output in <em>Second XML |
|
306 Canonical Form</em>. When the <a href="http://www.w3.org/XML/"> |
|
307 W3C XML Group </a> finalizes its work on Canonical XML, these |
|
308 output files will be updated. |
|
309 </p> |
|
310 |
|
311 <a name="listings"/> |
|
312 <h2>3. Test Case Descriptions</h2> |
|
313 |
|
314 <p> This section of this report contains descriptions of test |
|
315 cases, each of which fits into the categories noted above. |
|
316 Each test case includes a document of one of the types in the |
|
317 binary test matrix above (e.g. valid or invalid documents). |
|
318 </p> |
|
319 |
|
320 <p> In some cases, an <a href="#output">output file </a>, as |
|
321 described in Section 2.2, will also be associated with |
|
322 a valid document, which is used for output testing. If such |
|
323 a file exists, it will be noted at the end of the description |
|
324 of the input document. </p> |
|
325 |
|
326 <p> The description for each test case is presented as a two |
|
327 part table. The right part describes what the test does. |
|
328 This description is intended to have enough detail to evaluate |
|
329 diagnostic messages. The left part includes: <ul> |
|
330 |
|
331 <li> An entry describing the <em>Sections and/or Rules</em> |
|
332 from the <a href="http://www.w3.org/TR/1998/REC-xml-19980210"> |
|
333 XML 1.0 Recommendation</a> which this case excercises.</li> |
|
334 |
|
335 <li> The unique <em>Test ID</em> within a given <em>Collection</em> |
|
336 for this test. </li> |
|
337 |
|
338 <li> The <em>Collection</em> from which this test originated. |
|
339 Given the <em>Test ID</em> and the <em>Collection</em>, each |
|
340 test can be uniquely identified.</li> |
|
341 |
|
342 <li> Some tests may have a field identifying the kinds of |
|
343 external <em>Entities</em> a nonvalidating processor must |
|
344 include (parameter, general, or both) to be able to |
|
345 detect any errors in that test case. </li> |
|
346 |
|
347 </ul></p> |
|
348 |
|
349 <p><em>Note that the output format of this report is subject |
|
350 to change. Also, since XSL does not currently support the |
|
351 type of sorting rule necessary to make section numbers like |
|
352 2.12 appear after 2.2, the ordering is not quite what is |
|
353 desired.</em></p> |
|
354 |
|
355 <a name="valid"/> |
|
356 <h3>3.1 Valid XML Documents</h3> |
|
357 |
|
358 <p> All conforming <em> XML 1.0 Processors </em> are |
|
359 <b>required</b> to accept valid documents, reporting no |
|
360 errors. In this section of this test report are found |
|
361 descriptions of test cases which fit into this category. </p> |
|
362 |
|
363 <xsl:apply-templates select="//TEST[@TYPE='valid']"> |
|
364 <xsl:sort select="@SECTIONS"/> |
|
365 </xsl:apply-templates> |
|
366 |
|
367 <a name="invalid"/> |
|
368 <h3>3.2 Invalid XML Documents</h3> |
|
369 |
|
370 <p> All conforming XML 1.0 <em> Validating Processors </em> |
|
371 are <b>required</b> to report recoverable errors in the case |
|
372 of documents which are <em>Invalid</em>. Such errors are |
|
373 violations of some <em>validity constraint (VC)</em>. </p> |
|
374 |
|
375 <p> If a validating processor does not report an error when |
|
376 given one of these test cases, or if the error reported is |
|
377 a fatal error, it is not conformant. If the error reported |
|
378 does not correspond to the problem listed in this test |
|
379 description, that could also be a conformance problem; it |
|
380 might instead be a faulty diagnostic. </p> |
|
381 |
|
382 <p> All conforming XML 1.0 <em> Nonvalidating Processors </em> |
|
383 should accept these documents, reporting no errors. </p> |
|
384 |
|
385 <xsl:apply-templates select="//TEST[@TYPE='invalid']"> |
|
386 <xsl:sort select="@SECTIONS"/> |
|
387 </xsl:apply-templates> |
|
388 |
|
389 <a name="not-wf"/> |
|
390 <h3>3.3 Documents that are Not Well Formed</h3> |
|
391 |
|
392 <p> All conforming XML 1.0 Processors are <b>required</b> to |
|
393 report fatal errors in the case of documents which are not |
|
394 <em>Well Formed</em>. Such errors are basically of two types: |
|
395 <em>(a)</em> the document violates the XML grammar; or else |
|
396 <em>(b)</em> it violates a <em>well formedness constraint |
|
397 (WFC)</em>. There is a single <em>exception to that |
|
398 requirement</em>: nonvalidating processors which do not read |
|
399 certain types of external entities are not required to detect |
|
400 (and hence report) these errors. </p> |
|
401 |
|
402 <p> If a processor does not report a fatal error when given |
|
403 one of these test cases, it is not conformant. If the error |
|
404 reported does not correspond to the problem listed in this |
|
405 test description, that could also be a conformance problem; |
|
406 it might instead be a faulty diagnostic. </p> |
|
407 |
|
408 <xsl:apply-templates select="//TEST[@TYPE='not-wf']"> |
|
409 <xsl:sort select="@SECTIONS"/> |
|
410 </xsl:apply-templates> |
|
411 |
|
412 <a name="error"/> |
|
413 <h3>3.4 XML Documents with Optional Errors</h3> |
|
414 |
|
415 <p> Conforming XML 1.0 Processors are permitted to ignore |
|
416 certain errors, or to report them at user option. In this |
|
417 section of this test report are found descriptions of |
|
418 test cases which fit into this category. </p> |
|
419 |
|
420 <p> Processor behavior on such test cases does not affect |
|
421 conformance to the XML 1.0 Recommendation, except as noted. </p> |
|
422 |
|
423 <xsl:apply-templates select="//TEST[@TYPE='error']"> |
|
424 <xsl:sort select="@SECTIONS"/> |
|
425 </xsl:apply-templates> |
|
426 |
|
427 <a name="contrib"/> |
|
428 <h3>4. Contributors (Non-normative)</h3> |
|
429 |
|
430 <p> A team of volunteer members have participated in the |
|
431 development of this work. Contributions have come from: |
|
432 </p> |
|
433 <ul> |
|
434 <li>Murry Altheim, Sun Microsystems</li> |
|
435 <li>Mary Brady, NIST</li> |
|
436 <li>Tim Boland, NIST</li> |
|
437 <li>David Brownell, Sun Microsystems</li> |
|
438 <li>James Clark</li> |
|
439 <li>Karin Donker, IBM</li> |
|
440 <li>Irina Golfman, Inera Incorporated</li> |
|
441 <li>Tony Graham, Mulberry Technologies</li> |
|
442 <li>G. Ken Holman, Crane Softwrights Ltd</li> |
|
443 <li>Alex Milowski, Veo Systems, Inc</li> |
|
444 <li>Makota Murata, Fuji Xerox</li> |
|
445 <li>Miles O'Reilly, Microstar Software, Ltd</li> |
|
446 <li>Matt Timmermans, Microstar Software, Ltd</li> |
|
447 <li>Richard Rivello, NIST</li> |
|
448 <li>Lynne Rosenthal, NIST</li> |
|
449 <li>Brian Schellar, Chrystal Software</li> |
|
450 <li>Bill Smith, Sun Microsystems</li> |
|
451 <li>Trevor Veary, Software AG</li> |
|
452 </ul> |
|
453 |
|
454 <p>End</p> |
|
455 </body></html> |
|
456 </xsl:template> |
|
457 |
|
458 <xsl:template match="TEST"> |
|
459 <table width="100%"> |
|
460 <tr valign="top"> |
|
461 <td width='40%'><table bgcolor='#eeeeff' |
|
462 border='1' width='100%' height="100%"> |
|
463 <tr> |
|
464 <td width='50%'><b>Sections [Rules]:</b></td> |
|
465 <td bgcolor='#ffffcc'> |
|
466 <xsl:value-of select="@SECTIONS"/></td> |
|
467 </tr> |
|
468 <tr valign="top"> |
|
469 <td width='50%'><b>Test ID:</b></td> |
|
470 <td bgcolor='#ffffcc'> |
|
471 <xsl:value-of select="@ID"/></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> |