diff --git a/location.georss.inc b/location.georss.inc
index 0e9f272..03279b6 100644
--- a/location.georss.inc
+++ b/location.georss.inc
@@ -7,6 +7,25 @@
 
 /**
  * @function
+ * Return an array of namespaces needed for a mode.
+ */
+function location_rss_namespaces($mode = 'simple') {
+  switch ($mode) {
+    case 'w3c':
+    case 'w3c_bugcompat':
+      return array('xmlns:geo' => 'http://www.w3.org/2003/01/geo/wgs84_pos#');
+    case 'simple':
+      return array('xmlns:georss' => 'http://www.georss.org/georss');
+    case 'gml':
+      return array(
+        'xmlns:georss' => 'http://www.georss.org/georss',
+        'xmlns:gml' => 'http://www.opengis.net/gml',
+      );
+  }
+}
+
+/**
+ * @function
  * Return an array of RSS items for a location.
  */
 function _location_rss_item($location, $mode = 'simple') {
diff --git a/location_node.module b/location_node.module
index 41e44ca..dbeb382 100644
--- a/location_node.module
+++ b/location_node.module
@@ -88,12 +88,15 @@ function location_node_node_view($node, $view_mode) {
 
   if ($view_mode == 'rss') {
     $mode = isset($settings['rss']['mode']) ? $settings['rss']['mode'] : 'simple';
-    if ($mode != 'none') {
-      if (is_array($node->locations)) {
-        foreach ($node->locations as $location) {
-          if (($item = location_rss_item($location, $mode))) {
-            $node->rss_elements[] = $item;
-          }
+    if ($mode == 'none') {
+      return;
+    }
+    if (is_array($node->locations) && !empty($node->locations)) {
+      require_once(drupal_get_path('module', 'location') . '/location.georss.inc');
+      $node->rss_namespaces += location_rss_namespaces($mode);
+      foreach ($node->locations as $location) {
+        if (($item = location_rss_item($location, $mode))) {
+          $node->rss_elements[] = $item;
         }
       }
     }
