Add SAXReaderNotAvailable, and use it to distinguish between an
ImportError, and a missing driver.
diff --git a/Lib/xml/sax/__init__.py b/Lib/xml/sax/__init__.py
index 1f1f58e..447420e 100644
--- a/Lib/xml/sax/__init__.py
+++ b/Lib/xml/sax/__init__.py
@@ -22,7 +22,8 @@
 from xmlreader import InputSource
 from handler import ContentHandler, ErrorHandler
 from _exceptions import SAXException, SAXNotRecognizedException, \
-                        SAXParseException, SAXNotSupportedException
+                        SAXParseException, SAXNotSupportedException, \
+                        SAXReaderNotAvailable
 
 
 def parse(source, handler, errorHandler=ErrorHandler()):
@@ -74,9 +75,17 @@
         try:
             return _create_parser(parser_name)
         except ImportError,e:
+            import sys
+            if sys.modules.has_key(parser_name):
+                # The parser module was found, but importing it
+                # failed unexpectedly, pass this exception through
+                raise
+        except SAXReaderNotAvailable:
+            # The parser module detected that it won't work properly,
+            # so try the next one
             pass
 
-    raise SAXException("No parsers found", None)  
+    raise SAXReaderNotAvailable("No parsers found", None)  
     
 # --- Internal utility methods used by make_parser
 
diff --git a/Lib/xml/sax/_exceptions.py b/Lib/xml/sax/_exceptions.py
index c02974f..1804f3f 100644
--- a/Lib/xml/sax/_exceptions.py
+++ b/Lib/xml/sax/_exceptions.py
@@ -104,3 +104,13 @@
     perform is requested (specifically setting a state or value). SAX
     applications and extensions may use this class for similar
     purposes."""
+
+# ===== SAXNOTSUPPORTEDEXCEPTION =====
+
+class SAXReaderNotAvailable(SAXNotSupportedException):
+    """Exception class for a missing driver.
+
+    An XMLReader module (driver) should raise this exception when it
+    is first imported, e.g. when a support module cannot be imported.
+    It also may be raised during parsing, e.g. if executing an external
+    program is not permitted."""
diff --git a/Lib/xml/sax/expatreader.py b/Lib/xml/sax/expatreader.py
index 2fc2b7c..eb46bcd 100644
--- a/Lib/xml/sax/expatreader.py
+++ b/Lib/xml/sax/expatreader.py
@@ -6,7 +6,10 @@
 version = "0.20"
 
 from xml.sax._exceptions import *
-from xml.parsers import expat
+try:
+    from xml.parsers import expat
+except ImportError:
+    raise SAXReaderNotAvailable("expat not supported",None) 
 from xml.sax import xmlreader, saxutils, handler
 
 AttributesImpl = xmlreader.AttributesImpl