diff --git a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/Column.java b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/Column.java
index c17bc66b05883a16fe6112a821d63c1dd2bba4f3..ef7113bb25e61fc973405dc8cf05714af926430c 100644
--- a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/Column.java
+++ b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/Column.java
@@ -71,7 +71,7 @@ public class Column extends ChildEntity<Table> {
         String type = null;
 
         if (tapSchema.getName().equals(parentSchema.getName())) {
-            TableModel tableModel = tapSchema.getTapSchemaModel().get(parentTable.getName());
+            TableModel tableModel = tapSchema.getTapSchemaModel().getTable(parentTable.getName());
             type = tableModel.get(getName()).getType();
         }
 
diff --git a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/Table.java b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/Table.java
index 64dc3fafe62c3e5306683a2beb49a54ee1577890..0827988457fbfed0b5478b6202978e79c16b9753 100644
--- a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/Table.java
+++ b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/Table.java
@@ -59,11 +59,11 @@ public class Table extends ChildEntity<Schema> implements EntitiesContainer<Colu
 
     private TableModel getModel() {
         if (tapSchema.getName().equals(parentSchema.getName())) {
-            return tapSchema.getTapSchemaModel().get(simpleName);
+            return tapSchema.getTapSchemaModel().getTable(simpleName);
         }
         if (tapSchema.isHasObscore() && parentSchema.getName().equals("ivoa")
                 && simpleName.equals("obscore")) {
-            return tapSchema.getIvoaSchemaModel().get(simpleName);
+            return tapSchema.getIvoaSchemaModel().getTable(simpleName);
         }
         return null;
     }
diff --git a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/TapSchema.java b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/TapSchema.java
index 8de787d24d37bf274192d25986237f0703407fb0..234b5a82c023d4f725d6fa61af445740f78f618e 100644
--- a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/TapSchema.java
+++ b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/TapSchema.java
@@ -660,7 +660,7 @@ public class TapSchema implements EntitiesContainer<Schema>, Serializable {
     }
 
     public final TableModel getTableModel(String tableName) {
-        return getTapSchemaModel().getTables().get(tableName);
+        return getTapSchemaModel().getTable(tableName);
     }
 
     public Map<String, Object> getSchemaMetadata(String schemaName) {
@@ -697,11 +697,11 @@ public class TapSchema implements EntitiesContainer<Schema>, Serializable {
     private void fillColumnProperties(SchemaModel schemaModel, String schemaName) {
 
         // check only on std, but valid also for principal (it depends on TS version)
-        boolean useIntegerAsBool = getTapSchemaModel().get(COLUMNS_TABLE).get(Column.STD_KEY).getJavaType() == Integer.class;
+        boolean useIntegerAsBool = getTapSchemaModel().getTable(COLUMNS_TABLE).get(Column.STD_KEY).getJavaType() == Integer.class;
 
         Schema schema = getChild(schemaName);
         schema.setValue(DESCRIPTION_KEY, schemaModel.getDescription());
-        for (TableModel tableModel : schemaModel.getTables().values()) {
+        for (TableModel tableModel : schemaModel.getTables()) {
             Table table = schema.getChild(tableModel.getName());
             table.setValue(DESCRIPTION_KEY, tableModel.getDescription());
             for (ColumnModel propertyModel : tableModel.getColumns()) {
diff --git a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/datalayer/DBBrokerTemplate.java b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/datalayer/DBBrokerTemplate.java
index 2218db2db6c0139b4b5848b002f22de1eca88d0c..6bee192078eab627ea9b17db501226787e54a431 100644
--- a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/datalayer/DBBrokerTemplate.java
+++ b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/datalayer/DBBrokerTemplate.java
@@ -142,7 +142,7 @@ public abstract class DBBrokerTemplate implements DBBroker {
 
             execute(getCreateDatabaseQuery(tapSchemaName), conn);
 
-            for (TableModel tableModel : tapSchemaModel.getTables().values()) {
+            for (TableModel tableModel : tapSchemaModel.getTables()) {
                 createTable(tapSchemaName, tableModel, conn);
             }
 
@@ -174,7 +174,7 @@ public abstract class DBBrokerTemplate implements DBBroker {
     public void createIvoaSchemaStructure(SchemaModel ivoaSchemaModel) throws SQLException {
         try (Connection conn = dataSource.getConnection()) {
             execute(getCreateDatabaseQuery(ivoaSchemaModel.getName()), conn);
-            for (TableModel tableModel : ivoaSchemaModel.getTables().values()) {
+            for (TableModel tableModel : ivoaSchemaModel.getTables()) {
                 createTable(ivoaSchemaModel.getName(), tableModel, conn);
             }
         }
@@ -681,11 +681,11 @@ public abstract class DBBrokerTemplate implements DBBroker {
         }
 
         for (SchemaModel tapSchemaModel : SchemaModels.getTapSchemaModels()) {
-            if (match(tapSchemaModel.get(TapSchema.SCHEMAS_TABLE), schemasColumns)
-                    && match(tapSchemaModel.get(TapSchema.TABLES_TABLE), tablesColumns)
-                    && match(tapSchemaModel.get(TapSchema.COLUMNS_TABLE), columnsColumns)
-                    && match(tapSchemaModel.get(TapSchema.KEYS_TABLE), keyColumns)
-                    && match(tapSchemaModel.get(TapSchema.KEY_COLUMNS_TABLE), keyColumnsColumns)) {
+            if (match(tapSchemaModel.getTable(TapSchema.SCHEMAS_TABLE), schemasColumns)
+                    && match(tapSchemaModel.getTable(TapSchema.TABLES_TABLE), tablesColumns)
+                    && match(tapSchemaModel.getTable(TapSchema.COLUMNS_TABLE), columnsColumns)
+                    && match(tapSchemaModel.getTable(TapSchema.KEYS_TABLE), keyColumns)
+                    && match(tapSchemaModel.getTable(TapSchema.KEY_COLUMNS_TABLE), keyColumnsColumns)) {
                 return tapSchemaModel.getVersion();
             }
         }
diff --git a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/datalayer/mysql/MySQLDBBroker.java b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/datalayer/mysql/MySQLDBBroker.java
index d4d3123063dace2e910cc4d3e62b27f592f1aa2e..a7728c25a07c4575420f122b32ff1e180fc2ef8a 100644
--- a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/datalayer/mysql/MySQLDBBroker.java
+++ b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/datalayer/mysql/MySQLDBBroker.java
@@ -156,24 +156,26 @@ public class MySQLDBBroker extends DBBrokerTemplate {
 
         boolean first = true;
         for (ColumnModel cm : tableModel.getColumns()) {
-            if (!first) {
-                querySb.append(",\n");
-            }
-            first = false;
+            if (cm.isMandatory()) {
+                if (!first) {
+                    querySb.append(",\n");
+                }
+                first = false;
 
-            querySb.append(cm.getName());
-            querySb.append(" ");
+                querySb.append(cm.getName());
+                querySb.append(" ");
 
-            String mySQLType = TypesMapping.getMySQLTypeFromADQLType(cm.getType()).toUpperCase();
-            querySb.append(mySQLType);
-            if (mySQLType.equals("VARCHAR") || mySQLType.equals("CHAR")) {
-                appendSize(querySb, cm.getSize());
-            }
+                String mySQLType = TypesMapping.getMySQLTypeFromADQLType(cm.getType()).toUpperCase();
+                querySb.append(mySQLType);
+                if (mySQLType.equals("VARCHAR") || mySQLType.equals("CHAR")) {
+                    appendSize(querySb, cm.getSize());
+                }
 
-            if (cm.isNullable()) {
-                querySb.append(" NULL");
-            } else {
-                querySb.append(" NOT NULL");
+                if (cm.isNullable()) {
+                    querySb.append(" NULL");
+                } else {
+                    querySb.append(" NOT NULL");
+                }
             }
         }
 
diff --git a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/datalayer/pgsql/PostgresDBBroker.java b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/datalayer/pgsql/PostgresDBBroker.java
index cf7b01798f8da24d6ad01be01a88a4abf256aa29..96b24042bad209b689284d6a5edd7afbafc8f2f0 100644
--- a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/datalayer/pgsql/PostgresDBBroker.java
+++ b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/datalayer/pgsql/PostgresDBBroker.java
@@ -48,65 +48,67 @@ import org.slf4j.LoggerFactory;
  * @author Sonia Zorba {@literal <zorba at oats.inaf.it>}
  */
 public class PostgresDBBroker extends DBBrokerTemplate {
-    
+
     private final static Logger LOG = LoggerFactory.getLogger(PostgresDBBroker.class);
-    
+
     private final String pgDatabaseName;
-    
+
     public PostgresDBBroker(DataSource dataSource, String pgDatabaseName, String tapSchemaVersion) {
         super(dataSource, '"', tapSchemaVersion);
         this.pgDatabaseName = pgDatabaseName;
     }
-    
+
     @Override
     protected void createTable(String schemaName, TableModel tableModel, Connection conn) throws SQLException {
         StringBuilder querySb = new StringBuilder();
-        
+
         querySb.append("CREATE TABLE IF NOT EXISTS ");
         querySb.append(escape(schemaName));
         querySb.append(".");
         querySb.append(escape(tableModel.getName()));
         querySb.append(" (\n");
-        
+
         boolean first = true;
         for (ColumnModel cm : tableModel.getColumns()) {
-            if (!first) {
-                querySb.append(",\n");
-            }
-            first = false;
-            
-            querySb.append(cm.getName());
-            querySb.append(" ");
-            
-            String pgsqlType = TypesMapping.getPostgresSQLTypeFromADQLType(cm.getType()).toLowerCase();
-            querySb.append(pgsqlType);
-            if (pgsqlType.equals("character varying") || pgsqlType.equals("character")) {
-                appendSize(querySb, cm.getSize());
-            }
-            
-            if (cm.isNullable()) {
-                querySb.append(" NULL");
-            } else {
-                querySb.append(" NOT NULL");
+            if (cm.isMandatory()) {
+                if (!first) {
+                    querySb.append(",\n");
+                }
+                first = false;
+
+                querySb.append(cm.getName());
+                querySb.append(" ");
+
+                String pgsqlType = TypesMapping.getPostgresSQLTypeFromADQLType(cm.getType()).toLowerCase();
+                querySb.append(pgsqlType);
+                if (pgsqlType.equals("character varying") || pgsqlType.equals("character")) {
+                    appendSize(querySb, cm.getSize());
+                }
+
+                if (cm.isNullable()) {
+                    querySb.append(" NULL");
+                } else {
+                    querySb.append(" NOT NULL");
+                }
             }
         }
-        
+
         querySb.append(")");
-        
+
         String query = querySb.toString();
-        
+
         try (Statement stat = conn.createStatement()) {
             LOG.debug("Executing query: {}", query);
             stat.executeUpdate(query);
         }
     }
-    
+
     @Override
     protected String getAddPrimaryKeyQuery(String tapSchemaName, String tableName, String[] keyColumns) {
         return String.format("ALTER TABLE ONLY %s.%s ADD CONSTRAINT %s_pkey PRIMARY KEY (%s)",
                 escape(tapSchemaName), escape(tableName), tableName, buildColumnsList(keyColumns));
     }
-    
+
     @Override
     protected String getAddForeignKeyQuery(String tapSchemaName, String tableName, String[] fromKeyColumns, String targetTableName, String[] toKeyColumns) {
         // Building univocal constraint name
@@ -119,12 +121,12 @@ public class PostgresDBBroker extends DBBrokerTemplate {
                 escape(tapSchemaName), escape(tableName), constraintNameSb.toString(), buildColumnsList(fromKeyColumns),
                 escape(tapSchemaName), escape(targetTableName), buildColumnsList(toKeyColumns));
     }
-    
+
     @Override
     protected String getCreateDatabaseQuery(String databaseName) {
         return "CREATE SCHEMA IF NOT EXISTS " + escape(databaseName);
     }
-    
+
     @Override
     protected String getSchemaTablesQuery(String schemaName) {
         return String.format("SELECT tablename FROM pg_catalog.pg_tables where schemaname = '%s'", schemaName);
@@ -144,14 +146,14 @@ public class PostgresDBBroker extends DBBrokerTemplate {
         }
         return sb.toString();
     }
-    
+
     @Override
     public Map<String, Map<String, Object>> getAllColumnsOriginalMetadata(String schemaName, String tableSimpleName) throws SQLException {
-        
+
         Map<String, Map<String, Object>> allColumnsMetadata = new HashMap<>();
-        
+
         StringBuilder querySb = new StringBuilder();
-        
+
         querySb.append("SELECT c.column_name, c.data_type, pg_catalog.format_type(a.atttypid, a.atttypmod), r.contype AS column_type, c.character_maximum_length, c.numeric_precision, a.attndims AS arraydim\n");
         querySb.append("FROM information_schema.columns c\n");
         querySb.append("JOIN pg_catalog.pg_tables t ON c.table_schema = t.schemaname AND c.table_name = t.tablename\n");
@@ -162,16 +164,16 @@ public class PostgresDBBroker extends DBBrokerTemplate {
         querySb.append("' AND t.tablename = '");
         querySb.append(tableSimpleName);
         querySb.append("'");
-        
+
         String query = querySb.toString();
         LOG.debug("Executing query {}", query);
-        
+
         try (Connection conn = dataSource.getConnection();
                 Statement statement = conn.createStatement();
                 ResultSet resultSet = statement.executeQuery(query)) {
-            
+
             while (resultSet.next()) {
-                
+
                 Map<String, Object> cm = new HashMap<>();
 
                 // Column name
@@ -192,11 +194,11 @@ public class PostgresDBBroker extends DBBrokerTemplate {
                 }
                 cm.put(Column.PRIMARY_KEY, primaryKey);
                 cm.put(Column.INDEXED_KEY, indexed);
-                
+
                 Integer size = null;
                 int arraydimension = 0;
                 String datatype;
-                
+
                 String type = resultSet.getString("data_type").toUpperCase();
                 boolean isArray = false;
                 if ("ARRAY".equals(type)) {
@@ -208,7 +210,7 @@ public class PostgresDBBroker extends DBBrokerTemplate {
                     // numbers inside brakets, so this case will be approximated to *x*
                     arraydimension = resultSet.getInt("arraydim");
                 }
-                
+
                 datatype = TypesMapping.getADQLTypeFromPostgresType(type, getTapSchemaVersion());
                 if (!isArray && (datatype.equals(ADQL.VARCHAR.name()) || datatype.equals(ADQL.CHAR.name()))) {
                     size = resultSet.getInt("character_maximum_length");
@@ -217,10 +219,10 @@ public class PostgresDBBroker extends DBBrokerTemplate {
                     // Adding size at the end of datatype
                     datatype += String.format("(%s)", size);
                 }
-                
+
                 cm.put(Column.DATATYPE_KEY, datatype);
                 cm.put(Column.SIZE_KEY, size);
-                
+
                 String arraySize = null;
                 if (isArray) {
                     arraySize = formatArraySize(arraydimension);
@@ -231,21 +233,21 @@ public class PostgresDBBroker extends DBBrokerTemplate {
                         arraySize += "*";
                     }
                 }
-                
+
                 cm.put(Column.ARRAYSIZE_KEY, arraySize);
-                
+
                 allColumnsMetadata.put(columnName, cm);
             }
         }
-        
+
         return allColumnsMetadata;
     }
-    
+
     @Override
     public List<Key> getKeys(TapSchema tapSchema, String schemaName) throws SQLException {
-        
+
         StringBuilder queryKeysSb = new StringBuilder();
-        
+
         queryKeysSb.append("SELECT\n");
         queryKeysSb.append("conname AS constraint_name,\n");
         queryKeysSb.append("conrelid::regclass AS from_table, \n");
@@ -258,33 +260,33 @@ public class PostgresDBBroker extends DBBrokerTemplate {
         queryKeysSb.append("OR (confrelid::regclass || '' LIKE '");
         queryKeysSb.append(schemaName);
         queryKeysSb.append(".%'))");
-        
+
         String queryKeys = queryKeysSb.toString();
-        
+
         try (Connection connection = dataSource.getConnection();
                 Statement statement = connection.createStatement();
                 ResultSet resultSet = statement.executeQuery(queryKeys)) {
-            
+
             LOG.debug("Executing query {}", queryKeys);
-            
+
             List<Key> keys = new ArrayList<>();
             while (resultSet.next()) {
-                
+
                 String constraintName = resultSet.getString("constraint_name");
-                
+
                 String fromTableCompleteName = resultSet.getString("from_table");
                 String targetTableCompleteName = resultSet.getString("target_table");
-                
+
                 String fromSchema = fromTableCompleteName.split(Pattern.quote("."))[0];
                 String targetSchema = targetTableCompleteName.split(Pattern.quote("."))[0];
-                
+
                 Map<String, Object> keyMetadata = new HashMap<>();
                 keyMetadata.put(Key.FROM_TABLE_KEY, fromTableCompleteName);
                 keyMetadata.put(Key.TARGET_TABLE_KEY, targetTableCompleteName);
-                
+
                 Key key = new Key(tapSchema, keyMetadata);
                 keys.add(key);
-                
+
                 StringBuilder queryFromKCSb = new StringBuilder();
                 queryFromKCSb.append("SELECT\n");
                 queryFromKCSb.append("c.column_name AS key_column\n");
@@ -302,7 +304,7 @@ public class PostgresDBBroker extends DBBrokerTemplate {
 
                 // conkey conrelid
                 String queryFromKC = queryFromKCSb.toString();
-                
+
                 StringBuilder queryTargetKCSb = new StringBuilder();
                 queryTargetKCSb.append("SELECT\n");
                 queryTargetKCSb.append("c.column_name AS key_column\n");
@@ -320,16 +322,16 @@ public class PostgresDBBroker extends DBBrokerTemplate {
 
                 // as above, but with confkey and confrelid and different c.table_schema where condition
                 String queryTargetKC = queryTargetKCSb.toString();
-                
+
                 try (Statement statFromKC = connection.createStatement();
                         Statement statTargetKC = connection.createStatement()) {
-                    
+
                     try (ResultSet rsFromKC = statFromKC.executeQuery(queryFromKC);
                             ResultSet rsTargetKC = statTargetKC.executeQuery(queryTargetKC)) {
-                        
+
                         LOG.debug("Executing query {}", queryFromKC);
                         LOG.debug("Executing query {}", queryTargetKC);
-                        
+
                         while (rsFromKC.next()) {
                             if (rsTargetKC.next()) {
                                 key.addKeyColumn(
@@ -341,11 +343,11 @@ public class PostgresDBBroker extends DBBrokerTemplate {
                     }
                 }
             }
-            
+
             return keys;
         }
     }
-    
+
     @Override
     protected String getTableTypesQuery(String schemaName) {
         StringBuilder sb = new StringBuilder();
@@ -361,18 +363,18 @@ public class PostgresDBBroker extends DBBrokerTemplate {
         sb.append("'");
         return sb.toString();
     }
-    
+
     @Override
     protected String getColumnNamesQuery(String tapSchemaName, String tableName) {
         return String.format("SELECT column_name FROM information_schema.columns WHERE table_schema = '%s' AND table_name = '%s'",
                 tapSchemaName, tableName);
     }
-    
+
     @Override
     protected String getAllSchemaNamesQuery() {
         return "SELECT schema_name FROM information_schema.schemata";
     }
-    
+
     @Override
     protected String getAllTablesNamesQuery(String schemaName) {
         return String.format("SELECT tablename FROM pg_catalog.pg_tables where schemaname = '%s'", schemaName);
diff --git a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/ColumnModel.java b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/ColumnModel.java
index 3a7346b1822fa4661a4c24dbc1ad4c4421bf058d..904f9cd5bf7e08f44782a48a1443d7d7d6ffe410 100644
--- a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/ColumnModel.java
+++ b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/ColumnModel.java
@@ -23,6 +23,7 @@
 package it.inaf.ia2.tsm.model;
 
 import java.io.Serializable;
+import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlTransient;
 
@@ -57,7 +58,7 @@ public class ColumnModel implements Serializable {
         mandatory = true;
     }
 
-    @XmlElement(name = "name")
+    @XmlAttribute(name = "name")
     public String getName() {
         return name;
     }
diff --git a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/SchemaModel.java b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/SchemaModel.java
index b5162f32104b9ea49edec63e8904a57ac0479e5f..7926339bff5c3d935cabdff58e80f5263663014f 100644
--- a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/SchemaModel.java
+++ b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/SchemaModel.java
@@ -23,8 +23,8 @@
 package it.inaf.ia2.tsm.model;
 
 import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.ArrayList;
+import java.util.List;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlElements;
@@ -39,15 +39,16 @@ public class SchemaModel implements Serializable {
 
     private static final long serialVersionUID = 1087876778125446000L;
 
-    private final Map<String, TableModel> tables;
+    private final List<TableModel> tables;
 
     private String name;
     private String version;
     private String extendsFrom;
     private String description;
+    private String datatypeType;
 
     public SchemaModel() {
-        tables = new HashMap<>();
+        tables = new ArrayList<>();
     }
 
     @XmlAttribute(name = "name")
@@ -89,11 +90,25 @@ public class SchemaModel implements Serializable {
     @XmlElements({
         @XmlElement(name = "table")
     })
-    public Map<String, TableModel> getTables() {
+    public List<TableModel> getTables() {
         return tables;
     }
 
-    public TableModel get(String tableName) {
-        return tables.get(tableName);
+    public TableModel getTable(String tableName) {
+        for (TableModel table : tables) {
+            if (tableName.equals(table.getName())) {
+                return table;
+            }
+        }
+        return null;
+    }
+
+    @XmlAttribute(name = "datatype")
+    public String getDatatypeType() {
+        return datatypeType;
+    }
+
+    public void setDatatypeType(String datatypeType) {
+        this.datatypeType = datatypeType;
     }
 }
diff --git a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/SchemaModels.java b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/SchemaModels.java
index be1ea870e8fbe8dd48a4c78ce7976ba562366db3..29bdcb40781ab4bab9dbfbc686cc6045f0ef9f5c 100644
--- a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/SchemaModels.java
+++ b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/SchemaModels.java
@@ -89,7 +89,7 @@ public class SchemaModels {
     }
 
     public static TableModel getTapSchemaTableModel(String tableName, String version) {
-        return getTapSchemaModel(version).getTables().get(tableName);
+        return getTapSchemaModel(version).getTable(tableName);
     }
 
     private static List<String> getAvailableVersions(Map<String, SchemaModel> schemaModels) {
diff --git a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/TableModel.java b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/TableModel.java
index 41ee999e874e4dad43c9ac79227dd96278b21e6b..b63fab6595608544d00c48cd6f3026c8f7f6e065 100644
--- a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/TableModel.java
+++ b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/TableModel.java
@@ -28,7 +28,6 @@ import java.util.List;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlElements;
-import javax.xml.bind.annotation.XmlTransient;
 
 /**
  *
diff --git a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/XMLMerger.java b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/XMLMerger.java
index a90212e8e9047bfb72f7c1b019bd3eea74e319ed..d0ca8bd64667769928dc14f270edda3f568ba98d 100644
--- a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/XMLMerger.java
+++ b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/XMLMerger.java
@@ -99,8 +99,12 @@ public class XMLMerger {
 
     private Element checkElement(Element inheritedParent, Element child) {
 
+        Element inheritedElement = null;
+
         String name = child.getAttribute("name");
-        Element inheritedElement = findElementByNameAttribute(inheritedParent, name);
+        if (name != null && !name.isEmpty()) {
+            inheritedElement = findElementByNameAttribute(inheritedParent, name);
+        }
 
         if (child.getNodeName().equals("remove")) {
             if (inheritedElement != null) {
diff --git a/TASMAN-core/src/main/resources/schema_definition/ivoa-1_1.xml b/TASMAN-core/src/main/resources/schema_definition/ivoa-1_1.xml
index 0e740183f14180d7b9790d05701d64b5a8ca0e7f..295aa94d204664b7727e0c1f6886ad95a2972e54 100644
--- a/TASMAN-core/src/main/resources/schema_definition/ivoa-1_1.xml
+++ b/TASMAN-core/src/main/resources/schema_definition/ivoa-1_1.xml
@@ -23,8 +23,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 -->
 <schema name="ivoa" version="1.1">
     <table name="obscore">
-        <column>
-            <name>dataproduct_type</name>
+        <column name="dataproduct_type">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -35,8 +34,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.id</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>dataproduct_subtype</name>
+        <column name="dataproduct_subtype">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -47,8 +45,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.id</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>calib_level</name>
+        <column name="calib_level">
             <type>INTEGER</type>
             <updatable>true</updatable>
             <nullable>false</nullable>
@@ -59,8 +56,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.code;obs.calib</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>obs_collection</name>
+        <column name="obs_collection">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -72,8 +68,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.id</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>obs_id</name>
+        <column name="obs_id">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -85,8 +80,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.id</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>obs_title</name>
+        <column name="obs_title">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -97,8 +91,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.title;obs</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>obs_creation_date</name>
+        <column name="obs_creation_date">
             <type>TIMESTAMP</type>
             <updatable>true</updatable>
             <description>Date when the dataset was created</description>
@@ -108,8 +101,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>time;meta.dataset</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>obs_creator_name</name>
+        <column name="obs_creator_name">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -120,8 +112,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.id</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>obs_creator_did</name>
+        <column name="obs_creator_did">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -132,8 +123,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.id</ucd>
             <principal>false</principal>
         </column>
-        <column>
-            <name>obs_release_date</name>
+        <column name="obs_release_date">
             <type>TIMESTAMP</type>
             <updatable>true</updatable>
             <description>Observation release date (ISO 8601)</description>
@@ -143,8 +133,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>time.release</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>publisher_id</name>
+        <column name="publisher_id">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -155,8 +144,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.ref.uri;meta.curation</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>bib_reference</name>
+        <column name="bib_reference">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -167,8 +155,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.bib</ucd>
             <principal>false</principal>
         </column>
-        <column>
-            <name>data_rights</name>
+        <column name="data_rights">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -179,8 +166,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.code</ucd>
             <principal>false</principal>
         </column>
-        <column>
-            <name>obs_publisher_did</name>
+        <column name="obs_publisher_did">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -192,8 +178,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.ref.uri;meta.curation</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>access_url</name>
+        <column name="access_url">
             <type>CLOB</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -204,8 +189,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.ref.url</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>access_format</name>
+        <column name="access_format">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -216,8 +200,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.code.mime</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>access_estsize</name>
+        <column name="access_estsize">
             <type>BIGINT</type>
             <updatable>true</updatable>
             <description>Estimated size of dataset in kilo bytes</description>
@@ -229,8 +212,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>phys.size;meta.file</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>target_name</name>
+        <column name="target_name">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -241,8 +223,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.id;src</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>target_class</name>
+        <column name="target_class">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -253,8 +234,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>src.class</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>s_ra</name>
+        <column name="s_ra">
             <type>DOUBLE</type>
             <updatable>true</updatable>
             <description>Central Spatial Position in ICRS Right ascension</description>
@@ -266,8 +246,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>pos.eq.ra</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>s_dec</name>
+        <column name="s_dec">
             <type>DOUBLE</type>
             <updatable>true</updatable>
             <description>Central Spatial Position in ICRS Declination</description>
@@ -279,8 +258,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>pos.eq.dec</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>s_fov</name>
+        <column name="s_fov">
             <type>DOUBLE</type>
             <updatable>true</updatable>
             <description>Estimated size of the covered region as the diameter of a containing circle</description>
@@ -292,8 +270,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>phys.angSize;instr.fov</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>s_region</name>
+        <column name="s_region">
             <type>REGION</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -304,8 +281,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>pos.outline;obs.field</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>s_xel1</name>
+        <column name="s_xel1">
             <type>BIGINT</type>
             <updatable>true</updatable>
             <description>Number of elements along the first coordinate of the spatial axis</description>
@@ -315,8 +291,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.number</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>s_xel2</name>
+        <column name="s_xel2">
             <type>BIGINT</type>
             <updatable>true</updatable>
             <description>Number of elements along the second coordinate of the spatial  axis</description>
@@ -326,8 +301,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.number</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>s_ucd</name>
+        <column name="s_ucd">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -338,8 +312,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.ucd</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>s_unit</name>
+        <column name="s_unit">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -350,8 +323,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.unit</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>s_resolution</name>
+        <column name="s_resolution">
             <type>DOUBLE</type>
             <updatable>true</updatable>
             <description>Spatial resolution of data as FWHM of PSF</description>
@@ -362,8 +334,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>pos.angResolution</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>s_resolution_min</name>
+        <column name="s_resolution_min">
             <type>DOUBLE</type>
             <updatable>true</updatable>
             <description>Resolution min value on spatial axis (FHWM of PSF)</description>
@@ -374,8 +345,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>pos.angResolution;stat.min</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>s_resolution_max</name>
+        <column name="s_resolution_max">
             <type>DOUBLE</type>
             <updatable>true</updatable>
             <description>Resolution max value on spatial axis</description>
@@ -386,8 +356,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>pos.angResolution;stat.max</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>s_calib_status</name>
+        <column name="s_calib_status">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -398,8 +367,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.code.qual</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>s_stat_error</name>
+        <column name="s_stat_error">
             <type>DOUBLE</type>
             <updatable>true</updatable>
             <description>Astrometric precision along the spatial axis</description>
@@ -411,8 +379,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>stat.error;pos.eq</ucd>
             <principal>false</principal>
         </column>
-        <column>
-            <name>s_pixel_scale</name>
+        <column name="s_pixel_scale">
             <type>DOUBLE</type>
             <updatable>true</updatable>
             <description>Sampling period in world coordinate units along the spatial axis</description>
@@ -423,8 +390,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>phys.angSize;instr.pixel</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>t_min</name>
+        <column name="t_min">
             <type>DOUBLE</type>
             <updatable>true</updatable>
             <description>Start time in MJD</description>
@@ -435,8 +401,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>time.start;obs.exposure</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>t_max</name>
+        <column name="t_max">
             <type>DOUBLE</type>
             <updatable>true</updatable>
             <description>Stop time in MJD</description>
@@ -447,8 +412,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>time.end;obs.exposure</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>t_exptime</name>
+        <column name="t_exptime">
             <type>DOUBLE</type>
             <updatable>true</updatable>
             <description>Total exposure time</description>
@@ -459,8 +423,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>time.duration;obs.exposure</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>t_resolution</name>
+        <column name="t_resolution">
             <type>DOUBLE</type>
             <updatable>true</updatable>
             <description>Temporal resolution FWHM</description>
@@ -471,8 +434,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>time.resolution</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>t_calib_status</name>
+        <column name="t_calib_status">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -483,8 +445,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.code.qual</ucd>
             <principal>false</principal>
         </column>
-        <column>
-            <name>t_stat_error</name>
+        <column name="t_stat_error">
             <type>DOUBLE</type>
             <updatable>true</updatable>
             <description>Time coord statistical error</description>
@@ -495,8 +456,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>stat.error;time</ucd>
             <principal>false</principal>
         </column>
-        <column>
-            <name>t_xel</name>
+        <column name="t_xel">
             <type>BIGINT</type>
             <updatable>true</updatable>
             <description>Number of elements along the time axis</description>
@@ -506,8 +466,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.number</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>t_refpos</name>
+        <column name="t_refpos">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -516,8 +475,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <mandatory>false</mandatory>
             <utype>Char.TimeAxis.ReferencePosition</utype>
         </column>
-        <column>
-            <name>em_min</name>
+        <column name="em_min">
             <type>DOUBLE</type>
             <updatable>true</updatable>
             <description>Start in spectral coordinates</description>
@@ -528,8 +486,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>em.wl;stat.min</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>em_max</name>
+        <column name="em_max">
             <type>DOUBLE</type>
             <updatable>true</updatable>
             <description>Stop in spectral coordinates</description>
@@ -540,8 +497,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>em.wl;stat.max</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>em_res_power</name>
+        <column name="em_res_power">
             <type>DOUBLE</type>
             <updatable>true</updatable>
             <description>Value of the resolving power along the spectral axis. (R)</description>
@@ -551,8 +507,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>spect.resolution</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>em_res_power_min</name>
+        <column name="em_res_power_min">
             <type>DOUBLE</type>
             <updatable>true</updatable>
             <description>Resolving power min value on spectral axis</description>
@@ -562,8 +517,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>spect.resolution;stat.min</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>em_res_power_max</name>
+        <column name="em_res_power_max">
             <type>DOUBLE</type>
             <updatable>true</updatable>
             <description>Resolving power max value on spectral axis</description>
@@ -573,8 +527,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>spect.resolution;stat.max</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>em_resolution</name>
+        <column name="em_resolution">
             <type>DOUBLE</type>
             <updatable>true</updatable>
             <description>Value of Resolution along the spectral axis</description>
@@ -585,8 +538,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>spect.resolution;stat.mean</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>em_stat_error</name>
+        <column name="em_stat_error">
             <type>DOUBLE</type>
             <updatable>true</updatable>
             <description>Spectral coord statistical error</description>
@@ -597,8 +549,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>stat.error;em</ucd>
             <principal>false</principal>
         </column>
-        <column>
-            <name>em_xel</name>
+        <column name="em_xel">
             <type>BIGINT</type>
             <updatable>true</updatable>
             <description>Number of elements along the spectral axis</description>
@@ -607,8 +558,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <utype>Char.SpectralAxis.numBins</utype>
             <ucd>meta.number</ucd>
         </column>
-        <column>
-            <name>em_ucd</name>
+        <column name="em_ucd">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -619,8 +569,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.ucd</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>em_unit</name>
+        <column name="em_unit">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -631,8 +580,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.unit</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>em_calib_status</name>
+        <column name="em_calib_status">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -643,8 +591,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.code.qual</ucd>
             <principal>false</principal>
         </column>
-        <column>
-            <name>o_ucd</name>
+        <column name="o_ucd">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -655,8 +602,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.ucd</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>o_unit</name>
+        <column name="o_unit">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -667,8 +613,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.unit</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>o_calib_status</name>
+        <column name="o_calib_status">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -679,8 +624,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.code.qual</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>o_stat_error</name>
+        <column name="o_stat_error">
             <type>DOUBLE</type>
             <updatable>true</updatable>
             <description>Statistical error on the Observable axis</description>
@@ -691,8 +635,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>stat.error;phot.flux</ucd>
             <principal>false</principal>
         </column>
-        <column>
-            <name>pol_states</name>
+        <column name="pol_states">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -703,8 +646,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.code;phys.polarization</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>pol_xel</name>
+        <column name="pol_xel">
             <type>BIGINT</type>
             <updatable>true</updatable>
             <description>Number of elements along the polarization axis</description>
@@ -714,8 +656,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.number</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>facility_name</name>
+        <column name="facility_name">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -726,8 +667,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.id;instr.tel</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>instrument_name</name>
+        <column name="instrument_name">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -738,8 +678,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <ucd>meta.id;instr</ucd>
             <principal>true</principal>
         </column>
-        <column>
-            <name>proposal_id</name>
+        <column name="proposal_id">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
diff --git a/TASMAN-core/src/main/resources/schema_definition/tap_schema-1-IA2.xml b/TASMAN-core/src/main/resources/schema_definition/tap_schema-1-IA2.xml
index a78aa207a00897c2859f4c72544ee7159230accc..1d53e01bf88ec6d096ecbecea8402238dc0709ca 100644
--- a/TASMAN-core/src/main/resources/schema_definition/tap_schema-1-IA2.xml
+++ b/TASMAN-core/src/main/resources/schema_definition/tap_schema-1-IA2.xml
@@ -23,46 +23,40 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 -->
 <schema name="tap_schema" version="1.0-IA2" extends="1.0">
     <table name="schemas">
-        <column>
-            <name>schemaID</name>
+        <column name="schemaID">
             <type>BIGINT</type>
             <updatable>true</updatable>
             <standard>false</standard>
         </column>
     </table>
     <table name="tables">
-        <column>
-            <name>tableID</name>
+        <column name="tableID">
             <type>BIGINT</type>
             <updatable>true</updatable>
             <standard>false</standard>
         </column>
     </table>
     <table name="columns">
-        <column>
-            <name>columnID</name>
+        <column name="columnID">
             <type>BIGINT</type>
             <updatable>true</updatable>
             <standard>false</standard>
         </column>
-        <column>
-            <name>id</name>
+        <column name="id">
             <type>INTEGER</type>
             <updatable>true</updatable>
             <standard>false</standard>
         </column>
     </table>
     <table name="keys">
-        <column>
-            <name>keyID</name>
+        <column name="keyID">
             <type>BIGINT</type>
             <updatable>true</updatable>
             <standard>false</standard>
         </column>
     </table>
     <table name="key_columns">
-        <column>
-            <name>key_columnID</name>
+        <column name="key_columnID">
             <type>BIGINT</type>
             <updatable>true</updatable>
             <standard>false</standard>
diff --git a/TASMAN-core/src/main/resources/schema_definition/tap_schema-1.xml b/TASMAN-core/src/main/resources/schema_definition/tap_schema-1.xml
index fe4786f370c301c4868e2856a0558c9b03eae028..e27dd723aac27681e26e0231dcfb327e370aa352 100644
--- a/TASMAN-core/src/main/resources/schema_definition/tap_schema-1.xml
+++ b/TASMAN-core/src/main/resources/schema_definition/tap_schema-1.xml
@@ -21,10 +21,9 @@ You should have received a copy of the GNU General Public License along with
 this program; if not, write to the Free Software Foundation, Inc., 51
 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 -->
-<schema name="tap_schema" version="1.0" description="a special schema to describe a TAP tableset">
+<schema name="tap_schema" version="1.0" description="a special schema to describe a TAP tableset" datatype="ADQL">
     <table name="schemas" description="description of schemas in this tableset">
-        <column>
-            <name>schema_name</name>
+        <column name="schema_name">
             <type>VARCHAR</type>
             <size>64</size>
             <updatable>false</updatable>
@@ -33,16 +32,14 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <description>schema name for reference to TAP_SCHEMA.schemas</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>utype</name>
+        <column name="utype">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
             <description>lists the utypes of schemas in the tableset</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>description</name>
+        <column name="description">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -51,8 +48,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
         </column>
     </table>
     <table name="tables" description="description of tables in this tableset">
-        <column>
-            <name>schema_name</name>
+        <column name="schema_name">
             <type>VARCHAR</type>
             <size>64</size>
             <updatable>false</updatable>
@@ -61,8 +57,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <description>the schema this table belongs to</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>table_name</name>
+        <column name="table_name">
             <type>VARCHAR</type>
             <size>128</size>
             <updatable>false</updatable>
@@ -71,8 +66,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <description>the fully qualified table name</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>table_type</name>
+        <column name="table_type">
             <size>8</size>
             <type>VARCHAR</type>
             <updatable>false</updatable>
@@ -80,16 +74,14 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <description>one of: table view</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>utype</name>
+        <column name="utype">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
             <description>lists the utype of tables in the tableset</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>description</name>
+        <column name="description">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -98,8 +90,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
         </column>
     </table>
     <table name="columns" description="description of columns in this tableset">
-        <column>
-            <name>table_name</name>
+        <column name="table_name">
             <required>true</required>
             <type>VARCHAR</type>
             <size>128</size>
@@ -109,8 +100,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <description>the table this column belongs to</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>column_name</name>
+        <column name="column_name">
             <required>true</required>
             <type>VARCHAR</type>
             <size>64</size>
@@ -120,8 +110,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <description>the column name</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>datatype</name>
+        <column name="datatype">
             <type>VARCHAR</type>
             <size>64</size>
             <updatable>true</updatable>
@@ -129,48 +118,42 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <description>lists the ADQL datatype of columns in the tableset</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>size</name>
+        <column name="size">
             <type>INTEGER</type>
             <updatable>false</updatable>
             <key>size</key>
             <description>lists the size of variable-length columns in the tableset</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>description</name>
+        <column name="description">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable> 
             <description>describes the columns in the tableset</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>utype</name>
+        <column name="utype">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
             <description>lists the utypes of columns in the tableset</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>unit</name>
+        <column name="unit">
             <type>VARCHAR</type>
             <size>64</size>
             <updatable>true</updatable>
             <description>lists the unit used for column values in the tableset</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>ucd</name>
+        <column name="ucd">
             <type>VARCHAR</type>
             <size>64</size>
             <updatable>true</updatable>
             <description>lists the UCDs of columns in the tableset</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>indexed</name>
+        <column name="indexed">
             <type>INTEGER</type>
             <updatable>false</updatable>
             <nullable>false</nullable>
@@ -179,8 +162,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <description>an indexed column; 1 means true, 0 means false</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>principal</name>
+        <column name="principal">
             <type>INTEGER</type>
             <updatable>true</updatable>
             <nullable>false</nullable>
@@ -188,8 +170,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <description>a principal column; 1 means true, 0 means false</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>std</name>
+        <column name="std">
             <type>INTEGER</type>
             <updatable>true</updatable>
             <nullable>false</nullable>
@@ -199,16 +180,14 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
         </column>
     </table>
     <table name="keys" description="description of foreign keys in this tableset">
-        <column>
-            <name>key_id</name>
+        <column name="key_id">
             <type>VARCHAR</type>
             <size>64</size>
             <updatable>true</updatable>
             <description>unique key to join to TAP_SCHEMA.key_columns</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>from_table</name>
+        <column name="from_table">
             <type>VARCHAR</type>
             <size>128</size>
             <updatable>false</updatable>
@@ -216,8 +195,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <description>the table with the foreign key</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>target_table</name>
+        <column name="target_table">
             <type>VARCHAR</type>
             <size>128</size>
             <updatable>false</updatable>
@@ -225,16 +203,14 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <description>the table with the primary key</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>description</name>
+        <column name="description">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
             <description>describes keys in the tableset</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>utype</name>
+        <column name="utype">
             <type>VARCHAR</type>
             <size>255</size>
             <updatable>true</updatable>
@@ -243,16 +219,14 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
         </column>
     </table>
     <table name="key_columns" description="description of foreign key columns in this tableset">
-        <column>
-            <name>key_id</name>
+        <column name="key_id">
             <type>VARCHAR</type>
             <size>64</size>
             <updatable>true</updatable>
             <description>key to join to TAP_SCHEMA.keys</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>from_column</name>
+        <column name="from_column">
             <type>VARCHAR</type>
             <size>64</size>
             <updatable>false</updatable>
@@ -260,8 +234,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <description>column in the from_table</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>target_column</name>
+        <column name="target_column">
             <type>VARCHAR</type>
             <size>64</size>
             <updatable>false</updatable>
diff --git a/TASMAN-core/src/main/resources/schema_definition/tap_schema-1_1.xml b/TASMAN-core/src/main/resources/schema_definition/tap_schema-1_1.xml
index 6b36a0ff4769f5f3cfbeecbd9188bbc82f26eaf6..f5b8a73674b87353845c912d75a364c10b3905ae 100644
--- a/TASMAN-core/src/main/resources/schema_definition/tap_schema-1_1.xml
+++ b/TASMAN-core/src/main/resources/schema_definition/tap_schema-1_1.xml
@@ -21,39 +21,34 @@ You should have received a copy of the GNU General Public License along with
 this program; if not, write to the Free Software Foundation, Inc., 51
 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 -->
-<schema name="tap_schema" version="1.1" extends="1.0">
+<schema name="tap_schema" version="1.1" extends="1.0" datatype="VOTable">
     <table name="tables">
-        <column>
-            <name>table_index</name>
+        <column name="table_index">
             <type>INTEGER</type>
             <updatable>true</updatable>
             <standard>true</standard>
         </column>
     </table>
     <table name="columns">
-        <column>
-            <name>arraysize</name>
+        <column name="arraysize">
             <type>VARCHAR</type>
             <updatable>false</updatable> 
             <key>arraysize</key>
             <size>255</size>
             <standard>true</standard>
         </column>
-        <column>
-            <name>xtype</name>
+        <column name="xtype">
             <type>VARCHAR</type>
             <updatable>true</updatable>
             <size>255</size>
             <standard>true</standard>
         </column>
-        <column>
-            <name>column_index</name>
+        <column name="column_index">
             <type>INTEGER</type>
             <updatable>true</updatable>
             <standard>true</standard>
         </column>
-        <column>
-            <name>indexed</name>
+        <column name="indexed">
             <type>BOOLEAN</type>
             <updatable>false</updatable>
             <nullable>false</nullable>
@@ -62,8 +57,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <description>an indexed column</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>principal</name>
+        <column name="principal">
             <type>BOOLEAN</type>
             <updatable>true</updatable>
             <nullable>false</nullable>
@@ -71,8 +65,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
             <description>a principal column</description>
             <standard>true</standard>
         </column>
-        <column>
-            <name>std</name>
+        <column name="std">
             <type>BOOLEAN</type>
             <updatable>true</updatable>
             <nullable>false</nullable>