We do set the handlers elsewhere. Here's the code:
protected void configureReader(XMLReader reader, DefaultHandler
handler)
{
reader.setContentHandler(handler);
reader.setDTDHandler(handler);
reader.setErrorHandler(this);
reader.setEntityResolver(this);
// Set these features explicitly as opposed to relying on their
// default values to deal with differences between various
// crimson and xerces releases.
//
setReaderFeature(reader,
"http://xml.org/sax/features/validation", true);
setReaderFeature(reader,
"http://xml.org/sax/features/namespaces", true);
setReaderFeature(reader,
"http://xml.org/sax/features/namespace-prefixes", false);
// Register for lexical events so that we are notified of
// comments.
//
if (!setReaderProperty(reader,
"http://xml.org/sax/properties/lexical-handler", this))
{
// If the previous property "set" failed, try the same
operation
// with a different version of the property name.
//
setReaderProperty(reader,
"http://xml.org/sax/handlers/LexicalHandler", this);
}
}
I tried using XMLReaderFactory and got the same results (no validation
in JRE 1.5). For JRE 1.4 we use
org.apache.crimson.parser.XMLReaderImpl. For 1.5 we use
com.sun.org.apache.xerces.internal.parsers.SAXParser. This seems to be
some difference between crimson and xerces.
-rich
Elliotte Harold wrote:
In
do see several problems in your code, the biggest of which is that
you're using SAXParser and SAXParserFactory and making the same mistake
almost everyone who uses them makes. Not your fault, though. they're
poorly designed and virtually guaranteed to be used incorrectly. Just
use XMLReader and XMLReaderFactory instead and those mistake will take
care of themselves.
The specific problem you're having may or may not be related to that,
but it looks like a failure to supply an ErrorHandler, so validation is
likely being performed, but no error messages are reported.
|