diff --git a/ChangeLog b/ChangeLog index 1e4f413a..2081a676 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Wed Feb 19 18:30:30 CET 2003 Daniel Veillard + + * relaxng.c: more bugfixes + * result/relaxng/*: updated the results + Wed Feb 19 15:39:56 CET 2003 Igor Zlatkovic * DOCBparser.c: obsoleted xmlNormalizeWindowsPath diff --git a/relaxng.c b/relaxng.c index 13beb429..a2dbe61b 100644 --- a/relaxng.c +++ b/relaxng.c @@ -709,6 +709,47 @@ xmlRelaxNGCopyValidState(xmlRelaxNGValidCtxtPtr ctxt, return(ret); } +/** + * xmlRelaxNGEqualValidState: + * @ctxt: a Relax-NG validation context + * @state1: a validation state + * @state2: a validation state + * + * Compare the validation states for equality + * + * Returns 1 if equald, 0 otherwise + */ +static int +xmlRelaxNGEqualValidState(xmlRelaxNGValidCtxtPtr ctxt ATTRIBUTE_UNUSED, + xmlRelaxNGValidStatePtr state1, + xmlRelaxNGValidStatePtr state2) +{ + int i; + + if ((state1 == NULL) || (state2 == NULL)) + return(0); + if (state1 == state2) + return(1); + if (state1->node != state2->node) + return(0); + if (state1->seq != state2->seq) + return(0); + if (state1->nbAttrLeft != state2->nbAttrLeft) + return(0); + if (state1->nbAttrs != state2->nbAttrs) + return(0); + if (state1->endvalue != state2->endvalue) + return(0); + if ((state1->value != state2->value) && + (!xmlStrEqual(state1->value, state2->value))) + return(0); + for (i = 0;i < state1->nbAttrs;i++) { + if (state1->attrs[i] != state2->attrs[i]) + return(0); + } + return(1); +} + /** * xmlRelaxNGFreeValidState: * @state: a validation state structure @@ -5965,21 +6006,25 @@ xmlRelaxNGValidateDefinition(xmlRelaxNGValidCtxtPtr ctxt, ret = -1; break; case XML_RELAXNG_TEXT: +#if 0 if (node == NULL) { ret = 0; break; } +#endif while ((node != NULL) && ((node->type == XML_TEXT_NODE) || (node->type == XML_COMMENT_NODE) || (node->type == XML_PI_NODE) || (node->type == XML_CDATA_SECTION_NODE))) node = node->next; +#if 0 if (node == ctxt->state->seq) { VALID_CTXT(); VALID_ERROR("Expecting text content\n"); ret = -1; } +#endif ctxt->state->seq = node; break; case XML_RELAXNG_ELEMENT: @@ -6149,6 +6194,7 @@ xmlRelaxNGValidateDefinition(xmlRelaxNGValidCtxtPtr ctxt, } case XML_RELAXNG_CHOICE: { xmlRelaxNGDefinePtr list = define->content; + int success = 0; oldflags = ctxt->flags; ctxt->flags |= FLAGS_IGNORABLE; @@ -6157,14 +6203,24 @@ xmlRelaxNGValidateDefinition(xmlRelaxNGValidCtxtPtr ctxt, oldstate = xmlRelaxNGCopyValidState(ctxt, ctxt->state); ret = xmlRelaxNGValidateDefinition(ctxt, list); if (ret == 0) { - xmlRelaxNGFreeValidState(oldstate); - break; + if (xmlRelaxNGEqualValidState(ctxt, ctxt->state, oldstate)){ + /* + * if that pattern was nullable flag it but try + * to make more progresses + */ + success = 1; + } else { + xmlRelaxNGFreeValidState(oldstate); + break; + } } xmlRelaxNGFreeValidState(ctxt->state); ctxt->state = oldstate; list = list->next; } ctxt->flags = oldflags; + if (success == 1) + ret = 0; break; } case XML_RELAXNG_DEF: diff --git a/result/relaxng/spec1_err b/result/relaxng/spec1_err index eae9def0..99cf052b 100644 --- a/result/relaxng/spec1_err +++ b/result/relaxng/spec1_err @@ -1 +1 @@ -Unimplemented block at relaxng.c:5656 +Unimplemented block at relaxng.c:5697 diff --git a/result/relaxng/tutor10_1_4.err b/result/relaxng/tutor10_1_4.err index 93b43db8..d553dcaa 100644 --- a/result/relaxng/tutor10_1_4.err +++ b/result/relaxng/tutor10_1_4.err @@ -1,4 +1,4 @@ -error detected at relaxng.c:5840 +error detected at relaxng.c:5881 Expecting a namespace for element foo -error detected at relaxng.c:6406 +error detected at relaxng.c:6462 extra data on the document diff --git a/result/relaxng/tutor10_1_5.err b/result/relaxng/tutor10_1_5.err index 47a9cab7..0310479e 100644 --- a/result/relaxng/tutor10_1_5.err +++ b/result/relaxng/tutor10_1_5.err @@ -1,4 +1,4 @@ -error detected at relaxng.c:5845 +error detected at relaxng.c:5886 Expecting element foo has wrong namespace: expecting http://www.example.com -error detected at relaxng.c:6406 +error detected at relaxng.c:6462 extra data on the document diff --git a/result/relaxng/tutor10_1_6.err b/result/relaxng/tutor10_1_6.err index 47a9cab7..0310479e 100644 --- a/result/relaxng/tutor10_1_6.err +++ b/result/relaxng/tutor10_1_6.err @@ -1,4 +1,4 @@ -error detected at relaxng.c:5845 +error detected at relaxng.c:5886 Expecting element foo has wrong namespace: expecting http://www.example.com -error detected at relaxng.c:6406 +error detected at relaxng.c:6462 extra data on the document diff --git a/result/relaxng/tutor10_2_3.err b/result/relaxng/tutor10_2_3.err index 737e2547..79a821f3 100644 --- a/result/relaxng/tutor10_2_3.err +++ b/result/relaxng/tutor10_2_3.err @@ -1,4 +1,4 @@ -error detected at relaxng.c:5857 +error detected at relaxng.c:5898 Expecting no namespace for element foo -error detected at relaxng.c:6406 +error detected at relaxng.c:6462 extra data on the document diff --git a/result/relaxng/tutor10_2_4.err b/result/relaxng/tutor10_2_4.err index 737e2547..79a821f3 100644 --- a/result/relaxng/tutor10_2_4.err +++ b/result/relaxng/tutor10_2_4.err @@ -1,4 +1,4 @@ -error detected at relaxng.c:5857 +error detected at relaxng.c:5898 Expecting no namespace for element foo -error detected at relaxng.c:6406 +error detected at relaxng.c:6462 extra data on the document diff --git a/result/relaxng/tutor10_7_3.err b/result/relaxng/tutor10_7_3.err index 7e030d22..2b281149 100644 --- a/result/relaxng/tutor10_7_3.err +++ b/result/relaxng/tutor10_7_3.err @@ -1,2 +1,2 @@ -error detected at relaxng.c:6047 +error detected at relaxng.c:6092 Extra content for element addressBook: card diff --git a/result/relaxng/tutor10_8_3.err b/result/relaxng/tutor10_8_3.err index 7e030d22..2b281149 100644 --- a/result/relaxng/tutor10_8_3.err +++ b/result/relaxng/tutor10_8_3.err @@ -1,2 +1,2 @@ -error detected at relaxng.c:6047 +error detected at relaxng.c:6092 Extra content for element addressBook: card diff --git a/result/relaxng/tutor11_2_2.err b/result/relaxng/tutor11_2_2.err index bae7c4b3..91c4f3ef 100644 --- a/result/relaxng/tutor11_2_2.err +++ b/result/relaxng/tutor11_2_2.err @@ -1,2 +1,2 @@ -error detected at relaxng.c:6060 +error detected at relaxng.c:6105 Invalid attribute foo for element card diff --git a/result/relaxng/tutor11_2_3.err b/result/relaxng/tutor11_2_3.err index 80ff29c5..8d7f8988 100644 --- a/result/relaxng/tutor11_2_3.err +++ b/result/relaxng/tutor11_2_3.err @@ -1,2 +1,2 @@ -error detected at relaxng.c:6060 +error detected at relaxng.c:6105 Invalid attribute b for element card diff --git a/result/relaxng/tutor12_1_err b/result/relaxng/tutor12_1_err index eae9def0..99cf052b 100644 --- a/result/relaxng/tutor12_1_err +++ b/result/relaxng/tutor12_1_err @@ -1 +1 @@ -Unimplemented block at relaxng.c:5656 +Unimplemented block at relaxng.c:5697 diff --git a/result/relaxng/tutor3_2_1.err b/result/relaxng/tutor3_2_1.err index 6668a65e..5e5a24c5 100644 --- a/result/relaxng/tutor3_2_1.err +++ b/result/relaxng/tutor3_2_1.err @@ -1,4 +1,4 @@ -error detected at relaxng.c:5832 +error detected at relaxng.c:5873 Expecting element name, got email -error detected at relaxng.c:6047 +error detected at relaxng.c:6092 Extra content for element card: email diff --git a/result/relaxng/tutor3_5_2.err b/result/relaxng/tutor3_5_2.err index 7e030d22..2b281149 100644 --- a/result/relaxng/tutor3_5_2.err +++ b/result/relaxng/tutor3_5_2.err @@ -1,2 +1,2 @@ -error detected at relaxng.c:6047 +error detected at relaxng.c:6092 Extra content for element addressBook: card diff --git a/result/relaxng/tutor3_7_err b/result/relaxng/tutor3_7_err index af8755cf..f7198a5c 100644 --- a/result/relaxng/tutor3_7_err +++ b/result/relaxng/tutor3_7_err @@ -1,2 +1,2 @@ -error detected at relaxng.c:6406 +error detected at relaxng.c:6462 extra data on the document diff --git a/result/relaxng/tutor5_3_1.err b/result/relaxng/tutor5_3_1.err index 03afffd6..9f72a689 100644 --- a/result/relaxng/tutor5_3_1.err +++ b/result/relaxng/tutor5_3_1.err @@ -1,6 +1,6 @@ -error detected at relaxng.c:6200 +error detected at relaxng.c:6256 Element bad has child elements -error detected at relaxng.c:5994 +error detected at relaxng.c:6039 Expecting an element got 3 type -error detected at relaxng.c:6047 +error detected at relaxng.c:6092 Extra content for element bad: text diff --git a/result/relaxng/tutor6_1_3.err b/result/relaxng/tutor6_1_3.err index 898a8bc3..8d8f0bad 100644 --- a/result/relaxng/tutor6_1_3.err +++ b/result/relaxng/tutor6_1_3.err @@ -1,2 +1,2 @@ -error detected at relaxng.c:6060 +error detected at relaxng.c:6105 Invalid attribute preferredFormat for element card diff --git a/result/relaxng/tutor6_2_4.err b/result/relaxng/tutor6_2_4.err index 75b44054..48ca7950 100644 --- a/result/relaxng/tutor6_2_4.err +++ b/result/relaxng/tutor6_2_4.err @@ -1,2 +1,2 @@ -error detected at relaxng.c:6047 +error detected at relaxng.c:6092 Extra content for element preferredFormat: text diff --git a/result/relaxng/tutor6_3_1.err b/result/relaxng/tutor6_3_1.err index 898a8bc3..8d8f0bad 100644 --- a/result/relaxng/tutor6_3_1.err +++ b/result/relaxng/tutor6_3_1.err @@ -1,2 +1,2 @@ -error detected at relaxng.c:6060 +error detected at relaxng.c:6105 Invalid attribute preferredFormat for element card diff --git a/result/relaxng/tutor7_1_2.err b/result/relaxng/tutor7_1_2.err index c2b0194f..cbfe2f8b 100644 --- a/result/relaxng/tutor7_1_2.err +++ b/result/relaxng/tutor7_1_2.err @@ -1,6 +1,6 @@ -error detected at relaxng.c:4943 +error detected at relaxng.c:4984 Internal: failed to validate type float -error detected at relaxng.c:6338 +error detected at relaxng.c:6394 error validating list -error detected at relaxng.c:6047 +error detected at relaxng.c:6092 Extra content for element vector: text diff --git a/result/relaxng/tutor7_1_3.err b/result/relaxng/tutor7_1_3.err index 13434caa..92eef349 100644 --- a/result/relaxng/tutor7_1_3.err +++ b/result/relaxng/tutor7_1_3.err @@ -1,6 +1,6 @@ -error detected at relaxng.c:5183 +error detected at relaxng.c:5224 Extra data in list: 5.6 -error detected at relaxng.c:6338 +error detected at relaxng.c:6394 error validating list -error detected at relaxng.c:6047 +error detected at relaxng.c:6092 Extra content for element vector: text diff --git a/result/relaxng/tutor7_2_4.err b/result/relaxng/tutor7_2_4.err index 784629aa..7ff321d3 100644 --- a/result/relaxng/tutor7_2_4.err +++ b/result/relaxng/tutor7_2_4.err @@ -1,4 +1,4 @@ -error detected at relaxng.c:4943 +error detected at relaxng.c:4984 Internal: failed to validate type double -error detected at relaxng.c:6338 +error detected at relaxng.c:6394 error validating list diff --git a/result/relaxng/tutor7_3_4.err b/result/relaxng/tutor7_3_4.err index 82111314..9a414cf1 100644 --- a/result/relaxng/tutor7_3_4.err +++ b/result/relaxng/tutor7_3_4.err @@ -1,6 +1,6 @@ -error detected at relaxng.c:5183 +error detected at relaxng.c:5224 Extra data in list: 5.6 -error detected at relaxng.c:6338 +error detected at relaxng.c:6394 error validating list -error detected at relaxng.c:6047 +error detected at relaxng.c:6092 Extra content for element path: text diff --git a/result/relaxng/tutor7_3_5.err b/result/relaxng/tutor7_3_5.err index 336daf80..fbf3e99d 100644 --- a/result/relaxng/tutor7_3_5.err +++ b/result/relaxng/tutor7_3_5.err @@ -1,6 +1,6 @@ -error detected at relaxng.c:4943 +error detected at relaxng.c:4984 Internal: failed to validate type double -error detected at relaxng.c:6338 +error detected at relaxng.c:6394 error validating list -error detected at relaxng.c:6047 +error detected at relaxng.c:6092 Extra content for element path: text diff --git a/result/relaxng/tutor8_2_4.err b/result/relaxng/tutor8_2_4.err index 873922e0..bde59019 100644 --- a/result/relaxng/tutor8_2_4.err +++ b/result/relaxng/tutor8_2_4.err @@ -1,4 +1,4 @@ -Unimplemented block at relaxng.c:5656 -Unimplemented block at relaxng.c:5656 -error detected at relaxng.c:6047 +Unimplemented block at relaxng.c:5697 +Unimplemented block at relaxng.c:5697 +error detected at relaxng.c:6092 Extra content for element head: meta diff --git a/result/relaxng/tutor8_2_5.err b/result/relaxng/tutor8_2_5.err index 27d1af09..7e38529e 100644 --- a/result/relaxng/tutor8_2_5.err +++ b/result/relaxng/tutor8_2_5.err @@ -1,4 +1,4 @@ -error detected at relaxng.c:5988 +error detected at relaxng.c:6033 Expecting an element, got empty -error detected at relaxng.c:6047 +error detected at relaxng.c:6092 Extra content for element head: meta diff --git a/result/relaxng/tutor8_2_6.err b/result/relaxng/tutor8_2_6.err index 9eef5805..240c7f47 100644 --- a/result/relaxng/tutor8_2_6.err +++ b/result/relaxng/tutor8_2_6.err @@ -1,2 +1,2 @@ -error detected at relaxng.c:6047 +error detected at relaxng.c:6092 Extra content for element head: base diff --git a/result/relaxng/tutor9_5_2.err b/result/relaxng/tutor9_5_2.err index 7e030d22..2b281149 100644 --- a/result/relaxng/tutor9_5_2.err +++ b/result/relaxng/tutor9_5_2.err @@ -1,2 +1,2 @@ -error detected at relaxng.c:6047 +error detected at relaxng.c:6092 Extra content for element addressBook: card diff --git a/result/relaxng/tutor9_5_3.err b/result/relaxng/tutor9_5_3.err index 7e030d22..2b281149 100644 --- a/result/relaxng/tutor9_5_3.err +++ b/result/relaxng/tutor9_5_3.err @@ -1,2 +1,2 @@ -error detected at relaxng.c:6047 +error detected at relaxng.c:6092 Extra content for element addressBook: card diff --git a/result/relaxng/tutor9_6_2.err b/result/relaxng/tutor9_6_2.err index 7e030d22..2b281149 100644 --- a/result/relaxng/tutor9_6_2.err +++ b/result/relaxng/tutor9_6_2.err @@ -1,2 +1,2 @@ -error detected at relaxng.c:6047 +error detected at relaxng.c:6092 Extra content for element addressBook: card diff --git a/result/relaxng/tutor9_6_3.err b/result/relaxng/tutor9_6_3.err index 7e030d22..2b281149 100644 --- a/result/relaxng/tutor9_6_3.err +++ b/result/relaxng/tutor9_6_3.err @@ -1,2 +1,2 @@ -error detected at relaxng.c:6047 +error detected at relaxng.c:6092 Extra content for element addressBook: card