[491371] An Xcore model with an attribute using AnySimpleType with a
default produces poor code
diff --git a/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenDataTypeImpl.java b/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenDataTypeImpl.java
index eb4a4e3..001d6a1 100644
--- a/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenDataTypeImpl.java
+++ b/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenDataTypeImpl.java
@@ -1023,8 +1023,24 @@
     for (EDataType eDataType = getEcoreDataType(); eDataType != null; eDataType = extendedMetaData.getBaseType(eDataType))
     {
       String namespace = extendedMetaData.getNamespace(eDataType);
-      if (EcorePackage.eNS_URI.equals(namespace) || XMLTypePackage.eNS_URI.equals(namespace))
+      if (EcorePackage.eNS_URI.equals(namespace))
       {
+        if (eDataType.getEPackage() != EcorePackage.eINSTANCE)
+        {
+          return (EDataType)EcorePackage.eINSTANCE.getEClassifier(eDataType.getName());
+          
+        }
+
+        return eDataType;
+      }
+
+      if (XMLTypePackage.eNS_URI.equals(namespace))
+      {
+        if (eDataType.getEPackage() != XMLTypePackage.eINSTANCE)
+        {
+          return (EDataType)XMLTypePackage.eINSTANCE.getEClassifier(eDataType.getName());
+        }
+
         return eDataType;
       }
     }