Hi again,
hope that will not be quallified as spamming ;-)

I think the problem starts earlier. I have a System.out.println("Hello"); statement at the beginnig of the method resolveEntity(String publicId, Sring systemId). The Statement is never reached, so I think the method is never called, but why?

Marcus




Cooper, Paul A wrote:
Marcus,

Try this:

schema = new InputSource("file:///F:/ZHW/test/ReqSchema.xsd");

That worked for me in a similar situation while trying to resolve the path
to my dtd location, so maybe it will work for you in this case. If not, I
defer to higher authority (ie: someone else who has a clue ;-)

Paul

-----Original Message-----
From: Marcus Schneller [SMTP:[EMAIL PROTECTED]]
Sent: Friday, February 15, 2002 3:32 PM
To: [EMAIL PROTECTED]
Subject: Re: Still have problems validating xml file with xsd schema

Hi Paul,

your ansewer came very fast. Thank you!

Actually I tried that with the MyResolver class:
here is the code:

import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import java.io.FileReader;
import java.io.FileNotFoundException;


public class MyResolver implements EntityResolver{

private FileReader schema;

public InputSource resolveEntity (String publicId, String systemId)
{
System.out.println("Hello");
if (publicId.equals("http://www.zhwin.ch/schnemac/Req") ||
systemId.equals("ReqSchema.xsd")) {
try{
schema = new FileReader("F:/ZHW/test/ReqSchema.xsd");
}
catch(FileNotFoundException f){
System.out.println(f.getMessage());
}
}
return new InputSource(schema);
}
}

In the class were the parser is, I created a new objekt of the MyResolver:

private DocProcessor processor;
private SAXParser parser;
private MyResolver resolver;

public InputDocumentHandler() {

try{
processor = new DocProcessor();
resolver = new MyResolver();
}
catch(IOException i){
System.out.println( i.getMessage());
}

try {
parser =
(SAXParser)Class.forName("org.apache.xerces.parsers.SAXParser").newIns tanc
e();
parser.setFeature("http://xml.org/sax/features/validation",
true);
parser.setContentHandler(processor);
parser.setErrorHandler(processor);
parser.setEntityResolver(resolver);
parser.setReaderFactory(new StreamingCharFactory());
}
catch (Exception ex) {
System.out.println(ex.getMessage());
}
}

Well, still the same General Schema Error........

My first guess was, that I may have to set a new feature, but I couldn't
find an appropriate feature.

I may add here, that first I wroked with JDOM, but that didn't work
because the parser is reading from a BufferedReader wich comes from a
Socket. Ant there is the problem with the End of File and the close the
BufferedReader thing.

Well, I'm pretty at a loss now......< br>
Any idea what the problem could be?

Marcus

Cooper, Paul A wrote:

Marcus....

Rather than adding the resolveEntity method to your processor, you need
to
create a new MyEntityResolver class that implements the EntityResolver
interface, and override the single resolveEntity method. Then pass a new
instance of this class to the parser.setEntityResolver() method. Examine
Laura's code a little more closely, and you'll notice that is what she
did.
I had the exact same problem about 3 months ago, and implementing the
entityResolver solved the problem.

Paul Cooper
GlaxoSmithKline Bioinformatics



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to