Index: trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java	(revision 3605)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java	(revision 3612)
@@ -6,4 +6,5 @@
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.util.Collection;
 import java.util.Collections;
@@ -16,8 +17,7 @@
 import org.openstreetmap.josm.io.MirroredInputStream;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.xml.sax.InputSource;
+import org.openstreetmap.josm.tools.XmlObjectParser;
 import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.XMLReaderFactory;
+import org.xml.sax.SAXParseException;
 
 public class MapPaintStyles {
@@ -86,22 +86,27 @@
                     a = new String[] { null, file };
                 }
-                XMLReader xmlReader = XMLReaderFactory.createXMLReader();
-                ElemStyleHandler handler = new ElemStyleHandler(a[0]);
-                xmlReader.setContentHandler(handler);
-                xmlReader.setErrorHandler(handler);
+                XmlObjectParser parser = new XmlObjectParser(new ElemStyleHandler(a[0]));
                 MirroredInputStream in = new MirroredInputStream(a[1]);
                 InputStream zip = in.getZipEntry("xml","style");
+                InputStreamReader ins;
                 if(zip != null)
                 {
                     zipIcons = in.getFile();
-                    xmlReader.parse(new InputSource(zip));
+                    ins = new InputStreamReader(zip);
                 } else {
-                    xmlReader.parse(new InputSource(in));
+                    ins = new InputStreamReader(in);
+                }
+                parser.startWithValidation(ins, "http://josm.openstreetmap.de/mappaint-styöe-1.0",
+                "resource://data/mappaint-style.xsd");
+                while(parser.hasNext()) {
                 }
             } catch(IOException e) {
                 System.err.println(tr("Warning: failed to load Mappaint styles from ''{0}''. Exception was: {1}", a[1], e.toString()));
                 e.printStackTrace();
+            } catch(SAXParseException e) {
+                System.err.println(tr("Warning: failed to parse Mappaint styles from ''{0}''. Error was: [{1}:{2}] {3}", a[1], e.getLineNumber(), e.getColumnNumber(), e.getMessage()));
+                e.printStackTrace();
             } catch(SAXException e) {
-                System.err.println(tr("Warning: failed to parse Mappaint styles from ''{0}''. Exception was: {1}", a[1], e.toString()));
+                System.err.println(tr("Warning: failed to parse Mappaint styles from ''{0}''. Error was: {1}", a[1], e.getMessage()));
                 e.printStackTrace();
             }
Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 3605)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 3612)
@@ -40,5 +40,4 @@
 import javax.swing.JTextField;
 import javax.swing.SwingUtilities;
-import javax.xml.transform.stream.StreamSource;
 
 import org.openstreetmap.josm.Main;
@@ -749,5 +748,5 @@
 
         if (validate) {
-            parser.startWithValidation(in, "http://josm.openstreetmap.de/tagging-preset-1.0", new StreamSource(TaggingPreset.class.getResourceAsStream("/data/tagging-preset.xsd")));
+            parser.startWithValidation(in, "http://josm.openstreetmap.de/tagging-preset-1.0", "resource://data/tagging-preset.xsd");
         } else {
             parser.start(in);
Index: trunk/src/org/openstreetmap/josm/tools/XmlObjectParser.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/XmlObjectParser.java	(revision 3605)
+++ trunk/src/org/openstreetmap/josm/tools/XmlObjectParser.java	(revision 3612)
@@ -5,4 +5,5 @@
 
 import java.io.Reader;
+import java.io.IOException;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
@@ -19,7 +20,10 @@
 import javax.xml.parsers.SAXParserFactory;
 import javax.xml.transform.Source;
+import javax.xml.transform.stream.StreamSource;
 import javax.xml.validation.Schema;
 import javax.xml.validation.SchemaFactory;
 import javax.xml.validation.ValidatorHandler;
+
+import org.openstreetmap.josm.io.MirroredInputStream;
 
 import org.xml.sax.Attributes;
@@ -276,5 +280,5 @@
 
     private Map<String, Entry> mapping = new HashMap<String, Entry>();
-    private Parser parser;
+    private DefaultHandler parser;
 
     /**
@@ -297,4 +301,8 @@
     public XmlObjectParser() {
         parser = new Parser();
+    }
+
+    public XmlObjectParser(DefaultHandler handler) {
+        parser = handler;
     }
 
@@ -328,15 +336,18 @@
     }
 
-    public Iterable<Object> startWithValidation(final Reader in, String namespace, Source schemaSource) throws SAXException {
-        SchemaFactory factory =  SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
-        Schema schema = factory.newSchema(schemaSource);
-        ValidatorHandler validator = schema.newValidatorHandler();
-        validator.setContentHandler(parser);
-        validator.setErrorHandler(parser);
-
-        AddNamespaceFilter filter = new AddNamespaceFilter(namespace);
-        filter.setContentHandler(validator);
-
-        return start(in, filter);
+    public Iterable<Object> startWithValidation(final Reader in, String namespace, String schemaSource) throws SAXException {
+        try {
+            SchemaFactory factory =  SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
+            Schema schema = factory.newSchema(new StreamSource(new MirroredInputStream(schemaSource)));
+            ValidatorHandler validator = schema.newValidatorHandler();
+            validator.setContentHandler(parser);
+            validator.setErrorHandler(parser);
+
+            AddNamespaceFilter filter = new AddNamespaceFilter(namespace);
+            filter.setContentHandler(validator);
+            return start(in, filter);
+        } catch(IOException e) {
+            throw new SAXException(tr("Failed to load XML schema."), e);
+        }
     }
 
