Patty-

I'm not 100% sure, but I think this is really a parser issue.  I think
validation errors look like normal SAXExceptions to Castor, so there
isn't really a way to recover...  But I'd be happy to be corrected. 
With that in mind, one parser feature you can look into is the
following:

   http://apache.org/xml/features/continue-after-fatal-error

Unfortunately on the Xerces website, the following warning is attached:

"The behavior of the parser when this feature is set to true is
undetermined! Therefore use this feature with extreme caution because
the parser may get stuck in an infinite loop or worse."

This is actually a fairly regularly requested feature, so please let
us know if you find something that does the trick.

Stephen

On 3/22/06, Parker, Patricia (Contr) <[EMAIL PROTECTED]> wrote:
>
>
> Hi
>
> I would like to validate my entire instance document against an XML schema
> during the unmarshalling process and accumulate all the validation
> exceptions so that I may send them back to the document creator so they may
> all be fixed.  Right now, Castor is throwing the first ValidationException
> and stopping the schema validation process.  Is there a way to tell Castor
> to validate the entire document before stopping (i.e. make a
> ValidationException a non-fatal error)?
>
> My Castor driver method:
>
>                 //unmarshal xml
>                 boolean isSuccessful = true;
>
>                 Reader toParse = new StringReader((String) xmlToParse);
>
>                 try
>                 {
>                         Mapping mapping = new Mapping();
>                         mapping.loadMapping(mapFileName);
>                         Unmarshaller un = new Unmarshaller(castorClass);
>                         un.setMapping(mapping );
>                         un.setWhitespacePreserve(true);
>                         un.setValidation(true);
>                         try
>                         {
>                                 castorVO = (AbstractCastorVO)
> un.unmarshal(toParse);
>                         }
>                         catch (ValidationException ex)
>                         {
>                                 parserMessageList.add(ex.getMessage());
>                         }
>                         catch(MarshalException ex)
>                         {
>                                 parserMessageList.add(ex.getMessage());
>                         }
>
>                         toParse.close();
>                 }
>
>                 catch (IOException ex)
>                 {
>                         isSuccessful = false;
>                         parserMessageList.add(ex.getMessage());
>                 }
>                 catch (MappingException ex)
>                 {
>                         isSuccessful = false;
>                         parserMessageList.add(ex.getMessage());
>                 }
>                 catch (MarshalException ex)
>                 {
>                         isSuccessful = false;
>                         parserMessageList.add(ex.getMessage());
>                 }
>
>                 return isSuccessful;
>
>
> My castor.properties settings:
>
> # True if xml documents should be validated by the SAX Parser
> #
> org.exolab.castor.parser.validation=true
>
> # Per Patty - set to false when generating code
> # then set to true for un/marshalling
> org.exolab.castor.parser.namespaces=true
>
>
> # True if all documents should be validated by the marshalling framework
> #
> org.exolab.castor.marshalling.validation=true
> org.exolab.castor.unmarshalling.validation=true
>
> org.exolab.castor.sax.features=http://xml.org/sax/features/validation,\
>         http://apache.org/xml/features/validation/schema,\
>
> http://apache.org/xml/features/validation/schema-full-checking
>
> # Comma separated list of SAX 2 features that should be enabled
> # for the default parser.
> #
> #org.exolab.castor.features=
>
> Thank you for your help
>
> Patty

Reply via email to