Jump to content

Interface in interface, sax validator


Kahor
 Share

Recommended Posts

There is a copy of this topic in XML Schema subforum, since I do not exactly know where this problem belong, it is xml related but I think the issue is more java based so...Moderator feel free to delete the one topic in wrong place, thx.Hello,I have a little problem in my java SAX parser, I want to change the baseURI in my validator, so that my validator use a specific URL for xml files.For this, I use the setResourceResolver method of the Validator class, it takes a LSResourceResolver as argument :http://java.sun.com/j2se/1.5.0/docs/api/ja...sourceResolver)

public abstract void setResourceResolver(LSResourceResolver resourceResolver)

now LSResourceResolver is an interface (http://java.sun.com/j2se/1.5.0/docs/api/org/w3c/dom/ls/LSResourceResolver.html) with the

LSInput resolveResource(String type,						String namespaceURI,						String publicId,						String systemId,						String baseURI)

method, so what I do is

...Schema schema = compileSchema(xmlSchema);Validator validator = schema.newValidator();LSResourceResolver resourceResolver = new LSResourceResolver() {	public LSInput resolveResource(String type, String namespaceURI, String publicId, String systemId, String baseURI) {				LSInput ls = new LSInput();				ls.setBaseURI(url.getFile); //url is a final URL				return ls;		}};				validator.setResourceResolver(resourceResolver);validator.validate(new StreamSource(xmlFile.openStream()));...

Right ? No, cuz LSInput is an interface too (http://java.sun.com/j2se/1.5.0/docs/api/org/w3c/dom/ls/LSInput.html)...so what now ? Do I try to implement the interface LSInput inside the LSResourceResolver interface ? Do I write over the setBaseURI method ?I tried to do this :

...Schema schema = compileSchema(xmlSchema);Validator validator = schema.newValidator();LSResourceResolver resourceResolver = new LSResourceResolver() {					public LSInput resolveResource(String type, String namespaceURI, String publicId, String systemId, String baseURI) {						LSInput ls = new LSInput(){														public InputStream getByteStream() {								return null;							}							public boolean getCertifiedText() {								return false;							}							public String getSystemId() {								return null;							}							public String getPublicId() {								return null;							}							public String getEncoding() {								return null;							}							public Reader getCharacterStream() {								return null;							}							public String getStringData() {								return null;							}							public String getBaseURI() {								return null;							}							public void setPublicId(String publicId) {							}							public void setCharacterStream(Reader characterStream) {							}							public void setSystemId(String systemId) {							}							public void setByteStream(InputStream byteStream) {							}							public void setStringData(String stringData) {													}							public void setBaseURI(String baseURI) {							}							public void setEncoding(String encoding) {													}							public void setCertifiedText(boolean certifiedText) {							}						};						ls.setBaseURI(url.getFile());						return ls;					}														};				validator.setResourceResolver(resourceResolver);				validator.validate(new StreamSource(xmlFile.openStream()));...

but the setBaseURI method is empty, I am not sure if it's supposed to work, I get a java.net.MalformedURLException exception, any idea ?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...