obj=obj.pere
return texteNom
+ def metAJourPyxb(self,nomDuTypePyxb) :
+ self.aCreer=False
+ self.nomDuTypePyxb=nomDuTypePyxb
+ cata = CONTEXT.getCurrentCata()
+ nom='T_'+self.nom
+ if (hasattr (self, 'nomXML')) and self.nomXML != None : nom='T_'+self.nomXML
+ if not (nom in cata.dictTypesXSD.keys()) :
+ cata.dictTypesXSD[nom] = [self,]
+ else :
+ cata.dictTypesXSD[nom].append(self)
def definitNomDuTypePyxb(self,forceACreer=False):
- if hasattr(self,'nomDuTypePyxb') : return self.nomDuTypePyxb
+ if hasattr(self,'nomDuTypePyxb') : self.aCreer = False; return self.nomDuTypePyxb
#except : pass
self.aCreer = True
cata = CONTEXT.getCurrentCata()
def construitArbrePossibles(self):
# inutile car on a deja l arbre mais appele parfois
- #print ('dans X_factCompoAmbigue ne fait rien', self.nom, self.arbrePossibles)
+ #print ('dans X_factCompoAmbigu ne fait rien', self.nom, self.arbrePossibles)
pass
def dumpXsd(self, dansFactorisation=False, multiple = False, first=False):
# on ne fait rien, tout a ete fait dans le init
self.texteElt=substDsSequence.format(self.code,self.nomDuTypePyxb,0,1)
- def nomComplet(self) :
- print ('dans nomComplet pourquoi ?',self, self.nom)
+ #def nomComplet(self) :
+ # print ('dans nomComplet pourquoi ?',self, self.nom)
- def factoriseEtCreeDump(self, laListe, indent=2 ,nomAppel=None):
- #print ('_______________________________ factoriseEtCreeDump')
- #print(self.nom, laListe, indent, nomAppel)
+ def factoriseEtCreeDump(self, laListe, indent=2 ,nomAppel=None, debug=False):
+ if debug : print ('_______________________________ factoriseEtCreeDump')
+ if debug : print(self.nom, laListe, indent, nomAppel)
maListeRetour=[]
aReduire={}
def ajouteAuxTextes(self,nomMC,indent) :
#print ('ajouteAuxTextes', nomMC, self.nom, self.entites)
- #print ('ajouteAuxTextes', nomMC, self.entites[nomMC])
#for i in self.entites.keys() : print (self.entites[i][0].nom)
- if (indent > 3) : indent = indent - 3
+ if (indent > 3) : indent = indent - 3
else : indent = 0
if len(self.entites[nomMC]) == 1:
mc=self.entites[nomMC][0]
self.texteComplexe += '\t'*(indent) + mc.texteElt
if mc.aCreer : self.texteComplexeVenantDesFils += mc.texteComplexe
if mc.aCreer : self.texteSimple += mc.texteSimple
+ if mc.aCreer : mc.aCreer=False
return
leType=type(self.entites[nomMC][0])
if len(listePourUnion) == 1:
mc=listePourUnion[0]
mc.dumpXsd(dansFactorisation=True,multiple=False,first=first)
- if self.nom == 'B1_B2' and nomMC == 'Numerical': print (mc.dumpXsd)
- self.texteComplexe += '\t'*(indent) + mc.texteElt
- self.texteComplexeVenantDesFils += mc.texteComplexe
- self.texteSimple += mc.texteSimple
+ if mc.aCreer : self.texteComplexe += '\t'*(indent) + mc.texteElt
+ if mc.aCreer : self.texteComplexeVenantDesFils += mc.texteComplexe
+ if mc.aCreer : self.texteSimple += mc.texteSimple
+ for mcIdent in self.entites[nomMC][1:]: mcIdent.metAJourPyxb(mc.nomDuTypePyxb)
return
# on ajoute le nom de l element
print ('Projection XSD impossible, changez un des ', nomMC)
exit()
self.texteComplexe += '\t'*(indent) + self.entites[nomMC][0].texteElt
- texteSimpleUnion=debutSimpleType.format(self.entites[nomMC][0].nomDuTypePyxb)
+ nomTypePyxbUnion=self.entites[nomMC][0].nomDuTypePyxb
+ texteSimpleUnion=debutSimpleType.format(nomTypePyxbUnion)
texteSimpleUnion+=debutUnion
if len(listePourUnion) == 1 :
#PN 29 septembtre 20. Est ce que ce if a un sens
# si on ext un mc simple la ligne suivante est inutile
# en revanche on ajoute le texte a tous les coups
self.texteComplexeVenantDesFils += e.texteComplexe
+ e.metAJourPyxb(nomTypePyxbUnion)
first=first * 0
texteSimpleUnion += '\t'*(indent)+e.texteSimple
texteSimpleUnion += finUnion
class X_SIMP (X_definition):
#--------------------------------
def dumpXsd(self, dansFactorisation=False, multiple = False, first=False):
- #print ('_______________' , '*******************', 'je passe la dans dumpXsd SIMP', self.nom, multiple, first)
#if PourTraduction : print (self.nom)
self.prepareDumpXSD()
if multiple : self.inUnion=True
#print ('minOccurs',minOccurs)
# le defaut est dans l elt Name -> tester la coherence d existence avec Accas
# regles Accas
- if (hasattr (self, 'nomXML')) and self.nomXML != None : nomUtil=self.nomXML
- else : nomUtil = self.nom
# pas d elt si on est dans multiple
# sauf si on est le '1er' dans un element ambigu
# a revoir pour les tuples avec defaut
txtDefaut=""
for val in self.defaut : txtDefaut+=str(val) +" "
- self.texteElt = eltWithDefautDsSequence.format(nomUtil,self.code,self.nomDuTypePyxb,minOccurs,1,txtDefaut)
+ self.texteElt = eltWithDefautDsSequence.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,txtDefaut)
else :
if str(self.defaut) == 'True' : txtDefaut = 'true'
else : txtDefaut = str(self.defaut)
- self.texteElt = eltWithDefautDsSequence.format(nomUtil,self.code,self.nomDuTypePyxb,minOccurs,1,txtDefaut)
- else : self.texteElt = eltDsSequence.format(nomUtil,self.code,self.nomDuTypePyxb,minOccurs,1)
+ self.texteElt = eltWithDefautDsSequence.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,txtDefaut)
+ else : self.texteElt = eltDsSequence.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1)
elif first:
- self.texteElt = eltDsSequence.format(nomUtil,self.code,self.nomDuTypePyxb,1,1)
+ self.texteElt = eltDsSequence.format(self.nom,self.code,self.nomDuTypePyxb,1,1)
# self.aCreer est mis a jour ds definitNomDuTypePyxb
# ou si elt est le 1er d une liste identique
#if not PourTraduction : print (self.texteXSD)
dico = {}
+ #import pprint
+ #pprint.pprint(cata.dictTypesXSD)
for k in list(cata.dictTypesXSD.keys()):
- if len(cata.dictTypesXSD[k]) > 1:
- dico[k]={}
- for definition in cata.dictTypesXSD[k] :
- # un bloc n est pas instancie en xml
- if definition.label == 'BlocAmbigu' : continue
- nom=definition.nomComplet()
- dico[k][nom]=definition.nomDuTypePyxb
+ dico[k]={}
+ for definition in cata.dictTypesXSD[k] :
+ if definition.label == 'BLOC' or definition.label == 'BlocAmbigu':continue
+ nom=definition.nomComplet()
+ if k =='T_NumericalMethod' : print (nom)
+ if definition.nomDuTypePyxb != 'T_'+definition.nom : dico[k][nom]=definition.nomDuTypePyxb
+ if dico[k]== {} : del dico[k]
+ #import pprint
+ #pprint.pprint(dico)
if dico != {} : self.texteXSD += texteAnnotation.format(str(dico))
#import pprint