diff --git a/java/org/slub/rosetta/dps/repository/plugin/SLUBXmlErrorHandler.java b/java/org/slub/rosetta/dps/repository/plugin/SLUBXmlErrorHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..9b075c3db457673ce2f13115ca185d00a37d589a
--- /dev/null
+++ b/java/org/slub/rosetta/dps/repository/plugin/SLUBXmlErrorHandler.java
@@ -0,0 +1,41 @@
+package org.slub.rosetta.dps.repository.plugin;
+
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXParseException;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SLUBXmlErrorHandler implements ErrorHandler {
+    private boolean is_valid = true;
+    private List<String> errors = new ArrayList<>();
+
+
+    @Override
+    public void warning(SAXParseException e) {
+        errors.add("[WW] " + e.getMessage());
+    }
+
+    @Override
+    public void error(SAXParseException e) {
+        is_valid = false;
+        errors.add("[EE] " + e.getMessage() + "  line=" + e.getLineNumber() + " col=" + e.getColumnNumber());
+    }
+
+    @Override
+    public void fatalError(SAXParseException e) {
+        is_valid = false;
+        errors.add("[EE] Fatal, " + e.getMessage() + "  line=" + e.getLineNumber() + " col=" + e.getColumnNumber());
+    }
+
+    public String get_log () {
+        for (int i=1; i<errors.size();i++) {
+            System.out.println( errors.get(i) );
+        }
+        return errors.toString();
+    }
+
+    public boolean is_Valid() {
+        return is_valid;
+    }
+}