sandygao 2002/11/18 15:11:55 Modified: java/src/org/apache/xerces/impl/xs XMLSchemaValidator.java XSAttributeDecl.java XSAttributeGroupDecl.java XSAttributeUseImpl.java XSConstraints.java XSElementDecl.java java/src/org/apache/xerces/impl/xs/identity IDValue.java java/src/org/apache/xerces/impl/xs/traversers XSDAttributeTraverser.java Log: Make use of the changes made to the data types: 1. Use canonical representations for validation and PSVI, when required; 2. Use new equality checking machenism. Revision Changes Path 1.122 +15 -14 xml-xerces/java/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java Index: XMLSchemaValidator.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java,v retrieving revision 1.121 retrieving revision 1.122 diff -u -r1.121 -r1.122 --- XMLSchemaValidator.java 8 Nov 2002 19:38:16 -0000 1.121 +++ XMLSchemaValidator.java 18 Nov 2002 23:11:54 -0000 1.122 @@ -2671,7 +2671,7 @@ // 4 The item's actual value must match the value of the {value constraint}, if it is present and fixed. // now check the value against the simpleType if (actualValue != null && currDecl.getConstraintType() == XSConstants.VC_FIXED) { - if (!attDV.isEqual(actualValue, currDecl.fDefault.actualValue)){ + if (!actualValue.equals(currDecl.fDefault.actualValue)){ reportSchemaError("cvc-attribute.4", new Object[]{element.rawname, fTempQName.rawname, attrValue}); } } @@ -2679,7 +2679,7 @@ // 3.1 If there is among the {attribute uses} an attribute use with an {attribute declaration} whose {name} matches the attribute information item's [local name] and whose {target namespace} is identical to the attribute information item's [namespace name] (where an absent {target namespace} is taken to be identical to a [namespace name] with no value), then the attribute information must be valid with respect to that attribute use as per Attribute Locally Valid (Use) (3.5.4). In this case the {attribute declaration} of that attribute use is the context-determined declaration for the attribute information item with respect to Schema-Validity Assessment (Attribute) (3.2.4) and Assessment Outcome (Attribute) (3.2.5). if (actualValue != null && currUse != null && currUse.fConstraintType == XSConstants.VC_FIXED) { - if (!attDV.isEqual(actualValue, currUse.fDefault.actualValue)){ + if (!actualValue.equals(currUse.fDefault.actualValue)){ reportSchemaError("cvc-complex-type.3.1", new Object[]{element.rawname, fTempQName.rawname, attrValue}); } } @@ -2688,7 +2688,7 @@ // PSVI: attribute declaration attrPSVI.fDeclaration = currDecl; if (currDecl != null && currDecl.fDefault != null) - attrPSVI.fSchemaDefault = currDecl.fDefault.normalizedValue; + attrPSVI.fSchemaDefault = currDecl.fDefault.toString(); // PSVI: attribute type attrPSVI.fTypeDecl = attDV; @@ -2757,7 +2757,7 @@ // if the attribute is not specified, then apply the value constraint if (!isSpecified && constType != XSConstants.VC_NONE) { attName = new QName(null, currDecl.fName, currDecl.fName, currDecl.fTargetNamespace); - String normalized = (defaultValue!=null)?defaultValue.normalizedValue:""; + String normalized = (defaultValue!=null)?defaultValue.toString():""; int attrIndex = attributes.addAttribute(attName, "CDATA", normalized); if (attributes instanceof XMLAttributesImpl) { XMLAttributesImpl attrs = (XMLAttributesImpl)attributes; @@ -2800,11 +2800,12 @@ if (fCurrentElemDecl != null && fCurrentElemDecl.fDefault != null && !fSawText && !fSubElement && !fNil) { - int bufLen = fCurrentElemDecl.fDefault.normalizedValue.length(); + String strv = fCurrentElemDecl.fDefault.stringValue(); + int bufLen = strv.length(); if (fNormalizedStr.ch == null || fNormalizedStr.ch.length < bufLen) { fNormalizedStr.ch = new char[bufLen]; } - fCurrentElemDecl.fDefault.normalizedValue.getChars(0, bufLen, fNormalizedStr.ch, 0); + strv.getChars(0, bufLen, fNormalizedStr.ch, 0); fNormalizedStr.offset = 0; fNormalizedStr.length = bufLen; fDefaultValue = fNormalizedStr; @@ -2831,13 +2832,13 @@ // 5.1.1 If the actual type definition is a local type definition then the canonical lexical representation of the {value constraint} value must be a valid default for the actual type definition as defined in Element Default Valid (Immediate) (3.3.6). if (fCurrentType != fCurrentElemDecl.fType) { //REVISIT:we should pass ValidatedInfo here. - if (XSConstraints.ElementDefaultValidImmediate(fCurrentType, fCurrentElemDecl.fDefault.normalizedValue, fState4XsiType, null) == null) - reportSchemaError("cvc-elt.5.1.1", new Object[]{element.rawname, fCurrentType.getName(), fCurrentElemDecl.fDefault.normalizedValue}); + if (XSConstraints.ElementDefaultValidImmediate(fCurrentType, fCurrentElemDecl.fDefault.stringValue(), fState4XsiType, null) == null) + reportSchemaError("cvc-elt.5.1.1", new Object[]{element.rawname, fCurrentType.getName(), fCurrentElemDecl.fDefault.stringValue()}); } // 5.1.2 The element information item with the canonical lexical representation of the {value constraint} value used as its normalized value must be valid with respect to the actual type definition as defined by Element Locally Valid (Type) (3.3.4). // REVISIT: don't use toString, but validateActualValue instead // use the fState4ApplyDefault - elementLocallyValidType(element, fCurrentElemDecl.fDefault.normalizedValue); + elementLocallyValidType(element, fCurrentElemDecl.fDefault.stringValue()); } else { // The following method call also deal with clause 1.2.2 of the constraint @@ -2866,17 +2867,17 @@ // 5.2.2.2.2 If the {content type} of the actual type definition is a simple type definition, then the actual value of the item must match the canonical lexical representation of the {value constraint} value. else if (ctype.fContentType == XSComplexTypeDecl.CONTENTTYPE_SIMPLE) { if (actualValue != null && - !ctype.fXSSimpleType.isEqual(actualValue, fCurrentElemDecl.fDefault.actualValue)) - reportSchemaError("cvc-elt.5.2.2.2.2", new Object[]{element.rawname, content, fCurrentElemDecl.fDefault.normalizedValue}); + !actualValue.equals(fCurrentElemDecl.fDefault.actualValue)) + reportSchemaError("cvc-elt.5.2.2.2.2", new Object[]{element.rawname, content, fCurrentElemDecl.fDefault.stringValue()}); } } else if (fCurrentType.getTypeCategory() == XSTypeDecl.SIMPLE_TYPE) { XSSimpleType sType = (XSSimpleType)fCurrentType; if (actualValue != null && - !sType.isEqual(actualValue, fCurrentElemDecl.fDefault.actualValue)) + !actualValue.equals(fCurrentElemDecl.fDefault.actualValue)) // REVISIT: the spec didn't mention this case: fixed // value with simple type - reportSchemaError("cvc-elt.5.2.2.2.2", new Object[]{element.rawname, content, fCurrentElemDecl.fDefault.normalizedValue}); + reportSchemaError("cvc-elt.5.2.2.2.2", new Object[]{element.rawname, content, fCurrentElemDecl.fDefault.stringValue()}); } } } 1.10 +2 -2 xml-xerces/java/src/org/apache/xerces/impl/xs/XSAttributeDecl.java Index: XSAttributeDecl.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/XSAttributeDecl.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- XSAttributeDecl.java 15 Jul 2002 20:24:27 -0000 1.9 +++ XSAttributeDecl.java 18 Nov 2002 23:11:54 -0000 1.10 @@ -178,7 +178,7 @@ // REVISIT: SCAPI: what's the proper representation return getConstraintType() == XSConstants.VC_NONE ? null : - fDefault.normalizedValue; + fDefault.actualValue.toString(); } /** 1.10 +2 -2 xml-xerces/java/src/org/apache/xerces/impl/xs/XSAttributeGroupDecl.java Index: XSAttributeGroupDecl.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/XSAttributeGroupDecl.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- XSAttributeGroupDecl.java 16 May 2002 18:25:54 -0000 1.9 +++ XSAttributeGroupDecl.java 18 Nov 2002 23:11:54 -0000 1.10 @@ -220,7 +220,7 @@ baseAttrUse.fDefault: baseAttrDecl.fDefault); ValidatedInfo thisFixedValue=(attrUse.fDefault!=null ? attrUse.fDefault: attrDecl.fDefault); - if (!baseAttrDecl.fType.isEqual(baseFixedValue.actualValue,thisFixedValue.actualValue)) { + if (!baseFixedValue.actualValue.equals(thisFixedValue.actualValue)) { errorCode="derivation-ok-restriction.2.1.3"; return errorCode; } 1.2 +2 -2 xml-xerces/java/src/org/apache/xerces/impl/xs/XSAttributeUseImpl.java Index: XSAttributeUseImpl.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/XSAttributeUseImpl.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- XSAttributeUseImpl.java 16 May 2002 18:25:54 -0000 1.1 +++ XSAttributeUseImpl.java 18 Nov 2002 23:11:54 -0000 1.2 @@ -141,7 +141,7 @@ // REVISIT: SCAPI: what's the proper representation return getConstraintType() == XSConstants.VC_NONE ? null : - fDefault.normalizedValue; + fDefault.actualValue.toString(); } } // class XSAttributeUseImpl 1.27 +8 -8 xml-xerces/java/src/org/apache/xerces/impl/xs/XSConstraints.java Index: XSConstraints.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/XSConstraints.java,v retrieving revision 1.26 retrieving revision 1.27 diff -u -r1.26 -r1.27 --- XSConstraints.java 26 Aug 2002 13:57:48 -0000 1.26 +++ XSConstraints.java 18 Nov 2002 23:11:54 -0000 1.27 @@ -1053,15 +1053,15 @@ } // get simple type - XSSimpleType dv = null; - if (dElement.fType.getTypeCategory() == XSTypeDecl.SIMPLE_TYPE) - dv = (XSSimpleType)dElement.fType; - else if (((XSComplexTypeDecl)dElement.fType).fContentType == XSComplexTypeDecl.CONTENTTYPE_SIMPLE) - dv = ((XSComplexTypeDecl)dElement.fType).fXSSimpleType; + boolean isSimple = false; + if (dElement.fType.getTypeCategory() == XSTypeDecl.SIMPLE_TYPE || + ((XSComplexTypeDecl)dElement.fType).fContentType == XSComplexTypeDecl.CONTENTTYPE_SIMPLE) { + isSimple = true; + } // if there is no simple type, then compare based on string - if (dv == null && !bElement.fDefault.normalizedValue.equals(dElement.fDefault.normalizedValue) || - dv != null && !dv.isEqual(bElement.fDefault.actualValue, dElement.fDefault.actualValue)) { + if (!isSimple && !bElement.fDefault.normalizedValue.equals(dElement.fDefault.normalizedValue) || + isSimple && !bElement.fDefault.actualValue.equals(dElement.fDefault.actualValue)) { throw new XMLSchemaException("rcase-NameAndTypeOK.4", new Object[]{dElement.fName}); } 1.10 +2 -2 xml-xerces/java/src/org/apache/xerces/impl/xs/XSElementDecl.java Index: XSElementDecl.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/XSElementDecl.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- XSElementDecl.java 16 May 2002 18:25:54 -0000 1.9 +++ XSElementDecl.java 18 Nov 2002 23:11:54 -0000 1.10 @@ -271,7 +271,7 @@ // REVISIT: SCAPI: what's the proper representation return getConstraintType() == XSConstants.VC_NONE ? null : - fDefault.normalizedValue; + fDefault.stringValue(); } /** 1.6 +2 -2 xml-xerces/java/src/org/apache/xerces/impl/xs/identity/IDValue.java Index: IDValue.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/identity/IDValue.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- IDValue.java 9 Aug 2002 15:18:18 -0000 1.5 +++ IDValue.java 18 Nov 2002 23:11:55 -0000 1.6 @@ -137,7 +137,7 @@ try { Object av1 = dv.validate(v1, VS, null); Object av2 = dv.validate(v2, VS, null); - return dv.isEqual(av1, av2); + return av1.equals(av2); } catch (Exception e) { return false; } 1.19 +2 -3 xml-xerces/java/src/org/apache/xerces/impl/xs/traversers/XSDAttributeTraverser.java Index: XSDAttributeTraverser.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/traversers/XSDAttributeTraverser.java,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- XSDAttributeTraverser.java 13 Aug 2002 22:57:10 -0000 1.18 +++ XSDAttributeTraverser.java 18 Nov 2002 23:11:55 -0000 1.19 @@ -203,8 +203,7 @@ if (attrUse.fAttrDecl.getConstraintType() == XSConstants.VC_FIXED && attrUse.fConstraintType != XSConstants.VC_NONE) { if (attrUse.fConstraintType != XSConstants.VC_FIXED || - !((XSSimpleType)attrUse.fAttrDecl.getTypeDefinition()).isEqual(attrUse.fAttrDecl.getValInfo().actualValue, - attrUse.fDefault.actualValue)) { + !attrUse.fAttrDecl.getValInfo().actualValue.equals(attrUse.fDefault.actualValue)) { reportSchemaError ("au-props-correct.2", new Object[]{nameAtt}, attrDecl); } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]