mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-03-25 10:50:08 +03:00
Fix an unimplemented part in RNG value validation
Forgot to implement <optional> this was raised again in https://bugzilla.redhat.com/show_bug.cgi?id=752393 as this make libxml2 fail to validate against ODF RNGs Daniel
This commit is contained in:
parent
1d4526f6f4
commit
7dd0d916c6
29
relaxng.c
29
relaxng.c
@ -8884,6 +8884,11 @@ xmlRelaxNGValidateValue(xmlRelaxNGValidCtxtPtr ctxt,
|
||||
case XML_RELAXNG_ZEROORMORE:{
|
||||
xmlChar *cur, *temp;
|
||||
|
||||
if ((ctxt->state->value == NULL) ||
|
||||
(*ctxt->state->value == 0)) {
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
oldflags = ctxt->flags;
|
||||
ctxt->flags |= FLAGS_IGNORABLE;
|
||||
cur = ctxt->state->value;
|
||||
@ -8905,6 +8910,30 @@ xmlRelaxNGValidateValue(xmlRelaxNGValidCtxtPtr ctxt,
|
||||
xmlRelaxNGPopErrors(ctxt, 0);
|
||||
break;
|
||||
}
|
||||
case XML_RELAXNG_OPTIONAL:{
|
||||
xmlChar *temp;
|
||||
|
||||
if ((ctxt->state->value == NULL) ||
|
||||
(*ctxt->state->value == 0)) {
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
oldflags = ctxt->flags;
|
||||
ctxt->flags |= FLAGS_IGNORABLE;
|
||||
temp = ctxt->state->value;
|
||||
ret = xmlRelaxNGValidateValue(ctxt, define->content);
|
||||
ctxt->flags = oldflags;
|
||||
if (ret != 0) {
|
||||
ctxt->state->value = temp;
|
||||
if (ctxt->errNr > 0)
|
||||
xmlRelaxNGPopErrors(ctxt, 0);
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
if (ctxt->errNr > 0)
|
||||
xmlRelaxNGPopErrors(ctxt, 0);
|
||||
break;
|
||||
}
|
||||
case XML_RELAXNG_EXCEPT:{
|
||||
xmlRelaxNGDefinePtr list;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user