123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485 |
- <!DOCTYPE html PUBLIC
- "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "doc/xhtml1-transitional.dtd">
- <!--
- #
- # $Id: template.xml,v 1.3 2000/07/15 19:12:14 dbrownell Exp $
- #
- # Copyright (c) 1999-2000 by David Brownell. All Rights Reserved.
- #
- # This program is free software; you may use, copy, modify, and
- # redistribute it under the terms of the LICENSE with which it was
- # originally distributed.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # LICENSE for more details.
- #
- -->
- <!--
- This document is a template for the output of a test report.
- It uses processing instructions to flag where the certain
- types of test reporting data should be placed. That's in
- roughly three categories:
- - Report identification ... identifying the XML processor,
- when the test was run, and so on. These are integrated
- using processing instructions
- <?run-id VALUE?>
- where VALUE is "name", "date", "type", "general-entities",
- "parameter-entities", and some other values.
- - Tests which always mean the same thing ... for example,
- all processors must accept all valid documents, reject
- everything that isn't well-formed, and may handle "optional"
- errors in a variety of manners.
- <?table valid?> or <?table not-wf?> etc
-
- The "table" PI causes a set of table rows to be emitted.
-
- - The "invalid" test cases are interpreted differently
- depending on whether the processor validates or not;
- this requires a conditional feature, and also calls for
- the table to be generated differently.
- <?if validating?> or <?if nonvalidating?>
- <?table invalid positive?>
- <?table invalid negative?>
- <?endif?>
-
- As a positive test, results without a diagnostic are not
- printed; as a negative test, they are printed (so diagnostics
- can be analyzed).
- NOTE: if/endif do not nest!! They must have the same
- parent node !!
-
- The intent of the template is to let the boilerplate change
- more readily, including organization of the report. Some
- parts of the report are not readily changed; these include
- some table style features that don't appear to be controllable
- through the style sheet, column ordering, and labels for the
- diagnostics which are constructed by the test harness.
- Also, do try to make sure that this template remains valid
- to the "transitional" level of XHTML. The use of "bgcolor"
- attributes and "center" tags are the main reasons this isn't
- "strict" (HTML 4.0). Perhaps one could trust CSS that far,
- but not all browsers handle CSS, even that well.
- -->
- <html xmlns="http://www.w3.org/1999/xhtml"><head>
- <title><?run-id name?> XML <?run-id type?> Processor</title>
- <meta http-equiv="Content-Type" content="text/html; CHARSET=utf-8"/>
- </head><body bgcolor="#eeeeff">
- <h1>XML Processor Conformance Report:<br/>
- <em><?run-id name?></em></h1>
- <p> This document is the output of an
- <a href="http://xmlconf.sourceforge.net/">XML test harness</a>.
- It reports on the conformance of the following
- XML 1.0 processor configuration: </p>
- <center><table bgcolor="#ffffff" cellpadding="4" border="1">
- <tr>
- <td bgcolor="#ffffcc">XML Processor</td>
- <td><?run-id description?></td>
- </tr>
- <tr>
- <td bgcolor="#ffffcc">Parser Class</td>
- <td><?run-id name?></td>
- </tr>
- <tr>
- <td bgcolor="#ffffcc">Processing Mode</td>
- <td><?run-id type?></td>
- </tr>
- <tr>
- <td bgcolor="#ffffcc">General Entities</td>
- <td><?run-id general-entities?></td>
- </tr>
- <tr>
- <td bgcolor="#ffffcc">Parameter Entities</td>
- <td><?run-id parameter-entities?></td>
- </tr>
- </table></center>
- <p> The results were as reported through the parser's API to
- this particular test harness and execution environment: </p>
- <center><table bgcolor="#ffffff" cellpadding="4" border="1">
- <tr>
- <td bgcolor="#ffffcc">Test Run Date</td>
- <td><?run-id date?></td>
- </tr>
- <tr>
- <td bgcolor="#ffffcc">Harness and Version</td>
- <td><?run-id harness?><br/><?run-id version?></td>
- </tr>
- <tr>
- <td bgcolor="#ffffcc">Runtime Environment</td>
- <td><?run-id java?></td>
- </tr>
- <tr>
- <td bgcolor="#ffffcc">Host OS Info</td>
- <td><?run-id os?></td>
- </tr>
- <tr>
- <td bgcolor="#ffffcc">Suite of Testcases</td>
- <td><?run-id testsuite?></td>
- </tr>
- </table></center>
- <p> An summary of test results follows. To know the actual test status,
- <b>someone must examine the result of each passed negative test</b>
- (and informative test) to make sure it failed for the right reason.
- That examination may cause the counts of failed tests to increase
- (and passed tests to decrease), changing a provisional "conforms" status
- to a "does not conform". </p>
- <center><table bgcolor="#ffffff" cellpadding="4" border="1">
- <tr>
- <td bgcolor="#ffffcc">Status</td>
- <td><?run-id status?></td>
- </tr>
- <tr>
- <td bgcolor="#ffffcc">Total Passed Tests (provisional)</td>
- <td><?run-id passed?></td>
- </tr>
- <tr>
- <td bgcolor="#ffffcc">Passed Negative Tests (provisional)</td>
- <td><?run-id passed-negative?></td>
- </tr>
- <tr>
- <td bgcolor="#ffffcc">Failed Tests (provisional)</td>
- <td><?run-id failed?></td>
- </tr>
- <tr>
- <td bgcolor="#ffffcc">Tests Skipped</td>
- <td><?run-id skipped?></td>
- </tr>
- </table></center>
- <p> Sections of this report are:
- <a href="#explanation">Explanation of Tables</a>;
- <a href="#positive">Positive Tests</a>, cases where this processor should
- report no errors;
- <a href="#negative">Negative Tests</a>, documents for which this processor
- must report the known errors; and
- <a href="#optional">Informative Tests</a>, documents with errors which
- processors are not required to report. </p>
- <p> <em> <b>NOTE:</b> The OASIS/NIST test suite is currently in draft state,
- and can't actually be used without modifications to the configuration file,
- which is used both to generate the test documentation published at the
- OASIS/NIST site and to operate this test harness. In some cases, test
- cases may need to be reclassified; this would affect results attributed
- to parsers. Accordingly, treat these results as preliminary.</em></p>
- <hr/><h2><a name="explanation">
- Explanation of Tables
- </a></h2>
- <p>Sections presenting test results are composed largely of tables, with
- explanations focussing on exactly what those tables indicate. Diagnostics
- for failed tests are presented in italics, with a cherry colored background,
- to highlight the result. Diagnostics for succesful tests should as a rule
- only exist for negative tests. Initial parenthesized comments typically
- come from the test harness. </p>
- <p> Some such comments indicate the reporting category defined in the XML
- specification. Some low-fidelity processor APIs don't expose recoverable
- errors, which can make validation work awkward.</p>
- <dl>
- <dt><b>(fatal)</b></dt>
- <dd>The diagnostic was reported as a fatal error. Such errors are
- primarily well-formedness errors, such as the violation of XML 1.0
- syntax rules or of well formedness constraints.
- <em>In some underfeatured parser APIs, this may be the
- only kind of error that gets reported.</em>
- </dd>
- <dt><b>(error)</b></dt>
- <dd>The diagnostic was reported as a recoverable error. Such
- errors primarily used to report validation errors, which are all
- violations of validity constraints, but some other errors are also
- classed as nonfatal.</dd>
- <dt><b>(warning)</b></dt>
- <dd>The diagnostic was reported as a warning; warnings are purely
- informative and may be emitted in a number of cases identified by
- the XML 1.0 specification (as well as in other cases).</dd>
- </dl>
- <p> Other such comments may indicate other categories of conformance issue.
- For example, some errors relate to problematic implementation of SAX;
- and in exceptional cases, the harness can be forced to report a failure
- on some test. </p>
- <dl>
- <dt><b>(thrown <em>classname</em>) ... abnormal</b></dt>
- <dd>The named exception was directly thrown. <em>If the exception
- is a SAXException (or a subclass thereof) this suggests an error in
- the parser</em> (violating the SAX API specification) since it should
- normally have used the SAX ErrorHandler instead.</dd>
- <dt><b>(odd <em>classname</em>) ... abnormal</b></dt>
- <dd> After the identified exception was reported through the
- ErrorHandler, an exception of the named class was thrown directly.
- <em>This suggests an error in the parser</em>, since the parser
- either failed to continue after an error (or warning) which is
- required to be continuable, or else it did not pass the exception
- thrown by the application back to the application. </dd>
- <dt><b>(EXCEPTION - DIRECTED FAILURE) ... abnormal</b></dt>
- <dd> This test case was explicitly failed by the test operator;
- the test was not run. This may be done in the case of parsers with
- severe bugs which completely prevented handling the test case,
- typically because the parser seems to "hang" by entering an
- infinite loop.</dd>
- </dl>
- <p> In all cases, negative tests that appear to pass (diagnostics presented
- with a white background) must be individually examined in the report below.
- The diagnostic provided by the processor must correspond to the description
- of the test provided; if the processor does not report the matching error,
- the seeming "pass" is in fact an error of a type the test harness could
- not detect or report. That error is either a conformance bug, or an error
- in the diagnostic being produced; or, rarely, both.</p>
- <?if nonvalidating?>
- <p> Nonvalidating processors may skip some tests if the tests require
- processing a class of external entities (general, parameter, or both)
- which that processor is known not to handle. If processor handling of
- entities is not known, all such tests are skipped, in order to prevent
- misreporting. </p>
- <?endif?>
- <hr/><h2><a name="positive">
- Positive Tests
- </a> </h2>
- <p> All conformant XML 1.0 processors must accept "valid" input documents
- without reporting any errors, and moreover must report the correct output
- data to the application when processing those documents. Nonvalidating
- processors
- <?if nonvalidating?>
- <em>(such as this one)</em>
- <?endif?>
- must also accept "invalid" input documents without reporting any errors.
- These are called "Positive Tests" because they ensure that the processor
- just "does the right thing" without reporting any problems. </p>
- <p> In the interest of brevity, the only tests listed here are those which
- produce diagnostics of some kind, such as test failures. In some cases,
- warnings may be reported when processing these documents, but these do not
- indicate failures.</p>
- <p> No interpretation of these results is necessary; every "error" or
- "fatal" message presented here is an XML conformance failure. Maintainers
- of an XML processor will generally want to fix their software so that it
- conforms fully to the XML specification. </p>
- <h3> Valid Documents </h3>
- <p> All XML processors must accept all valid documents. This group
- of tests must accordingly produce no test failures. </p>
- <table id="valid" width="100%" bgcolor="#ffffff" cellpadding="4" border="1">
- <tr>
- <td bgcolor="#ffffcc">Section and [Rules]</td>
- <td bgcolor="#ffffcc">Test ID</td>
- <td bgcolor="#ffffcc">Description</td>
- <td bgcolor="#ffffcc">Diagnostic</td>
- </tr>
- <?table valid?>
- </table>
- <h3> Output Tests </h3>
- <p> The XML specification places requirements on the data which is reported
- by XML processors to applications.
- <!-- XXX address infoset implications for XML conformance ... -->
- This data flows through the processor API ... or it is not available,
- so the processor is in those respects nonconformant.
- For example, SAX1 did not report external entities which were not
- included; but SAX2 does.
- These output tests verify conformance with the specification by
- recording that data and comparing it with what is required for conformance
- with the XML 1.0 specification. </p>
- <p> At this writing, the OASIS output tests have several categories of
- known omissions (or weak output test coverage). These include: </p> <ul>
- <li>No output tests address the additional requirements which validating
- processors must satisfy. That is, reporting which whitespace is ignorable,
- and reporting declarations of unparsed entities. </li>
- <li>Only a few output tests have been provided which address the
- requirement to report NOTATION declarations, and some of those
- appear to be missing. </li>
- <li>No tests address the requirement to report external entities
- which were not included.</li>
- </ul>
- <p> Note that output tests automatically fail in cases where the processor
- failed to parse the (valid) input document used to generate the
- output data.</p>
- <p>In some test harnessses, the output tests are unreliable because
- they can't directly compare the parser output against reference data.
- Such issues should be noted in the documentation for that harness. </p>
- <p> Also, and not a bug, in some cases these diagnostics may seem like
- they say two equivalent results are not equal. The issue is that some
- differences, often those in reported whitespace, aren't easily visible
- in this report. HTML hides many such differences (because it normalizes
- whitespace before displaying it), and the method used to display the
- differing results may also mask some issues. </p>
- <table id="valid-output" width="100%" bgcolor="#ffffff" cellpadding="4" border="1">
- <tr>
- <td bgcolor="#ffffcc">Test ID</td>
- <td bgcolor="#ffffcc">Diagnostic</td>
- </tr>
- <?table valid output?>
- </table>
- <?if nonvalidating?>
- <h3> Invalid Documents </h3>
- <p> As noted above, nonvalidating processors must accept all documents
- which are well formed, but invalid. This same behavior would be delivered
- by a validating processor, if the application chose to continue processing
- after receiving each report of a validity error, and not report such
- validity errors. (These tests are run as "negative" tests for validating
- processors, since in those cases it is important that the correct validity
- errors be reported and that they be reported at the correct level.) </p>
- <table id="invalid-positive" width="100%" bgcolor="#ffffff" cellpadding="4" border="1">
- <tr>
- <td bgcolor="#ffffcc">Section and [Rules]</td>
- <td bgcolor="#ffffcc">Test ID</td>
- <td bgcolor="#ffffcc">Description</td>
- <td bgcolor="#ffffcc">Diagnostic</td>
- </tr>
- <?table invalid positive?>
- </table>
- <?endif?>
- <h2><a name="negative">
- Negative Tests
- </a></h2>
- <p> All conformant XML 1.0 processors must reject documents which are not
- well-formed. In addition, validating processors
- <?if validating?>
- <em>(such as this one)</em>
- <?endif?>
- must report the validity errors for invalid documents.
- These are called <em>Negative Tests</em> because the test is intended
- to establish that errors are reported when they should be.
- </p>
- <p> Moreover, the processor must both fail for the appropriate reason (given
- by the parser diagnostic) and must report an error at the right level ("error"
- or "fatal"). If both criteria were not considered, a processor which failed
- frequently (such as by failing to parse any document at all) would appear to
- pass a large number of conformance tests Unfortunately, the test driver can
- only tell whether the error was reported at the right level. It can't
- determine whether the processor failed for the right reason. </p>
- <p> That's where a person to interpret these test results is critical. Such
- a person analyses the diagnostics, reported here, for negative tests not
- already known to be failures (for not reporting an error, or reporting one
- at the wrong level). If the diagnostic reported for such tests doesn't match
- the failure from the test description, there is an error in the diagnostic or
- in the processor's XML conformance (or sometimes in both). </p>
- <p> For this processor, <b><?run-id passed-negative?> diagnostics must be
- examined</b> to get an accurate evaluation of its negative test status.</p>
- <?if validating?>
- <h3> Invalid Documents </h3>
- <p> Validating processors must correctly report "error" diagnostics
- for all documents which are well formed but invalid. Such errors must
- also be, "at user option", recoverable so that the validating parser
- may be used in a nonvalidating mode by ignoring all validity errors.
- <em>Some parser APIs do not support recoverability.</em>
- Such issues should be noted in the documentation for the API, and
- for its test harness.
- </p>
- <table id="invalid-negative" width="100%" bgcolor="#ffffff" cellpadding="4" border="1">
- <tr>
- <td bgcolor="#ffffcc">Section and [Rules]</td>
- <td bgcolor="#ffffcc">Test ID</td>
- <td bgcolor="#ffffcc">Description</td>
- <td bgcolor="#ffffcc">Diagnostic</td>
- </tr>
- <?table invalid negative?>
- </table>
- <?endif?>
- <h3> Documents which are not Well-Formed </h3>
- <p> All XML processors must correctly reject (with a "fatal"
- error) all XML documents which are not well-formed.
- <?if nonvalidating?>
- (Nonvalidating processors may skip some of these tests, if
- they require handling of a type of external entity which the
- processor ignores. Such skipped tests are not reported.)
- <?endif?>
- </p>
- <table id="not-wf" width="100%" bgcolor="#ffffff" cellpadding="4" border="1">
- <tr>
- <td bgcolor="#ffffcc">Section and [Rules]</td>
- <td bgcolor="#ffffcc">Test ID</td>
- <td bgcolor="#ffffcc">Description</td>
- <td bgcolor="#ffffcc">Diagnostic</td>
- </tr>
- <?table not-wf?>
- </table>
- <h2><a name="optional">
- Informative Tests
- </a></h2>
- <p> Certain XML documents are specified to be errors, but the handling
- of those documents is not fully determined by the XML 1.0 specification.
- As a rule, these errors may be reported in any manner whatsoever, or
- completely ignored, without consequence in terms of conformance to the
- XML 1.0 specification. And some of these documents don't have errors;
- documents in encodings other than UTF-8 and UTF-16 are legal, but not
- all processors are required to parse them. </p>
- <p>Such "optional" errors are listed here for informational purposes, since
- processors which ignore such errors may cause document creators to create
- documents which are not accepted by all conformant XML 1.0 processors.
- (And of course, processors which produce incorrect diagnostics for such
- cases should be avoided.) </p>
- <table id="error" width="100%" bgcolor="#ffffff" cellpadding="4" border="1">
- <tr>
- <td bgcolor="#ffffcc">Section and [Rules]</td>
- <td bgcolor="#ffffcc">Test ID</td>
- <td bgcolor="#ffffcc">Description</td>
- <td bgcolor="#ffffcc">Diagnostic</td>
- </tr>
- <?table error?>
- </table>
- <p> This report was produced by Free Software from
- <a href="http://xmlconf.sourceforge.net/">http://xmlconf.sourceforge.net</a>,
- and you should be able to reproduce these results yourself. </p>
- </body></html>
|