You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by er...@locus.apache.org on 2000/05/15 08:58:50 UTC
cvs commit: xml-xerces/java/src/org/apache/xerces/validators/common Grammar.java XMLAttributeDecl.java XMLValidator.java
ericye 00/05/14 23:58:50
Modified: java/src/org/apache/xerces/validators/common Tag: schemawork
Grammar.java XMLAttributeDecl.java
XMLValidator.java
Log:
put fixes to pass quite a few more invalid test cases, --ericye
Revision Changes Path
No revision
No revision
1.1.2.31 +7 -1 xml-xerces/java/src/org/apache/xerces/validators/common/Attic/Grammar.java
Index: Grammar.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/common/Attic/Grammar.java,v
retrieving revision 1.1.2.30
retrieving revision 1.1.2.31
diff -u -r1.1.2.30 -r1.1.2.31
--- Grammar.java 2000/05/06 02:22:54 1.1.2.30
+++ Grammar.java 2000/05/15 06:58:48 1.1.2.31
@@ -69,7 +69,7 @@
/**
- * @version $Id: Grammar.java,v 1.1.2.30 2000/05/06 02:22:54 ericye Exp $
+ * @version $Id: Grammar.java,v 1.1.2.31 2000/05/15 06:58:48 ericye Exp $
*/
public class Grammar
implements XMLContentSpec.Provider {
@@ -119,6 +119,7 @@
private int fAttributeDeclCount = 0 ;
private QName fAttributeDeclName[][] = new QName[INITIAL_CHUNK_COUNT][];
private int fAttributeDeclType[][] = new int[INITIAL_CHUNK_COUNT][];
+ private int fAttributeDeclEnumeration[][] = new int[INITIAL_CHUNK_COUNT][];
private int fAttributeDeclDefaultType[][] = new int[INITIAL_CHUNK_COUNT][];
private DatatypeValidator fAttributeDeclDatatypeValidator[][] = new DatatypeValidator[INITIAL_CHUNK_COUNT][];
private String fAttributeDeclDefaultValue[][] = new String[INITIAL_CHUNK_COUNT][];
@@ -290,6 +291,7 @@
attributeDecl.list = (fAttributeDeclType[chunk][index] & LIST_FLAG) != 0;
}
attributeDecl.datatypeValidator = fAttributeDeclDatatypeValidator[chunk][index];
+ attributeDecl.enumeration = fAttributeDeclEnumeration[chunk][index];
attributeDecl.defaultType = fAttributeDeclDefaultType[chunk][index];
attributeDecl.defaultValue = fAttributeDeclDefaultValue[chunk][index];
return true;
@@ -381,6 +383,7 @@
fAttributeDeclName[chunk][index] = new QName();
fAttributeDeclType[chunk][index] = -1;
fAttributeDeclDatatypeValidator[chunk][index] = null;
+ fAttributeDeclEnumeration[chunk][index] = -1;
fAttributeDeclDefaultType[chunk][index] = XMLAttributeDecl.DEFAULT_TYPE_IMPLIED;
fAttributeDeclDefaultValue[chunk][index] = null;
fAttributeDeclNextAttributeDeclIndex[chunk][index] = -1;
@@ -398,6 +401,7 @@
if (attributeDecl.list) {
fAttributeDeclType[attrChunk][attrIndex] |= LIST_FLAG;
}
+ fAttributeDeclEnumeration[attrChunk][attrIndex] = attributeDecl.enumeration;
fAttributeDeclDefaultType[attrChunk][attrIndex] = attributeDecl.defaultType;
fAttributeDeclDatatypeValidator[attrChunk][attrIndex] = attributeDecl.datatypeValidator;
fAttributeDeclDefaultValue[attrChunk][attrIndex] = attributeDecl.defaultValue;
@@ -758,6 +762,7 @@
} catch (ArrayIndexOutOfBoundsException ex) {
fAttributeDeclName = resize(fAttributeDeclName, fAttributeDeclName.length * 2);
fAttributeDeclType = resize(fAttributeDeclType, fAttributeDeclType.length * 2);
+ fAttributeDeclEnumeration = resize(fAttributeDeclEnumeration, fAttributeDeclEnumeration.length * 2);
fAttributeDeclDefaultType = resize(fAttributeDeclDefaultType, fAttributeDeclDefaultType.length * 2);
fAttributeDeclDatatypeValidator = resize(fAttributeDeclDatatypeValidator, fAttributeDeclDatatypeValidator.length * 2);
fAttributeDeclDefaultValue = resize(fAttributeDeclDefaultValue, fAttributeDeclDefaultValue.length * 2);
@@ -767,6 +772,7 @@
}
fAttributeDeclName[chunk] = new QName[CHUNK_SIZE];
fAttributeDeclType[chunk] = new int[CHUNK_SIZE];
+ fAttributeDeclEnumeration[chunk] = new int[CHUNK_SIZE];
fAttributeDeclDefaultType[chunk] = new int[CHUNK_SIZE];
fAttributeDeclDatatypeValidator[chunk] = new DatatypeValidator[CHUNK_SIZE];
fAttributeDeclDefaultValue[chunk] = new String[CHUNK_SIZE];
1.1.2.7 +4 -1 xml-xerces/java/src/org/apache/xerces/validators/common/Attic/XMLAttributeDecl.java
Index: XMLAttributeDecl.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/common/Attic/XMLAttributeDecl.java,v
retrieving revision 1.1.2.6
retrieving revision 1.1.2.7
diff -u -r1.1.2.6 -r1.1.2.7
--- XMLAttributeDecl.java 2000/05/05 20:53:09 1.1.2.6
+++ XMLAttributeDecl.java 2000/05/15 06:58:48 1.1.2.7
@@ -61,7 +61,7 @@
import org.apache.xerces.validators.datatype.DatatypeValidator;
/**
- * @version $Id: XMLAttributeDecl.java,v 1.1.2.6 2000/05/05 20:53:09 andyc Exp $
+ * @version $Id: XMLAttributeDecl.java,v 1.1.2.7 2000/05/15 06:58:48 ericye Exp $
*/
public class XMLAttributeDecl {
@@ -109,6 +109,7 @@
public boolean list;
// values
+ public int enumeration;
public int defaultType;
@@ -135,6 +136,7 @@
datatypeValidator = null;
type = -1;
list = false;
+ enumeration = -1;
defaultType = DEFAULT_TYPE_IMPLIED;
defaultValue = null;
}
@@ -144,6 +146,7 @@
datatypeValidator = attributeDecl.datatypeValidator;
type = attributeDecl.type;
list = attributeDecl.list;
+ enumeration = attributeDecl.enumeration;
defaultType = attributeDecl.defaultType;
defaultValue = attributeDecl.defaultValue;
}
1.4.2.30 +70 -12 xml-xerces/java/src/org/apache/xerces/validators/common/XMLValidator.java
Index: XMLValidator.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/common/XMLValidator.java,v
retrieving revision 1.4.2.29
retrieving revision 1.4.2.30
diff -u -r1.4.2.29 -r1.4.2.30
--- XMLValidator.java 2000/05/14 08:03:45 1.4.2.29
+++ XMLValidator.java 2000/05/15 06:58:48 1.4.2.30
@@ -105,7 +105,7 @@
/**
* This class is the super all-in-one validator used by the parser.
*
- * @version $Id: XMLValidator.java,v 1.4.2.29 2000/05/14 08:03:45 ericye Exp $
+ * @version $Id: XMLValidator.java,v 1.4.2.30 2000/05/15 06:58:48 ericye Exp $
*/
public final class XMLValidator
implements DefaultEntityHandler.EventHandler,
@@ -199,15 +199,15 @@
// attribute declaration is required to accomodate
// Schema facets on simple types.
private AttributeValidator fAttValidatorCDATA = null;
- private AttributeValidator fAttValidatorID = null;
- private AttributeValidator fAttValidatorIDREF = null;
- private AttributeValidator fAttValidatorIDREFS = null;
- private AttributeValidator fAttValidatorENTITY = null;
- private AttributeValidator fAttValidatorENTITIES = null;
- private AttributeValidator fAttValidatorNMTOKEN = null;
- private AttributeValidator fAttValidatorNMTOKENS = null;
- private AttributeValidator fAttValidatorNOTATION = null;
- private AttributeValidator fAttValidatorENUMERATION = null;
+ private AttributeValidator fAttValidatorID = new AttValidatorID();
+ private AttributeValidator fAttValidatorIDREF = new AttValidatorIDREF();
+ private AttributeValidator fAttValidatorIDREFS = new AttValidatorIDREFS();
+ private AttributeValidator fAttValidatorENTITY = new AttValidatorENTITY();
+ private AttributeValidator fAttValidatorENTITIES = new AttValidatorENTITIES();
+ private AttributeValidator fAttValidatorNMTOKEN = new AttValidatorNMTOKEN();
+ private AttributeValidator fAttValidatorNMTOKENS = new AttValidatorNMTOKENS();
+ private AttributeValidator fAttValidatorNOTATION = new AttValidatorNOTATION();
+ private AttributeValidator fAttValidatorENUMERATION = new AttValidatorENUMERATION();
private AttributeValidator fAttValidatorDATATYPE = null;
// Package access for use by AttributeValidator classes.
@@ -3620,10 +3620,22 @@
}
else {
- fGrammar.getAttributeDecl(attDefIndex, fTempAttDecl);
+ fGrammar.getAttributeDecl(attDefIndex, fTempAttDecl);
//TO DO: special handling needed here for IDs IDrefs, ENTITIES, ?NOTations
+ if (fGrammar instanceof DTDGrammar &&
+ (fTempAttDecl.type == XMLAttributeDecl.TYPE_ENTITY ||
+ fTempAttDecl.type == XMLAttributeDecl.TYPE_ENUMERATION ||
+ fTempAttDecl.type == XMLAttributeDecl.TYPE_ID ||
+ fTempAttDecl.type == XMLAttributeDecl.TYPE_IDREF ||
+ fTempAttDecl.type == XMLAttributeDecl.TYPE_NMTOKEN ||
+ fTempAttDecl.type == XMLAttributeDecl.TYPE_NOTATION)
+ ) {
+
+ validateDTDattribute(element, attrList.getAttValue(index), fTempAttDecl);
+ }
+
if (fTempAttDecl.datatypeValidator == null) {
Object[] args = { fStringPool.toString(element.rawname),
fStringPool.toString(attrList.getAttrName(index)) };
@@ -3685,6 +3697,51 @@
} // validateElementAndAttributes(QName,XMLAttrList)
+
+ //validate attributes in DTD fashion
+ private void validateDTDattribute(QName element, int attValue,
+ XMLAttributeDecl attributeDecl) throws Exception{
+ AttributeValidator av = null;
+ switch (attributeDecl.type) {
+ case XMLAttributeDecl.TYPE_ENTITY:
+ if (attributeDecl.list) {
+ av = fAttValidatorENTITIES;
+ }
+ else {
+ av = fAttValidatorENTITY;
+ }
+ break;
+ case XMLAttributeDecl.TYPE_ENUMERATION:
+ av = fAttValidatorENUMERATION;
+ break;
+ case XMLAttributeDecl.TYPE_ID:
+ av = fAttValidatorID;
+ break;
+ case XMLAttributeDecl.TYPE_IDREF:
+ if (attributeDecl.list) {
+ av = fAttValidatorIDREFS;
+ }
+ else {
+ av = fAttValidatorIDREF;
+ }
+ break;
+ case XMLAttributeDecl.TYPE_NOTATION:
+ av = fAttValidatorNOTATION;
+ break;
+ case XMLAttributeDecl.TYPE_NMTOKEN:
+ if (attributeDecl.list) {
+ av = fAttValidatorNMTOKENS;
+ }
+ else {
+ av = fAttValidatorNMTOKEN;
+ }
+ break;
+ }
+
+ av.normalize(element, attributeDecl.name, attValue,
+ attributeDecl.type, attributeDecl.enumeration);
+ }
+
/** Character data in content. */
private void charDataInContent() {
@@ -4207,8 +4264,9 @@
//
// AttributeValidator methods
//
-
+
/** Normalize. */
+
public int normalize(QName element, QName attribute,
int attValueHandle, int attType,
int enumHandle) throws Exception {