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
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