Index: XMLIO_V2/dev/dev_rv/src/XMLIO/axis.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/axis.hpp	(revision 110)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/axis.hpp	(revision 110)
@@ -0,0 +1,27 @@
+#ifndef __AXIS__
+#define __AXIS__
+
+using XMLIOSERVER::XML::XMLNode;
+using XMLIOSERVER::XML::THashAttributes;
+
+namespace XMLIOSERVER
+{
+   class CAxis: public ObjectTemplate<CAxis>, public AxisAttribut
+   {
+      public:
+
+         CAxis(void) : ObjectTemplate<CAxis>(), AxisAttribut()
+         {/* Ne rien faire de plus */}
+         CAxis(const string& _id) : ObjectTemplate<CAxis>(_id), AxisAttribut()
+         {/* Ne rien faire de plus */}
+
+         static string GetName(void) {return ("axis"); }
+
+         ~CAxis(void)
+         { /* Ne rien faire de plus */ }
+
+   }; // class CAxis
+
+}; // namespace XMLIOSERVER
+
+#endif // __AXIS__
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/axis_attribut.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/axis_attribut.hpp	(revision 110)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/axis_attribut.hpp	(revision 110)
@@ -0,0 +1,32 @@
+#ifndef __AXIS_ATTRIBUT__
+#define __AXIS_ATTRIBUT__
+
+namespace XMLIOSERVER
+{
+   class AxisAttribut : public virtual AttributRegistrar
+   {
+      public :
+
+         DECLARE_ATTR(name, string) ;
+         DECLARE_ATTR(description, string) ;
+         DECLARE_ATTR(unit, string) ;
+         DECLARE_ATTR(size_axis, int) ;
+
+         AxisAttribut(void) : AttributRegistrar()
+         { registerAllAttributes(); }
+
+      private :
+
+         void registerAllAttributes(void)
+         {
+            RegisterAttribut(&name) ;
+            RegisterAttribut(&description) ;
+            RegisterAttribut(&unit) ;
+            RegisterAttribut(&size_axis) ;
+         }
+
+   } ; // class AxisAttribut
+
+}// namespace XMLIOSERVER
+
+#endif //__AXIS_ATTRIBUT__
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/axis_group.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/axis_group.hpp	(revision 110)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/axis_group.hpp	(revision 110)
@@ -0,0 +1,70 @@
+#ifndef __AXIS_GROUP__
+#define __AXIS_GROUP__
+
+namespace XMLIOSERVER
+{
+   class AxisGroup : public GroupTemplate<CAxis, AxisAttribut>
+   {
+      public:
+
+         AxisGroup(void) : GroupTemplate<CAxis, AxisAttribut>()
+         {/* Ne rien faire de plus */}
+         AxisGroup(const string& _id) : GroupTemplate<CAxis, AxisAttribut>(_id)
+         {/* Ne rien faire de plus */}
+
+         void parse (XMLNode& _node, bool _withAttr = true)
+         {
+            string name = _node.getElementName();
+            THashAttributes attributes;
+
+            /// PARSING GESTION DES ATTRIBUTS ///
+            if (_withAttr)
+            {
+               _node.getAttributes(attributes);
+               this->setAttributes(attributes);
+
+               if (attributes.end() != attributes.find("src"))
+               { // Si une demande d'inclusion de fichier est trouvÃ©e.
+                  XMLNode _node_inc = getNodeIncludedFile(attributes["src"], name);
+                  parse (_node_inc);
+               }
+               attributes.clear();
+            }
+
+            /// PARSING POUR GESTION DES ENFANTS
+            if (!(_node.goToChildElement()))
+               WARNING("Le groupe d'axes ne contient pas d'enfant !");
+            else
+            {
+               //////////////////////////////////////
+               do { // Parcours pour traitement.
+
+                  string name = _node.getElementName();
+                  attributes.clear();
+                  _node.getAttributes(attributes);
+
+                  if (name.compare(AxisGroup::GetName()) == 0)
+                  { createGroupAndParse<AxisGroup>(attributes, _node); continue; }
+
+                  if (name.compare(CAxis::GetName()) == 0)
+                  { createChildAndParse<CAxis>(attributes, _node); continue; }
+
+                  WARNING("Un groupe d'axes ne peut contenir qu'un axe ou un autre groupe d'axes !");
+
+               } while (_node.goToNextElement());
+               //////////////////////////////////////
+               _node.goToParentElement(); // Retour au parent
+            }
+         }
+
+         virtual ~AxisGroup(void)
+         {/* Ne rien faire de plus */ }
+
+   }; // class AxisGroup
+
+   typedef AxisGroup AxisDefinition ;
+
+}; // namespace XMLIOSERVER
+
+#endif // __AXIS_GROUP__
+
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/context.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/context.hpp	(revision 109)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/context.hpp	(revision 110)
@@ -9,7 +9,7 @@
       public:
 
