diff --git a/ChangeLog b/ChangeLog index 207e4312..ac557953 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +Mon Feb 10 15:24:47 CET 2003 Daniel Veillard + + * test/relaxng/OASIS/spectest.xml: OASIS RelaxNG testsuite + * check-relaxng-test-suite.py: python script to run regression + against OASIS RelaxNG testsuite + * relaxng.c: some cleanup tweaks + * HTMLparser.c globals.c: cleanups in comments + * doc/libxml2-api.xml: updated the API + * result/relaxng/*: errors moved files, so large diffs but + no changes at the semantic level. + Mon Feb 10 01:00:31 CET 2003 Daniel Veillard * tree.c: fixing #105678 problem when dumping a namespace node. diff --git a/HTMLparser.c b/HTMLparser.c index 138bf73d..7f7bfdf7 100644 --- a/HTMLparser.c +++ b/HTMLparser.c @@ -5529,8 +5529,8 @@ htmlAttrAllowed(const htmlElemDesc* elt, const xmlChar* attr, int legacy) { } /** * htmlNodeStatus: - * @node - an htmlNodePtr in a tree - * @legacy - whether to allow deprecated elements (YES is faster here + * @node: an htmlNodePtr in a tree + * @legacy: whether to allow deprecated elements (YES is faster here * for Element nodes) * * Checks whether the tree node is valid. Experimental (the author diff --git a/check-relaxng-test-suite.py b/check-relaxng-test-suite.py new file mode 100755 index 00000000..feb68174 --- /dev/null +++ b/check-relaxng-test-suite.py @@ -0,0 +1,326 @@ +#!/usr/bin/python +import sys +import time +import os +import string +import StringIO +sys.path.append("python") +import libxml2 + + +# +# the testsuite description +# +CONF="test/relaxng/OASIS/spectest.xml" +LOG="check-relaxng-test-suite.log" + +log = open(LOG, "w") +nb_schemas_tests = 0 +nb_schemas_success = 0 +nb_schemas_failed = 0 +nb_instances_tests = 0 +nb_instances_success = 0 +nb_instances_failed = 0 + +libxml2.lineNumbersDefault(1) +# +# Error and warnng callbacks +# +def callback(ctx, str): + global log + log.write("%s%s" % (ctx, str)) + +libxml2.registerErrorHandler(callback, "") + +# +# Resolver callback +# +resources = {} +def resolver(URL, ID, ctxt): + global resources + + if resources.has_key(URL): + return(StringIO.StringIO(resources[URL])) + log.write("Resolver failure: asked %s\n" % (URL)) + log.write("resources: %s\n" % (resources)) + return None + +libxml2.setEntityLoader(resolver) + +# +# handle a valid instance +# +def handle_valid(node, schema): + global log + global nb_instances_success + global nb_instances_failed + + instance = "" + child = node.children + while child != None: + if child.type != 'text': + instance = instance + child.serialize() + child = child.next + + try: + doc = libxml2.parseDoc(instance) + except: + doc = None + + if doc == None: + log.write("\nFailed to parse correct instance:\n-----\n") + log.write(instance) + log.write("\n-----\n") + nb_instances_failed = nb_instances_failed + 1 + return + + try: + ctxt = schema.relaxNGNewValidCtxt() + ret = doc.relaxNGValidateDoc(ctxt) + except: + ret = -1 + if ret != 0: + log.write("\nFailed to validate correct instance:\n-----\n") + log.write(instance) + log.write("\n-----\n") + nb_instances_failed = nb_instances_failed + 1 + else: + nb_instances_success = nb_instances_success + 1 + +# +# handle an invalid instance +# +def handle_invalid(node, schema): + global log + global nb_instances_success + global nb_instances_failed + + instance = "" + child = node.children + while child != None: + if child.type != 'text': + instance = instance + child.serialize() + child = child.next + + try: + doc = libxml2.parseDoc(instance) + except: + doc = None + + if doc == None: + log.write("\nStrange: failed to parse incorrect instance:\n-----\n") + log.write(instance) + log.write("\n-----\n") + return + + try: + ctxt = schema.relaxNGNewValidCtxt() + ret = doc.relaxNGValidateDoc(ctxt) + except: + ret = -1 + if ret == 0: + log.write("\nFailed to detect validation problem in instance:\n-----\n") + log.write(instance) + log.write("\n-----\n") + nb_instances_failed = nb_instances_failed + 1 + else: + nb_instances_success = nb_instances_success + 1 + +# +# handle an incorrect test +# +def handle_correct(node): + global log + global nb_schemas_success + global nb_schemas_failed + + schema = "" + child = node.children + while child != None: + if child.type != 'text': + schema = schema + child.serialize() + child = child.next + + try: + rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema)) + rngs = rngp.relaxNGParse() + except: + rngs = None + if rngs == None: + log.write("\nFailed to compile correct schema:\n-----\n") + log.write(schema) + log.write("\n-----\n") + nb_schemas_failed = nb_schemas_failed + 1 + else: + nb_schemas_success = nb_schemas_success + 1 + return rngs + +def handle_incorrect(node): + global log + global nb_schemas_success + global nb_schemas_failed + + schema = "" + child = node.children + while child != None: + if child.type != 'text': + schema = schema + child.serialize() + child = child.next + + try: + rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema)) + rngs = rngp.relaxNGParse() + except: + rngs = None + if rngs != None: + log.write("\nFailed to detect schema error in:\n-----\n") + log.write(schema) + log.write("\n-----\n") + nb_schemas_failed = nb_schemas_failed + 1 + else: +# log.write("\nSuccess detecting schema error in:\n-----\n") +# log.write(schema) +# log.write("\n-----\n") + nb_schemas_success = nb_schemas_success + 1 + return None + +# +# resource handling: keep a dictionary of URL->string mappings +# +def handle_resource(node, dir): + global resources + + try: + name = node.prop('name') + except: + name = None + + if name == None or name == '': + log.write("resource has no name") + return; + + if dir != None: +# name = libxml2.buildURI(name, dir) + name = dir + '/' + name + + res = "" + child = node.children + while child != None: + if child.type != 'text': + res = res + child.serialize() + child = child.next + resources[name] = res + +# +# dir handling: pseudo directory resources +# +def handle_dir(node, dir): + try: + name = node.prop('name') + except: + name = None + + if name == None or name == '': + log.write("resource has no name") + return; + + if dir != None: +# name = libxml2.buildURI(name, dir) + name = dir + '/' + name + + dirs = node.xpathEval('dir') + for dir in dirs: + handle_dir(dir, name) + res = node.xpathEval('resource') + for r in res: + handle_resource(r, name) + + +# +# handle a testCase element +# +def handle_testCase(node): + global nb_schemas_tests + global nb_instances_tests + global resources + + log.write("\n ============= test %d line %d ================\n" % ( + + nb_schemas_tests, node.lineNo())) + resources = {} + + dirs = node.xpathEval('dir') + for dir in dirs: + handle_dir(dir, None) + res = node.xpathEval('resource') + for r in res: + handle_resource(r, None) + + tsts = node.xpathEval('incorrect') + if tsts != []: + if len(tsts) != 1: + print "warning test line %d has more than one example" %(node.lineNo()) + schema = handle_incorrect(tsts[0]) + else: + tsts = node.xpathEval('correct') + if tsts != []: + if len(tsts) != 1: + print "warning test line %d has more than one example"% (node.lineNo()) + schema = handle_correct(tsts[0]) + else: + print "warning line %d has no nor child" % (node.lineNo()) + + nb_schemas_tests = nb_schemas_tests + 1; + + valids = node.xpathEval('valid') + invalids = node.xpathEval('invalid') + nb_instances_tests = nb_instances_tests + len(valids) + len(invalids) + if schema != None: + for valid in valids: + handle_valid(valid, schema) + for invalid in invalids: + handle_invalid(invalid, schema) + + +# +# handle a testSuite element +# +def handle_testSuite(node): + docs = node.xpathEval('documentation') + authors = node.xpathEval('author') + if docs != []: + msg = "" + for doc in docs: + msg = msg + doc.content + " " + if authors != []: + msg = msg + "written by " + for author in authors: + msg = msg + author.content + " " + print msg + sections = node.xpathEval('section') + if sections != []: + msg = "" + for section in sections: + msg = msg + section.content + " " + print "Tests for section %s" % (msg) + for test in node.xpathEval('testCase'): + handle_testCase(test) + for test in node.xpathEval('testSuite'): + handle_testSuite(test) + + +# +# Parse the conf file +# +testsuite = libxml2.parseFile(CONF) +root = testsuite.getRootElement() +if root.name != 'testSuite': + print "%s doesn't start with a testSuite element, aborting" % (CONF) + sys.exit(1) +print "Running Relax NG testsuite" +handle_testSuite(root) + +print "\nTOTAL:\nfound %d test schemas: %d success %d failures" % ( + nb_schemas_tests, nb_schemas_success, nb_schemas_failed) +print "found %d test instances: %d success %d failures" % ( + nb_instances_tests, nb_instances_success, nb_instances_failed) diff --git a/doc/libxml2-api.xml b/doc/libxml2-api.xml index ad21fcdd..828beb6c 100644 --- a/doc/libxml2-api.xml +++ b/doc/libxml2-api.xml @@ -9437,7 +9437,7 @@ actually an xmlCharEncoding'/> Compile an XPath expression - + diff --git a/globals.c b/globals.c index 2a50a08e..c4eb3f5e 100644 --- a/globals.c +++ b/globals.c @@ -464,7 +464,9 @@ xmlInitializeGlobalState(xmlGlobalStatePtr gs) * xmlRegisterNodeDefault: * @func: function pointer to the new RegisterNodeFunc * - * Returns the previous value of the registration function + * Registers a callback for node creation + * + * Returns the old value of the registration function */ xmlRegisterNodeFunc xmlRegisterNodeDefault(xmlRegisterNodeFunc func) @@ -479,6 +481,8 @@ xmlRegisterNodeDefault(xmlRegisterNodeFunc func) * xmlDeregisterNodeDefault: * @func: function pointer to the new DeregisterNodeFunc * + * Registers a callback for node destruction + * * Returns the previous value of the deregistration function */ xmlDeregisterNodeFunc diff --git a/relaxng.c b/relaxng.c index 4ff9a7c0..3676ec6e 100644 --- a/relaxng.c +++ b/relaxng.c @@ -1180,9 +1180,16 @@ xmlRelaxNGLoadExternalRef(xmlRelaxNGParserCtxtPtr ctxt, const xmlChar *URL, xmlGenericError(xmlGenericErrorContext, \ "error detected at %s:%d\n", \ __FILE__, __LINE__); -#define VALID_ERROR \ + +#define VALID_ERROR(a) \ if (((ctxt->flags & 1) == 0) || (ctxt->flags & 2)) \ - printf + if (ctxt->error != NULL) ctxt->error(ctxt->userData, a) +#define VALID_ERROR2(a, b) \ + if (((ctxt->flags & 1) == 0) || (ctxt->flags & 2)) \ + if (ctxt->error != NULL) ctxt->error(ctxt->userData, a, b) +#define VALID_ERROR3(a, b, c) \ + if (((ctxt->flags & 1) == 0) || (ctxt->flags & 2)) \ + if (ctxt->error != NULL) ctxt->error(ctxt->userData, a, b, c) static const char * xmlRelaxNGDefName(xmlRelaxNGDefinePtr def) { @@ -1710,14 +1717,16 @@ xmlRelaxNGParseValue(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node) { } else { def->data = lib; if (lib->have == NULL) { - ctxt->error(ctxt->userData, + if (ctxt->error != NULL) + ctxt->error(ctxt->userData, "Internal error with type library '%s': no 'have'\n", library); ctxt->nbErrors++; } else { tmp = lib->have(lib->data, def->name); if (tmp != 1) { - ctxt->error(ctxt->userData, + if (ctxt->error != NULL) + ctxt->error(ctxt->userData, "Error type '%s' is not exported by type library '%s'\n", def->name, library); ctxt->nbErrors++; @@ -1800,14 +1809,16 @@ xmlRelaxNGParseData(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node) { } else { def->data = lib; if (lib->have == NULL) { - ctxt->error(ctxt->userData, + if (ctxt->error != NULL) + ctxt->error(ctxt->userData, "Internal error with type library '%s': no 'have'\n", library); ctxt->nbErrors++; } else { tmp = lib->have(lib->data, def->name); if (tmp != 1) { - ctxt->error(ctxt->userData, + if (ctxt->error != NULL) + ctxt->error(ctxt->userData, "Error type '%s' is not exported by type library '%s'\n", def->name, library); ctxt->nbErrors++; @@ -1817,6 +1828,7 @@ xmlRelaxNGParseData(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node) { content = node->children; while (content != NULL) { TODO + ctxt->nbErrors++; content = content->next; } @@ -2511,6 +2523,7 @@ xmlRelaxNGParsePattern(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node) { } } else { TODO + ctxt->nbErrors++; def = NULL; } return(def); @@ -2598,6 +2611,7 @@ xmlRelaxNGParseAttribute(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node) { case XML_RELAXNG_START: case XML_RELAXNG_EXCEPT: TODO + ctxt->nbErrors++; break; } } @@ -2706,6 +2720,7 @@ xmlRelaxNGParseNameClass(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node, } } else if (IS_RELAXNG(node, "choice")) { TODO + ctxt->nbErrors++; } else { if (ctxt->error != NULL) ctxt->error(ctxt->userData, @@ -2805,6 +2820,7 @@ xmlRelaxNGParseElement(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node) { case XML_RELAXNG_START: case XML_RELAXNG_EXCEPT: TODO + ctxt->nbErrors++; break; } } @@ -2879,10 +2895,10 @@ xmlRelaxNGParseStart(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr nodes) { while (nodes != NULL) { if (IS_RELAXNG(nodes, "empty")) { TODO - xmlElemDump(stdout, nodes->doc, nodes); + ctxt->nbErrors++; } else if (IS_RELAXNG(nodes, "notAllowed")) { TODO - xmlElemDump(stdout, nodes->doc, nodes); + ctxt->nbErrors++; } else { def = xmlRelaxNGParsePatterns(ctxt, nodes, 1); ctxt->grammar->start = def; @@ -2987,6 +3003,7 @@ xmlRelaxNGCheckReference(xmlRelaxNGDefinePtr ref, } } else { TODO + ctxt->nbErrors++; } } /* @@ -3366,6 +3383,8 @@ xmlRelaxNGNewParserCtxt(const char *URL) { } memset(ret, 0, sizeof(xmlRelaxNGParserCtxt)); ret->URL = xmlStrdup((const xmlChar *)URL); + ret->error = xmlGenericError; + ret->userData = xmlGenericErrorContext; return (ret); } @@ -3395,6 +3414,8 @@ xmlRelaxNGNewMemParserCtxt(const char *buffer, int size) { memset(ret, 0, sizeof(xmlRelaxNGParserCtxt)); ret->buffer = buffer; ret->size = size; + ret->error = xmlGenericError; + ret->userData = xmlGenericErrorContext; return (ret); } @@ -3672,7 +3693,7 @@ xmlRelaxNGCleanupDoc(xmlRelaxNGParserCtxtPtr ctxt, xmlDocPtr doc) { xmlNodePtr child, ins, tmp; child = cur->children; - ins = child; + ins = cur; while (child != NULL) { tmp = child->next; xmlUnlinkNode(child); @@ -4194,13 +4215,13 @@ xmlRelaxNGValidateDatatype(xmlRelaxNGValidCtxtPtr ctxt, const xmlChar *value, ret = -1; if (ret < 0) { VALID_CTXT(); - VALID_ERROR("Internal: failed to validate type %s\n", define->name); + VALID_ERROR2("Internal: failed to validate type %s\n", define->name); return(-1); } else if (ret == 1) { ret = 0; } else { VALID_CTXT(); - VALID_ERROR("Type %s doesn't allow value %s\n", define->name, value); + VALID_ERROR3("Type %s doesn't allow value %s\n", define->name, value); return(-1); ret = -1; } @@ -4293,7 +4314,7 @@ xmlRelaxNGValidateValue(xmlRelaxNGValidCtxtPtr ctxt, ret = -1; if (ret < 0) { VALID_CTXT(); - VALID_ERROR("Internal: failed to compare type %s\n", + VALID_ERROR2("Internal: failed to compare type %s\n", define->name); return(-1); } else if (ret == 1) { @@ -4383,7 +4404,7 @@ xmlRelaxNGValidateValue(xmlRelaxNGValidCtxtPtr ctxt, if ((ret == 0) && (ctxt->state->value != NULL) && (ctxt->state->value != ctxt->state->endvalue)) { VALID_CTXT(); - VALID_ERROR("Extra data in list: %s\n", ctxt->state->value); + VALID_ERROR2("Extra data in list: %s\n", ctxt->state->value); ret = -1; } xmlFree(val); @@ -5063,7 +5084,7 @@ xmlRelaxNGValidateDefinition(xmlRelaxNGValidCtxtPtr ctxt, } if (node->type != XML_ELEMENT_NODE) { VALID_CTXT(); - VALID_ERROR("Expecting an element got %d type\n", node->type); + VALID_ERROR2("Expecting an element got %d type\n", node->type); ret = -1; break; } @@ -5076,7 +5097,7 @@ xmlRelaxNGValidateDefinition(xmlRelaxNGValidCtxtPtr ctxt, if (define->name != NULL) { if (!xmlStrEqual(node->name, define->name)) { VALID_CTXT(); - VALID_ERROR("Expecting element %s, got %s\n", + VALID_ERROR3("Expecting element %s, got %s\n", define->name, node->name); ret = -1; break; @@ -5085,13 +5106,13 @@ xmlRelaxNGValidateDefinition(xmlRelaxNGValidCtxtPtr ctxt, if ((define->ns != NULL) && (define->ns[0] != 0)) { if (node->ns == NULL) { VALID_CTXT(); - VALID_ERROR("Expecting a namespace for element %s\n", + VALID_ERROR2("Expecting a namespace for element %s\n", node->name); ret = -1; break; } else if (!xmlStrEqual(node->ns->href, define->ns)) { VALID_CTXT(); - VALID_ERROR("Expecting element %s has wrong namespace: expecting %s\n", + VALID_ERROR3("Expecting element %s has wrong namespace: expecting %s\n", node->name, define->ns); ret = -1; break; @@ -5099,7 +5120,7 @@ xmlRelaxNGValidateDefinition(xmlRelaxNGValidCtxtPtr ctxt, } else if (define->name != NULL) { if (node->ns != NULL) { VALID_CTXT(); - VALID_ERROR("Expecting no namespace for element %s\n", + VALID_ERROR2("Expecting no namespace for element %s\n", define->name); ret = -1; break; @@ -5141,7 +5162,7 @@ xmlRelaxNGValidateDefinition(xmlRelaxNGValidCtxtPtr ctxt, state->seq = xmlRelaxNGSkipIgnored(ctxt, state->seq); if (state->seq != NULL) { VALID_CTXT(); - VALID_ERROR("Extra content for element %s: %s\n", + VALID_ERROR3("Extra content for element %s: %s\n", node->name, state->seq->name); ret = -1; #ifdef DEBUG @@ -5154,7 +5175,7 @@ xmlRelaxNGValidateDefinition(xmlRelaxNGValidCtxtPtr ctxt, for (i = 0;i < state->nbAttrs;i++) { if (state->attrs[i] != NULL) { VALID_CTXT(); - VALID_ERROR("Invalid attribute %s for element %s\n", + VALID_ERROR3("Invalid attribute %s for element %s\n", state->attrs[i]->name, node->name); ret = -1; } @@ -5293,9 +5314,12 @@ xmlRelaxNGValidateDefinition(xmlRelaxNGValidCtxtPtr ctxt, ret = xmlRelaxNGValidateDatatype(ctxt, content, define); if (ret == -1) { VALID_CTXT(); - VALID_ERROR("internal error validating %s\n", define->name); + VALID_ERROR2("internal error validating %s\n", define->name); } else if (ret == 0) { - ctxt->state->seq = node->next; + if (node != NULL) + ctxt->state->seq = node->next; + else + ctxt->state->seq = NULL; } /* * TODO cover the problems with @@ -5304,7 +5328,7 @@ xmlRelaxNGValidateDefinition(xmlRelaxNGValidCtxtPtr ctxt, */ if ((node != NULL) && (node->next != NULL)) { VALID_CTXT(); - VALID_ERROR("The data does not cover the full element %s\n", + VALID_ERROR2("The data does not cover the full element %s\n", node->parent->name); ret = -1; } @@ -5323,7 +5347,7 @@ xmlRelaxNGValidateDefinition(xmlRelaxNGValidCtxtPtr ctxt, ctxt->state->value = oldvalue; if (ret == -1) { VALID_CTXT(); - VALID_ERROR("internal error validating %s\n", define->name); + VALID_ERROR2("internal error validating %s\n", define->name); } else if (ret == 0) { ctxt->state->seq = node->next; } @@ -5334,7 +5358,7 @@ xmlRelaxNGValidateDefinition(xmlRelaxNGValidCtxtPtr ctxt, */ if ((node != NULL) && (node->next != NULL)) { VALID_CTXT(); - VALID_ERROR("The value does not cover the full element %s\n", + VALID_ERROR2("The value does not cover the full element %s\n", node->parent->name); ret = -1; } @@ -5369,7 +5393,7 @@ xmlRelaxNGValidateDefinition(xmlRelaxNGValidCtxtPtr ctxt, */ if ((node != NULL) && (node->next != NULL)) { VALID_CTXT(); - VALID_ERROR("The list does not cover the full element %s\n", + VALID_ERROR2("The list does not cover the full element %s\n", node->parent->name); ret = -1; } @@ -5469,6 +5493,8 @@ xmlRelaxNGNewValidCtxt(xmlRelaxNGPtr schema) { } memset(ret, 0, sizeof(xmlRelaxNGValidCtxt)); ret->schema = schema; + ret->error = xmlGenericError; + ret->userData = xmlGenericErrorContext; return (ret); } diff --git a/result/relaxng/spec1_err b/result/relaxng/spec1_err index e40f6074..0fe2d104 100644 --- a/result/relaxng/spec1_err +++ b/result/relaxng/spec1_err @@ -1 +1 @@ -Unimplemented block at relaxng.c:4828 +Unimplemented block at relaxng.c:4849 diff --git a/result/relaxng/tutor10_1_4 b/result/relaxng/tutor10_1_4 index 04a3e5b8..a1c0354a 100644 --- a/result/relaxng/tutor10_1_4 +++ b/result/relaxng/tutor10_1_4 @@ -1,3 +1 @@ -Expecting a namespace for element foo -extra data on the document ./test/relaxng/tutor10_1_4.xml fails to validate diff --git a/result/relaxng/tutor10_1_4.err b/result/relaxng/tutor10_1_4.err index 79345542..3d258549 100644 --- a/result/relaxng/tutor10_1_4.err +++ b/result/relaxng/tutor10_1_4.err @@ -1,2 +1,4 @@ -error detected at relaxng.c:5087 -error detected at relaxng.c:5437 +error detected at relaxng.c:5108 +Expecting a namespace for element foo +error detected at relaxng.c:5461 +extra data on the document diff --git a/result/relaxng/tutor10_1_5 b/result/relaxng/tutor10_1_5 index dbd78368..b45f8778 100644 --- a/result/relaxng/tutor10_1_5 +++ b/result/relaxng/tutor10_1_5 @@ -1,3 +1 @@ -Expecting element foo has wrong namespace: expecting http://www.example.com -extra data on the document ./test/relaxng/tutor10_1_5.xml fails to validate diff --git a/result/relaxng/tutor10_1_5.err b/result/relaxng/tutor10_1_5.err index e8d4bb13..c4ac9097 100644 --- a/result/relaxng/tutor10_1_5.err +++ b/result/relaxng/tutor10_1_5.err @@ -1,2 +1,4 @@ -error detected at relaxng.c:5093 -error detected at relaxng.c:5437 +error detected at relaxng.c:5114 +Expecting element foo has wrong namespace: expecting http://www.example.com +error detected at relaxng.c:5461 +extra data on the document diff --git a/result/relaxng/tutor10_1_6 b/result/relaxng/tutor10_1_6 index 7907afac..4f4f2edc 100644 --- a/result/relaxng/tutor10_1_6 +++ b/result/relaxng/tutor10_1_6 @@ -1,3 +1 @@ -Expecting element foo has wrong namespace: expecting http://www.example.com -extra data on the document ./test/relaxng/tutor10_1_6.xml fails to validate diff --git a/result/relaxng/tutor10_1_6.err b/result/relaxng/tutor10_1_6.err index e8d4bb13..c4ac9097 100644 --- a/result/relaxng/tutor10_1_6.err +++ b/result/relaxng/tutor10_1_6.err @@ -1,2 +1,4 @@ -error detected at relaxng.c:5093 -error detected at relaxng.c:5437 +error detected at relaxng.c:5114 +Expecting element foo has wrong namespace: expecting http://www.example.com +error detected at relaxng.c:5461 +extra data on the document diff --git a/result/relaxng/tutor10_2_3 b/result/relaxng/tutor10_2_3 index 43b83175..141582c4 100644 --- a/result/relaxng/tutor10_2_3 +++ b/result/relaxng/tutor10_2_3 @@ -1,3 +1 @@ -Expecting no namespace for element foo -extra data on the document ./test/relaxng/tutor10_2_3.xml fails to validate diff --git a/result/relaxng/tutor10_2_3.err b/result/relaxng/tutor10_2_3.err index 35b54a40..fb0f5b8f 100644 --- a/result/relaxng/tutor10_2_3.err +++ b/result/relaxng/tutor10_2_3.err @@ -1,2 +1,4 @@ -error detected at relaxng.c:5101 -error detected at relaxng.c:5437 +error detected at relaxng.c:5122 +Expecting no namespace for element foo +error detected at relaxng.c:5461 +extra data on the document diff --git a/result/relaxng/tutor10_2_4 b/result/relaxng/tutor10_2_4 index 26d37b74..91af512c 100644 --- a/result/relaxng/tutor10_2_4 +++ b/result/relaxng/tutor10_2_4 @@ -1,3 +1 @@ -Expecting no namespace for element foo -extra data on the document ./test/relaxng/tutor10_2_4.xml fails to validate diff --git a/result/relaxng/tutor10_2_4.err b/result/relaxng/tutor10_2_4.err index 35b54a40..fb0f5b8f 100644 --- a/result/relaxng/tutor10_2_4.err +++ b/result/relaxng/tutor10_2_4.err @@ -1,2 +1,4 @@ -error detected at relaxng.c:5101 -error detected at relaxng.c:5437 +error detected at relaxng.c:5122 +Expecting no namespace for element foo +error detected at relaxng.c:5461 +extra data on the document diff --git a/result/relaxng/tutor10_7_3 b/result/relaxng/tutor10_7_3 index bbebfc88..bd2389cf 100644 --- a/result/relaxng/tutor10_7_3 +++ b/result/relaxng/tutor10_7_3 @@ -1,2 +1 @@ -Extra content for element addressBook: card ./test/relaxng/tutor10_7_3.xml fails to validate diff --git a/result/relaxng/tutor10_7_3.err b/result/relaxng/tutor10_7_3.err index 8fcd1831..984a201e 100644 --- a/result/relaxng/tutor10_7_3.err +++ b/result/relaxng/tutor10_7_3.err @@ -1 +1,2 @@ -error detected at relaxng.c:5143 +error detected at relaxng.c:5164 +Extra content for element addressBook: card diff --git a/result/relaxng/tutor10_8_3 b/result/relaxng/tutor10_8_3 index 160e18aa..32adc71e 100644 --- a/result/relaxng/tutor10_8_3 +++ b/result/relaxng/tutor10_8_3 @@ -1,2 +1 @@ -Extra content for element addressBook: card ./test/relaxng/tutor10_8_3.xml fails to validate diff --git a/result/relaxng/tutor10_8_3.err b/result/relaxng/tutor10_8_3.err index 8fcd1831..984a201e 100644 --- a/result/relaxng/tutor10_8_3.err +++ b/result/relaxng/tutor10_8_3.err @@ -1 +1,2 @@ -error detected at relaxng.c:5143 +error detected at relaxng.c:5164 +Extra content for element addressBook: card diff --git a/result/relaxng/tutor11_2_2 b/result/relaxng/tutor11_2_2 index 3fe44801..a2662bff 100644 --- a/result/relaxng/tutor11_2_2 +++ b/result/relaxng/tutor11_2_2 @@ -1,2 +1 @@ -Invalid attribute foo for element card ./test/relaxng/tutor11_2_2.xml fails to validate diff --git a/result/relaxng/tutor11_2_2.err b/result/relaxng/tutor11_2_2.err index 43abea66..c423d13c 100644 --- a/result/relaxng/tutor11_2_2.err +++ b/result/relaxng/tutor11_2_2.err @@ -1 +1,2 @@ -error detected at relaxng.c:5156 +error detected at relaxng.c:5177 +Invalid attribute foo for element card diff --git a/result/relaxng/tutor11_2_3 b/result/relaxng/tutor11_2_3 index d183cfb3..419de595 100644 --- a/result/relaxng/tutor11_2_3 +++ b/result/relaxng/tutor11_2_3 @@ -1,2 +1 @@ -Invalid attribute b for element card ./test/relaxng/tutor11_2_3.xml fails to validate diff --git a/result/relaxng/tutor11_2_3.err b/result/relaxng/tutor11_2_3.err index 43abea66..2d4fb595 100644 --- a/result/relaxng/tutor11_2_3.err +++ b/result/relaxng/tutor11_2_3.err @@ -1 +1,2 @@ -error detected at relaxng.c:5156 +error detected at relaxng.c:5177 +Invalid attribute b for element card diff --git a/result/relaxng/tutor12_1_err b/result/relaxng/tutor12_1_err index e40f6074..0fe2d104 100644 --- a/result/relaxng/tutor12_1_err +++ b/result/relaxng/tutor12_1_err @@ -1 +1 @@ -Unimplemented block at relaxng.c:4828 +Unimplemented block at relaxng.c:4849 diff --git a/result/relaxng/tutor3_2_1 b/result/relaxng/tutor3_2_1 index 336b2de4..531fcf73 100644 --- a/result/relaxng/tutor3_2_1 +++ b/result/relaxng/tutor3_2_1 @@ -1,3 +1 @@ -Expecting element name, got email -Extra content for element card: email ./test/relaxng/tutor3_2_1.xml fails to validate diff --git a/result/relaxng/tutor3_2_1.err b/result/relaxng/tutor3_2_1.err index eabd308d..a005926d 100644 --- a/result/relaxng/tutor3_2_1.err +++ b/result/relaxng/tutor3_2_1.err @@ -1,2 +1,4 @@ -error detected at relaxng.c:5078 -error detected at relaxng.c:5143 +error detected at relaxng.c:5099 +Expecting element name, got email +error detected at relaxng.c:5164 +Extra content for element card: email diff --git a/result/relaxng/tutor3_5_2 b/result/relaxng/tutor3_5_2 index b71d10cf..4dcea493 100644 --- a/result/relaxng/tutor3_5_2 +++ b/result/relaxng/tutor3_5_2 @@ -1,2 +1 @@ -Extra content for element addressBook: card ./test/relaxng/tutor3_5_2.xml fails to validate diff --git a/result/relaxng/tutor3_5_2.err b/result/relaxng/tutor3_5_2.err index 8fcd1831..984a201e 100644 --- a/result/relaxng/tutor3_5_2.err +++ b/result/relaxng/tutor3_5_2.err @@ -1 +1,2 @@ -error detected at relaxng.c:5143 +error detected at relaxng.c:5164 +Extra content for element addressBook: card diff --git a/result/relaxng/tutor3_7_err b/result/relaxng/tutor3_7_err index 96dd8eed..c2aa66df 100644 --- a/result/relaxng/tutor3_7_err +++ b/result/relaxng/tutor3_7_err @@ -1 +1,2 @@ -error detected at relaxng.c:5437 +error detected at relaxng.c:5461 +extra data on the document diff --git a/result/relaxng/tutor3_7_valid b/result/relaxng/tutor3_7_valid index 1e179695..f7f3485c 100644 --- a/result/relaxng/tutor3_7_valid +++ b/result/relaxng/tutor3_7_valid @@ -1,2 +1 @@ -extra data on the document ./test/relaxng/tutor3_7.rng fails to validate diff --git a/result/relaxng/tutor5_3_1 b/result/relaxng/tutor5_3_1 index dff112b2..2c33d6c0 100644 --- a/result/relaxng/tutor5_3_1 +++ b/result/relaxng/tutor5_3_1 @@ -1,2 +1 @@ -The data does not cover the full element bad ./test/relaxng/tutor5_3_1.xml fails to validate diff --git a/result/relaxng/tutor5_3_1.err b/result/relaxng/tutor5_3_1.err index 62269a00..07da5165 100644 --- a/result/relaxng/tutor5_3_1.err +++ b/result/relaxng/tutor5_3_1.err @@ -1 +1,2 @@ -error detected at relaxng.c:5306 +error detected at relaxng.c:5330 +The data does not cover the full element bad diff --git a/result/relaxng/tutor6_1_3 b/result/relaxng/tutor6_1_3 index 11694643..70aa5884 100644 --- a/result/relaxng/tutor6_1_3 +++ b/result/relaxng/tutor6_1_3 @@ -1,2 +1 @@ -Invalid attribute preferredFormat for element card ./test/relaxng/tutor6_1_3.xml fails to validate diff --git a/result/relaxng/tutor6_1_3.err b/result/relaxng/tutor6_1_3.err index 43abea66..56a9a142 100644 --- a/result/relaxng/tutor6_1_3.err +++ b/result/relaxng/tutor6_1_3.err @@ -1 +1,2 @@ -error detected at relaxng.c:5156 +error detected at relaxng.c:5177 +Invalid attribute preferredFormat for element card diff --git a/result/relaxng/tutor6_2_4 b/result/relaxng/tutor6_2_4 index 24de3342..bccc78f2 100644 --- a/result/relaxng/tutor6_2_4 +++ b/result/relaxng/tutor6_2_4 @@ -1,2 +1 @@ -Extra content for element preferredFormat: text ./test/relaxng/tutor6_2_4.xml fails to validate diff --git a/result/relaxng/tutor6_2_4.err b/result/relaxng/tutor6_2_4.err index 8fcd1831..b78fdf92 100644 --- a/result/relaxng/tutor6_2_4.err +++ b/result/relaxng/tutor6_2_4.err @@ -1 +1,2 @@ -error detected at relaxng.c:5143 +error detected at relaxng.c:5164 +Extra content for element preferredFormat: text diff --git a/result/relaxng/tutor6_3_1 b/result/relaxng/tutor6_3_1 index d241c419..84fed8ff 100644 --- a/result/relaxng/tutor6_3_1 +++ b/result/relaxng/tutor6_3_1 @@ -1,2 +1 @@ -Invalid attribute preferredFormat for element card ./test/relaxng/tutor6_3_1.xml fails to validate diff --git a/result/relaxng/tutor6_3_1.err b/result/relaxng/tutor6_3_1.err index 43abea66..56a9a142 100644 --- a/result/relaxng/tutor6_3_1.err +++ b/result/relaxng/tutor6_3_1.err @@ -1 +1,2 @@ -error detected at relaxng.c:5156 +error detected at relaxng.c:5177 +Invalid attribute preferredFormat for element card diff --git a/result/relaxng/tutor7_1_2 b/result/relaxng/tutor7_1_2 index eb664536..1ee1ccf3 100644 --- a/result/relaxng/tutor7_1_2 +++ b/result/relaxng/tutor7_1_2 @@ -1,4 +1 @@ -Internal: failed to validate type float -internal error validating list -Extra content for element vector: text ./test/relaxng/tutor7_1_2.xml fails to validate diff --git a/result/relaxng/tutor7_1_2.err b/result/relaxng/tutor7_1_2.err index 3a8a7dbb..2dfdcbab 100644 --- a/result/relaxng/tutor7_1_2.err +++ b/result/relaxng/tutor7_1_2.err @@ -1,3 +1,6 @@ -error detected at relaxng.c:4196 -error detected at relaxng.c:5360 -error detected at relaxng.c:5143 +error detected at relaxng.c:4217 +Internal: failed to validate type float +error detected at relaxng.c:5384 +internal error validating list +error detected at relaxng.c:5164 +Extra content for element vector: text diff --git a/result/relaxng/tutor7_1_3 b/result/relaxng/tutor7_1_3 index 69d624e9..a0d8c90d 100644 --- a/result/relaxng/tutor7_1_3 +++ b/result/relaxng/tutor7_1_3 @@ -1,4 +1 @@ -Extra data in list: 5.6 -internal error validating list -Extra content for element vector: text ./test/relaxng/tutor7_1_3.xml fails to validate diff --git a/result/relaxng/tutor7_1_3.err b/result/relaxng/tutor7_1_3.err index ac8d77aa..727cb375 100644 --- a/result/relaxng/tutor7_1_3.err +++ b/result/relaxng/tutor7_1_3.err @@ -1,3 +1,6 @@ -error detected at relaxng.c:4385 -error detected at relaxng.c:5360 -error detected at relaxng.c:5143 +error detected at relaxng.c:4406 +Extra data in list: 5.6 +error detected at relaxng.c:5384 +internal error validating list +error detected at relaxng.c:5164 +Extra content for element vector: text diff --git a/result/relaxng/tutor7_2_4 b/result/relaxng/tutor7_2_4 index 0480b382..64772517 100644 --- a/result/relaxng/tutor7_2_4 +++ b/result/relaxng/tutor7_2_4 @@ -1,3 +1 @@ -Internal: no state -internal error validating list ./test/relaxng/tutor7_2_4.xml fails to validate diff --git a/result/relaxng/tutor7_2_4.err b/result/relaxng/tutor7_2_4.err index 119e2331..3ee93607 100644 --- a/result/relaxng/tutor7_2_4.err +++ b/result/relaxng/tutor7_2_4.err @@ -1,2 +1,4 @@ -error detected at relaxng.c:4360 -error detected at relaxng.c:5360 +error detected at relaxng.c:4381 +Internal: no state +error detected at relaxng.c:5384 +internal error validating list diff --git a/result/relaxng/tutor7_3_4 b/result/relaxng/tutor7_3_4 index 9663c6d1..8f5ce841 100644 --- a/result/relaxng/tutor7_3_4 +++ b/result/relaxng/tutor7_3_4 @@ -1,4 +1 @@ -Extra data in list: 5.6 -internal error validating list -Extra content for element path: text ./test/relaxng/tutor7_3_4.xml fails to validate diff --git a/result/relaxng/tutor7_3_4.err b/result/relaxng/tutor7_3_4.err index ac8d77aa..cb0fdf6a 100644 --- a/result/relaxng/tutor7_3_4.err +++ b/result/relaxng/tutor7_3_4.err @@ -1,3 +1,6 @@ -error detected at relaxng.c:4385 -error detected at relaxng.c:5360 -error detected at relaxng.c:5143 +error detected at relaxng.c:4406 +Extra data in list: 5.6 +error detected at relaxng.c:5384 +internal error validating list +error detected at relaxng.c:5164 +Extra content for element path: text diff --git a/result/relaxng/tutor7_3_5 b/result/relaxng/tutor7_3_5 index c23d4b13..856ee343 100644 --- a/result/relaxng/tutor7_3_5 +++ b/result/relaxng/tutor7_3_5 @@ -1,4 +1 @@ -Internal: failed to validate type double -internal error validating list -Extra content for element path: text ./test/relaxng/tutor7_3_5.xml fails to validate diff --git a/result/relaxng/tutor7_3_5.err b/result/relaxng/tutor7_3_5.err index 3a8a7dbb..66dbf165 100644 --- a/result/relaxng/tutor7_3_5.err +++ b/result/relaxng/tutor7_3_5.err @@ -1,3 +1,6 @@ -error detected at relaxng.c:4196 -error detected at relaxng.c:5360 -error detected at relaxng.c:5143 +error detected at relaxng.c:4217 +Internal: failed to validate type double +error detected at relaxng.c:5384 +internal error validating list +error detected at relaxng.c:5164 +Extra content for element path: text diff --git a/result/relaxng/tutor8_2_4 b/result/relaxng/tutor8_2_4 index 3b53125b..d50e6d73 100644 --- a/result/relaxng/tutor8_2_4 +++ b/result/relaxng/tutor8_2_4 @@ -1,2 +1 @@ -Extra content for element head: meta ./test/relaxng/tutor8_2_4.xml fails to validate diff --git a/result/relaxng/tutor8_2_4.err b/result/relaxng/tutor8_2_4.err index 4317d77a..da513e4b 100644 --- a/result/relaxng/tutor8_2_4.err +++ b/result/relaxng/tutor8_2_4.err @@ -1,3 +1,4 @@ -Unimplemented block at relaxng.c:4828 -Unimplemented block at relaxng.c:4828 -error detected at relaxng.c:5143 +Unimplemented block at relaxng.c:4849 +Unimplemented block at relaxng.c:4849 +error detected at relaxng.c:5164 +Extra content for element head: meta diff --git a/result/relaxng/tutor8_2_5 b/result/relaxng/tutor8_2_5 index 453f7561..bd568d7a 100644 --- a/result/relaxng/tutor8_2_5 +++ b/result/relaxng/tutor8_2_5 @@ -1,3 +1 @@ -Expecting an element, got empty -Extra content for element head: meta ./test/relaxng/tutor8_2_5.xml fails to validate diff --git a/result/relaxng/tutor8_2_5.err b/result/relaxng/tutor8_2_5.err index 9f6bbaaa..53a5f29a 100644 --- a/result/relaxng/tutor8_2_5.err +++ b/result/relaxng/tutor8_2_5.err @@ -1,2 +1,4 @@ -error detected at relaxng.c:5059 -error detected at relaxng.c:5143 +error detected at relaxng.c:5080 +Expecting an element, got empty +error detected at relaxng.c:5164 +Extra content for element head: meta diff --git a/result/relaxng/tutor8_2_6 b/result/relaxng/tutor8_2_6 index 9a9c2d66..86645ffa 100644 --- a/result/relaxng/tutor8_2_6 +++ b/result/relaxng/tutor8_2_6 @@ -1,2 +1 @@ -Extra content for element head: base ./test/relaxng/tutor8_2_6.xml fails to validate diff --git a/result/relaxng/tutor8_2_6.err b/result/relaxng/tutor8_2_6.err index 8fcd1831..1f757c6c 100644 --- a/result/relaxng/tutor8_2_6.err +++ b/result/relaxng/tutor8_2_6.err @@ -1 +1,2 @@ -error detected at relaxng.c:5143 +error detected at relaxng.c:5164 +Extra content for element head: base diff --git a/result/relaxng/tutor9_5_2 b/result/relaxng/tutor9_5_2 index 13290a48..04097ec7 100644 --- a/result/relaxng/tutor9_5_2 +++ b/result/relaxng/tutor9_5_2 @@ -1,2 +1 @@ -Extra content for element addressBook: card ./test/relaxng/tutor9_5_2.xml fails to validate diff --git a/result/relaxng/tutor9_5_2.err b/result/relaxng/tutor9_5_2.err index 8fcd1831..984a201e 100644 --- a/result/relaxng/tutor9_5_2.err +++ b/result/relaxng/tutor9_5_2.err @@ -1 +1,2 @@ -error detected at relaxng.c:5143 +error detected at relaxng.c:5164 +Extra content for element addressBook: card diff --git a/result/relaxng/tutor9_5_3 b/result/relaxng/tutor9_5_3 index 3f7f9233..eabbcd9c 100644 --- a/result/relaxng/tutor9_5_3 +++ b/result/relaxng/tutor9_5_3 @@ -1,2 +1 @@ -Extra content for element addressBook: card ./test/relaxng/tutor9_5_3.xml fails to validate diff --git a/result/relaxng/tutor9_5_3.err b/result/relaxng/tutor9_5_3.err index 8fcd1831..984a201e 100644 --- a/result/relaxng/tutor9_5_3.err +++ b/result/relaxng/tutor9_5_3.err @@ -1 +1,2 @@ -error detected at relaxng.c:5143 +error detected at relaxng.c:5164 +Extra content for element addressBook: card diff --git a/result/relaxng/tutor9_6_2 b/result/relaxng/tutor9_6_2 index 164ad691..f1413cdc 100644 --- a/result/relaxng/tutor9_6_2 +++ b/result/relaxng/tutor9_6_2 @@ -1,2 +1 @@ -Extra content for element addressBook: card ./test/relaxng/tutor9_6_2.xml fails to validate diff --git a/result/relaxng/tutor9_6_2.err b/result/relaxng/tutor9_6_2.err index 8fcd1831..984a201e 100644 --- a/result/relaxng/tutor9_6_2.err +++ b/result/relaxng/tutor9_6_2.err @@ -1 +1,2 @@ -error detected at relaxng.c:5143 +error detected at relaxng.c:5164 +Extra content for element addressBook: card diff --git a/result/relaxng/tutor9_6_3 b/result/relaxng/tutor9_6_3 index 6f9e2d6c..1011ecdb 100644 --- a/result/relaxng/tutor9_6_3 +++ b/result/relaxng/tutor9_6_3 @@ -1,2 +1 @@ -Extra content for element addressBook: card ./test/relaxng/tutor9_6_3.xml fails to validate diff --git a/result/relaxng/tutor9_6_3.err b/result/relaxng/tutor9_6_3.err index 8fcd1831..984a201e 100644 --- a/result/relaxng/tutor9_6_3.err +++ b/result/relaxng/tutor9_6_3.err @@ -1 +1,2 @@ -error detected at relaxng.c:5143 +error detected at relaxng.c:5164 +Extra content for element addressBook: card diff --git a/test/relaxng/OASIS/spectest.xml b/test/relaxng/OASIS/spectest.xml new file mode 100644 index 00000000..18afb2e7 --- /dev/null +++ b/test/relaxng/OASIS/spectest.xml @@ -0,0 +1,6845 @@ +"> +]> + +James Clark +jjc@jclark.com +For October 26 version of the spec. + +
3
+ +Various possible syntax errors. + +
3
+ + + +
+ +
3
+ + + + + + + + + + + + +
+ +
3
+ + + + + + + + +
+ +
3
+ + + foo + + + +
+ +
3
+ + + + bar + + + +
+ +
3
+ + + + + foo + + + bar + + + + + +
+ +
3
+ + + + + foo + + + bar + + + + + +
+ +
3
+ + + + + foo + + + bar + + + + +
+ +
3
+ + + + + +
+ +
3
+ + + + + +
+ +
3
+ + + + + + + +
+ +
3
+ + + + + + + +
+ +
3
+ + + + + + + + + + +
+ +
3
+ + + + + + + + + + + + + + +
+ +
3
+ + + + + + + + + + + + + + + + + + +
+
+ +Tests for obsolete syntax + +
3
+ + + + + + + + + +
+ +
3
+ + + + + + + +
+ +
3
+ + + + foo + + + + +
+ +
3
+ + + + + foo + + + + +
+ +
3
+ + + + + +
+ +
3
+ + + + + +
+ +
3
+ + + + + + + +
+ +
3
+ + + + + + + +
+
+ +Tests for missing attributes and child elements + +
3
+ + + + +
+ +
3
+ + + foo + + +
+ +
3
+ + + + +
+ +
3
+ + + + + +
+ +
3
+ + + + + +
+ +
3
+ + + + + +
+ +
3
+ + + + + +
+ +
3
+ + + + + +
+ +
3
+ + + + + +
+ +
3
+ + + + + +
+ +
3
+ + + + + +
+ +
3
+ + + + + +
+ +
3
+ + + + + + +
+ +
3
+ + + + + + + + +
+ +
3
+ + + + + + + + +
+ +
3
+ + + + + + + +
+ +
3
+ + + + + +
+ +
3
+ + + + + + + +
+ +
3
+ + + + + + + +
+ +
3
+ + + + + + + + + + +
+ +
3
+ + + + + +
+ +
3
+ + + + + + + + + + +
+ +
3
+ + + + + + + + + + + + + + +
+ +
3
+ + + + + + + + + + + + +
+ +
3
+ + + + + + + + + + + + + + + + +
+
+ +Checking of ns attribute + +
3
+ + + + + + + + +
+ +
3
+No checking of ns attribute is performed + + + + + + + + +
+ +
3
+No checking of ns attribute is performed + + + + + +
+ +
3
+No checking of ns attribute is performed + + + + + +
+
+ +Checking of datatypeLibrary attribute + +
3
+Value of datatypeLibrary attribute must conform to RFC 2396 + + + + + +
+ +
3
+Value of datatypeLibrary attribute must conform to RFC 2396 + + + + + + + + +
+ +
3
+Value of datatypeLibrary attribute must conform to RFC 2396 + + + + + + + + +
+ +
3
+Value of datatypeLibrary attribute must conform to RFC 2396 + + + + + +
+ +
3
+Value of datatypeLibrary attribute must conform to RFC 2396 + + + + + +
+ +
3
+Value of datatypeLibrary attribute must conform to RFC 2396 + + + + + +
+ +
3
+Value of datatypeLibrary attribute must conform to RFC 2396 + + + + + + + + +
+ +
3
+Value of datatypeLibrary attribute must not be relative + + + + + +
+ +
3
+Value of datatypeLibrary attribute must not be relative + + + + + +
+ +
3
+Value of datatypeLibrary attribute must not be relative + + + + + +
+ +
3
+Value of datatypeLibrary attribute must not be relative + + + + + +
+ +
3
+ + + + + + + + +
+ +
3
+ + + + + + + + +
+ +
3
+ + + + + + +x + +
+ +
3
+Value of datatypeLibrary attribute must not contain fragment identifier + + + + + +
+ +
3
+Value of datatypeLibrary attribute must not contain fragment identifier + + + + + +
+
+ +Tests for QName and NCNames in schemas + +
3
+ + + + + + + + +&dii; + +
+ +
3
+ + + + + +
+ +
3
+ + + + + +
+ +
3
+ + + + + + +
+ +
3
+ + + + + + +
+ +
3
+ + + + + + + + + + + + +
+ +
3
+ + + + + + + + + + + + + + + +
+ +
3
+ + + + + + + + + + + + +
+ +
3
+ + + + + + + + + + + + +
+ +
3
+ + + + + + + + + + + + +
+ +
3
+ + + + + +
+ +
3
+ + + + + +
+ +
3
+ + + + + +
+
+ +Tests for elements that allow only a single pattern child. + +
3
+ + + + + + + + + + +
+ +
3
+ + + + + + + + +
+ +
3
+ + + + bar + + + + + +
+
+ +Tests for foreign element and attribute handling. + +
3
+ + + + + +
+ +
3
+ + + foo + + + +
+ +
3
+ + + foo + + +
+ +
3
+ + + + + + +X + +
+ +
3
+ + + + + + + + + + + + +
+ +
3
+ + + + + + + + + + foo + + + + + + + + + + + + + + + + +X + +
+ +
3
+ + + + + foo + + + + + + + +X + +
+ +
3
+ + + + + + + + + + foo + + + + + + + + + + +X + +
+ +
3
+ + + + + + + + + + foo + + + + + + + + + + +X + +
+
+
+ +
4
+ +
4.2
+ +
4.2
+ + + + + + + + +
+ +
4.2
+ + + bar + + + +bar + + +bar + +
+ +
4.2
+ + + + + + +X + +
+ +
4.2
+ + + foo + bar + + + + + +
+ +
4.2
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
4.4
+ + + bar + + + +bar + + + + bar + + + + bar + + +baz + + +ba r + +
+ +
4.5
+ +
4.5
+ + + + + + + + + + + + + + + + +
+ +
4.5
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
4.5
+ + + + + + + + +
+
+ +
4.6
+ +
4.6
+ + + + + + + + + + + + + + +
+ +
4.6
+ + + + + + + + + + + + + + +
+ +
4.6
+ + + + + + +
+ +
4.6
+ + + + + + + + + + +
+ +
4.6
+ + + + + + + + + +
+ +
4.6
+Same value of href before resolution, but not a loop. + + + + + + + + + + + + + + + + + + + + + +
+
+ +
4.7
+ +
4.7
+ + + + + + + + + + + + + + + + + + + + +
+ +
4.7
+ + + + + + + + + + + + + + + + + + + + +
+ +
4.7
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
4.7
+ + + + + + + + + + +
+ +
4.7
+ + + + + + + + + + +
+ +
4.7
+ + + + + + + + + + + + + + + +
+ +
4.7
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
4.7
+ + + + + + + + + + + + + + + + + + +
+ +
4.7
+ + + + + + + + + + + + + + + + + + + +
+ +
4.7
+ + + + + + + + + + + + + + + + + + +
+ +
4.7
+ + + + + + + + + + + + + + + + + + + +
+ +
4.7
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
4.7
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
4.8
+ +
4.8
+ + + + + + + + + + + +
+ +
4.8
+ + + + + + + + + + + +
+
+ +
4.9
+ +
4.9
+ + + + bar + + + + + + + + + +
+ +
4.6
+
4.9
+ + + + + + + + + + + + + + + + +
+ + + + + foo + + + + + + + + + + + foo + + + + + + + + + + + bar + + + + + + + +
+ +
4.10
+ +
4.10
+ + + + + +
+ +
4.10
+ + + + + + + + + + + +
+ +
4.10
+ + + + + + + + + + + +
+ +
4.10
+ + + + + + + + + + + +
+
+ +
4.11
+ +
4.11
+ + +
+
+ + + +
+ + + + + +
+
+ + + + + + + + + + + + +
4.12
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +X + + +X + + + + +
+ +
4.12
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +X + + +X + + + + +
+ +
4.12
+
4.15
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +X + + +X + + + + +
+ +
4.12
+
4.14
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +X + + +X + + + + +
+ +
4.12
+ + + + x + y + z + + + + +x y z + + +x + +
+ +
4.12
+
4.13
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +X + + +X + + + + +
+ +
4.12
+ + + foo + + + + + + + + + + + + + + + + + + + + + + + + + + + +X + + +X + + + + +
+ +
4.12
+ + + + + foo + bar + baz + + + + + + + + + +
+ +
4.12
+ + + + + x + y + z + + + + + +xyz +x +y +y +
+ +
4.12
+ + + + + + + + + + + + + + +
+ +
4.12
+ + + + bar + + + + + + + + + + + + +
+ +
4.12
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +X + + +X + + + + +
+ +
4.12
+ + + + + + + + + + + + + + + + + + + +
+ +
4.12
+ + + + + + + + + + + + + + + + + + + + + + + +
+ +
4.12
+ + + + + + + + + + + +
+ +
4.12
+ + + + + + + + + + + +
+ +
4.12
+ + + + + + + + + + + +
+
+ +
4.13
+ +
4.13
+ + + + + + + + + +x + +x +xy + + +
+
+ +
4.14
+ +
4.14
+ + + + + + + + + + + +x + +
+
+ +
4.15
+ +
4.15
+ + + + + + + + + + + +x + + +
+
+ +
4.16
+ +
4.16
+ + + + + + + + + + + + + + +
+ +
4.16
+ + + + + + + + + foo + + + + + + + + +
+ +
4.16
+ + + + + + + + + + + + + + +
+ +
4.16
+ + + + + + + + + foo + + + + + + + + +
+ +
4.16
+ + + + + + + + + + + + + + +
+ +
4.16
+ + + + + + + + + foo + + + + + + + + +
+ +
4.16
+Tests that 4.16 is before 4.20. + + + + + + + + + + + + + + + + + + + +
+ +
4.16
+Tests that 4.16 is before removal of unreachable definitions. + + + + + + + + + + + + + + + + + + + +
+ +
4.16
+ + + + + + + +
+ +
4.16
+ + + + + + +
+ +
4.16
+ + + + + + + +
+ +
4.16
+ + + + + + + + + + +
+ +
4.16
+ + + + + + + + + + + + + + +
+ +
4.16
+ + + + + + + +
+ +
4.16
+ + + + + xmlns + foo + + + + + +
+ +
4.16
+ + + + xmlns + + + + +
+ +
4.16
+ + + + xmlns + + + + +
+ +
4.16
+ + + + + xmlns + + + + + +
+ +
4.16
+ + + + + foo + xmlns + + + + + +
+ +
4.16
+ + + + + + + xmlns + + + + + + + +
+ +
4.16
+ + + + + + + xmlns + + + + + + + +
+ +
4.16
+ + + + + + + +
+ +
4.16
+ + + + + + +
+ +
4.16
+ + + + 2 + + + +
+ +
4.16
+ + + + + +
+ +
4.16
+ + + + + +
+ +
4.16
+ + + + + + 2 + + + + +
+ +
4.16
+ + + + + + + + +
+ +
4.16
+ + + + + + + + +
+ +
4.16
+ + + + + + + + + + 2 + + + + +
+ +
4.16
+ + + + + + + + + + + + +
+ +
4.16
+ + + + + + + + + + + + +
+
+ +
4.17
+ +
4.17
+ + + + + + + + + + + + + + + + + + + + + + +
+ +
4.17
+ + + + + + + + + + + + + + + + + + + +
+ +
4.17
+ + + + + + + + + + + + + + + + + +
+ +
4.17
+ + + + + + + + + + + + + + +
+ +
4.17
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
4.17
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
4.17
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ +
4.17
+ + + + + + + + + + + + + + + + + + + + + +
+ +
4.17
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
4.17
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
4.17
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ +
4.17
+ + + + + + + + + + + + + + + + + + + + + +
+
+ +
4.18
+ +
4.18
+grammar must have a start + + + + + + + + + +
+ +
4.18
+4.17 is before 4.18 + + + + + + + + + + + + + + + + + + +
+ +
4.18
+4.17 is before 4.19 + + + + + + + + + + + + + + + + + +
+ +
4.18
+every ref must have a def + + + + + + + +
+ +
4.18
+4.17 is before 4.18 + + + + + + + + + + + + +
+ +
4.18
+4.17 is before 4.19 + + + + + + + + + + + + + + + +
+ +
4.18
+every parentRef must have a def + + + + + + + + + + + + + + + + +
+ +
4.18
+4.17 is before 4.18 + + + + + + + + + + + + + + + + + + + + + +
+ +
4.18
+4.17 is before 4.19 + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
4.18
+ + + + + + + + + + + + + + + + + + + +
+ +
4.18
+ + + + + + + + + + + + + + + + + + + + +
+ +
4.18
+ + + + + + + + + + + + + + + + + + + + + + + +
+ +
4.18
+ + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
4.19
+ +
4.19
+ + + + + + + + + + + + + + + + + +
+ +
4.19
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
4.19
+ + + + + + + + + + + + + +
+ +
4.19
+
4.20
+Tests that recursion detection happens before +normalization of notAllowed. + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
6
+ +
6.1
+ +
6.1
+ + + + + + + + + + + + +
+ +
6.1
+ + + + + foo + + + + + + + + + + + + + + +
+ +
6.1
+ + + + + + + + + + + + + + + + +
+ +
6.1
+ + + + + + + + + + + + +
+ +
6.1
+ + + + + + + + + + + + + + + + + + +
+ +
6.1
+ + + + + foo + + + + + + + + + + + + + + +
+ +
6.1
+ + + + + foo + + + + + + + + + + + + + + + + + +
+ +
6.1
+ + + foo + + + + + + + + + + + + + + + +
+ +
6.1
+ + + foo + + + + + + + + + + + + + + + +
+ +
6.1
+ + + + foo + bar + + + + + + + + + + + + + +
+
+ +
6.2
+ +
6.2.1
+ +
6.2.1
+ + + + + + + + + + + + + + + + + + + +
+ +
6.2.1
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
6.2.1
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
6.2.1
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
6.2.2
+ +
6.2.2
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
6.2.2
+ + + + + + + + + + + + + + + + + + +
+ +
6.2.2
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ +
6.2.2
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ +
6.2.2
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ +
6.2.2
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
6.2.3
+ +
6.2.3
+ + + + + + + + + + + + + + + + + + + + + + + + + + +x + + + + + + + +
+ +
6.2.3
+ + + + + + + + + + +
+ +
6.2.3
+ + + + + + + + + +x + + +
+ +
6.2.3
+ + + + + + + + + + + + +
+ +
6.2.3
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ +
6.2.4
+ +
6.2.4
+ + + + + + + + + + + + +x + + + +x + +y + + + + + +
+ +
6.2.4
+ + + + + + + + + + + + + + + + + + + + +x + + + + + +x + +y + + + + + + +x + +
+ +
6.2.4
+ + + + + + + + + + + + + + + + + + + + +x + + + + + + +x + +y + + + + + + +x + +
+ +
6.2.4
+ + + + + + + + + + + + + + + + + + + + +x + + + + + + +x + +y + + + + + + +x + + +xx + + +xx + +
+ +
6.2.4
+ + + + + + + + + + + + + + + + + + + + +x + +
+
+ +
6.2.5
+ +
6.2.5
+ + + + + + + + + + + + + + + + + + + + + +
+ +
6.2.5
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
6.2.5
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
6.2.5
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
6.2.6
+ +
6.2.6
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
6.2.6
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
6.2.6
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
6.2.6
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
6.2.7
+ +
6.2.7
+ + + + bar + baz + + + + + + + + + + + + + + + + + + + +baz + +
+ +
6.2.7
+ + + + bar + + baz + + + + + + + + + + + + + + + + + + +baz + + + + + + + +
+ +
6.2.7
+ + + + bar + + + + + + + + + + + + + +
+ +
6.2.7
+ + + foo + + + bar + + + + baz + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
6.2.7
+
6.2.8
+ + + + + + + +x +
+ +
6.2.7
+
6.2.8
+ + + + + + + + + + +x +
+ +
6.2.7
+
6.2.8
+
6.2.10
+ + + + + + + + + +x + x +x y +
+ +
6.2.7
+
6.2.8
+ + + + + 2 + + + +xx +xxx + + +x + + +
+ +
6.2.7
+
6.2.8
+ + + + x + + + + + + + x +x +y + + + + + + +x + +x +
+ +
6.2.7
+
6.2.8
+ + + + x + + + + + + + + + x +x +y + + + + + + +x + +x +
+
+ +
6.2.8
+ +
6.2.8
+ + + + + + x + y + + + + + + +xyzzy + + +x + + +y + + + x + +
+ +
6.2.8
+ + + + + + + + +
+ +
6.2.8
+ + + + + + + + +
+ +
6.2.8
+ + + + + + + + + + + + + +x + +
+
+ +
6.2.9
+ +
6.2.9
+ + + + + + +xyzzy + + + +x + +y + +z + + + + + + + + + + + + + + + +
+ +
6.2.9
+ + + + + + +xyzzy + + + +x + +y + +z + + + + + + + + + + + + + + + +
+ +
6.2.9
+ + + x + + +x +xy + x + +
+ +
6.2.9
+ + + x + + + x + xy +x + +
+ +
6.2.9
+ + + x + + +x + x +x + x + +xy +
+ +
6.2.9
+ + + x y + + +x y + x y +x y +xy +
+ +
6.2.9
+ + + x + + +x + x +x + x + +xy +
+ +
6.2.9
+ + + x y + + +x y +x y + x y +x y +x y + +xy +
+ +
6.2.9
+ + + + + +
+ +
6.2.9
+ + + + + +
+ +
6.2.9
+ + + + 2 + + + +
+ +
6.2.9
+ + + + 2 + + + +
+
+ +
6.2.10
+ +
6.2.10
+ + + + x + + + + +x + + + x + + +x x + +
+ +
6.2.10
+ + + + + x + + + + + +x + + + x x x x + + + + + +x y + +
+ +
6.2.10
+ + + + + x + y + + + + + +x y + + +x y + + + x y + + +x + +
+ +
6.2.10
+ + + + + + + + + + + +x y + + + + + +x y z + +
+ +
6.2.10
+ + + + x y + + + + +x y + +
+
+
+
+ +
7
+ +
7.1
+ +
7.1.1
+ + + + + + + + + + + + + +
+ +
7.1.1
+ + + + + + + + + + + + + + + + +
+ +
7.1.1
+ + + + + + + + + + + +
+ +
7.1.1
+ + + + + + + + + + + + + + +
+ +
7.1.2
+ + + + + + + + + + + + + + +
+ +
7.1.2
+ + + + + + + + + + + + + + + + + + +
+ +
7.1.2
+ + + + + + + + + + + + + + + + + + + + + + + +
+ +
7.1.2
+ + + + + + + + + + + + + + +
+ +
7.1.2
+ + + + + + + + + + + + + + + + + + +
+ +
7.1.2
+ + + + + + + + + + + + + + + + + + + + + + + +
+ +
7.1.3
+ + + + + + + + + + + + + +
+ +
7.1.3
+ + + + + + + + + + + + + + + + +
+ +
7.1.3
+ + + + + + + + + + + + + +
+ +
7.1.3
+ + + + + + + + + + + + + + + + +
+ +
7.1.3
+ + + + + + + + + + + + + +
+ +
7.1.3
+ + + + + + + + + + + + + + + + +
+ +
7.1.3
+ + + + + + + + + + + + + + +
+ +
7.1.3
+ + + + + + + x + y + + + + + + +
+ +
7.1.3
+ + + + + + + + x + y + + z + + + + + + +
+ +
7.1.4
+ + + + + + + + + + + + + +
+ +
7.1.4
+ + + + + + + + + + + + + + + +
+ +
7.1.4
+ + + + + + + + + + + + + +
+ +
7.1.4
+ + + + + + + + + + + + + + + +
+ +
7.1.4
+ + + + + + + + + + + + + + + + +
+ +
7.1.4
+ + + + + + + + + + + + + + + + +
+ +
7.1.4
+ + + + + + + + + + + + + + + +
+ +
7.1.4
+ + + + + + + + + + + + + +
+ +
7.1.5
+ + + + + + + +
+ +
7.1.5
+ + + + + + + +
+ +
7.1.5
+ + + + + + + + + + + + +
+ +
7.1.5
+ + + + + foo + + + + + + + +
+ +
7.1.5
+ + + + + + + +
+ +
7.1.5
+ + + + + + + + + + + + +
+ +
7.1.5
+ + + + + + + + + +
+ +
7.1.5
+ + + + + + + + + + + + + + +
+ +
7.1.5
+ + + + + + + + + + + + + + +
+ +
7.1.5
+ + + + + + + + + + + + + + + + + + + +
+ +
7.1.5
+ + + + + + + + + + + + + + +
+ +
7.1.5
+ + + + + + + + + + + + + + + + + + + +
+ +
7.1.5
+ + + + + + + + + + + +
+ +
7.1.5
+ + + + + + + + + + + + + + + + +
+ +
7.1.5
+ + + + + + + +
+ +
7.1.5
+ + + + + + + + + + + + +
+ +
7.1.5
+
7
+
4.18
+Tests that constraints are post-normalization + + + + + + + + + + +text + +
+ +
7.1.5
+
7
+
4.18
+ + + +
+ +
7.1.1
+
7
+
4.20
+ + + + + + + + + + + + + + + +
+ +
7.1.1
+
7
+
4.20
+The nested attribute element is normalized out because +of the not allowed. + + + + + + + + + + + + + + + + +
+ +
7.1.2
+
7
+
4.12
+The group element is normalized out. + + + + + + + + + + + + + + + + + + +
+ +
7.1.2
+
7
+
4.21
+The group element is normalized out. + + + + + + + + + + + + + + + + + + + +
+ +
7.1.2
+
7
+
4.20
+The attribute elements are all normalized out. + + + + + + + + + + + + + + + + +
+
+ +
7.2
+ +
7.2
+ + + + + + + + + + + + +
+ +Checks that normalization of notAllowed happens +before string sequence checking. +
7.2
+
4.20
+ + + + + + + + + + + + + + + + + + + +
+ +
4.20
+
7.2
+notAllowed in an element is not normalized + + + + + + + + + + + + + + + + +
+
+ +
7.3
+ +
7.3
+ + + + + + +
+ +
7.3
+ + + + + + + + +
+ +
7.3
+ + + + + + + + + + +
+ +
7.3
+ + + + + + + + +
+ +
7.3
+ + + + + + + + + + +
+ +
7.3
+ + + + + + + + + + +
+ +
7.3
+ + + + + + + + baz + + + + + + +
+ +
7.3
+ + + + + + + + bar + + + + + + + + + + + + + + + + + + + + + +
+ +
7.3
+ + + + + + + + + + +
+ +
7.3
+ + + + + + + + baz + + + + + + +
+ +
7.3
+ + + + + + + + + + + + + + +
+ +
7.3
+ + + + + + + + + + + + + + +
+ +
7.3
+ + + + + + + + + + + + bar + + + + + + +
+ +
7.3
+ + + + + + + + + foo + + + + + + + + + +
+ +
7.3
+ + + + + + + + + foo + + + + + + + + + + + + + +
+ +
7.3
+ + + + + + + + + bar + + + + + + + + + + + + + + + + + + +
+ +
7.3
+ + + + + + + + + + + + + + + + + +
+ +
7.3
+ + + + + + + + + + + +
+ +
7.3
+ + + + + + + + + +
+ +
7.3
+ + + + + +
+ +
7.3
+ + + + + +
+ +
7.3
+ + + foo + + +
+
+ +
7.4
+ +
7.4
+ + + + + + + + + + + + +
+ +
7.4
+ + + + + + + + + + + + + + + + + +
+ +
7.4
+ + + + + + + + + + + + + + + + + +
+ +
7.4
+ + + + + + + + + + + + + + + + + + + + + + +
+ +
7.4
+ + + + + + + + + + + + + + +
+ +
7.4
+ + + + + + + + + + + + + +
+ +
7.4
+ + + + + + + + + + + + + +
+ +
7.4
+ + + + + + + + + + + + +
+ +
7.4
+ + + + + + + + + + bar + + + + + + + + + + +
+ +
7.4
+ + + + + + + + + + + + + + + + + + + + +
+ +
7.4
+ + + + + + + + +
+ +
7.4
+ + + + + + + + + + + + + + +
+
+
+ +Regressions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +