diff -r 93252fdc69cf generateDS.py
--- a/generateDS.py	Tue Aug 18 18:13:51 2009 -0400
+++ b/generateDS.py	Wed Aug 19 14:11:13 2009 -0400
@@ -936,10 +936,25 @@
     def getRoot(self):
         return self.root
 
+    def extractSchemaNamespace(self, attrs):
+        schemaUri = 'http://www.w3.org/2001/XMLSchema'
+        keys = [ x for x, v in attrs.items() if v == schemaUri ]
+        if not keys:
+            return None
+        keys = [ x[6:] for x in keys if x.startswith('xmlns:') ]
+        if not keys:
+            return None
+        return keys[0]
+
     def startElement(self, name, attrs):
         global Targetnamespace, NamespacesDict
         logging.debug("Start element: %s %s" % (name, repr(attrs.items())))
 
+        if len(self.stack) == 0:
+            schemaNamespace = self.extractSchemaNamespace(attrs)
+            if schemaNamespace:
+                set_type_constants(schemaNamespace + ':')
+
         if name == SchemaType:
             self.inSchema = 1
             element = XschemaElement(attrs)
@@ -952,8 +967,6 @@
             for name, value in attrs.items():
                 if name[:6] == 'xmlns:':
                     nameSpace = name[6:] + ':'
-                    if value == 'http://www.w3.org/2001/XMLSchema':
-                        set_type_constants(nameSpace)
                     NamespacesDict[value] = nameSpace
                 elif name == 'targetNamespace':
                     Targetnamespace = value
