Index: src/java/org/apache/nutch/parse/ParserFactory.java
===================================================================
--- src/java/org/apache/nutch/parse/ParserFactory.java	(revision 1181659)
+++ src/java/org/apache/nutch/parse/ParserFactory.java	(working copy)
@@ -356,14 +356,13 @@
       // NotMappedParserException
 
       for (int i=0; i<extensions.length; i++) {
-        if (extensions[i].getAttribute("contentType") != null
-            && extensions[i].getAttribute("contentType").equals(
-                contentType)) {
-          extList.add(extensions[i]);
-        }
-        else if ("*".equals(extensions[i].getAttribute("contentType"))){
+      	if ("*".equals(extensions[i].getAttribute("contentType"))){
           extList.add(0, extensions[i]);
         }
+      	else if (extensions[i].getAttribute("contentType") != null
+            && contentType.matches(escapeContentType(extensions[i].getAttribute("contentType")))) {
+          extList.add(extensions[i]);
+        }
       }
 
       if (extList.size() > 0) {
@@ -391,10 +390,19 @@
     return (extList.size() > 0) ? extList : null;
   }
 
-  private boolean match(Extension extension, String id, String type) {
-    return ((id.equals(extension.getId())) &&
-            (type.equals(extension.getAttribute("contentType")) || extension.getAttribute("contentType").equals("*") ||
-             type.equals(DEFAULT_PLUGIN)));
+  private String escapeContentType(String contentType) {
+  	// Escapes contentType in order to use as a regex 
+  	// (and keep backwards compatibility).
+  	// This enables to accept multiple types for a single parser. 
+  	return contentType.replace("+", "\\+").replace(".", "\\.");
+	}
+
+
+	private boolean match(Extension extension, String id, String type) {
+    return (id.equals(extension.getId())) &&
+            (extension.getAttribute("contentType").equals("*") ||
+             type.matches(escapeContentType(extension.getAttribute("contentType"))) ||
+             type.equals(DEFAULT_PLUGIN));
   }
 
   /** Get an extension from its id and supported content-type. */
Index: src/plugin/parse-html/plugin.xml
===================================================================
--- src/plugin/parse-html/plugin.xml	(revision 1181659)
+++ src/plugin/parse-html/plugin.xml	(working copy)
@@ -39,7 +39,7 @@
 
       <implementation id="org.apache.nutch.parse.html.HtmlParser"
                       class="org.apache.nutch.parse.html.HtmlParser">
-        <parameter name="contentType" value="text/html"/>
+        <parameter name="contentType" value="text/html|application/xhtml+xml"/>
         <parameter name="pathSuffix" value=""/>
       </implementation>
 
