You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by sa...@apache.org on 2003/01/16 19:37:37 UTC
cvs commit: xml-xerces/java/src/org/apache/xerces/impl/xs/traversers XSDAttributeTraverser.java XSDElementTraverser.java
sandygao 2003/01/16 10:37:37
Modified: java/src/org/apache/xerces/impl/xs XSConstraints.java
java/src/org/apache/xerces/impl/xs/traversers
XSDAttributeTraverser.java XSDElementTraverser.java
Log:
According to a recent clarification of the schma spec, both the original lexical rep
and the canonical rep of fixed/default values need to be valid wrt the type definition.
Revision Changes Path
1.30 +6 -9 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.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- XSConstraints.java 14 Jan 2003 20:21:45 -0000 1.29
+++ XSConstraints.java 16 Jan 2003 18:37:36 -0000 1.30
@@ -257,7 +257,7 @@
* returns the compiled form of the value
* The parameter value could be either a String or a ValidatedInfo object
*/
- public static Object ElementDefaultValidImmediate(XSTypeDefinition type, Object value, ValidationContext context, ValidatedInfo vinfo) {
+ public static Object ElementDefaultValidImmediate(XSTypeDefinition type, String value, ValidationContext context, ValidatedInfo vinfo) {
XSSimpleType dv = null;
@@ -296,13 +296,10 @@
dv = STRING_TYPE;
}
try {
- if (value instanceof String) {
- actualValue = dv.validate((String)value, context, vinfo);
- } else {
- ValidatedInfo info = (ValidatedInfo)value;
- dv.validate(context, info);
- actualValue = info.actualValue;
- }
+ // validate the original lexical rep, and set the actual value
+ actualValue = dv.validate(value, context, vinfo);
+ // validate the canonical lexical rep
+ actualValue = dv.validate(vinfo.stringValue(), context, vinfo);
} catch (InvalidDatatypeValueException ide) {
return null;
}
1.21 +8 -4 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.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- XSDAttributeTraverser.java 14 Jan 2003 20:21:47 -0000 1.20
+++ XSDAttributeTraverser.java 16 Jan 2003 18:37:36 -0000 1.21
@@ -384,7 +384,7 @@
if (attDefault != null) {
fValidationState.setNamespaceSupport(schemaDoc.fNamespaceSupport);
if (!checkDefaultValid(attribute)) {
- reportSchemaError ("a-props-correct.2", new Object[]{nameAtt, defaultAtt}, attrDecl);
+ reportSchemaError ("a-props-correct.2", new Object[]{nameAtt, attDefault.normalizedValue}, attrDecl);
}
}
@@ -418,8 +418,10 @@
boolean ret = true;
try {
- //set the actual value
+ // validate the original lexical rep, and set the actual value
((XSSimpleType)attribute.getTypeDefinition()).validate(attribute.getValInfo().normalizedValue, fValidationState, attribute.getValInfo());
+ // validate the canonical lexical rep
+ ((XSSimpleType)attribute.getTypeDefinition()).validate(attribute.getValInfo().stringValue(), fValidationState, attribute.getValInfo());
} catch (InvalidDatatypeValueException ide) {
ret = false;
}
@@ -433,8 +435,10 @@
boolean ret = true;
try {
- //set the actual value
+ // validate the original lexical rep, and set the actual value
((XSSimpleType)attrUse.fAttrDecl.getTypeDefinition()).validate(attrUse.fDefault.normalizedValue, fValidationState, attrUse.fDefault);
+ // validate the canonical lexical rep
+ ((XSSimpleType)attrUse.fAttrDecl.getTypeDefinition()).validate(attrUse.fDefault.stringValue(), fValidationState, attrUse.fDefault);
} catch (InvalidDatatypeValueException ide) {
ret = false;
}
1.20 +2 -3 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.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- XSDElementTraverser.java 14 Jan 2003 20:21:48 -0000 1.19
+++ XSDElementTraverser.java 16 Jan 2003 18:37:36 -0000 1.20
@@ -440,8 +440,7 @@
// 2 If there is a {value constraint}, the canonical lexical representation of its value must be valid with respect to the {type definition} as defined in Element Default Valid (Immediate) (3.3.6).
if (element.fDefault != null) {
fValidationState.setNamespaceSupport(schemaDoc.fNamespaceSupport);
- XSConstraints.ElementDefaultValidImmediate(element.fType, element.fDefault.normalizedValue, fValidationState, element.fDefault);
- if (element.fDefault.actualValue == null) {
+ if (XSConstraints.ElementDefaultValidImmediate(element.fType, element.fDefault.normalizedValue, fValidationState, element.fDefault) == null) {
reportSchemaError ("e-props-correct.2", new Object[]{nameAtt, element.fDefault.normalizedValue}, elmDecl);
element.setConstraintType(XSConstants.VC_NONE);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org