sandygao 2003/02/11 11:16:25 Modified: java/src/org/apache/xerces/impl/xs/traversers XSDElementTraverser.java Log: Fixing a schema traversal: while deferring the traversal of local elements, we need to check the minOccurs value to make sure "emptiable particle" works fine. Revision Changes Path 1.22 +20 -1 xml-xerces/java/src/org/apache/xerces/impl/xs/traversers/XSDElementTraverser.java Index: XSDElementTraverser.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/traversers/XSDElementTraverser.java,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- XSDElementTraverser.java 21 Jan 2003 17:54:35 -0000 1.21 +++ XSDElementTraverser.java 11 Feb 2003 19:16:25 -0000 1.22 @@ -72,6 +72,7 @@ import org.apache.xerces.util.SymbolTable; import org.apache.xerces.xni.QName; import org.w3c.dom.Element; +import org.w3c.dom.Attr; /** * The element declaration schema component traverser. @@ -138,6 +139,21 @@ particle = new XSParticleDecl(); } if(fDeferTraversingLocalElements) { + // The only thing we care about now is whether this element has + // minOccurs=0. This affects (if the element appears in a complex + // type) whether a type has emptiable content. + particle.fType = XSParticleDecl.PARTICLE_ELEMENT; + Attr attr = elmDecl.getAttributeNode(SchemaSymbols.ATT_MINOCCURS); + if (attr != null) { + String min = attr.getValue(); + try { + int m = Integer.parseInt(min.trim()); + if (m >= 0) + particle.fMinOccurs = m; + } + catch (NumberFormatException ex) { + } + } fSchemaHandler.fillInLocalElemInfo(elmDecl, schemaDoc, allContextFlags, enclosingCT, particle); } else { traverseLocal(particle, elmDecl, schemaDoc, grammar, allContextFlags, enclosingCT); @@ -198,6 +214,9 @@ if (element != null) { particle.fType = XSParticleDecl.PARTICLE_ELEMENT; particle.fValue = element; + } + else { + particle.fType = XSParticleDecl.PARTICLE_EMPTY; } Long defaultVals = (Long)attrValues[XSAttributeChecker.ATTIDX_FROMDEFAULT]; checkOccurrences(particle, SchemaSymbols.ELT_ELEMENT,
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]