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 2004/01/19 16:30:21 UTC
cvs commit: xml-xerces/java/src/org/apache/xerces/impl/dv/xs XSSimpleTypeDecl.java
sandygao 2004/01/19 07:30:21
Modified: java/src/org/apache/xerces/impl/dv/xs XSSimpleTypeDecl.java
Log:
Schema erratum E2-35 and bug [25724].
This erratum allows length to be specified along with min/maxLength,
as long as they are at different derivation steps, and
minLength <= length <= maxLength.
Revision Changes Path
1.48 +21 -30 xml-xerces/java/src/org/apache/xerces/impl/dv/xs/XSSimpleTypeDecl.java
Index: XSSimpleTypeDecl.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dv/xs/XSSimpleTypeDecl.java,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -r1.47 -r1.48
--- XSSimpleTypeDecl.java 12 Nov 2003 23:17:32 -0000 1.47
+++ XSSimpleTypeDecl.java 19 Jan 2004 15:30:20 -0000 1.48
@@ -1071,44 +1071,35 @@
// step 3: check facets against base
// check 4.3.1.c1 error: length & (fBase.maxLength | fBase.minLength)
if((fFacetsDefined & FACET_LENGTH) != 0 ){
- if ((fBase.fFacetsDefined & FACET_MINLENGTH) != 0) {
- if ((fBase.fFacetsDefined & FACET_MAXLENGTH) != 0) {
+ if ((fBase.fFacetsDefined & FACET_MINLENGTH) != 0 &&
+ fLength < fBase.fMinLength) {
// length, fBase.minLength and fBase.maxLength defined
- reportError("length-minLength-maxLength.a", new Object[]{fTypeName, Integer.toString(fLength), Integer.toString(fMinLength), Integer.toString(fMaxLength)});
+ reportError("length-minLength-maxLength.d", new Object[]{fTypeName, Integer.toString(fLength), Integer.toString(fBase.fMinLength)});
}
- else {
- // length and fBase.minLength defined
- reportError("length-minLength-maxLength.b", new Object[]{fTypeName, Integer.toString(fLength), Integer.toString(fMinLength)});
+ if ((fBase.fFacetsDefined & FACET_MAXLENGTH) != 0 &&
+ fLength > fBase.fMaxLength) {
+ // length and fBase.maxLength defined
+ reportError("length-minLength-maxLength.e", new Object[]{fTypeName, Integer.toString(fLength), Integer.toString(fBase.fMaxLength)});
+ }
+ if ( (fBase.fFacetsDefined & FACET_LENGTH) != 0 ) {
+ // check 4.3.1.c2 error: length != fBase.length
+ if ( fLength != fBase.fLength )
+ reportError( "length-valid-restriction", new Object[]{Integer.toString(fLength), Integer.toString(fBase.fLength), fTypeName});
}
- }
- else if ((fBase.fFacetsDefined & FACET_MAXLENGTH) != 0) {
- // length and fBase.maxLength defined
- reportError("length-minLength-maxLength.c", new Object[]{fTypeName, Integer.toString(fLength), Integer.toString(fMaxLength)});
- }
- else if ( (fBase.fFacetsDefined & FACET_LENGTH) != 0 ) {
- // check 4.3.1.c2 error: length != fBase.length
- if ( fLength != fBase.fLength )
- reportError( "length-valid-restriction", new Object[]{Integer.toString(fLength), Integer.toString(fBase.fLength), fTypeName});
- }
}
// check 4.3.1.c1 error: fBase.length & (maxLength | minLength)
- if((fBase.fFacetsDefined & FACET_LENGTH) != 0 ){
- if ((fFacetsDefined & FACET_MINLENGTH) != 0) {
- if ((fFacetsDefined & FACET_MAXLENGTH) != 0) {
+ else if((fBase.fFacetsDefined & FACET_LENGTH) != 0 ){
+ if ((fFacetsDefined & FACET_MINLENGTH) != 0 &&
+ fBase.fLength < fMinLength) {
// fBase.length, minLength and maxLength defined
- reportError("length-minLength-maxLength.a", new Object[]{fTypeName, Integer.toString(fBase.fLength), Integer.toString(fMinLength), Integer.toString(fMaxLength)});
+ reportError("length-minLength-maxLength.d", new Object[]{fTypeName, Integer.toString(fBase.fLength), Integer.toString(fMinLength)});
}
- else {
- // fBase.length and minLength defined
- reportError("length-minLength-maxLength.b", new Object[]{fTypeName, Integer.toString(fBase.fLength), Integer.toString(fMinLength)});
-
+ if ((fFacetsDefined & FACET_MAXLENGTH) != 0 &&
+ fBase.fLength > fMaxLength) {
+ // fBase.length and maxLength defined
+ reportError("length-minLength-maxLength.e", new Object[]{this, Integer.toString(fBase.fLength), Integer.toString(fMaxLength)});
}
- }
- else if ((fFacetsDefined & FACET_MAXLENGTH) != 0) {
- // fBase.length and maxLength defined
- reportError("length-minLength-maxLength.c", new Object[]{this, Integer.toString(fBase.fLength), Integer.toString(fMaxLength)});
- }
}
// check 4.3.2.c1 must: minLength <= fBase.maxLength
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org