another entity processing update from Markus Henke Daniel
* tree.c: another entity processing update from Markus Henke
Daniel
diff --git a/xmlschemas.c b/xmlschemas.c
index 8cb9400..1926063 100644
--- a/xmlschemas.c
+++ b/xmlschemas.c
@@ -2119,7 +2119,7 @@
if (type == NULL)
return (NULL);
type->node = node;
- type->type = XML_SCHEMA_TYPE_SEQUENCE;
+ type->type = XML_SCHEMA_TYPE_ALL;
type->id = xmlGetProp(node, BAD_CAST "id");
type->minOccurs = xmlGetMinOccurs(ctxt, node);
type->maxOccurs = xmlGetMaxOccurs(ctxt, node);
@@ -3037,6 +3037,26 @@
break;
}
case XML_SCHEMA_TYPE_ALL: {
+ xmlAutomataStatePtr end;
+ xmlAutomataStatePtr start;
+ xmlSchemaTypePtr subtypes;
+ xmlSchemaElementPtr elem = (xmlSchemaElementPtr) type;
+
+ subtypes = type->subtypes;
+ if (subtypes == NULL)
+ break;
+ start = ctxt->state;
+ while (subtypes != NULL) {
+ ctxt->state = start;
+ elem = (xmlSchemaElementPtr) subtypes;
+
+ /* TODO : handle the namespace too */
+ xmlAutomataNewOnceTrans(ctxt->am, ctxt->state, ctxt->state,
+ elem->name, elem->minOccurs, elem->maxOccurs,
+ subtypes);
+ subtypes = subtypes->next;
+ }
+ ctxt->state = xmlAutomataNewAllTrans(ctxt->am, ctxt->state, NULL);
TODO
break;
}