implemented E59 spaces in CDATA does not match the nonterminal S Daniel
* valid.c: implemented E59 spaces in CDATA does not match the
nonterminal S
Daniel
diff --git a/valid.c b/valid.c
index 7be1a4a..79a3512 100644
--- a/valid.c
+++ b/valid.c
@@ -3534,7 +3534,8 @@
return(-2);
} while ((NODE != NULL) &&
((NODE->type != XML_ELEMENT_NODE) &&
- (NODE->type != XML_TEXT_NODE)));
+ (NODE->type != XML_TEXT_NODE) &&
+ (NODE->type != XML_CDATA_SECTION_NODE)));
ret = 1;
break;
} else {
@@ -3574,7 +3575,8 @@
return(-2);
} while ((NODE != NULL) &&
((NODE->type != XML_ELEMENT_NODE) &&
- (NODE->type != XML_TEXT_NODE)));
+ (NODE->type != XML_TEXT_NODE) &&
+ (NODE->type != XML_CDATA_SECTION_NODE)));
} else {
DEBUG_VALID_MSG("element failed");
ret = 0;
@@ -3976,10 +3978,11 @@
}
break;
case XML_TEXT_NODE:
- case XML_CDATA_SECTION_NODE:
if (xmlIsBlankNode(cur))
break;
/* no break on purpose */
+ case XML_CDATA_SECTION_NODE:
+ /* no break on purpose */
case XML_ELEMENT_NODE:
/*
* Allocate a new node and minimally fills in
@@ -4004,6 +4007,13 @@
last->next = tmp;
last = tmp;
}
+ if (cur->type == XML_CDATA_SECTION_NODE) {
+ /*
+ * E59 spaces in CDATA does not match the
+ * nonterminal S
+ */
+ tmp->content = xmlStrdup(BAD_CAST "CDATA");
+ }
break;
default:
break;