-         Context(void) : ObjectTemplate<Context>(), fieldDef(NULL), fileDef(NULL)//, axisDef(NULL), gridDef(NULL)
+         Context(void) : ObjectTemplate<Context>(), fieldDef(NULL), fileDef(NULL), axisDef(NULL), gridDef(NULL)
          {/* Ne rien faire de plus */}
-         Context(const string& _id) : ObjectTemplate<Context>(_id), fieldDef(NULL), fileDef(NULL)//, axisDef(NULL), gridDef(NULL)
+         Context(const string& _id) : ObjectTemplate<Context>(_id), fieldDef(NULL), fileDef(NULL), axisDef(NULL), gridDef(NULL)
          {/* Ne rien faire de plus */}
 
@@ -41,5 +41,5 @@
                ((*it).second)[(*it).first]->resolveDescInheritance();
 
-               // RÃ©solution des hÃ©ritages par rÃ©fÃ©rence au niveau des fichiers
+               // RÃ©solution des hÃ©ritages par rÃ©fÃ©rence au niveau des fichiers.
                const std::vector<CFile*>& allFiles = CFile::GetCurrentListObject().getVector();
                for (unsigned int i = 0; i < allFiles.size(); i++) allFiles[i]->resolveFieldRefInheritance();
@@ -61,13 +61,13 @@
 
             // Changement de context pour les grilles et groupes de grilles.
-            //GridGroup::SetContext(id);
-            //CGrid::SetContext(id);
+            GridGroup::SetContext(id);
+            CGrid::SetContext(id);
 
             // Changement de context pour les axes et groupes d'axes.
-            //AxisGroup::SetContext(id);
-            //CAxis::SetContext(id);
+            AxisGroup::SetContext(id);
+            CAxis::SetContext(id);
          }
 
