Lists Home |
Date Index |
> My java app. which uses the standard schema-aware XML parse
> (packaged with
> j2sdk1.5.0-01) was hanging up and sometimes I got a java heap
> error msg. I
> narrowed it to the maxOccurs attribute of a complexType element in my
> schema. It seems if maxOccurs> 2000 for this element, the app fails.
The standard algorithms for generating a finite-state machine from a grammar
suffer from the problem that the number of possible states becomes very
large when you use a large value of minOccurs or maxOccurs, which causes an
increasing use of memory. Saxon's schema processor deals with this by
treating a large maxOccurs as if you had specified "unbounded" (with a
warning), which is only marginally better than falling over completely.
Henry Thompson was promising to publish an improved algorithm but I haven't
seen it yet...
I would suggest that you treat this constraint as one of those that are best
checked at application level, or using a tool such as schematron.
Grammar-based validators aren't good at this job.