The lesson of the day is
  "never forget an epsilon transition or DocBook will raise it"
- valid.c: forgot an epsilon transition in for ()+
- test/VCM/v21.xml : added a specific test case
Daniel
diff --git a/valid.c b/valid.c
index b8077b4..4e9bcfb 100644
--- a/valid.c
+++ b/valid.c
@@ -3590,7 +3590,8 @@
     if ((consumed) && (CONT != NULL) &&
 	(CONT->parent != NULL) &&
 	((CONT->ocur == XML_ELEMENT_CONTENT_MULT) ||
-	(CONT->ocur == XML_ELEMENT_CONTENT_OPT))) {
+	 (CONT->ocur == XML_ELEMENT_CONTENT_OPT) ||
+	 ((CONT->ocur == XML_ELEMENT_CONTENT_PLUS) && (OCCURENCE)))) {
 	DEBUG_VALID_MSG("saving parent branch");
 	vstateVPush(ctxt, CONT, NODE, DEPTH, OCCURS, ROLLBACK_PARENT);
     }