home *** CD-ROM | disk | FTP | other *** search
- package mx.rpc.xml
- {
- public class Schema
- {
- public var elementFormDefault:String = "unqualified";
-
- private var _targetNamespace:Namespace;
-
- private var _schemaDatatypes:SchemaDatatypes;
-
- private var _xml:XML;
-
- private var _namespaces:Object;
-
- private var importsManager:QualifiedResourceManager;
-
- public var attributeFormDefault:String = "unqualified";
-
- public var finalDefault:String;
-
- private var _schemaConstants:SchemaConstants;
-
- public var blockDefault:String;
-
- public function Schema(param1:XML = null)
- {
- super();
- this.xml = param1;
- }
-
- public function set xml(param1:XML) : void
- {
- var _loc2_:String = null;
- var _loc3_:Array = null;
- var _loc4_:Namespace = null;
- _xml = param1;
- if(_xml != null)
- {
- _loc2_ = _xml.@targetNamespace.toString();
- _targetNamespace = new Namespace(_loc2_);
- attributeFormDefault = _xml.@attributeFormDefault.toString();
- if(attributeFormDefault == "")
- {
- attributeFormDefault = "unqualified";
- }
- blockDefault = _xml.@blockDefault.toString();
- elementFormDefault = _xml.@elementFormDefault.toString();
- if(elementFormDefault == "")
- {
- elementFormDefault = "unqualified";
- }
- finalDefault = _xml.@finalDefault.toString();
- namespaces = {};
- _loc3_ = _xml.inScopeNamespaces();
- for each(_loc4_ in _loc3_)
- {
- namespaces[_loc4_.prefix] = _loc4_;
- }
- _schemaConstants = SchemaConstants.getConstants(_xml);
- _schemaDatatypes = SchemaDatatypes.getConstants(_schemaConstants.xsdURI);
- }
- else
- {
- _schemaConstants = null;
- _schemaDatatypes = null;
- }
- }
-
- public function addInclude(param1:XMLList) : void
- {
- xml.appendChild(param1);
- }
-
- public function get targetNamespace() : Namespace
- {
- return _targetNamespace;
- }
-
- public function set targetNamespace(param1:Namespace) : void
- {
- _targetNamespace = param1;
- }
-
- public function get xml() : XML
- {
- return _xml;
- }
-
- public function addImport(param1:Namespace, param2:Schema) : void
- {
- if(importsManager == null)
- {
- importsManager = new QualifiedResourceManager();
- }
- importsManager.addResource(param1,param2);
- }
-
- public function get schemaConstants() : SchemaConstants
- {
- if(_schemaConstants == null)
- {
- _schemaConstants = SchemaConstants.getConstants(_xml);
- }
- return _schemaConstants;
- }
-
- public function set namespaces(param1:Object) : void
- {
- _namespaces = param1;
- }
-
- public function getNamedDefinition(param1:QName, ... rest) : Object
- {
- var s:uint;
- var imports:Array = null;
- var schema:Schema = null;
- var currentTargetNamespace:Namespace = null;
- var schemaXML:XML = null;
- var constants:SchemaConstants = null;
- var t:uint = 0;
- var componentType:QName = null;
- var localComponentType:QName = null;
- var definition:XML = null;
- var name:QName = param1;
- var componentTypes:Array = rest;
- var uri:String = name.uri;
- var schemas:Array = [this];
- if(importsManager != null)
- {
- imports = importsManager.getResourcesForURI(uri);
- if(imports != null)
- {
- schemas = schemas.concat(imports);
- }
- }
- s = 0;
- while(s < schemas.length)
- {
- schema = schemas[s] as Schema;
- currentTargetNamespace = schema.targetNamespace;
- schemaXML = schema.xml;
- constants = schema.schemaConstants;
- t = 0;
- for(; t < componentTypes.length; t++)
- {
- componentType = componentTypes[t] as QName;
- if(schema.elementFormDefault == "qualified" && componentType == schemaConstants.elementTypeQName)
- {
- if(uri != null && uri != "")
- {
- if(currentTargetNamespace == null || currentTargetNamespace.uri != uri)
- {
- continue;
- }
- }
- }
- if(schema.attributeFormDefault == "qualified" && componentType == schemaConstants.attributeQName)
- {
- if(uri != null && uri != "")
- {
- if(currentTargetNamespace == null || currentTargetNamespace.uri != uri)
- {
- continue;
- }
- }
- }
- if(!(componentType != schemaConstants.elementTypeQName && componentType != schemaConstants.attributeQName && currentTargetNamespace.uri != name.uri))
- {
- localComponentType = new QName(constants.xsdURI,componentType.localName);
- definition = schemaXML[localComponentType].(@name == name.localName)[0];
- if(definition != null)
- {
- return {
- "definition":definition,
- "schema":schema
- };
- }
- }
- }
- s++;
- }
- return null;
- }
-
- public function get namespaces() : Object
- {
- if(_namespaces == null)
- {
- _namespaces = {};
- }
- return _namespaces;
- }
-
- public function get schemaDatatypes() : SchemaDatatypes
- {
- if(_schemaDatatypes == null)
- {
- _schemaDatatypes = SchemaDatatypes.getConstants(schemaConstants.xsdURI);
- }
- return _schemaDatatypes;
- }
- }
- }
-
-