home *** CD-ROM | disk | FTP | other *** search
/ Computer Active 2010 August / CA08.iso / Darbas / kidoz_v1.air / kidoz.swf / scripts / mx / rpc / xml / Schema.as < prev    next >
Encoding:
Text File  |  2009-05-06  |  6.3 KB  |  205 lines

  1. package mx.rpc.xml
  2. {
  3.    public class Schema
  4.    {
  5.       public var elementFormDefault:String = "unqualified";
  6.       
  7.       private var _targetNamespace:Namespace;
  8.       
  9.       private var _schemaDatatypes:SchemaDatatypes;
  10.       
  11.       private var _xml:XML;
  12.       
  13.       private var _namespaces:Object;
  14.       
  15.       private var importsManager:QualifiedResourceManager;
  16.       
  17.       public var attributeFormDefault:String = "unqualified";
  18.       
  19.       public var finalDefault:String;
  20.       
  21.       private var _schemaConstants:SchemaConstants;
  22.       
  23.       public var blockDefault:String;
  24.       
  25.       public function Schema(param1:XML = null)
  26.       {
  27.          super();
  28.          this.xml = param1;
  29.       }
  30.       
  31.       public function set xml(param1:XML) : void
  32.       {
  33.          var _loc2_:String = null;
  34.          var _loc3_:Array = null;
  35.          var _loc4_:Namespace = null;
  36.          _xml = param1;
  37.          if(_xml != null)
  38.          {
  39.             _loc2_ = _xml.@targetNamespace.toString();
  40.             _targetNamespace = new Namespace(_loc2_);
  41.             attributeFormDefault = _xml.@attributeFormDefault.toString();
  42.             if(attributeFormDefault == "")
  43.             {
  44.                attributeFormDefault = "unqualified";
  45.             }
  46.             blockDefault = _xml.@blockDefault.toString();
  47.             elementFormDefault = _xml.@elementFormDefault.toString();
  48.             if(elementFormDefault == "")
  49.             {
  50.                elementFormDefault = "unqualified";
  51.             }
  52.             finalDefault = _xml.@finalDefault.toString();
  53.             namespaces = {};
  54.             _loc3_ = _xml.inScopeNamespaces();
  55.             for each(_loc4_ in _loc3_)
  56.             {
  57.                namespaces[_loc4_.prefix] = _loc4_;
  58.             }
  59.             _schemaConstants = SchemaConstants.getConstants(_xml);
  60.             _schemaDatatypes = SchemaDatatypes.getConstants(_schemaConstants.xsdURI);
  61.          }
  62.          else
  63.          {
  64.             _schemaConstants = null;
  65.             _schemaDatatypes = null;
  66.          }
  67.       }
  68.       
  69.       public function addInclude(param1:XMLList) : void
  70.       {
  71.          xml.appendChild(param1);
  72.       }
  73.       
  74.       public function get targetNamespace() : Namespace
  75.       {
  76.          return _targetNamespace;
  77.       }
  78.       
  79.       public function set targetNamespace(param1:Namespace) : void
  80.       {
  81.          _targetNamespace = param1;
  82.       }
  83.       
  84.       public function get xml() : XML
  85.       {
  86.          return _xml;
  87.       }
  88.       
  89.       public function addImport(param1:Namespace, param2:Schema) : void
  90.       {
  91.          if(importsManager == null)
  92.          {
  93.             importsManager = new QualifiedResourceManager();
  94.          }
  95.          importsManager.addResource(param1,param2);
  96.       }
  97.       
  98.       public function get schemaConstants() : SchemaConstants
  99.       {
  100.          if(_schemaConstants == null)
  101.          {
  102.             _schemaConstants = SchemaConstants.getConstants(_xml);
  103.          }
  104.          return _schemaConstants;
  105.       }
  106.       
  107.       public function set namespaces(param1:Object) : void
  108.       {
  109.          _namespaces = param1;
  110.       }
  111.       
  112.       public function getNamedDefinition(param1:QName, ... rest) : Object
  113.       {
  114.          var s:uint;
  115.          var imports:Array = null;
  116.          var schema:Schema = null;
  117.          var currentTargetNamespace:Namespace = null;
  118.          var schemaXML:XML = null;
  119.          var constants:SchemaConstants = null;
  120.          var t:uint = 0;
  121.          var componentType:QName = null;
  122.          var localComponentType:QName = null;
  123.          var definition:XML = null;
  124.          var name:QName = param1;
  125.          var componentTypes:Array = rest;
  126.          var uri:String = name.uri;
  127.          var schemas:Array = [this];
  128.          if(importsManager != null)
  129.          {
  130.             imports = importsManager.getResourcesForURI(uri);
  131.             if(imports != null)
  132.             {
  133.                schemas = schemas.concat(imports);
  134.             }
  135.          }
  136.          s = 0;
  137.          while(s < schemas.length)
  138.          {
  139.             schema = schemas[s] as Schema;
  140.             currentTargetNamespace = schema.targetNamespace;
  141.             schemaXML = schema.xml;
  142.             constants = schema.schemaConstants;
  143.             t = 0;
  144.             for(; t < componentTypes.length; t++)
  145.             {
  146.                componentType = componentTypes[t] as QName;
  147.                if(schema.elementFormDefault == "qualified" && componentType == schemaConstants.elementTypeQName)
  148.                {
  149.                   if(uri != null && uri != "")
  150.                   {
  151.                      if(currentTargetNamespace == null || currentTargetNamespace.uri != uri)
  152.                      {
  153.                         continue;
  154.                      }
  155.                   }
  156.                }
  157.                if(schema.attributeFormDefault == "qualified" && componentType == schemaConstants.attributeQName)
  158.                {
  159.                   if(uri != null && uri != "")
  160.                   {
  161.                      if(currentTargetNamespace == null || currentTargetNamespace.uri != uri)
  162.                      {
  163.                         continue;
  164.                      }
  165.                   }
  166.                }
  167.                if(!(componentType != schemaConstants.elementTypeQName && componentType != schemaConstants.attributeQName && currentTargetNamespace.uri != name.uri))
  168.                {
  169.                   localComponentType = new QName(constants.xsdURI,componentType.localName);
  170.                   definition = schemaXML[localComponentType].(@name == name.localName)[0];
  171.                   if(definition != null)
  172.                   {
  173.                      return {
  174.                         "definition":definition,
  175.                         "schema":schema
  176.                      };
  177.                   }
  178.                }
  179.             }
  180.             s++;
  181.          }
  182.          return null;
  183.       }
  184.       
  185.       public function get namespaces() : Object
  186.       {
  187.          if(_namespaces == null)
  188.          {
  189.             _namespaces = {};
  190.          }
  191.          return _namespaces;
  192.       }
  193.       
  194.       public function get schemaDatatypes() : SchemaDatatypes
  195.       {
  196.          if(_schemaDatatypes == null)
  197.          {
  198.             _schemaDatatypes = SchemaDatatypes.getConstants(schemaConstants.xsdURI);
  199.          }
  200.          return _schemaDatatypes;
  201.       }
  202.    }
  203. }
  204.  
  205.