Salome HOME
reindent + copyright + merge manuel avec la V9_dev sauf repertoires metier
[tools/eficas.git] / OldCodes / Med / model.xsd
1 <?xml version="1.0" encoding="UTF-8"?>\r
2 <!-- edited with XMLSpy v2014 rel. 2 (x64) (http://www.altova.com) by BC (ED) -->\r
3 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns="http://chercheurs.edf.com/logiciels/efficas" xmlns:efficas="http://chercheurs.edf.com/logiciels/efficas" xmlns:altova="http://www.altova.com/xml-schema-extensions" targetNamespace="http://chercheurs.edf.com/logiciels/efficas" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0" vc:minVersion="1.1">\r
4         <xs:element name="doc" type="T_doc"/>\r
5         <xs:element name="cata" type="T_cata"/>\r
6         <xs:element name="regles" type="T_regles"/>\r
7         <xs:element name="typeCree" type="T_classe_utilisateur"/>\r
8         <xs:element name="ValeurDef" type="T_typeAttendu"/>\r
9         <xs:element name="ValeurSugg" type="T_typeAttendu"/>\r
10         <xs:element name="fonction_utilisateur" type="T_fonction_python"/>\r
11         <xs:element name="commandes" type="T_commandes">\r
12                 <xs:unique name="Uniq_Command">\r
13                         <xs:selector xpath="*"/>\r
14                         <xs:field xpath="@efficas:nom"/>\r
15                 </xs:unique>\r
16                 <xs:key name="Uniq_Name_In_Oper">\r
17                         <xs:annotation>\r
18                                 <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
19                         </xs:annotation>\r
20                         <xs:selector xpath="./OPER/BLOC |./OPER/FACT|./OPER/SIMP"/>\r
21                         <xs:field xpath="@efficas:nom"/>\r
22                 </xs:key>\r
23                 <xs:keyref name="Ref_A_Name_In_Oper" refer="Uniq_Name_In_Oper">\r
24                         <xs:selector xpath="./OPER/regles"/>\r
25                         <xs:field xpath="EXCLUS"/>\r
26                 </xs:keyref>\r
27                 <xs:key name="Uniq_Name_In_Proc">\r
28                         <xs:annotation>\r
29                                 <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
30                         </xs:annotation>\r
31                         <xs:selector xpath="./PROC/BLOC | ./PROC/FACT| ./PROC/SIMP"/>\r
32                         <xs:field xpath="@efficas:nom"/>\r
33                 </xs:key>\r
34                 <xs:keyref name="Ref_A_Name_In_Proc" refer="Uniq_Name_In_Proc">\r
35                         <xs:selector xpath="./PROC/regles"/>\r
36                         <xs:field xpath="EXCLUS"/>\r
37                 </xs:keyref>\r
38         </xs:element>\r
39         <xs:element name="validators" type="T_validators"/>\r
40         <xs:element name="PlageValeur" type="T_PlageValeur"/>\r
41         <xs:element name="typeAttendu" type="T_name"/>\r
42         <xs:element name="classeUtilisateurName" type="T_classe_utilisateur_username" abstract="true" substitutionGroup="typeAttendu"/>\r
43         <xs:element name="SIMP" type="T_SIMP"/>\r
44         <xs:element name="portee" type="T_portee" default="None"/>\r
45         <xs:element name="condition" type="T_fonction_python"/>\r
46         <xs:element name="borne_sup" type="T_typeAttendu"/>\r
47         <xs:element name="borne_inf" type="T_typeAttendu"/>\r
48         <!--    <xs:element name="into" type="T_into"/>-->\r
49         <xs:element name="into" type="T_into"/>\r
50         <!--    <xs:element name="into_plus_fonction" type="T_into" abstract="true" substitutionGroup="into"/>-->\r
51         <xs:attribute name="nom" type="AT_nom"/>\r
52         <xs:attribute name="ag" type="AT_ag"/>\r
53         <xs:attribute name="fr" type="xs:string"/>\r
54         <xs:attribute name="ang" type="xs:string"/>\r
55         <xs:attribute name="docu" type="AT_docu"/>\r
56         <xs:attribute name="valeur_sugg" type="AT_valeur_sugg"/>\r
57         <xs:attribute name="statut" type="AT_statut" default="o"/>\r
58         <xs:attribute name="max_occurs" type="AT_max_occurs"/>\r
59         <xs:attribute name="min_occurs" type="AT_min_occurs"/>\r
60         <xs:attribute name="subroutine" type="AT_subroutine" default="None"/>\r
61         <xs:complexType name="T_doc">\r
62                 <xs:attribute ref="fr" use="optional"/>\r
63                 <xs:attribute ref="ang"/>\r
64                 <xs:attribute ref="docu"/>\r
65         </xs:complexType>\r
66         <xs:complexType name="T_cata">\r
67                 <xs:sequence>\r
68                         <xs:element ref="commandes" minOccurs="0" maxOccurs="unbounded"/>\r
69                 </xs:sequence>\r
70         </xs:complexType>\r
71         <xs:complexType name="T_commandes">\r
72                 <xs:choice minOccurs="0" maxOccurs="unbounded">\r
73                         <xs:element ref="OPER"/>\r
74                         <xs:element ref="PROC"/>\r
75                 </xs:choice>\r
76         </xs:complexType>\r
77         <xs:complexType name="T_Cardinalite"/>\r
78         <xs:complexType name="T_PlageValeur">\r
79                 <xs:choice>\r
80                         <xs:sequence>\r
81                                 <xs:element ref="borne_sup" minOccurs="0"/>\r
82                                 <xs:element ref="borne_inf" minOccurs="0"/>\r
83                         </xs:sequence>\r
84                         <xs:element ref="into"/>\r
85                 </xs:choice>\r
86         </xs:complexType>\r
87         <xs:complexType name="T_Accas.Common">\r
88                 <xs:sequence>\r
89                         <xs:element ref="regles" minOccurs="0"/>\r
90                         <xs:element ref="doc" minOccurs="0"/>\r
91                         <xs:choice maxOccurs="unbounded">\r
92                                 <xs:element ref="BLOC"/>\r
93                                 <xs:element ref="FACT"/>\r
94                                 <xs:element ref="SIMP"/>\r
95                         </xs:choice>\r
96                 </xs:sequence>\r
97                 <xs:attribute ref="nom" use="required"/>\r
98         </xs:complexType>\r
99         <xs:element name="OPER" type="T_OPER"/>\r
100         <xs:complexType name="T_OPER">\r
101                 <xs:complexContent>\r
102                         <xs:extension base="T_Accas.Common">\r
103                                 <xs:sequence>\r
104                                         <xs:element ref="typeCree"/>\r
105                                 </xs:sequence>\r
106                                 <xs:attribute ref="subroutine"/>\r
107                         </xs:extension>\r
108                 </xs:complexContent>\r
109         </xs:complexType>\r
110         <xs:element name="PROC" type="T_PROC">\r
111                 <xs:unique name="Uniqb_NAme_In_PRoc">\r
112                         <xs:selector xpath="BLOC|FACT|SIMP"/>\r
113                         <xs:field xpath="@efficas:nom"/>\r
114                 </xs:unique>\r
115         </xs:element>\r
116         <xs:complexType name="T_PROC">\r
117                 <xs:complexContent>\r
118                         <xs:extension base="T_Accas.Common">\r
119                                 <xs:attribute ref="subroutine"/>\r
120                         </xs:extension>\r
121                 </xs:complexContent>\r
122         </xs:complexType>\r
123         <xs:element name="FACT" type="T_FACT"/>\r
124         <!--    <xs:complexType name="T_FACT">\r
125                 <xs:complexContent>\r
126                         <xs:restriction base="T_Accas.Common">\r
127                                 <xs:sequence>\r
128                                         <xs:element ref="regles" minOccurs="0"/>\r
129                                         <xs:element ref="doc" minOccurs="0"/>\r
130                                         <xs:choice maxOccurs="unbounded">\r
131                                                 <xs:element ref="BLOC"/>\r
132                                                 <xs:element ref="FACT"/>\r
133                                                 <xs:element ref="SIMP"/>\r
134                                         </xs:choice>\r
135                                 </xs:sequence>\r
136                         </xs:restriction>\r
137                 </xs:complexContent>\r
138         </xs:complexType>-->\r
139         <xs:complexType name="T_FACT">\r
140                 <xs:complexContent>\r
141                         <xs:extension base="T_Accas.Common">\r
142                                 <xs:attribute ref="statut"/>\r
143                                 <xs:attribute ref="min_occurs" default="1"/>\r
144                                 <xs:attribute ref="max_occurs" default="1">\r
145                                         <xs:annotation>\r
146                                                 <xs:documentation>La valuer -1 equivaut à oo</xs:documentation>\r
147                                         </xs:annotation>\r
148                                 </xs:attribute>\r
149                                 <xs:assert test=".[exists(@efficas:max_occurs) and exists(@efficas:min_occurs) and @efficas:max_occurs  gt @efficas:min_occurs]"/>\r
150                                 <!--<xs:assert test="if (.[exists(@efficas:max_occurs)] and .[exists(@efficas:min_occurs)] ) then (@efficas:max_occurs  gt @efficas:min_occurs) or @efficas:max_occurs = -1 else true" altova:message="Erreur max_occurs  > min_occurs "/>-->\r
151                         </xs:extension>\r
152                 </xs:complexContent>\r
153         </xs:complexType>\r
154         <xs:simpleType name="T_fonction_python">\r
155                 <xs:restriction base="xs:string"/>\r
156         </xs:simpleType>\r
157         <xs:element name="BLOC" type="T_BLOC"/>\r
158         <xs:complexType name="T_BLOC">\r
159                 <xs:complexContent>\r
160                         <xs:extension base="T_Accas.Common">\r
161                                 <xs:sequence>\r
162                                         <xs:element ref="condition"/>\r
163                                 </xs:sequence>\r
164                         </xs:extension>\r
165                 </xs:complexContent>\r
166         </xs:complexType>\r
167         <xs:complexType name="T_SIMP">\r
168                 <xs:sequence>\r
169                         <xs:element ref="doc" minOccurs="0"/>\r
170                         <xs:element ref="portee" minOccurs="0">\r
171                                 <xs:annotation>\r
172                                         <xs:documentation>La portée pouurait devenir un attribut de SIMP. Une autre solution consisterait a créer un SIMPG pour distinguer les @nom uniques des SIMP a portée globale des autres.</xs:documentation>\r
173                                 </xs:annotation>\r
174                         </xs:element>\r
175                         <xs:element ref="ValeurDef" minOccurs="0"/>\r
176                         <xs:element ref="ValeurSugg" minOccurs="0"/>\r
177                         <xs:element ref="PlageValeur" minOccurs="0"/>\r
178                         <xs:element ref="typeAttendu"/>\r
179                         <xs:element ref="validators" minOccurs="0"/>\r
180                 </xs:sequence>\r
181                 <xs:attribute ref="nom" use="required"/>\r
182                 <xs:attribute ref="statut"/>\r
183                 <xs:attribute ref="min_occurs" default="1"/>\r
184                 <xs:attribute ref="max_occurs" default="1">\r
185                         <xs:annotation>\r
186                                 <xs:documentation>La valuer -1 equivaut à oo</xs:documentation>\r
187                         </xs:annotation>\r
188                 </xs:attribute>\r
189         </xs:complexType>\r
190         <xs:simpleType name="AT_statut">\r
191                 <xs:restriction base="xs:string">\r
192                         <xs:enumeration value="f"/>\r
193                         <xs:enumeration value="o"/>\r
194                 </xs:restriction>\r
195         </xs:simpleType>\r
196         <!--<xs:simpleType name="T_repetable">\r
197                 <xs:restriction base="xs:string">\r
198                         <xs:enumeration value="n"/>\r
199                         <xs:enumeration value="o"/>\r
200                 </xs:restriction>\r
201         </xs:simpleType>-->\r
202         <xs:simpleType name="T_portee">\r
203                 <xs:restriction base="xs:string">\r
204                         <xs:enumeration value="None"/>\r
205                         <xs:enumeration value="Global"/>\r
206                 </xs:restriction>\r
207         </xs:simpleType>\r
208         <xs:simpleType name="AT_max_occurs">\r
209                 <xs:restriction base="xs:long">\r
210                         <xs:minInclusive value="-1"/>\r
211                 </xs:restriction>\r
212         </xs:simpleType>\r
213         <xs:simpleType name="AT_min_occurs">\r
214                 <xs:restriction base="xs:long">\r
215                         <xs:minExclusive value="0"/>\r
216                 </xs:restriction>\r
217         </xs:simpleType>\r
218         <!-- Comparable -->\r
219         <!--    <xs:simpleType name="AT_borne_sup">\r
220         <xs:atomic base="xs:double"/>\r
221         </xs:simpleType>\r
222         <xs:simpleType name="AT_borne_inf">\r
223                 <xs:restriction base="xs:double"/>\r
224         </xs:simpleType>\r
225 -->\r
226         <xs:simpleType name="AT_ag">\r
227                 <xs:restriction base="xs:string">\r
228                         <xs:enumeration value="No comment"/>\r
229                 </xs:restriction>\r
230         </xs:simpleType>\r
231         <xs:simpleType name="AT_docu">\r
232                 <xs:annotation>\r
233                         <xs:documentation>Référence une position dans un fichier maître contenant une liste de références à des pages de documentations</xs:documentation>\r
234                 </xs:annotation>\r
235                 <xs:restriction base="xs:string"/>\r
236         </xs:simpleType>\r
237         <xs:simpleType name="AT_valeur_sugg">\r
238                 <xs:restriction base="xs:string"/>\r
239         </xs:simpleType>\r
240         <!-- TODO: Exclure mots clés python|efficas -->\r
241         <xs:simpleType name="AT_nom">\r
242                 <xs:restriction base="xs:string">\r
243                         <xs:pattern value="([A-Z]|[a-z]|_)([A-Z]|[a-z]|_|[0-9])*"/>\r
244                 </xs:restriction>\r
245         </xs:simpleType>\r
246         <xs:simpleType name="T_predicat1">\r
247                 <xs:list itemType="AT_nom"/>\r
248                 <!-- TODO: Supprimer la liste -->\r
249         </xs:simpleType>\r
250         <xs:complexType name="T_predicat2">\r
251                 <xs:sequence>\r
252                         <xs:element name="p1" type="T_predicat1" minOccurs="1"/>\r
253                         <xs:element name="p2" type="AT_nom" minOccurs="1"/>\r
254                 </xs:sequence>\r
255                 <!-- TODO: Supprimer la séquence -->\r
256         </xs:complexType>\r
257         <xs:element name="A_CLASSER" type="T_predicat2"/>\r
258         <xs:element name="AU_MOINS_UN" type="T_predicat1"/>\r
259         <xs:element name="AU_PLUS_UN" type="T_predicat1"/>\r
260         <xs:element name="ENSEMBLE" type="T_predicat1"/>\r
261         <xs:element name="EXCLUS" type="T_predicat1">\r
262                 <!-- A priori, ce n'est pas l'endroit pour le placer : ? scope de Uniq_Command-->\r
263                 <!--            <xs:keyref name="referToAnAlreadyDefinedName" refer="Uniq_Command">\r
264                         <xs:selector xpath="."/>\r
265                         <xs:field xpath="."/>\r
266                 </xs:keyref>\r
267 -->\r
268         </xs:element>\r
269         <xs:element name="PRESENT_ABSENT" type="T_predicat1"/>\r
270         <xs:element name="PRESENT_PRESENT" type="T_predicat1"/>\r
271         <xs:element name="UN_PARMI" type="T_predicat1"/>\r
272         <xs:group name="predicat">\r
273                 <xs:choice>\r
274                         <xs:element ref="A_CLASSER"/>\r
275                         <xs:element ref="AU_MOINS_UN"/>\r
276                         <xs:element ref="AU_PLUS_UN"/>\r
277                         <xs:element ref="ENSEMBLE"/>\r
278                         <xs:element ref="EXCLUS">\r
279                                 <!-- A priori, ce n'est pas l'endroit pour le placer -->\r
280                                 <!--                            <xs:keyref name="referToAnAlreadyDefinedName" refer="/Uniq_Command">\r
281                                         <xs:selector xpath="."/>\r
282                                         <xs:field xpath="."/>\r
283                                 </xs:keyref>\r
284 -->\r
285                         </xs:element>\r
286                         <xs:element ref="PRESENT_ABSENT"/>\r
287                         <xs:element ref="PRESENT_PRESENT"/>\r
288                         <xs:element ref="UN_PARMI"/>\r
289                 </xs:choice>\r
290         </xs:group>\r
291         <xs:complexType name="T_regles">\r
292                 <xs:sequence maxOccurs="unbounded">\r
293                         <xs:group ref="predicat"/>\r
294                 </xs:sequence>\r
295         </xs:complexType>\r
296         <!--    <xs:simpleType name="T_typeCree">\r
297                 <xs:restriction base="T_classe_utilisateur"/>\r
298         </xs:simpleType>\r
299 -->\r
300         <xs:simpleType name="AT_subroutine">\r
301                 <xs:restriction base="AT_nom"/>\r
302         </xs:simpleType>\r
303         <xs:simpleType name="T_validators">\r
304                 <xs:restriction base="xs:string">\r
305                         <xs:enumeration value="NoRepeat"/>\r
306                         <xs:enumeration value="OnlyStr"/>\r
307                         <xs:enumeration value="VerifExiste"/>\r
308                         <xs:enumeration value="VerifTypeTuple"/>\r
309                 </xs:restriction>\r
310         </xs:simpleType>\r
311         <xs:simpleType name="T_Bool">\r
312                 <xs:restriction base="xs:boolean"/>\r
313         </xs:simpleType>\r
314         <xs:simpleType name="T_list_Bool">\r
315                 <xs:list itemType="T_Bool"/>\r
316         </xs:simpleType>\r
317         <xs:simpleType name="T_I">\r
318                 <xs:restriction base="xs:int"/>\r
319         </xs:simpleType>\r
320         <xs:simpleType name="T_list_I">\r
321                 <xs:list itemType="T_I"/>\r
322         </xs:simpleType>\r
323         <xs:simpleType name="T_R">\r
324                 <xs:restriction base="xs:double"/>\r
325         </xs:simpleType>\r
326         <xs:simpleType name="T_list_R">\r
327                 <xs:list itemType="T_R"/>\r
328         </xs:simpleType>\r
329         <xs:simpleType name="T_TXM">\r
330                 <xs:restriction base="AT_nom"/>\r
331         </xs:simpleType>\r
332         <xs:simpleType name="T_list_TXM">\r
333                 <xs:list itemType="T_TXM"/>\r
334         </xs:simpleType>\r
335         <!--fonctionne mais ne permet pas de créer une liste de liste -->\r
336         <xs:simpleType name="T_C">\r
337                 <xs:restriction>\r
338                         <xs:simpleType>\r
339                                 <xs:list itemType="xs:double"/>\r
340                         </xs:simpleType>\r
341                         <xs:minLength value="2"/>\r
342                         <xs:maxLength value="2"/>\r
343                 </xs:restriction>\r
344         </xs:simpleType>\r
345         <!-- Ajouter une contrainte : taille pair -->\r
346         <!-- Il n'est pas possible de définir des listes de listes -->\r
347         <xs:simpleType name="T_list_C">\r
348                 <xs:list itemType="xs:double"/>\r
349         </xs:simpleType>\r
350         <xs:simpleType name="T_name_base">\r
351                 <xs:restriction base="AT_nom"/>\r
352         </xs:simpleType>\r
353         <xs:simpleType name="T_simple_name">\r
354                 <xs:restriction base="T_name_base">\r
355                         <xs:enumeration value="Fichier"/>\r
356                         <xs:enumeration value="Repertoire"/>\r
357                         <xs:enumeration value="TXM"/>\r
358                         <xs:enumeration value="I"/>\r
359                         <xs:enumeration value="R"/>\r
360                         <xs:enumeration value="C"/>\r
361                         <xs:enumeration value="Bool"/>\r
362                         <xs:enumeration value="grma"/>\r
363                         <xs:enumeration value="grno"/>\r
364                         <xs:enumeration value="SalomeEntry"/>\r
365                 </xs:restriction>\r
366         </xs:simpleType>\r
367         <!-- On ne peut pas rendre abstrait un simpleType && \r
368           Il n'est pas possible de dérivé par restriction un simplecontent d'un type complex qui\r
369           lui peut être abstrait\r
370     -->\r
371         <xs:simpleType name="T_classe_utilisateur_name">\r
372                 <xs:restriction base="T_name">\r
373                         <xs:enumeration value="T_classe_utilisateur"/>\r
374                 </xs:restriction>\r
375         </xs:simpleType>\r
376         <xs:complexType name="T_classe_utilisateur_username">\r
377                 <xs:simpleContent>\r
378                         <xs:extension base="T_classe_utilisateur_name">\r
379                                 <xs:attribute ref="nom" use="required"/>\r
380                         </xs:extension>\r
381                 </xs:simpleContent>\r
382         </xs:complexType>\r
383         <xs:simpleType name="T_name">\r
384                 <xs:union memberTypes="T_simple_name">\r
385                         <xs:simpleType>\r
386                                 <xs:restriction base="AT_nom">\r
387                                         <xs:enumeration value="T_Matrice_double"/>\r
388                                         <xs:enumeration value="T_Matrice_Symetrique_double"/>\r
389                                         <xs:enumeration value="T_tuple"/>\r
390                                         <xs:enumeration value="T_classe_utilisateur"/>\r
391                                 </xs:restriction>\r
392                         </xs:simpleType>\r
393                 </xs:union>\r
394         </xs:simpleType>\r
395         <xs:complexType name="T_grma"/>\r
396         <xs:complexType name="T_grno"/>\r
397         <xs:complexType name="T_SalomeEntry"/>\r
398         <xs:complexType name="T_Fichier"/>\r
399         <!--    <xs:complexType name="T_Repertoire"/>-->\r
400         <xs:simpleType name="T_Repertoire">\r
401                 <xs:list>\r
402                         <xs:simpleType>\r
403                                 <xs:restriction base="xs:string">\r
404                                         <xs:whiteSpace value="preserve"/>\r
405                                 </xs:restriction>\r
406                         </xs:simpleType>\r
407                 </xs:list>\r
408         </xs:simpleType>\r
409         <xs:simpleType name="T_simple">\r
410                 <xs:union memberTypes="T_I T_list_I T_R T_list_R T_C T_list_C T_TXM T_list_TXM T_Bool T_list_Bool T_Repertoire"/>\r
411         </xs:simpleType>\r
412         <!--    <xs:complexType name="T_TXM"/>-->\r
413         <!--    <xs:simpleType name="T_simple">\r
414                 <xs:restriction base="xs:string">\r
415                         <xs:enumeration value="Fichier"/>\r
416                         <xs:enumeration value="Repertoire"/>\r
417                         <xs:enumeration value="TXM"/>\r
418                         <xs:enumeration value="I"/>\r
419                         <xs:enumeration value="R"/>\r
420                         <xs:enumeration value="C"/>\r
421                         <xs:enumeration value="Bool"/>\r
422                         <xs:enumeration value="grma"/>\r
423                         <xs:enumeration value="grno"/>\r
424                         <xs:enumeration value="SalomeEntry"/>\r
425                 </xs:restriction>\r
426         </xs:simpleType>\r
427 -->\r
428         <xs:simpleType name="T_list_double">\r
429                 <xs:list itemType="xs:double"/>\r
430         </xs:simpleType>\r
431         <!-- Possibilité d'utiliser un type paramétré ? -->\r
432         <xs:complexType name="T_Matrice_double">\r
433                 <xs:simpleContent>\r
434                         <xs:extension base="T_list_double">\r
435                                 <xs:attribute name="n" type="xs:integer" use="required"/>\r
436                                 <xs:attribute name="m" type="xs:integer" use="required"/>\r
437                         </xs:extension>\r
438                 </xs:simpleContent>\r
439         </xs:complexType>\r
440         <!-- Faire l'exercice de dériver de T_Matrice_double -->\r
441         <xs:complexType name="T_Matrice_Symetrique_double">\r
442                 <xs:simpleContent>\r
443                         <xs:extension base="T_list_double">\r
444                                 <xs:attribute name="n" type="xs:int" use="required"/>\r
445                         </xs:extension>\r
446                 </xs:simpleContent>\r
447         </xs:complexType>\r
448         <!-- Une liste est aussi un type simple !!!! -->\r
449         <!--    <xs:simpleType name="T_list_anySimpleType">\r
450                 <xs:list itemType="xs:anySimpleType"/>\r
451         </xs:simpleType>\r
452 -->\r
453         <!-- Le fait de ne pas déclarer une liste risque d'être problématique pour le parsing : A voir-->\r
454         <xs:complexType name="T_tuple">\r
455                 <xs:simpleContent>\r
456                         <xs:extension base="xs:anySimpleType">\r
457                                 <xs:attribute name="n" type="xs:int" use="required"/>\r
458                         </xs:extension>\r
459                 </xs:simpleContent>\r
460         </xs:complexType>\r
461         <xs:simpleType name="T_classe_utilisateur">\r
462                 <xs:restriction base="AT_nom"/>\r
463         </xs:simpleType>\r
464         <xs:element name="typesimple" type="T_simple"/>\r
465         <xs:element name="matrice_double" type="T_Matrice_double"/>\r
466         <xs:element name="matrice_symetrique_double" type="T_Matrice_Symetrique_double"/>\r
467         <xs:element name="tuple" type="T_tuple"/>\r
468         <xs:element name="classe_utilisateur" type="T_classe_utilisateur"/>\r
469         <!-- Essai -->\r
470         <!--    <xs:group name="T_Attendu_group1">\r
471                 <xs:choice>\r
472                         <xs:element ref="typesimple"/>\r
473                         <xs:element ref="matrice_double"/>\r
474                         <xs:element ref="matrice_symetrique_double"/>\r
475                         <xs:element ref="tuple"/>\r
476                         <xs:element ref="classe_utilisateur"/>\r
477                 </xs:choice>\r
478         </xs:group>\r
479 \r
480         <xs:group name="T_Attendu_group2">\r
481                 <xs:choice>\r
482                         <xs:element ref="typesimple"/>\r
483                         <xs:element ref="matrice_double"/>\r
484                         <xs:element ref="matrice_symetrique_double"/>\r
485                         <xs:element ref="tuple"/>\r
486                         <xs:element ref="classe_utilisateur"/>\r
487                         <xs:element ref="fonction_utilisateur" minOccurs="1" maxOccurs="unbounded"/>\r
488                 </xs:choice>\r
489         </xs:group>\r
490 \r
491         <xs:complexType name="T_typeAttendu">\r
492                 <xs:group ref="T_Attendu_group1"/>\r
493         </xs:complexType>\r
494         -->\r
495         <!-- Faire plutot un groupe de substitution pour ne pas croiser les choix -->\r
496         <!--\r
497         <xs:complexType name="T_into">\r
498           <xs:group ref="T_Attendu_group2"/>\r
499         </xs:complexType>\r
500         -->\r
501         <xs:complexType name="T_into">\r
502                 <xs:choice>\r
503                         <!--                    <xs:element ref="typesimple" type="T_Base"/>-->\r
504                         <xs:element ref="typesimple" minOccurs="0" maxOccurs="unbounded"/>\r
505                         <xs:element ref="matrice_double" minOccurs="0" maxOccurs="unbounded"/>\r
506                         <xs:element ref="matrice_symetrique_double" minOccurs="0" maxOccurs="unbounded"/>\r
507                         <xs:element ref="tuple" minOccurs="0" maxOccurs="unbounded"/>\r
508                         <xs:element ref="classe_utilisateur" minOccurs="0" maxOccurs="unbounded"/>\r
509                         <xs:element ref="fonction_utilisateur" minOccurs="1" maxOccurs="unbounded"/>\r
510                 </xs:choice>\r
511         </xs:complexType>\r
512         <xs:complexType name="T_typeAttendu">\r
513                 <xs:complexContent>\r
514                         <xs:restriction base="T_into">\r
515                                 <xs:choice>\r
516                                         <xs:element ref="typesimple" minOccurs="0" maxOccurs="unbounded"/>\r
517                                         <xs:element ref="matrice_double" minOccurs="0" maxOccurs="unbounded"/>\r
518                                         <xs:element ref="matrice_symetrique_double" minOccurs="0" maxOccurs="unbounded"/>\r
519                                         <xs:element ref="tuple" minOccurs="0" maxOccurs="unbounded"/>\r
520                                         <xs:element ref="classe_utilisateur" minOccurs="0" maxOccurs="unbounded"/>\r
521                                 </xs:choice>\r
522                         </xs:restriction>\r
523                 </xs:complexContent>\r
524         </xs:complexType>\r
525 </xs:schema>\r
526 <!-- Catalogue EFFICAS équivalent\r
527 \r
528 # coding: utf-8\r
529 from Accas import *\r
530 \r
531 class carte   (ASSD) : pass\r
532 class maille   (ASSD) : pass\r
533 class carte_flux_r   (carte):pass\r
534 \r
535 class NOM_CHAM_INTO:\r
536     def __call__(self, *l_typ_cham, **kwargs):\r
537         return tuple(('A','B','C'))\r
538 C_NOM_CHAM_INTO = NOM_CHAM_INTO()\r
539 \r
540 JdC = JDC_CATA(code='MAP',\r
541                execmodul=None,\r
542                regles=ENSEMBLE('E1','E2','E3')\r
543                )\r
544 \r
545 CREECARTE = OPER(nom="CREECARTE",op=None, sd_prod=carte, UNITE=SIMP(statut='f',typ='I',defaut=21),);\r
546 \r
547 CREECARTEFLUX = OPER(nom="CREECARTEFLUX",op=None, sd_prod=carte_flux_r,\r
548                    NOMFLUX=SIMP(statut='o',typ='TXM',defaut='monFlux'),\r
549                 );\r
550 \r
551 CREEMAILLE = OPER(nom="CREEMAILLE",op=None, sd_prod=maille,\r
552                 NOEUDS=SIMP(statut='o',typ='I',defaut=(1,2),min=2,max=2)\r
553               );\r
554 \r
555 E1=PROC(nom="E1",\r
556         op=None,\r
557         regles    = (EXCLUS('ETAT_INIT','RESULTAT',),),\r
558         ETAT_INIT = FACT(statut='f', max='**',\r
559                          GROUP_MA_1=SIMP(statut='o',typ='I',validators=NoRepeat(),max='**'),\r
560                          GROUP_NO_2=SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),\r
561                     ),\r
562 \r
563         RESULTAT  = FACT(statut='f',\r
564                          DEPL=SIMP(statut='o', typ='R',  validators=NoRepeat()),\r
565                          VITE=SIMP(statut='f', typ='R',  validators=NoRepeat()),\r
566                          ACCE=SIMP(statut='f', typ='R',  validators=NoRepeat()),\r
567                     ), \r
568         );\r
569 \r
570 E2=PROC(nom="E2", op=None,\r
571         regles   = (UN_PARMI('CONCEPT','CHAINE','TOUT' ),),\r
572         CONCEPT  = FACT(statut='f',max='**',\r
573                    NOM = SIMP(statut='o',typ=assd,validators=NoRepeat(),max='**'),\r
574                    ),\r
575         CHAINE   = SIMP(statut='f',typ='TXM'),\r
576         POSITION = SIMP(statut='f',typ='I',defaut=1),\r
577         TOUT     = SIMP(statut='f',typ='TXM',into=("OUI",) ),\r
578         );\r
579 \r
580 E3=PROC(nom="E3",op=None,\r
581         DEFORMATION = SIMP(statut='f',typ='TXM',defaut="PETIT",\r
582                            into=("PETIT","PETIT_REAC","GROT_GDEP","SIMO_MIEHE","GDEF_HYPO_ELAS","GDEF_LOG")),\r
583         b_blocIn    = BLOC(condition = "DEFORMATION in ('PETIT','PETIT_REAC','GROT_GDEP')",\r
584              ITER_INTE_PAS = SIMP(statut='f',typ='I',defaut= 0 ),\r
585              ALGO_INTE     = SIMP(statut='f',typ='TXM',into=("ANALYTIQUE", "SECANTE", "DEKKER", "NEWTON_1D","BRENT",),),\r
586              CARTE         = SIMP(statut='f',typ=carte,),\r
587              b_carte       = BLOC(condition= "(AsType(CARTE) != carte_flux_r)",\r
588                              CONTRAINTE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',\r
589                                           fr="Options pour le calcul de contraintes et efforts generalises",\r
590                                            into=C_NOM_CHAM_INTO(phenomene='CONTRAINTE',categorie='lin'),)\r
591                              ),\r
592                       ),  \r
593        );\r
594 \r
595 -->\r