                         ContentProxy(content).object_proxy::isSimple = false; // The XML value has complex content.
 
                     propertyList = xml.elements();
-                    propertyList += xml.attributes(); 
+                    propertyList += filterAttributes(xml.attributes()); 
                 }
             }
             else

                if (xml.hasSimpleContent())
                {
                    content = new SimpleContent(xml.text().toString());
                    propertyList = xml.attributes();
                }
                else
                {

    }

    /**
     * Remove attributes that should not be included in general
     * deserialization to ActionScript, such as internal schema instance
     * attributes.  
     * @private
     */ 
    protected function filterAttributes(attributes:XMLList):XMLList
    {
        var filtered:XMLList = attributes.copy();
        for (var i:int = filtered.length() - 1; i >= 0; i--)
        {
            var attr:XML = filtered[i];
            if (attr != null)
            {
                var name:QName = attr.name();
                if (isInternalNamespace(name))
                {
                    delete filtered[i];
                }
            }
        }
        return filtered;
    }

    /**
     * Determines whether a name is in an internal (XML Schema specific)
     * namespace (as opposed to a user's namespace).
     * @private 
     */
    protected function isInternalNamespace(name:QName):Boolean
    {
        var uri:String = (name != null) ? name.uri : null;
        if (uri)
        {
            if (URLUtil.urisEqual(uri, constants.xsiNamespace.uri) ||
                URLUtil.urisEqual(uri, constants.xsdNamespace.uri))
            {
                return true;
            }
        }
        return false;
    }

    /**
     * Noop. Method exists to give a chance to subclasses to pre-process the
     * encoded XML.
     * @private
