Index: XIOS/trunk/src/node/axis.cpp
===================================================================
--- XIOS/trunk/src/node/axis.cpp	(revision 746)
+++ XIOS/trunk/src/node/axis.cpp	(revision 747)
@@ -872,22 +872,33 @@
   }
 
+  /*!
+   * Go through the hierarchy to find the axis from which the transformations must be inherited
+   */
   void CAxis::solveInheritanceTransformation()
   {
-    if (this->hasTransformation()) return;
-
+    if (hasTransformation() || !hasDirectAxisReference())
+      return;
+
+    CAxis* axis = this;
     std::vector<CAxis*> refAxis;
-    CAxis* refer_sptr;
-    CAxis* refer_ptr = this;
-    while (refer_ptr->hasDirectAxisReference())
-    {
-      refAxis.push_back(refer_ptr);
-      refer_sptr = refer_ptr->getDirectAxisReference();
-      refer_ptr  = refer_sptr;
-      if (refer_ptr->hasTransformation()) break;
-    }
-
-    if (refer_ptr->hasTransformation())
-      for (int idx = 0; idx < refAxis.size(); ++idx)
-        refAxis[idx]->setTransformations(refer_ptr->getAllTransformations());
+    while (!axis->hasTransformation() && axis->hasDirectAxisReference())
+    {
+      refAxis.push_back(axis);
+      axis = axis->getDirectAxisReference();
+    }
+
+    if (axis->hasTransformation())
+      for (size_t i = 0; i < refAxis.size(); ++i)
+        refAxis[i]->setTransformations(axis->getAllTransformations());
+
+    // Try to inherit the id of the referenced object as the axis name
+    // when no name was been defined and a defaut id is used.
+    if (name.isEmpty())
+    {
+      static const std::string defId("__axis_undef_id_");
+      const std::string& id = getId();
+      if (id.size() > defId.size() && id.compare(0, defId.size(), defId) == 0)
+        name = axis->getId();
+    }
   }
 
Index: XIOS/trunk/src/node/domain.cpp
===================================================================
--- XIOS/trunk/src/node/domain.cpp	(revision 746)
+++ XIOS/trunk/src/node/domain.cpp	(revision 747)
@@ -1844,24 +1844,32 @@
 
   /*!
-    A current domain will go up the hierarchy to find out the domain from which it has transformation
-  */
+   * Go through the hierarchy to find the domain from which the transformations must be inherited
+   */
   void CDomain::solveInheritanceTransformation()
   {
-    if (this->hasTransformation()) return;
-
-    std::vector<CDomain*> refDomain;
-    CDomain* refer_sptr;
-    CDomain* refer_ptr = this;
-    while (refer_ptr->hasDirectDomainReference())
-    {
-      refDomain.push_back(refer_ptr);
-      refer_sptr = refer_ptr->getDirectDomainReference();
-      refer_ptr  = refer_sptr;
-      if (refer_ptr->hasTransformation()) break;
-    }
-
-    if (refer_ptr->hasTransformation())
-      for (int idx = 0; idx < refDomain.size(); ++idx)
-        refDomain[idx]->setTransformations(refer_ptr->getAllTransformations());
+    if (hasTransformation() || !hasDirectDomainReference())
+      return;
+
+    CDomain* domain = this;
+    std::vector<CDomain*> refDomains;
+    while (!domain->hasTransformation() && domain->hasDirectDomainReference())
+    {
+      refDomains.push_back(domain);
+      domain = domain->getDirectDomainReference();
+    }
+
+    if (domain->hasTransformation())
+      for (size_t i = 0; i < refDomains.size(); ++i)
+        refDomains[i]->setTransformations(domain->getAllTransformations());
+
+    // Try to inherit the id of the referenced object as the domain name
+    // when no name was been defined and a defaut id is used.
+    if (name.isEmpty())
+    {
+      static const std::string defId("__domain_undef_id_");
+      const std::string& id = getId();
+      if (id.size() > defId.size() && id.compare(0, defId.size(), defId) == 0)
+        name = domain->getId();
+    }
   }
 
Index: XIOS/trunk/src/node/grid.cpp
===================================================================
--- XIOS/trunk/src/node/grid.cpp	(revision 746)
+++ XIOS/trunk/src/node/grid.cpp	(revision 747)
@@ -1224,6 +1224,4 @@
         pDom->solveSrcInheritance();
         pDom->solveInheritanceTransformation();
-        if ((!pDom->domain_ref.isEmpty()) && (pDom->name.isEmpty()))
-          pDom->name.setValue(pDom->getBaseDomainReference()->getId());
       }
     }
@@ -1239,6 +1237,4 @@
         pAxis->solveBaseReference();
         pAxis->solveInheritanceTransformation();
-        if ((!pAxis->axis_ref.isEmpty()) && (pAxis->name.isEmpty()))
-          pAxis->name.setValue(pAxis->getBaseAxisReference()->getId());
       }
     }
