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]