darksmilie
Erfahrenes Mitglied
Hi,
ich habe eine xsd validierung geschrieben die auch funktioniert, nun möchte sich erweitern das ich auch xsd schema validieren kann die Abhänigkeiten zu anderen xsd files hat. Hat das schon jemand mal gemacht?
so sieht meine momentane validierung aus, die leider nicht klappt, wenn ich mehrer xsd files habe:
mfg
Darksmilie
ich habe eine xsd validierung geschrieben die auch funktioniert, nun möchte sich erweitern das ich auch xsd schema validieren kann die Abhänigkeiten zu anderen xsd files hat. Hat das schon jemand mal gemacht?
so sieht meine momentane validierung aus, die leider nicht klappt, wenn ich mehrer xsd files habe:
Code:
public XMLParserWithXSD(File xsdFile, Object... objects) {
this.xsdFile = xsdFile;
this.additionalXsdFiles = new ArrayList<File>();
if(objects != null && objects.length > 0) {
for (Object object : objects) {
if(object instanceof List) {
additionalXsdFiles.addAll((List<File>)object);
}
}
}
initialize();
}
private void initialize() {
// setup xsd file
if (xsdFile == null) {
return;
}
// setup document builder
factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
factory.setValidating(true);
factory.setAttribute(KEY_SCHEMA_LANGUAGE, VALUE_SCHEMA);
factory.setAttribute(KEY_SCHEMA_SOURCE, xsdFile);
if(!additionalXsdFiles.isEmpty()) {
File[] files = new File[additionalXsdFiles.size()+1];
files[0] = xsdFile;
int i = 1;
for(File file : additionalXsdFiles) {
files[i] = file;
i++;
}
factory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaLocation", files);
}
try {
builder = factory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
logger.error(e);
return;
}
builder.setErrorHandler(getParserErrorHandler());
}
public void doParse(Elemet element, IDocument document) {
if (builder == null) {
return; // exception already handled by initialize()
}
this.element = element;
this.document = document;
try {
IFile esFile = element.getElementFile();
if (esFile != null
&& esFile.findMarkers(XMLErrorHandler.ERROR_MARKER_ID, true, IResource.DEPTH_ZERO).length > 0) {
esFile.deleteMarkers(XMLErrorHandler.ERROR_MARKER_ID, true, IResource.DEPTH_ZERO);
element.setValid(true);
}
} catch (CoreException e) {
logger.error(e);
}
try {
builder.parse(new InputSource(new StringReader(document.get())));
} catch (SAXParseException e) {
logger.error(e);
} catch (SAXException e) {
logger.error(e);
} catch (IOException e) {
logger.error(e);
}
}
mfg
Darksmilie