self.entites={}
self.mcXSD=[]
self.ordre_mc=[]
+ self.lesConditions = 'Possible Conditions : '
for mc in listeDeCreation :
+ self.lesConditions += '\n\t\t\t\t\t\t' + mc.condition
self.mcXSD.append(mc)
self.ordre_mc.append(mc.nom)
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)
+ self.texteElt=substDsSequence.format(self.code,self.nomDuTypePyxb,0,1, self.lesConditions)
def nomComplet(self) :
print ('dans nomComplet pourquoi ?',self, self.nom)
print ('2 blocs freres ont le meme nom et pas le meme type : pas encore traite')
print ('Projection XSD impossible, changez un des ', nomMC)
exit()
- self.texteComplexe += '\t'*(indent) + self.entites[nomMC][0].texteElt
+
+ texteDocUnion='\n'
+ i=1
+ for mc in self.entites[nomMC]:
+ if mc.ang != '' : texteDocUnion += str(i) + '- ' + mc.ang + ' or \n'; i=i+1
+ elif mc .fr != '' : texteDocUnion += str(i) + '- ' + mc.fr + ' ou \n'; i=i+1
+ if texteDocUnion == '\n' :
+ self.texteComplexe += '\t'*(indent) + self.entites[nomMC][0].texteElt
+ else :
+ texteDocUnion = texteDocUnion[0:-4]
+ debutTexteEltUnion = self.entites[nomMC][0].texteElt.split('maxOccurs=')[0]
+ self.texteComplexe += '\t'*(indent)+ reconstitueUnion.format(debutTexteEltUnion,texteDocUnion)
nomTypePyxbUnion=self.entites[nomMC][0].nomDuTypePyxb
texteSimpleUnion=debutSimpleType.format(nomTypePyxbUnion)
texteSimpleUnion+=debutUnion
else : self.maxOccurs = self.max
self.minOccurs = self.min
if self.statut =='f' : self.minOccurs=0
+ if self.statut =='o' and self.min < 2: self.minOccurs=1
def construitArbrePossibles(self):
if self.statut == 'f' :
else :
self.texteComplexe = ""
- self.texteElt=substDsSequence.format(self.code,self.nomDuTypePyxb,0,1)
+ self.texteElt=substDsSequence.format(self.code,self.nomDuTypePyxb,0,1,'condition : ' +self.condition)
#print ('------------------------------------------------')
class X_SIMP (X_definition):
#--------------------------------
def dumpXsd(self, dansFactorisation=False, multiple=False, first=False, debug=False):
+ debug = True
#if PourTraduction : print (self.nom)
if debug : print ('X_SIMP dumpXsd pour', self.nom, '___________________________')
self.prepareDumpXSD()
if debug : print ('nomDuTypePyxb', self.nomDuTypePyxb)
if debug : print ('aCreer', self.aCreer)
+
+
# on se sert des listes ou non pour la gestion des minOccurs /maxOccurs est > 0
if self.statut =='f' : minOccurs = 0
else : minOccurs = 1
if dansFactorisation : minOccurs = 1
+ if self.suisUneMatrice :
+ self.dumpSpecifiqueMatrice(minOccurs)
+ return
+
#print ('minOccurs',minOccurs)
# le defaut est dans l elt Name -> tester la coherence d existence avec Accas
# regles Accas
# sauf si on est le '1er' dans un element ambigu
if not multiple :
#print ('je passe la pas multiple')
+ texteAide = ""
+ if self.ang != '' : texteAide = self.ang
+ else : texteAide = self.fr
+ if self.intoXML and self.into :
+ if self.intoXML != self.into :
+ #print ('je passe la pour ', self.nom)
+ texteAide :texteAide = texteAide+'\nPossible choices for '+ self.nom + 'at this place : \n'+str(self.into)+'\n'
+
if self.defaut :
if self.max > 1 or self.max == '**' or self.max == float('inf') :
txtDefaut=""
if not('TXM' in (self.type)) : separe = ' '
else : separe ='\n'
- for val in self.defaut :
- txtDefaut+=str(val) + separe
+ for val in self.defaut : txtDefaut+=str(val) + separe
txtDefaut+=txtDefaut[0:-1]
if not('TXM' in (self.type)) :
# a revoir pour les tuples avec defaut
- if self.ang != '' : self.texteElt = eltDsSequenceWithDefautAndHelp.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,txtDefaut,self.ang)
- elif self.fr != '' : self.texteElt = eltDsSequenceWithDefautAndHelp.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,txtDefaut,self.fr)
+ if texteAide != '' : self.texteElt = eltDsSequenceWithDefautAndHelp.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,txtDefaut,texteAide)
else : self.texteElt = eltDsSequenceWithDefaut.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,txtDefaut)
else :
- if self.ang != '' : texteAide = self.ang
- else : texteAide = self.fr
- texteAide :texteAide = texteAide+'\ndefault Value in MDM : \n'+txtDefaut
+ texteAide += texteAide+'\ndefault Value in MDM : \n'+txtDefaut
self.texteElt = eltDsSequenceWithHelp.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,texteAide)
else :
if str(self.defaut) == 'True' : txtDefaut = 'true'
elif str(self.defaut) == 'False' : txtDefaut = 'false'
- else : txtDefaut = str(self.defaut)
- if self.ang != '' : self.texteElt = eltDsSequenceWithDefautAndHelp.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,txtDefaut,self.ang)
- elif self.fr != '' : self.texteElt = eltDsSequenceWithDefautAndHelp.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,txtDefaut,self.fr)
+ else : txtDefaut = str(self.defaut)+('\n')
+ if texteAide != '' : self.texteElt = eltDsSequenceWithDefautAndHelp.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,txtDefaut,texteAide)
else : self.texteElt = eltDsSequenceWithDefaut.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,txtDefaut)
else :
- if self.ang != '' : self.texteElt = eltDsSequenceWithHelp.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,self.ang)
- elif self.fr != '' : self.texteElt = eltDsSequenceWithHelp.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,self.fr)
- else : self.texteElt = eltDsSequence.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,self.ang)
+ if texteAide != '' : self.texteElt = eltDsSequenceWithHelp.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,texteAide)
+ else : self.texteElt = eltDsSequence.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1)
elif first:
- # PNPN --> Que faire de l'aide ?
+ # l'aide est geree a la fusion
self.texteElt = eltDsSequence.format(self.nom,self.code,self.nomDuTypePyxb,1,1)
# self.aCreer est mis a jour ds definitNomDuTypePyxb
self.texteSimple = self.texteSimplePart1 + self.texteSimplePart2
+ def dumpSpecifiqueMatrice(self,minOccurs):
+ # if faut traiter le defaut
+ typeDeMatrice =self.type[0]
+
+ self.texteSimple += debutSimpleType.format(self.nomDuTypePyxb+'_element')
+ self.texteSimple += debutRestrictionBase.format(self.nomDuTypeDeBase)
+ if typeDeMatrice.typEltInto != None:
+ for val in typeDeMatrice.typEltInto : self.texteSimple += enumeration.format(val)
+ self.texteSimple += fermeRestrictionBase
+ self.texteSimple += fermeSimpleType
+ nom=self.nomDuTypePyxb
+ nbCols=typeDeMatrice.nbCols
+ nbLigs=typeDeMatrice.nbCols
+ self.texteSimple += matriceSimpleType.format(nom,nom,nbCols,nom,self.nom,self.code,nom,nbLigs,nbLigs,nom,self.code,nom,self.min,self.max)
+ self.texteElt = "\t\t\t\t"+eltMatrice.format(self.code,nom,minOccurs,1)+"\n"
+
+
def prepareDumpXSD(self):
self.inUnion=False
if self.statut == 'f' : self.arbrePossibles = (self.nom,[])
- def traduitType(self):
+ def traduitType(self,debug=False):
# il faut traduire le min et le max
# il faut ajouter les regles
# il faut gerer les types tuple et fichier
+ # on ne paut pas tester le type qui depend du cataloge
+ if hasattr(self.type[0], 'typElt') :
+ #print ('je suis une Matrice de ' ,dictNomsDesTypes[self.type[0].typElt])
+ self.suisUneMatrice = True
+ return dictNomsDesTypes[self.type[0].typElt]
+ else :
+ self.suisUneMatrice = False
if hasattr(self.type[0], 'ntuple') :
try :
leType=self.validators.typeDesTuples[0]
if self.implement == self.code :
self.texteCata += eltAbstraitCataPPal.format(self.code)
- #if self.ang != '' : self.texteCataWithHelp += eltCataPPal.format(self.code,self.code,self.code, self.ang)
- #elif self.fr != '' : self.texteCataWithHelp += eltCataPPal.format(self.code,self.code,self.code, self.fr)
if 0 : pass
else : self.texteCata += eltCataPPal.format(self.code,self.code,self.code)
else :
self.texteCata += eltAbstraitCataFils.format(self.implement,self.nomDuXsdPere,self.nomDuXsdPere)
- #if self.ang != '' : self.texteCata += eltCataFilsWithHelp.format(self.implement,self.nomDuXsdPere,self.nomDuXsdPere,self.nomDuXsdPere)
- #elif self.fr != '' : self.texteCata += eltCataFilsWithHelp.format(self.implement,self.nomDuXsdPere,self.nomDuXsdPere,self.nomDuXsdPere)
if 0 : pass
else : self.texteCata += eltCataFils.format(self.implement,self.nomDuXsdPere,self.nomDuXsdPere,self.nomDuXsdPere)
self.texteInclusion += includeCata.format(self.nomDuXsdPere)