George, Thanks for all these good patches. I didn't get a chance to look at them today, and I'm away on vacation until Tuesday. I'll take a look at them when I get back. I don't want you to think you're being ignored.
Ted ----- Original Message ----- From: "George T. Joseph" <[EMAIL PROTECTED]> To: "xerces-dev" <[EMAIL PROTECTED]> Sent: Thursday, January 06, 2000 11:22 PM Subject: Changes for XSchemaValidator.java > I spent the day (actually yesterday) trying to get Schema validation working a bit better. A diff to > org/apache/xerces/validators/schema/XSchemaValidator.java and a description is appended below for anyone who wants to use it. > > George > ******************************************* > > reportSchemaError() was printing a stack trace for each validation error. It was also eating the exceptions thrown instead of > propagating them back up the call stack. I commented out the try/catch block so the calling application gets the exception and can > decide if a stack trace is appropriate. I left printStackTrace alone where it was being called in "can't get here" situations. > > A few System.exit() calls were commented out. They should never be called but I'm not fond of having them around in APIs. > > traverseAttributeDecl() was looking for the old 'required="true"' on an attribute definition instead of 'minOccurs="1"' to decide if > an attribute was required or not. > > The datatypes 'negative-integer', 'positive-integer', 'non-negative-integer', and 'non-positive-integer' weren't being correctly > added to the datatype registry and were therefore unavailable. > > *** xschemavalidatororig.java Wed Jan 05 15:12:30 2000 > --- xschemavalidator.java Fri Jan 07 01:20:12 2000 > *************** > *** 1683,1694 **** > catch (SAXException se) { > se.getException().printStackTrace(); > System.err.println("error parsing schema file"); > ! System.exit(1); > } > catch (Exception e) { > e.printStackTrace(); > System.err.println("error parsing schema file"); > ! System.exit(1); > } > fSchemaDocument = fSchemaParser.getDocument(); > if (fSchemaDocument == null) { > --- 1683,1694 ---- > catch (SAXException se) { > se.getException().printStackTrace(); > System.err.println("error parsing schema file"); > ! // System.exit(1); > } > catch (Exception e) { > e.printStackTrace(); > System.err.println("error parsing schema file"); > ! // System.exit(1); > } > fSchemaDocument = fSchemaParser.getDocument(); > if (fSchemaDocument == null) { > *************** > *** 1703,1709 **** > } > catch (Exception e) { > e.printStackTrace(System.err); > ! System.exit(1); > } > } > > --- 1703,1709 ---- > } > catch (Exception e) { > e.printStackTrace(System.err); > ! // System.exit(1); > } > } > > *************** > *** 2206,2212 **** > return index; > } > > ! public int traverseDatatypeDecl(Element datatypeDecl) { > int newTypeName = fStringPool.addSymbol(datatypeDecl.getAttribute(ATT_NAME)); > int export = fStringPool.addSymbol(datatypeDecl.getAttribute(ATT_EXPORT)); > > --- 2206,2212 ---- > return index; > } > > ! public int traverseDatatypeDecl(Element datatypeDecl) throws Exception { > int newTypeName = fStringPool.addSymbol(datatypeDecl.getAttribute(ATT_NAME)); > int export = fStringPool.addSymbol(datatypeDecl.getAttribute(ATT_EXPORT)); > > *************** > *** 2449,2455 **** > // attribute default type > int attDefaultType = -1; > int attDefaultValue = -1; > ! boolean required = attrDecl.getAttribute("required").equals("true"); > if (required) { > attDefaultType = fStringPool.addSymbol("#REQUIRED"); > } else { > --- 2449,2455 ---- > // attribute default type > int attDefaultType = -1; > int attDefaultValue = -1; > ! boolean required = attrDecl.getAttribute("minOccurs").equals("1"); > if (required) { > attDefaultType = fStringPool.addSymbol("#REQUIRED"); > } else { > *************** > *** 3011,3027 **** > return -1; > } > > ! private void reportSchemaError(int major, Object args[]) { > ! try { > fErrorReporter.reportError(fErrorReporter.getLocator(), > SchemaMessageProvider.SCHEMA_DOMAIN, > major, > SchemaMessageProvider.MSG_NONE, > args, > XMLErrorReporter.ERRORTYPE_RECOVERABLE_ERROR); > ! } catch (Exception e) { > ! e.printStackTrace(); > ! } > } > > // > --- 3011,3027 ---- > return -1; > } > > ! private void reportSchemaError(int major, Object args[]) throws Exception { > ! // try { > fErrorReporter.reportError(fErrorReporter.getLocator(), > SchemaMessageProvider.SCHEMA_DOMAIN, > major, > SchemaMessageProvider.MSG_NONE, > args, > XMLErrorReporter.ERRORTYPE_RECOVERABLE_ERROR); > ! // } catch (Exception e) { > ! // e.printStackTrace(); > ! // } > } > > // > *************** > *** 3113,3119 **** > > String integerSubtypeTable[][] = { > { "non-negative-integer", DatatypeValidator.MININCLUSIVE , "0"}, > ! { "postive-integer", DatatypeValidator.MININCLUSIVE, "1"}, > { "non-positive-integer", DatatypeValidator.MAXINCLUSIVE, "0"}, > { "negative-integer", DatatypeValidator.MAXINCLUSIVE, "-1"} > }; > --- 3113,3119 ---- > > String integerSubtypeTable[][] = { > { "non-negative-integer", DatatypeValidator.MININCLUSIVE , "0"}, > ! { "positive-integer", DatatypeValidator.MININCLUSIVE, "1"}, > { "non-positive-integer", DatatypeValidator.MAXINCLUSIVE, "0"}, > { "negative-integer", DatatypeValidator.MAXINCLUSIVE, "-1"} > }; > *************** > *** 3149,3155 **** > } catch (UnknownFacetException ufe) { > System.out.println("Internal error initializing registry - Unknown facet: "+integerSubtypeTable[i][0]); > } > ! fRegistry.put(integerSubtypeTable[0], v); > } > } > > --- 3149,3155 ---- > } catch (UnknownFacetException ufe) { > System.out.println("Internal error initializing registry - Unknown facet: "+integerSubtypeTable[i][0]); > } > ! fRegistry.put(integerSubtypeTable[i][0], v); > } > } > > >