-         void parse (XMLNode& _node)
+         virtual void parse (XMLNode& _node)
          {
             THashAttributes attributes;
@@ -92,20 +92,13 @@
                   if (name.compare(FieldDefinition::GetDefName()) == 0) // Parsing dÃ©finition des champs.
                   { fieldDef = CreateInstanceAndParse<FieldDefinition>(attributes, _node, "field_definition"); continue; }
+
                   if (name.compare(FileDefinition::GetDefName()) == 0) // Parsing dÃ©finition des fichiers.
                   { fileDef = CreateInstanceAndParse<FileDefinition>(attributes, _node, "file_definition"); continue; }
 
-                  if (name.compare("axis_definition") == 0)
-                  { // Parsing pour la dÃ©finition des axes.
-                     INFO("Le parsing des dÃ©finitions d'axes n'est pas encore implÃ©mentÃ©");
-                     //axisDef = CreateInstance<AxisDefinition>(attributes, _node, "axis_definition");
-                     continue;
-                  }
+                  if (name.compare(AxisDefinition::GetDefName()) == 0) // Parsing pour la dÃ©finition des axes.
+                  { axisDef = CreateInstanceAndParse<AxisDefinition>(attributes, _node, "axis_definition");  continue; }
 
-                  if (name.compare("grid_definition") == 0)
-                  { // Parsing pour la dÃ©finition des grilles.
-                     INFO("Le parsing des dÃ©finitions de grilles n'est pas encore implÃ©mentÃ©");
-                     //gridDef = CreateInstance<GridDefinition>(attributes, _node, "grid_definition");
-                     continue;
-                  }
+                  if (name.compare(GridDefinition::GetDefName()) == 0) // Parsing pour la dÃ©finition des grilles.
+                  { gridDef = CreateInstanceAndParse<GridDefinition>(attributes, _node, "grid_definition"); continue; }
 
                   WARNING("La dÃ©finition est invalide, seules les champs, grilles, axes et fichiers peuvent Ãªtre dÃ©finis !");
@@ -123,11 +116,11 @@
 
          virtual bool hasChild(void) const
-         { return ((fieldDef != NULL) or (fileDef != NULL) /* or (axisDef != NULL) or (gridDef != NULL) */); }
+         { return ((fieldDef != NULL) or (fileDef != NULL)  or (axisDef != NULL) or (gridDef != NULL)); }
          virtual void printChild(ostream& out) const
          {
-            if(fieldDef != NULL) out << *(FieldGroup*)fieldDef << std::endl;
-            if(fileDef != NULL)  out << *(FileGroup*) fileDef  << std::endl;
-            //if(axisDef != NULL) out << *(AxisDefinition*)axisDef << std::endl;
-            //if(gridDef != NULL) out << *(GridDefinition*)gridDef << std::endl;
+            if(fieldDef != NULL) out << *(FieldGroup*)     fieldDef << std::endl;
+            if(fileDef != NULL)  out << *(FileGroup*)      fileDef  << std::endl;
+            if(axisDef != NULL)  out << *(AxisDefinition*) axisDef  << std::endl;
+            if(gridDef != NULL)  out << *(GridDefinition*) gridDef  << std::endl;
          }
          virtual void resolveDescInheritance(const AttributRegistrar* _parent = 0)
@@ -136,12 +129,12 @@
             if(fieldDef != NULL) fieldDef->resolveDescInheritance();
             if(fileDef != NULL)  fileDef ->resolveDescInheritance();
-            //if(axisDef != NULL)  axisDef ->resolveDescInheritance();
-            //if(gridDef != NULL)  gridDef ->resolveDescInheritance();
+            if(axisDef != NULL)  axisDef ->resolveDescInheritance();
+            if(gridDef != NULL)  gridDef ->resolveDescInheritance();
          }
 
          FieldDefinition* getFieldDefinition(void) { return (this->fieldDef); }
          FileDefinition*  getFileDefinition(void)  { return (this->fileDef);  }
-         //AxisDefinition* getAxisDefinition(void) { return (this->axisDef); }
-         //GridDefinition*  getGridDefinition(void)  { return (this->gridDef); }
+         AxisDefinition*  getAxisDefinition(void)  { return (this->axisDef);  }
+         GridDefinition*  getGridDefinition(void)  { return (this->gridDef);  }
 
          ~Context()
@@ -149,6 +142,6 @@
             if(fieldDef != NULL) delete fieldDef;
             if(fileDef != NULL)  delete fileDef;
-            //if(axisDef != NULL)  delete axisDef;
-            //if(gridDef != NULL)  delete gridDef;
+            if(axisDef != NULL)  delete axisDef;
+            if(gridDef != NULL)  delete gridDef;
          }
 
@@ -158,6 +151,6 @@
          FieldDefinition*  fieldDef;
          FileDefinition*   fileDef;
-         /*AxisDefinition*   axisDef;
-         GridDefinition*   gridDef;*/
+         AxisDefinition*   axisDef;
+         GridDefinition*   gridDef;
 
 
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/field.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/field.hpp	(revision 109)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/field.hpp	(revision 110)
@@ -27,22 +27,8 @@
          }
 
-         void parse (XMLNode& _node)
-         {
-            string name = _node.getElementName();
-            THashAttributes attributes;
-
-            /// PARSING GESTION DES ATTRIBUTS ///
-            _node.getAttributes(attributes);
-            this->setAttributes(attributes);
-            attributes.clear();
-
-            /// PARSING POUR GESION DES ENFANTS ///
-            // Rien Ã  faire.
-         }
-
          ~CField(void)
          { /* Ne rien faire de plus */ }
 
