Author: knoaman Date: Fri Aug 12 14:46:12 2011 New Revision: 1157133 URL: http://svn.apache.org/viewvc?rev=1157133&view=rev Log: Move the check for itemType and memberTypes not being special type to findDTDValidator
Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDSimpleTypeTraverser.java Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDSimpleTypeTraverser.java URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDSimpleTypeTraverser.java?rev=1157133&r1=1157132&r2=1157133&view=diff ============================================================================== --- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDSimpleTypeTraverser.java (original) +++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDSimpleTypeTraverser.java Fri Aug 12 14:46:12 2011 @@ -29,7 +29,6 @@ import org.apache.xerces.impl.xs.SchemaS import org.apache.xerces.impl.xs.XSAnnotationImpl; import org.apache.xerces.impl.xs.util.XInt; import org.apache.xerces.impl.xs.util.XSObjectListImpl; -import org.apache.xerces.impl.xs.util.XSTypeHelper; import org.apache.xerces.util.DOMUtil; import org.apache.xerces.xni.QName; import org.apache.xerces.xs.XSConstants; @@ -307,18 +306,15 @@ class XSDSimpleTypeTraverser extends XSD // get types from "memberTypes" attribute ArrayList dTValidators = null; XSSimpleType dv = null; - XSSimpleType[] memberTypeDvList = null; XSObjectList dvs; if (union && memberTypes != null && memberTypes.size() > 0) { int size = memberTypes.size(); - memberTypeDvList = new XSSimpleType[size]; dTValidators = new ArrayList(size); // for each qname in the list for (int i = 0; i < size; i++) { // get the type decl dv = findDTValidator(child, name, (QName)memberTypes.elementAt(i), XSConstants.DERIVATION_UNION, schemaDoc); - memberTypeDvList[i] = dv; if (dv != null) { // if it's a union, expand it // In XML Schema 1.1, we do not expand @@ -449,20 +445,7 @@ class XSDSimpleTypeTraverser extends XSD annotations == null? null : new XSObjectListImpl(annotations, annotations.length)); } } - - if (fSchemaHandler.fSchemaVersion == Constants.SCHEMA_VERSION_1_1) { - if (list && baseValidator != null && XSTypeHelper.isSpecialSimpleType(baseValidator)) { - reportSchemaError("st-props-correct.1", new Object[] {((XSSimpleTypeDecl)newDecl).getTypeName(), "xs:list"}, child); - } - else if (union && memberTypeDvList != null) { - for (int memTypeIdx = 0; memTypeIdx < memberTypeDvList.length; memTypeIdx++) { - if (XSTypeHelper.isSpecialSimpleType(memberTypeDvList[memTypeIdx])) { - reportSchemaError("st-props-correct.1", new Object[] {((XSSimpleTypeDecl)newDecl).getTypeName(), "xs:union"}, child); - } - } - } - } - + // XML Schema 1.1 // Set context information final int localValidatorsSize = localValidators.size(); @@ -510,15 +493,22 @@ class XSDSimpleTypeTraverser extends XSD // if it's a complex type, or if its restriction of anySimpleType // or anyAtomicType (XML Schema 1.1) - if ((baseType == SchemaGrammar.fAnySimpleType || baseType == SchemaGrammar.fAnyAtomicType) && - baseRefContext == XSConstants.DERIVATION_RESTRICTION) { - // if the base type is anySimpleType and the current type is - // a S4S built-in type, return null. (not an error). - if (checkBuiltIn(refName, schemaDoc.fTargetNamespace)) { + if (baseType == SchemaGrammar.fAnySimpleType || baseType == SchemaGrammar.fAnyAtomicType) { + if (baseRefContext == XSConstants.DERIVATION_RESTRICTION) { + // if the base type is anySimpleType and the current type is + // a S4S built-in type, return null. (not an error). + if (checkBuiltIn(refName, schemaDoc.fTargetNamespace)) { + return null; + } + reportSchemaError("cos-st-restricts.1.1", new Object[]{baseTypeStr.rawname, refName}, elm); + return null; + } + else if (fSchemaHandler.fSchemaVersion == Constants.SCHEMA_VERSION_1_1) { + // itemType and memberType cannot be a special type + final String contextString = (baseRefContext == XSConstants.DERIVATION_LIST) ? "xs:list" : "xs:union"; + reportSchemaError("st-props-correct.1", new Object[] {refName, contextString}, elm); return null; } - reportSchemaError("cos-st-restricts.1.1", new Object[]{baseTypeStr.rawname, refName}, elm); - return null; } if ((baseType.getFinal() & baseRefContext) != 0) { --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@xerces.apache.org For additional commands, e-mail: commits-h...@xerces.apache.org