diff --git a/src/mapfile.py b/src/mapfile.py
index f5503445de045fa2b1d04b177772922e771d5fd0..9903fb688fd89ecb0a6328722319c0688459608f 100644
--- a/src/mapfile.py
+++ b/src/mapfile.py
@@ -26,7 +26,6 @@
 
 import os
 import re
-from xml.etree import ElementTree as etree
 import mapscript
 import urlparse
 import stores
@@ -139,29 +138,20 @@ class Layer(MetadataMixin):
         # we need to rename it to something we are sure is not used.
         sld_layer_name = "__mra_tmp_template"
 
-        # This is realy ugly but etree has trouble with namespaces...
-        # TODO: Do this again in an other way.
-        fixedxml = re.sub(' [a-zzA-Z0-9]+:([a-zA-Z0-9]+=")', ' \\1', new_sld)
-        xmlsld = etree.fromstring(fixedxml)
-
-        # Still problems with namespaces...
-        for child in xmlsld.getchildren():
-            if child.tag.endswith("NamedLayer"):
-                for gchild in child.getchildren():
-                    if gchild.tag.endswith("Name"):
-                        gchild.text = sld_layer_name
-                        break
-                else:
-                    continue
-            break
-        else:
-            raise ValueError("Bad sld (No NamedLayer/Name)")
+        # Most xml parsers will have trouble with the kind of mess we get as sld.
+        # Mostly because we haven't got the proper declarations, we fallback to
+        # an html parser, which luckily is much more forgiving.
+        from xml.dom.minidom import parseString
+
+        xmlsld = parseString(new_sld)
 
         try:
-            etree.register_namespace("", "http://www.opengis.net/sld")
+            name = xmlsld.firstChild.getElementsByTagName("NamedLayer")[0].getElementsByTagName("Name")[0].firstChild.data
         except:
-            pass
-        new_sld = etree.tostring(xmlsld)
+            raise ValueError("Bad sld (No NamedLayer/Name)")
+
+        # Remove encoding.
+        _, new_sld = xmlsld.toprettyxml().split("\n", 1)
 
         ms_template_layer = self.ms.clone()
         ms_template_layer.name = sld_layer_name
@@ -368,7 +358,7 @@ class FeatureTypeModel(LayerModel):
                 })
 
         if enabled:
-            layer.set_metadata("wfs_enable_request", 
+            layer.set_metadata("wfs_enable_request",
                                "GetCapabilities GetFeature DescribeFeatureType")
 
         # Configure the layer based on information from the store.
@@ -397,7 +387,7 @@ class FeatureTypeModel(LayerModel):
             "wfs_srs": "EPSG:4326",
             "wfs_getfeature_formatlist": "OGRGML,SHAPEZIP",
             })
-        
+
         if ft.get_fid_column() != None:
             layer.set_metadatas({
                 "wfs_featureid": ft.get_fid_column(),
@@ -723,7 +713,7 @@ def create_mapfile(path, map_name, data):
 
     mf = mapscript.mapObj()
     mf.name = map_name
-    
+
     # The following could be defined in <mapfile.py>:
 
     mf.web.metadata.set("ows_name", map_name)
@@ -746,7 +736,7 @@ def create_mapfile(path, map_name, data):
     # mf.web.metadata.set("wms_resx", "")
     # mf.web.metadata.set("wms_resy", "")
 
-    mf.web.metadata.set("ows_schemas_location", 
+    mf.web.metadata.set("ows_schemas_location",
                         "http://schemas.opengeospatial.net")
     mf.web.metadata.set("ows_updatesequence", "foo")
     mf.web.metadata.set("ows_addresstype", "foo")
@@ -771,9 +761,9 @@ def create_mapfile(path, map_name, data):
     # mf.web.metadata.set("ows_attribution_onlineresource", "")
     # mf.web.metadata.set("ows_attribution_title", "")
 
-    mf.web.metadata.set("wms_enable_request", 
+    mf.web.metadata.set("wms_enable_request",
                         "GetCapabilities GetMap GetFeatureInfo GetLegendGraphic")
-    mf.web.metadata.set("wfs_enable_request", 
+    mf.web.metadata.set("wfs_enable_request",
                         "GetCapabilities DescribeFeatureType GetFeature")
     mf.web.metadata.set("ows_sld_enabled", "true")
     mf.web.metadata.set("wms_getcapabilities_version", "1.3.0")
@@ -902,7 +892,7 @@ class Mapfile(MetadataMixin):
         layer = Layer(model.ms.clone())
         self.ms.insertLayer(layer.ms)
 
-        layer.ms.name = l_name      
+        layer.ms.name = l_name
         layer.enable(l_enabled)
 
         # is queryable (by default):
@@ -914,7 +904,7 @@ class Mapfile(MetadataMixin):
         l_metadata.setdefault("wms_abstract", l_name)
         l_metadata.setdefault("wms_bbox_extended", "true")
         # TODO: Add other default values as above:
-        # wms_keywordlist, wms_keywordlist_vocabulary 
+        # wms_keywordlist, wms_keywordlist_vocabulary
         # wms_keywordlist_<vocabulary>_items
         # wms_srs
         # wms_dataurl_(format|href)
@@ -926,7 +916,7 @@ class Mapfile(MetadataMixin):
 
         # TODO: pass correct data (title, abstract, ...) to layer.update()
         layer.update(l_metadata)
-        
+
         model.configure_layer(ws, layer, l_enabled)
 
         if layer.ms.type == mapscript.MS_LAYER_POINT:
diff --git a/src/server.py b/src/server.py
index 848d747bdb7b4215e8b6dea9717f1a261b15491d..5a33a3bfb607459b67b41e92aacae3ed09f35d17 100755
--- a/src/server.py
+++ b/src/server.py
@@ -793,7 +793,7 @@ class layer(object):
                         },
                     "enabled": bool(layer.ms.status),
                     "attribution": { # TODO
-                        "logoWidth": 0, 
+                        "logoWidth": 0,
                         "logoHeight": 0,
                         },
                     }
@@ -883,6 +883,7 @@ class layerstyles(object):
         mf = get_mapfile(map_name)
 
         try:
+            print tools.get_style_path(s_name)
             style = open(tools.get_style_path(s_name)).read()
         except IOError, OSError:
             with webapp.mightNotFound("style", mapfile=map_name):