-   }; // class Field
+   }; // class CField
 
 }; // namespace XMLIOSERVER
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/field_group.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/field_group.hpp	(revision 109)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/field_group.hpp	(revision 110)
@@ -32,5 +32,5 @@
             }
 
-            /// PARSING POUR GESION DES ENFANTS
+            /// PARSING POUR GESTION DES ENFANTS
             if (!(_node.goToChildElement()))
                WARNING("Le groupe de champ ne contient pas d'enfant !");
@@ -38,5 +38,5 @@
             {
                //////////////////////////////////////
-               do { // Parcours des contexts pour traitement.
+               do { // Parcours pour traitement.
 
                   string name = _node.getElementName();
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/file.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/file.hpp	(revision 109)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/file.hpp	(revision 110)
@@ -18,5 +18,5 @@
          static string GetName(void) { return ("file"); }
 
-         void parse (XMLNode& _node)
+         virtual void parse (XMLNode& _node)
          {
             string name = _node.getElementName();
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/file_group.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/file_group.hpp	(revision 109)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/file_group.hpp	(revision 110)
@@ -33,5 +33,5 @@
             }
 
-            /// PARSING POUR GESION DES ENFANTS ///
+            /// PARSING POUR GESTION DES ENFANTS ///
             if (!(_node.goToChildElement()))
                WARNING("Le groupe de fichier ne contient pas d'enfant !");
@@ -39,5 +39,5 @@
             {
                //////////////////////////////////////
-               do { // Parcours des contexts pour traitement.
+               do { // Parcours  pour traitement.
 
                   string name = _node.getElementName();
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/grid.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/grid.hpp	(revision 110)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/grid.hpp	(revision 110)
@@ -0,0 +1,28 @@
+#ifndef __GRID__
+#define __GRID__
+
+using XMLIOSERVER::XML::XMLNode;
+using XMLIOSERVER::XML::THashAttributes;
+
+namespace XMLIOSERVER
+{
+   class CGrid: public ObjectTemplate<CGrid>, public GridAttribut
+   {
+      public:
+
+         CGrid(void) : ObjectTemplate<CGrid>(), GridAttribut()
+         {/* Ne rien faire de plus */}
+         CGrid(const string& _id) : ObjectTemplate<CGrid>(_id), GridAttribut()
+         {/* Ne rien faire de plus */}
+
+         static string GetName(void) {return ("grid"); }
+
+         ~CGrid(void)
+         { /* Ne rien faire de plus */ }
+
+   }; // class CGrid
+
+}; // namespace XMLIOSERVER
+
+#endif // __GRID__
+
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/grid_attribut.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/grid_attribut.hpp	(revision 110)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/grid_attribut.hpp	(revision 110)
@@ -0,0 +1,28 @@
+#ifndef __GRID_ATTRIBUT__
+#define __GRID_ATTRIBUT__
+
+namespace XMLIOSERVER
+{
+   class GridAttribut : public virtual AttributRegistrar
+   {
+      public :
+
+         DECLARE_ATTR(name, string) ;
+         DECLARE_ATTR(description, string) ;
+
+         GridAttribut(void) : AttributRegistrar()
+         { registerAllAttributes(); }
+
+      private :
+
+         void registerAllAttributes(void)
+         {
+            RegisterAttribut(&name) ;
+            RegisterAttribut(&description) ;
+         }
+
+   } ; // class GridAttribut
+
+}// namespace XMLIOSERVER
+
+#endif //__GRID_ATTRIBUT__
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/grid_group.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/grid_group.hpp	(revision 110)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/grid_group.hpp	(revision 110)
@@ -0,0 +1,71 @@
+#ifndef __GRID_GROUP__
+#define __GRID_GROUP__
+
+namespace XMLIOSERVER
+{
+   class GridGroup : public GroupTemplate<CGrid, GridAttribut>
+   {
+      public:
+
+         GridGroup(void) : GroupTemplate<CGrid, GridAttribut>()
+         {/* Ne rien faire de plus */}
+         GridGroup(const string& _id) : GroupTemplate<CGrid, GridAttribut>(_id)
+         {/* Ne rien faire de plus */}
+
+         void parse (XMLNode& _node, bool _withAttr = true)
+         {
+            string name = _node.getElementName();
+            THashAttributes attributes;
+
+            /// PARSING GESTION DES ATTRIBUTS ///
+            if (_withAttr)
+            {
+               _node.getAttributes(attributes);
+               this->setAttributes(attributes);
+
+               if (attributes.end() != attributes.find("src"))
+               { // Si une demande d'inclusion de fichier est trouvÃ©e.
+                  XMLNode _node_inc = getNodeIncludedFile(attributes["src"], name);
+                  parse (_node_inc);
+               }
+               attributes.clear();
+            }
+
+            /// PARSING POUR GESTION DES ENFANTS
+            if (!(_node.goToChildElement()))
+               WARNING("Le groupe de grilles ne contient pas d'enfant !");
+            else
+            {
+               //////////////////////////////////////
+               do { // Parcours pour traitement.
+
+                  string name = _node.getElementName();
+                  attributes.clear();
+                  _node.getAttributes(attributes);
+
+                  if (name.compare(GridGroup::GetName()) == 0)
+                  { createGroupAndParse<GridGroup>(attributes, _node); continue; }
+
+                  if (name.compare(CGrid::GetName()) == 0)
+                  { createChildAndParse<CGrid>(attributes, _node); continue; }
+
+                  WARNING("Un groupe de grilles ne peut contenir qu'une grille ou un autre groupe de grilles !");
+
+               } while (_node.goToNextElement());
+               //////////////////////////////////////
+               _node.goToParentElement(); // Retour au parent
+            }
+         }
+
+         virtual ~GridGroup(void)
+         {/* Ne rien faire de plus */ }
+
+   }; // class GridGroup
+
+   typedef GridGroup GridDefinition ;
+
+}; // namespace XMLIOSERVER
+
+#endif // __GRID_GROUP__
+
+
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/main_cpp.cpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/main_cpp.cpp	(revision 109)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/main_cpp.cpp	(revision 110)
@@ -11,6 +11,6 @@
    try
    {
-      string file("/local/XMLIOSERVER_DEV/dev_rv/test/iodef_test.xml");
-      //string file("/local/XMLIOSERVER_DEV/dev_rv/iodef_test.xml");
+      //string file("/local/XMLIOSERVER_DEV/dev_rv/test/iodef_test.xml");
+      string file("/local/XMLIOSERVER_DEV/dev_rv/iodef_test.xml");
 
       ifstream istr( file.c_str() , ifstream::in );
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/xmlio.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/xmlio.hpp	(revision 109)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/xmlio.hpp	(revision 110)
@@ -28,15 +28,24 @@
 #include "xmlio_object_template.hpp"
 
+// Gestion des attributs des objets.
+#include "grid_attribut.hpp"
+#include "axis_attribut.hpp"
 #include "field_attribut.hpp"
 #include "file_attribut.hpp"
 
+#include "xmlio_group_template.hpp"
+
+// Prise en charge des champs...
 #include "field.hpp"
-
-
-#include "xmlio_group_template.hpp"
 #include "field_group.hpp"
-
+// Prise en charge des fichiers ...
 #include "file.hpp"
 #include "file_group.hpp"
+// Prise en charge des axes ...
+#include "axis.hpp"
+#include "axis_group.hpp"
+// Prise en charge des grilles ...
+#include "grid.hpp"
+#include "grid_group.hpp"
 
 #include "context.hpp"
Index: XMLIO_V2/dev/dev_rv/src/XMLIO/xmlio_object_template.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/xmlio_object_template.hpp	(revision 109)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/xmlio_object_template.hpp	(revision 110)
@@ -60,4 +60,18 @@
                sset.insert(baseObject = refer);
             }
+         }
+
+         virtual void parse (XMLNode& _node)
+         {
+            string name = _node.getElementName();
+            THashAttributes attributes;
+
+            /// PARSING GESTION DES ATTRIBUTS ///
+            _node.getAttributes(attributes);
+            this->setAttributes(attributes);
+            attributes.clear();
+
+            /// PARSING POUR GESION DES ENFANTS ///
+            // Rien Ã  faire.
          }
 
