예제 #1
0
파일: SSchema.py 프로젝트: vimov/Deployer
 def prepare(self):
   # before we do anything serious, check if we need to
   # bootstrap the schema for schema
   if self.schemas.has_key(XMLSchemaNS):
     # we're validating a schema with a (purported) schema for schemas,
     # or we're running useDTD=0
     sfors=self.schemas[XMLSchemaNS]
     self.sfors=sfors
     if ((not sfors.typeTable.has_key('string')) or
         (not sfors.typeTable['string'].__dict__.has_key('basetype')) or
         (sfors.typeTable['string'].basetype is None) or
         sfors.typeTable['string'].basetype.name is not AST):
       # need the ab-initio types
       sfors.targetNS=XMLSchemaNS
       self.current=sfors
       self.targetNS=XMLSchemaNS
       sfors.doBuiltIns(self)
   else:
     self.initSforS()
   self.sfors.nsdict={'xs':XMLSchemaNS}
   sforsi=Schema(self,None)
   self.schemas[XMLSchemaInstanceNS]=sforsi
   self.sforsi=sforsi
   sforsi.targetNS=XMLSchemaInstanceNS
   self.current=sforsi
   self.targetNS=XMLSchemaInstanceNS
   sforsi.installInstanceAttrs(self)
   sforsi.prepared=1
   self.current=self.sfors
   self.targetNS=XMLSchemaNS
   ec=0
   for sch in self.schemas.values():
     ec=ec+sch.errors
   self.prepared=1
   return ec
예제 #2
0
파일: SSchema.py 프로젝트: vimov/Deployer
 def initFromDump(self,dumpFileName):
   self.prepare()
   self.rebuilding=1
   rds=indRebuild.fromIndFile(dumpFileName,self.psviConstruct)
   if rds is None:
     sys.stderr.write("couldn't initialize from %s!!!\n"%dumpFileName)
     raise error
   for nsi in rds.schemaInformation:
     if nsi.schemaNamespace:
       # xsi is skipped
       if self.schemas.has_key(nsi.schemaNamespace):
         s=self.schemas[nsi.schemaNamespace]
       else:
         s=Schema(self,None)
         s.targetNS=s.targetNamespace=nsi.schemaNamespace
         self.schemas[nsi.schemaNamespace]=s
       s.prepared=1
       for c in nsi.components:
         if c.foundWhere:
           if getattr(s,c.foundWhere).has_key(c.name):
             if not (isinstance(c,SimpleType) and
                     c.name in ('ENTITY','NMTOKEN','Name','language')):
               # they're allowed as they have the original of various patterns
               print ('oops',s,c,c.name)
           else:
             getattr(s,c.foundWhere)[c.name]=c
   self.rebuilding=0
   self.current=None
   self.targetNS=0