<?xml version="1.0" encoding="UTF-8"?>+ −
<!--+ −
@(#)testcases.dtd 1.6 99/01/21+ −
Original version copyright 1998 by Sun Microsystems, Inc.+ −
All Rights Reserved.+ −
Modifications copyright 1999 by OASIS.+ −
+ −
1999-06-09 00:20+ −
+ −
DTD describing a database of XML tests.+ −
+ −
NOTE: the OASIS/NIST test effort also has a DTD for its test+ −
environment, but that DTD is not yet suited for automated test+ −
processing. (Among other issues, it doesn't record information+ −
putting any test case into the test matrix.) If that gets fixed,+ −
it may be useful to switch over to that DTD.+ −
-->+ −
+ −
<!--+ −
The root element of the whole collection is TESTSUITE. While not+ −
very different from TESTCASES, it must be distinguished due to+ −
improper processing by IE5.+ −
-->+ −
<!ELEMENT TESTSUITE ( TESTCASES+ )>+ −
<!ATTLIST TESTSUITE + −
PROFILE CDATA #IMPLIED+ −
>+ −
+ −
<!--+ −
The root element of a collection should be "TESTCASES". It groups + −
a set of tests in a particular "PROFILE", which is descriptive. For+ −
example, a "Japanese" profile might group tests with documents+ −
in standard Japanese encodings, using Japanese characters used+ −
inside names and name tokens as well as inside text. Or the+ −
profile might be associated with the test supplier.+ −
-->+ −
+ −
<!ELEMENT TESTCASES (TEST|TESTCASES)*>+ −
<!ATTLIST TESTCASES+ −
xml:base CDATA #IMPLIED+ −
PROFILE CDATA #IMPLIED+ −
>+ −
+ −
<!--+ −
The body of each TEST element is its description, used+ −
to evaluate the diagnostic produced on negative tests.+ −
People will generally read this to evaluate whether the+ −
test failed for the correct reason.+ −
+ −
The type of (external) ENTITIES required affect the results+ −
permitted for certain types of nonvalidating parsers. In+ −
some cases, errors (even well-formedness errors) can't be seen+ −
without reading external parameter or general entities.+ −
+ −
Each test has a unique ID used in diagnostics.+ −
+ −
Tests with an OUTPUT attribute do dual duty: not only must parsers+ −
accept the test, but the data they report must also have "Second+ −
Canonical Form" as found in the specified output file. (This is+ −
what James Clark titled "Canonical XML", with the addition of the+ −
NOTATION declarations that all XML parsers are required to report.)+ −
+ −
The OUTPUT3 attribute is like OUTPUT, but when sent through a+ −
validating parser the data reported must have the "Third Canonical+ −
Form" as found in the specified output file. (This is Second+ −
Canonical form, with declarations of unparsed ENTITY values and+ −
with all ignorable whitespace removed.)+ −
+ −
The canonical forms are changed slightly for output files corresponding+ −
to XML 1.1 input files. They start with an XML declaration specifying the+ −
version number, and use character references for all C0 and C1 controls.+ −
The grammars are changed as follows:+ −
+ −
+ −
CanonXML ::= '<?xml version="1.1">' Pi* element Pi*+ −
CanonXML2 ::= '<?xml version="1.1">' DTD2? Pi* element Pi*+ −
CanonXML3 ::= '<?xml version="1.1">' DTD3? Pi* element Pi*+ −
C0 ::= (Unicode characters #x1-#x1F)+ −
C1 ::= (Unicode characters #x7F-#x9F)+ −
EscapedC0 ::= (Decimal references to C0 characters,  - )+ −
EscapedC1 ::= (Decimal references to C1 characters,  - Ÿ)+ −
Datachar ::= '&' | '<' | '>' | '"'+ −
| EscapedC0 | EscapedC1+ −
| (Char - ('&' | '<' | '>' | '"' | C0 | C1))+ −
+ −
+ −
where Char is the XML 1.1 rather than 1.0 production of that name.+ −
+ −
+ −
Tests apply to one or more particular SECTIONS.+ −
+ −
Each test has a TYPE:+ −
* All parsers must accept "valid" testcases.+ −
* Nonvalidating parsers must also accept "invalid" testcases,+ −
but validating ones must reject them.+ −
* No parser should accept a "not-wf" testcase unless it's a+ −
nonvalidating parser and the test contains external entities+ −
that the parser doesn't read.+ −
* Parsers are not required to report "errors".+ −
+ −
Each test is in a particular XML document, with a URI. If these+ −
tests are accessed over a network, the path will be relative to+ −
the base URI of the document holding the testcase.+ −
+ −
Tests which apply only to certain versions of XML list those versions+ −
in the VERSION attribute. An absent VERSION implies that the test+ −
applies to all versions. Parsers should not run tests for versions+ −
they do not support.+ −
+ −
Parsers should enable namespace processing except for tests marked+ −
with NAMESPACES="no". These are tests that use colons in ways+ −
inconsistent with the Namespaces spec.+ −
-->+ −
+ −
<!ELEMENT TEST (#PCDATA | EM | B)*>+ −
+ −
+ −
<!ATTLIST TEST+ −
ENTITIES (both|none|parameter|general) "none"+ −
ID ID #REQUIRED+ −
OUTPUT CDATA #IMPLIED+ −
OUTPUT3 CDATA #IMPLIED+ −
SECTIONS CDATA #REQUIRED+ −
RECOMMENDATION (XML1.0|XML1.1|NS1.0|NS1.1|+ −
XML1.0-errata2e|XML1.0-errata3e|+ −
NS1.0-errata1e) "XML1.0"+ −
TYPE (valid|invalid|not-wf|error) #REQUIRED+ −
VERSION NMTOKENS #IMPLIED+ −
URI CDATA #REQUIRED+ −
NAMESPACE (yes|no) "yes"+ −
>+ −
+ −
<!--+ −
Really basic HTML font tweaks, to support highlighting+ −
some aspects of test descriptions ...+ −
EM == emphasis (e.g. italics, fun colors)+ −
B == bold+ −
-->+ −
<!ELEMENT EM (#PCDATA | B)*>+ −
<!ELEMENT B (#PCDATA | EM)*>+ −