Salome HOME
debug intempestif
[tools/eficas.git] / Efi2Xsd / ModeleEficas / Model Efficas (1.1) v9.xsd
1 <?xml version="1.0" encoding="UTF-8"?>\r
2 <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" targetNamespace="http://chercheurs.edf.com/logiciels/efficas" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0" vc:minVersion="1.1">\r
3         <xs:element name="doc" type="T_doc"/>\r
4         <xs:element name="cata" type="T_cata"/>\r
5         <xs:element name="regles" type="T_regles"/>\r
6         <xs:element name="typeCree" type="T_classeUtilisateur"/>\r
7         <xs:element name="valeurDef" type="T_typeAttendu"/>\r
8         <xs:element name="valeurSugg" type="T_typeAttendu"/>\r
9         <xs:element name="fonctionUtilisateur" type="T_fonctionUtilisateur"/>\r
10         <xs:element name="commandes" type="T_commandes">\r
11                 <!-- La contrainte suivante fonctionne -->\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:element>\r
17         <xs:element name="validators" type="T_validators"/>\r
18         <xs:element name="plageValeur" type="T_plageValeur"/>\r
19         <xs:element name="nomTypeAttendu" type="T_nomTypeAttendu"/>\r
20         <xs:element name="nomClasseUtilisateur" type="T_nomClasseUtilisateur" abstract="true" substitutionGroup="nomTypeAttendu"/>\r
21         <xs:element name="SIMP" type="T_SIMP"/>\r
22         <xs:element name="portee" type="T_portee" default="None"/>\r
23         <xs:element name="condition" type="T_fonctionUtilisateur"/>\r
24         <xs:element name="borneSup" type="T_borne"/>\r
25         <xs:element name="borneInf" type="T_borne"/>\r
26         <!--    <xs:element name="into" type="T_into"/>-->\r
27         <xs:element name="into" type="T_into"/>\r
28         <!--    <xs:element name="into_plus_fonction" type="T_into" abstract="true" substitutionGroup="into"/>-->\r
29         <xs:attribute name="nom" type="AT_nom"/>\r
30         <xs:attribute name="version" type="xs:string"/>\r
31         <xs:attribute name="fr" type="xs:string"/>\r
32         <xs:attribute name="ang" type="xs:string"/>\r
33         <xs:attribute name="docu" type="AT_docu"/>\r
34         <xs:attribute name="valeurSugg" type="AT_valeurSugg"/>\r
35         <xs:attribute name="statut" type="AT_statut" default="o"/>\r
36         <xs:attribute name="maxOccurences" type="AT_maxOccurences"/>\r
37         <xs:attribute name="minOccurences" type="AT_minOccurences"/>\r
38         <xs:attribute name="subroutine" type="AT_subroutine" default="None"/>\r
39         <xs:complexType name="T_doc">\r
40                 <xs:attribute ref="fr" use="optional"/>\r
41                 <xs:attribute ref="ang"/>\r
42                 <xs:attribute ref="docu"/>\r
43         </xs:complexType>\r
44         <xs:complexType name="T_cata">\r
45                 <xs:sequence>\r
46                         <xs:element ref="commandes" minOccurs="0" maxOccurs="unbounded"/>\r
47                 </xs:sequence>\r
48                 <xs:attribute ref="nom"/>\r
49                 <xs:attribute ref="version"/>\r
50         </xs:complexType>\r
51         <xs:complexType name="T_commandes">\r
52                 <xs:choice minOccurs="0" maxOccurs="unbounded">\r
53                         <xs:element ref="OPER"/>\r
54                         <xs:element ref="PROC"/>\r
55                 </xs:choice>\r
56         </xs:complexType>\r
57         <xs:complexType name="T_plageValeur">\r
58                 <xs:choice>\r
59                         <xs:sequence>\r
60                                 <xs:element ref="borneSup" minOccurs="0"/>\r
61                                 <xs:element ref="borneInf" minOccurs="0"/>\r
62                         </xs:sequence>\r
63                         <xs:element ref="into" maxOccurs="unbounded"/>\r
64                 </xs:choice>\r
65         </xs:complexType>\r
66         <xs:complexType name="T_accasCommun">\r
67                 <xs:sequence>\r
68                         <xs:element ref="regles" minOccurs="0"/>\r
69                         <xs:element ref="doc" minOccurs="0"/>\r
70                         <xs:choice maxOccurs="unbounded">\r
71                                 <xs:element ref="BLOC"/>\r
72                                 <xs:element ref="FACT"/>\r
73                                 <xs:element ref="SIMP"/>\r
74                         </xs:choice>\r
75                 </xs:sequence>\r
76                 <xs:attribute ref="nom" use="required"/>\r
77         </xs:complexType>\r
78         <xs:element name="OPER" type="T_OPER">\r
79                 <!-- La contrainte fonctionne uniquement si l'on n'oublie pas le prefix dans l'expression du selector !  -->\r
80                 <!-- aucun nom identique ne doit apparaître dans les sous élements d'un même niveau dans OPER ou PROC    -->\r
81                 <xs:key name="Key_Name_In_Oper">\r
82                         <xs:annotation>\r
83                                 <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
84                         </xs:annotation>\r
85                         <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
86                         <xs:field xpath="@efficas:nom"/>\r
87                 </xs:key>\r
88                 <xs:keyref name="Oper_Ref_A_Name_In_Exclus" refer="Key_Name_In_Oper">\r
89                         <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
90                         <xs:field xpath="."/>\r
91                 </xs:keyref>\r
92                 <xs:unique name="Oper_Uniq_Name_In_Exclus">\r
93                         <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
94                         <xs:field xpath="."/>\r
95                 </xs:unique>\r
96                 <xs:keyref name="Oper_Ref_A_Name_In_A_Classer" refer="Key_Name_In_Oper">\r
97                         <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
98                         <xs:field xpath="."/>\r
99                 </xs:keyref>\r
100                 <xs:unique name="Oper_Uniq_Name_In_A_Classer">\r
101                         <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
102                         <xs:field xpath="."/>\r
103                 </xs:unique>\r
104                 <xs:keyref name="Oper_Ref_A_Name_In_Au_Moins_Un" refer="Key_Name_In_Oper">\r
105                         <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
106                         <xs:field xpath="."/>\r
107                 </xs:keyref>\r
108                 <xs:unique name="Oper_Uniq_Name_In_Au_Moins_Un">\r
109                         <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
110                         <xs:field xpath="."/>\r
111                 </xs:unique>\r
112                 <xs:keyref name="Oper_Ref_A_Name_In_Au_Plus_Un" refer="Key_Name_In_Oper">\r
113                         <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
114                         <xs:field xpath="."/>\r
115                 </xs:keyref>\r
116                 <xs:unique name="Oper_Uniq_Name_In_Au_Plus_Un">\r
117                         <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
118                         <xs:field xpath="."/>\r
119                 </xs:unique>\r
120                 <xs:keyref name="Oper_Ref_A_Name_In_Ensemble" refer="Key_Name_In_Oper">\r
121                         <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
122                         <xs:field xpath="."/>\r
123                 </xs:keyref>\r
124                 <xs:unique name="Oper_Uniq_Name_In_Ensemble">\r
125                         <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
126                         <xs:field xpath="."/>\r
127                 </xs:unique>\r
128                 <xs:keyref name="Oper_Ref_A_Name_In_Present_Absent" refer="Key_Name_In_Oper">\r
129                         <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
130                         <xs:field xpath="."/>\r
131                 </xs:keyref>\r
132                 <xs:unique name="Oper_Uniq_Name_In_Present_Absent">\r
133                         <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
134                         <xs:field xpath="."/>\r
135                 </xs:unique>\r
136                 <xs:keyref name="Oper_Ref_A_Name_In_Present_Present" refer="Key_Name_In_Oper">\r
137                         <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
138                         <xs:field xpath="."/>\r
139                 </xs:keyref>\r
140                 <xs:unique name="Oper_Uniq_Name_In_Present_Present">\r
141                         <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
142                         <xs:field xpath="."/>\r
143                 </xs:unique>\r
144                 <xs:keyref name="Oper_Ref_A_Name_In_Un_Parmi" refer="Key_Name_In_Oper">\r
145                         <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
146                         <xs:field xpath="."/>\r
147                 </xs:keyref>\r
148                 <xs:unique name="Oper_Uniq_Name_In_Un_Parmi">\r
149                         <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
150                         <xs:field xpath="."/>\r
151                 </xs:unique>\r
152         </xs:element>\r
153         <xs:complexType name="T_OPER">\r
154                 <xs:complexContent>\r
155                         <xs:extension base="T_accasCommun">\r
156                                 <xs:sequence>\r
157                                         <xs:element ref="typeCree"/>\r
158                                 </xs:sequence>\r
159                                 <xs:attribute ref="subroutine"/>\r
160                         </xs:extension>\r
161                 </xs:complexContent>\r
162         </xs:complexType>\r
163         <xs:element name="PROC" type="T_PROC">\r
164                 <!-- La contrainte fonctionne pour toutes les PROC adjacentes et devrait être par PROC -->\r
165                 <xs:key name="Key_Name_In_Proc">\r
166                         <xs:annotation>\r
167                                 <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
168                         </xs:annotation>\r
169                         <xs:selector xpath="./efficas:BLOC | ./efficas:FACT | ./efficas:SIMP"/>\r
170                         <xs:field xpath="@efficas:nom"/>\r
171                 </xs:key>\r
172                 <xs:keyref name="Proc_Ref_A_Name_In_Exclus" refer="Key_Name_In_Proc">\r
173                         <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
174                         <xs:field xpath="."/>\r
175                 </xs:keyref>\r
176                 <xs:unique name="Proc_Uniq_Name_In_Exclus">\r
177                         <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
178                         <xs:field xpath="."/>\r
179                 </xs:unique>\r
180                 <xs:keyref name="Proc_Ref_A_Name_In_A_Classer" refer="Key_Name_In_Proc">\r
181                         <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
182                         <xs:field xpath="."/>\r
183                 </xs:keyref>\r
184                 <xs:unique name="Proc_Uniq_Name_In_A_Classer">\r
185                         <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
186                         <xs:field xpath="."/>\r
187                 </xs:unique>\r
188                 <xs:keyref name="Proc_Ref_A_Name_In_Au_Moins_Un" refer="Key_Name_In_Proc">\r
189                         <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
190                         <xs:field xpath="."/>\r
191                 </xs:keyref>\r
192                 <xs:unique name="Proc_Uniq_Name_In_Au_Moins_Un">\r
193                         <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
194                         <xs:field xpath="."/>\r
195                 </xs:unique>\r
196                 <xs:keyref name="Proc_Ref_A_Name_In_Au_Plus_Un" refer="Key_Name_In_Proc">\r
197                         <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
198                         <xs:field xpath="."/>\r
199                 </xs:keyref>\r
200                 <xs:unique name="Proc_Uniq_Name_In_Au_Plus_Un">\r
201                         <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
202                         <xs:field xpath="."/>\r
203                 </xs:unique>\r
204                 <xs:keyref name="Proc_Ref_A_Name_In_Ensemble" refer="Key_Name_In_Proc">\r
205                         <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
206                         <xs:field xpath="."/>\r
207                 </xs:keyref>\r
208                 <xs:unique name="Proc_Uniq_Name_In_Ensemble">\r
209                         <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
210                         <xs:field xpath="."/>\r
211                 </xs:unique>\r
212                 <xs:keyref name="Proc_Ref_A_Name_In_Present_Absent" refer="Key_Name_In_Proc">\r
213                         <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
214                         <xs:field xpath="."/>\r
215                 </xs:keyref>\r
216                 <xs:unique name="Proc_Uniq_Name_In_Present_Absent">\r
217                         <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
218                         <xs:field xpath="."/>\r
219                 </xs:unique>\r
220                 <xs:keyref name="Proc_Ref_A_Name_In_Present_Present" refer="Key_Name_In_Proc">\r
221                         <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
222                         <xs:field xpath="."/>\r
223                 </xs:keyref>\r
224                 <xs:unique name="Proc_Uniq_Name_In_Present_Present">\r
225                         <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
226                         <xs:field xpath="."/>\r
227                 </xs:unique>\r
228                 <xs:keyref name="Ref_A_Name_In_Un_Parmi" refer="Key_Name_In_Proc">\r
229                         <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
230                         <xs:field xpath="."/>\r
231                 </xs:keyref>\r
232                 <xs:unique name="Proc_Uniq_Name_In_Un_Parmi">\r
233                         <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
234                         <xs:field xpath="."/>\r
235                 </xs:unique>\r
236         </xs:element>\r
237         <xs:complexType name="T_PROC">\r
238                 <xs:complexContent>\r
239                         <xs:extension base="T_accasCommun">\r
240                                 <xs:attribute ref="subroutine"/>\r
241                         </xs:extension>\r
242                 </xs:complexContent>\r
243         </xs:complexType>\r
244         <xs:element name="FACT" type="T_FACT">\r
245                 <!-- La contrainte fonctionne uniquement si l'on n'oublie pas le prefix dans l'expression du selector !  -->\r
246                 <!-- aucun nom identique ne doit apparaître dans les sous élements d'un même niveau de FACT              -->\r
247                 <xs:key name="Key_Name_In_Fact">\r
248                         <xs:annotation>\r
249                                 <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
250                         </xs:annotation>\r
251                         <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
252                         <xs:field xpath="@efficas:nom"/>\r
253                 </xs:key>\r
254                 <xs:keyref name="Ref_A_Name_In_Fact" refer="Key_Name_In_Fact">\r
255                         <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
256                         <xs:field xpath="."/>\r
257                 </xs:keyref>\r
258         </xs:element>\r
259         <!-- Définition par restriction -->\r
260         <!--    <xs:complexType name="T_FACT">\r
261                 <xs:complexContent>\r
262                         <xs:restriction base="T_accasCommun">\r
263                                 <xs:sequence>\r
264                                         <xs:element ref="regles" minOccurs="0"/>\r
265                                         <xs:element ref="doc" minOccurs="0"/>\r
266                                         <xs:choice maxOccurs="unbounded">\r
267                                                 <xs:element ref="BLOC"/>\r
268                                                 <xs:element ref="FACT"/>\r
269                                                 <xs:element ref="SIMP"/>\r
270                                         </xs:choice>\r
271                                 </xs:sequence>\r
272                         </xs:restriction>\r
273                 </xs:complexContent>\r
274         </xs:complexType>-->\r
275         <xs:complexType name="T_FACT">\r
276                 <xs:complexContent>\r
277                         <xs:extension base="T_accasCommun">\r
278                                 <xs:attribute ref="statut"/>\r
279                                 <xs:attribute ref="minOccurences" default="1"/>\r
280                                 <xs:attribute ref="maxOccurences" default="1">\r
281                                         <xs:annotation>\r
282                                                 <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
283                                         </xs:annotation>\r
284                                 </xs:attribute>\r
285                         </xs:extension>\r
286                         <!--                            <xs:assert test=".[exists(@efficas:maxOccurences) and exists(@efficas:minOccurences) and @efficas:maxOccurences  gt @efficas:minOccurences]"/>\r
287 -->\r
288                         <!--<xs:assert test="if (.[exists(@efficas:maxOccurences)] and .[exists(@efficas:minOccurences)] ) then (@efficas:maxOccurences  gt @efficas:minOccurences) or @efficas:maxOccurences = -1 else true" altova:message="Erreur maxOccurences  > minOccurences "/>-->\r
289                 </xs:complexContent>\r
290         </xs:complexType>\r
291         <xs:simpleType name="T_fonctionUtilisateur">\r
292                 <xs:restriction base="xs:string"/>\r
293         </xs:simpleType>\r
294         <xs:element name="BLOC" type="T_BLOC">\r
295                 <xs:key name="Key_Name_In_Bloc">\r
296                         <xs:annotation>\r
297                                 <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
298                         </xs:annotation>\r
299                         <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
300                         <xs:field xpath="@efficas:nom"/>\r
301                 </xs:key>\r
302                 <xs:keyref name="Ref_A_Name_In_Bloc" refer="Key_Name_In_Bloc">\r
303                         <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
304                         <xs:field xpath="."/>\r
305                 </xs:keyref>\r
306         </xs:element>\r
307         <xs:complexType name="T_BLOC">\r
308                 <xs:complexContent>\r
309                         <xs:extension base="T_accasCommun">\r
310                                 <xs:sequence>\r
311                                         <xs:element ref="condition"/>\r
312                                 </xs:sequence>\r
313                         </xs:extension>\r
314                 </xs:complexContent>\r
315         </xs:complexType>\r
316         <xs:complexType name="T_SIMP">\r
317                 <xs:sequence>\r
318                         <xs:element ref="doc" minOccurs="0"/>\r
319                         <xs:element ref="portee" minOccurs="0">\r
320                                 <xs:annotation>\r
321                                         <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
322                                 </xs:annotation>\r
323                         </xs:element>\r
324                         <xs:element ref="valeurDef" minOccurs="0"/>\r
325                         <xs:element ref="valeurSugg" minOccurs="0"/>\r
326                         <xs:element ref="plageValeur" minOccurs="0"/>\r
327                         <xs:element ref="nomTypeAttendu"/>\r
328                         <xs:element ref="validators" minOccurs="0"/>\r
329                 </xs:sequence>\r
330                 <xs:attribute ref="nom" use="required"/>\r
331                 <xs:attribute ref="statut" default="o"/>\r
332                 <xs:attribute ref="minOccurences" default="1"/>\r
333                 <xs:attribute ref="maxOccurences" default="1">\r
334                         <xs:annotation>\r
335                                 <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
336                         </xs:annotation>\r
337                 </xs:attribute>\r
338         </xs:complexType>\r
339         <xs:simpleType name="AT_statut">\r
340                 <xs:restriction base="xs:string">\r
341                         <xs:enumeration value="f"/>\r
342                         <xs:enumeration value="o"/>\r
343                 </xs:restriction>\r
344         </xs:simpleType>\r
345         <!--<xs:simpleType name="T_repetable">\r
346                 <xs:restriction base="xs:string">\r
347                         <xs:enumeration value="n"/>\r
348                         <xs:enumeration value="o"/>\r
349                 </xs:restriction>\r
350         </xs:simpleType>-->\r
351         <xs:simpleType name="T_portee">\r
352                 <xs:restriction base="xs:string">\r
353                         <xs:enumeration value="None"/>\r
354                         <xs:enumeration value="Global"/>\r
355                 </xs:restriction>\r
356         </xs:simpleType>\r
357         <xs:simpleType name="AT_maxOccurences">\r
358                 <xs:restriction base="xs:long">\r
359                         <xs:minInclusive value="-1"/>\r
360                 </xs:restriction>\r
361         </xs:simpleType>\r
362         <xs:simpleType name="AT_minOccurences">\r
363                 <xs:restriction base="xs:long">\r
364                         <xs:minInclusive value="0"/>\r
365                 </xs:restriction>\r
366         </xs:simpleType>\r
367         <!-- Comparable -->\r
368         <!--    <xs:simpleType name="AT_borne_sup">\r
369         <xs:atomic base="xs:double"/>\r
370         </xs:simpleType>\r
371         <xs:simpleType name="AT_borne_inf">\r
372                 <xs:restriction base="xs:double"/>\r
373         </xs:simpleType>\r
374 -->\r
375         <xs:simpleType name="AT_docu">\r
376                 <xs:annotation>\r
377                         <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
378                 </xs:annotation>\r
379                 <xs:restriction base="xs:string"/>\r
380         </xs:simpleType>\r
381         <xs:simpleType name="AT_valeurSugg">\r
382                 <xs:restriction base="xs:string"/>\r
383         </xs:simpleType>\r
384         <!-- TODO: Exclure mots clés python|efficas -->\r
385         <xs:simpleType name="T_pythonIdentifiant">\r
386                 <xs:restriction base="xs:string">\r
387                         <xs:pattern value="([A-Z]|[a-z]|_)([A-Z]|[a-z]|_|[0-9])*"/>\r
388                 </xs:restriction>\r
389         </xs:simpleType>\r
390         <xs:simpleType name="AT_nom">\r
391                 <xs:restriction base="T_pythonIdentifiant"/>\r
392         </xs:simpleType>\r
393         <xs:simpleType name="T_predicat1">\r
394                 <xs:list itemType="T_pythonIdentifiant"/>\r
395                 <!-- TODO: Supprimer la liste -->\r
396         </xs:simpleType>\r
397         <xs:complexType name="T_predicat2">\r
398                 <xs:sequence>\r
399                         <xs:element name="p1" type="T_predicat1" minOccurs="1"/>\r
400                         <xs:element name="p2" type="T_pythonIdentifiant" minOccurs="1"/>\r
401                 </xs:sequence>\r
402                 <!-- TODO: Supprimer la séquence -->\r
403         </xs:complexType>\r
404         <xs:element name="A_CLASSER" type="T_predicat2"/>\r
405         <xs:element name="AU_MOINS_UN" type="T_predicat1"/>\r
406         <xs:element name="AU_PLUS_UN" type="T_predicat1"/>\r
407         <xs:element name="ENSEMBLE" type="T_predicat1"/>\r
408         <xs:element name="EXCLUS" type="T_predicat1"/>\r
409         <xs:element name="PRESENT_ABSENT" type="T_predicat1"/>\r
410         <xs:element name="PRESENT_PRESENT" type="T_predicat1"/>\r
411         <xs:element name="UN_PARMI" type="T_predicat1"/>\r
412         <xs:group name="predicat">\r
413                 <xs:choice>\r
414                         <xs:element ref="A_CLASSER"/>\r
415                         <xs:element ref="AU_MOINS_UN"/>\r
416                         <xs:element ref="AU_PLUS_UN"/>\r
417                         <xs:element ref="ENSEMBLE"/>\r
418                         <xs:element ref="EXCLUS"/>\r
419                         <xs:element ref="PRESENT_ABSENT"/>\r
420                         <xs:element ref="PRESENT_PRESENT"/>\r
421                         <xs:element ref="UN_PARMI"/>\r
422                 </xs:choice>\r
423         </xs:group>\r
424         <xs:complexType name="T_regles">\r
425                 <xs:sequence maxOccurs="unbounded">\r
426                         <xs:group ref="predicat"/>\r
427                 </xs:sequence>\r
428         </xs:complexType>\r
429         <!--    <xs:simpleType name="T_typeCree">\r
430                 <xs:restriction base="T_classeUtilisateur"/>\r
431         </xs:simpleType>\r
432 -->\r
433         <xs:simpleType name="AT_subroutine">\r
434                 <xs:restriction base="T_pythonIdentifiant"/>\r
435         </xs:simpleType>\r
436         <xs:simpleType name="T_validators">\r
437                 <xs:restriction base="xs:string">\r
438                         <xs:enumeration value="NoRepeat"/>\r
439                         <xs:enumeration value="OnlyStr"/>\r
440                         <xs:enumeration value="VerifExiste"/>\r
441                         <xs:enumeration value="VerifTypeTuple"/>\r
442                 </xs:restriction>\r
443         </xs:simpleType>\r
444         <xs:simpleType name="T_bool">\r
445                 <xs:restriction base="xs:boolean"/>\r
446         </xs:simpleType>\r
447         <xs:simpleType name="T_list_bool">\r
448                 <xs:list itemType="T_bool"/>\r
449         </xs:simpleType>\r
450         <xs:simpleType name="T_I">\r
451                 <xs:restriction base="xs:int"/>\r
452         </xs:simpleType>\r
453         <xs:simpleType name="T_list_I">\r
454                 <xs:list itemType="T_I"/>\r
455         </xs:simpleType>\r
456         <xs:simpleType name="T_R">\r
457                 <xs:restriction base="xs:double"/>\r
458         </xs:simpleType>\r
459         <xs:simpleType name="T_list_R">\r
460                 <xs:list itemType="T_R"/>\r
461         </xs:simpleType>\r
462         <!--    <xs:simpleType name="T_TXM">\r
463                 <xs:restriction base="xs:string"/>\r
464         </xs:simpleType>\r
465         <xs:simpleType name="T_list_TXM">\r
466                 <xs:list itemType="T_TXM"/>\r
467         </xs:simpleType>\r
468 -->\r
469         <!--<xs:simpleType name="T_list_TXM">\r
470         <xs:restriction base="T_list_TXM2"> <xs:maxLength value="1"/><xs:minLength value="1"/></xs:restriction>\r
471 </xs:simpleType>\r
472 -->\r
473         <!--fonctionne mais ne permet pas de créer une liste de liste -->\r
474         <xs:simpleType name="T_C">\r
475                 <xs:restriction>\r
476                         <xs:simpleType>\r
477                                 <xs:list itemType="xs:double"/>\r
478                         </xs:simpleType>\r
479                         <xs:minLength value="2"/>\r
480                         <xs:maxLength value="2"/>\r
481                 </xs:restriction>\r
482         </xs:simpleType>\r
483         \r
484         <!-- Ajouter une contrainte : taille pair -->\r
485         <!-- Il n'est pas possible de définir des listes de listes -->\r
486         <xs:simpleType name="T_list_C">\r
487                 <xs:list itemType="xs:double"/>\r
488         </xs:simpleType>\r
489         <xs:simpleType name="T_nomTypeAttenduBase">\r
490                 <xs:restriction base="T_pythonIdentifiant"/>\r
491         </xs:simpleType>\r
492         <xs:simpleType name="T_simpleName">\r
493                 <xs:restriction base="T_nomTypeAttenduBase">\r
494                         <xs:enumeration value="Fichier"/>\r
495                         <xs:enumeration value="Repertoire"/>\r
496                         <xs:enumeration value="I"/>\r
497                         <xs:enumeration value="R"/>\r
498                         <xs:enumeration value="C"/>\r
499                         <xs:enumeration value="bool"/>\r
500                         <xs:enumeration value="grma"/>\r
501                         <xs:enumeration value="grno"/>\r
502                         <xs:enumeration value="SalomeEntry"/>\r
503                 </xs:restriction>\r
504         </xs:simpleType>\r
505         <xs:simpleType name="T_nomTypeAttendu">\r
506                 <xs:union memberTypes="T_simpleName">\r
507                         <xs:simpleType>\r
508                                 <xs:restriction base="T_pythonIdentifiant">\r
509                                         <xs:enumeration value="TXM"/>\r
510                                         <xs:enumeration value="matriceDouble"/>\r
511                                         <xs:enumeration value="matriceSymetriqueDouble"/>\r
512                                         <xs:enumeration value="tuple"/>\r
513                                         <xs:enumeration value="classeUtilisateur"/>\r
514                                 </xs:restriction>\r
515                         </xs:simpleType>\r
516                 </xs:union>\r
517         </xs:simpleType>\r
518         <!-- On ne peut pas rendre abstrait un simpleType && \r
519           Il n'est pas possible de dériver par restriction un simplecontent d'un type complex qui\r
520           lui peut être abstrait.\r
521     -->\r
522         <!-- Le type T_nomDuTypeClasseUtilisateur est réduit à l'énumeration "classeUtilisateur"\r
523           et utilisé dans le type T_nomClasseUtilisateur pour y ajouter un attribut nom\r
524     -->\r
525         <xs:simpleType name="T_nomDuTypeClasseUtilisateur">\r
526                 <xs:restriction base="T_nomTypeAttendu">\r
527                         <xs:enumeration value="classeUtilisateur"/>\r
528                 </xs:restriction>\r
529         </xs:simpleType>\r
530         <!-- Le nom de la classe utilisateur est donnée dans l'attribut nom-->\r
531         <xs:complexType name="T_nomClasseUtilisateur">\r
532                 <xs:simpleContent>\r
533                         <xs:extension base="T_nomDuTypeClasseUtilisateur">\r
534                                 <xs:attribute ref="nom" use="required"/>\r
535                         </xs:extension>\r
536                 </xs:simpleContent>\r
537         </xs:complexType>\r
538         <xs:complexType name="T_grma"/>\r
539         <xs:complexType name="T_grno"/>\r
540         <xs:complexType name="T_SalomeEntry"/>\r
541         <xs:complexType name="T_Fichier"/>\r
542         <!--    <xs:complexType name="T_Repertoire"/>-->\r
543         <xs:simpleType name="T_Repertoire">\r
544                 <xs:list>\r
545                         <xs:simpleType>\r
546                                 <xs:restriction base="xs:string">\r
547                                         <xs:whiteSpace value="preserve"/>\r
548                                         <!-- Si on lit le xsd avec le binding pyxb de xmlshema la ligne suivante pose un problème à l'appel de la méthode toxml() -->\r
549                                         <!-- cela est du au fait que minidom write appel objet.replace(..) et que le binding de l'objet whitespace contient un champ 'replace' ; quelle solution ?  renommer le binding o.replace ?-->\r
550                                 </xs:restriction>\r
551                         </xs:simpleType>\r
552                 </xs:list>\r
553         </xs:simpleType>\r
554         <xs:simpleType name="T_simple">\r
555                 <xs:union memberTypes="T_I T_list_I T_R T_list_R T_C T_list_C T_bool T_list_bool T_Repertoire"/>\r
556         </xs:simpleType>\r
557         <xs:simpleType name="T_TXM">\r
558                 <xs:annotation>\r
559                         <xs:documentation>les TXM peuvent contenir des espaces, pour créer une liste de TXM, il faut donc répéter le nom de la balise.</xs:documentation>\r
560                 </xs:annotation>\r
561                 <xs:restriction base="xs:string"/>\r
562         </xs:simpleType>\r
563         <xs:simpleType name="T_list_Double">\r
564                 <xs:list itemType="xs:double"/>\r
565         </xs:simpleType>\r
566         <!-- Possibilité d'utiliser un type paramétré ? -->\r
567         <xs:complexType name="T_matriceDouble">\r
568                 <xs:simpleContent>\r
569                         <xs:extension base="T_list_Double">\r
570                                 <xs:attribute name="n" type="xs:integer" use="required"/>\r
571                                 <xs:attribute name="m" type="xs:integer" use="required"/>\r
572                         </xs:extension>\r
573                 </xs:simpleContent>\r
574         </xs:complexType>\r
575         <!-- Faire l'exercice de dériver de T_matriceDouble -->\r
576         <xs:complexType name="T_matriceSymetriqueDouble">\r
577                 <xs:simpleContent>\r
578                         <xs:extension base="T_list_Double">\r
579                                 <xs:attribute name="n" type="xs:int" use="required"/>\r
580                         </xs:extension>\r
581                 </xs:simpleContent>\r
582         </xs:complexType>\r
583         <!-- Une liste est aussi un type simple ! -->\r
584         <!--    <xs:simpleType name="T_list_anySimpleType">\r
585                 <xs:list itemType="xs:anySimpleType"/>\r
586         </xs:simpleType>\r
587 -->\r
588         <!-- Le fait de ne pas déclarer une liste risque d'être problématique pour le parsing : Problème résolu avec une séquence de tuple -->\r
589         <xs:complexType name="T_tuple">\r
590                 <xs:simpleContent>\r
591                         <xs:extension base="xs:anySimpleType">\r
592                                 <xs:attribute name="n" type="xs:int" use="required"/>\r
593                         </xs:extension>\r
594                 </xs:simpleContent>\r
595         </xs:complexType>\r
596         <xs:simpleType name="T_classeUtilisateur">\r
597                 <xs:restriction base="T_pythonIdentifiant"/>\r
598         </xs:simpleType>\r
599         <xs:element name="typesimple" type="T_simple"/>\r
600         <xs:element name="TXM" type="T_TXM"/>\r
601         <xs:element name="matriceDouble" type="T_matriceDouble"/>\r
602         <xs:element name="matriceSymetriqueDouble" type="T_matriceSymetriqueDouble"/>\r
603         <xs:element name="tuple" type="T_tuple"/>\r
604         <xs:element name="classeUtilisateur" type="T_classeUtilisateur"/>\r
605         <!-- Essai -->\r
606         <!--    <xs:group name="T_Attendu_group1">\r
607                 <xs:choice>\r
608                         <xs:element ref="typesimple"/>\r
609                         <xs:element ref="matriceDouble"/>\r
610                         <xs:element ref="matriceSymetriqueDouble"/>\r
611                         <xs:element ref="tuple"/>\r
612                         <xs:element ref="classeUtilisateur"/>\r
613                 </xs:choice>\r
614         </xs:group>\r
615 \r
616         <xs:group name="T_Attendu_group2">\r
617                 <xs:choice>\r
618                         <xs:element ref="typesimple"/>\r
619                         <xs:element ref="matriceDouble"/>\r
620                         <xs:element ref="matriceSymetriqueDouble"/>\r
621                         <xs:element ref="tuple"/>\r
622                         <xs:element ref="classeUtilisateur"/>\r
623                         <xs:element ref="fonctionUtilisateur" minOccurs="1" maxOccurs="unbounded"/>\r
624                 </xs:choice>\r
625         </xs:group>\r
626 \r
627         <xs:complexType name="T_typeAttendu">\r
628                 <xs:group ref="T_Attendu_group1"/>\r
629         </xs:complexType>\r
630         -->\r
631         <!-- Faire plutot un groupe de substitution pour ne pas croiser les choix -->\r
632         <!--\r
633         <xs:complexType name="T_into">\r
634           <xs:group ref="T_Attendu_group2"/>\r
635         </xs:complexType>\r
636         -->\r
637         <xs:complexType name="T_into">\r
638                 <xs:choice>\r
639                         <!--                    <xs:element ref="typesimple" type="T_Base"/>-->\r
640                         <xs:element ref="typesimple" minOccurs="0"/>\r
641                         <xs:element ref="TXM" minOccurs="0" maxOccurs="unbounded"/>\r
642                         <xs:element ref="matriceDouble" minOccurs="0" maxOccurs="unbounded"/>\r
643                         <xs:element ref="matriceSymetriqueDouble" minOccurs="0" maxOccurs="unbounded"/>\r
644                         <xs:element ref="tuple" minOccurs="0" maxOccurs="unbounded"/>\r
645                         <xs:element ref="classeUtilisateur" minOccurs="0" maxOccurs="unbounded"/>\r
646                         <xs:element ref="fonctionUtilisateur" minOccurs="0" maxOccurs="1"/>\r
647                 </xs:choice>\r
648         </xs:complexType>\r
649         <xs:complexType name="T_typeAttendu">\r
650                 <xs:complexContent>\r
651                         <xs:restriction base="T_into">\r
652                                 <xs:choice>\r
653                                         <xs:element ref="typesimple" minOccurs="0" maxOccurs="1"/>\r
654                                         <xs:element ref="TXM" minOccurs="0" maxOccurs="unbounded"/>\r
655                                         <xs:element ref="matriceDouble" minOccurs="0" maxOccurs="unbounded"/>\r
656                                         <xs:element ref="matriceSymetriqueDouble" minOccurs="0" maxOccurs="unbounded"/>\r
657                                         <xs:element ref="tuple" minOccurs="0" maxOccurs="unbounded"/>\r
658                                         <xs:element ref="classeUtilisateur" minOccurs="0" maxOccurs="1"/>\r
659                                 </xs:choice>\r
660                         </xs:restriction>\r
661                 </xs:complexContent>\r
662         </xs:complexType>\r
663         <xs:complexType name="T_borne">\r
664                 <xs:complexContent>\r
665                         <xs:restriction base="T_into">\r
666                                 <xs:choice>\r
667                                         <xs:element ref="typesimple" minOccurs="0" maxOccurs="1"/>\r
668                                         <xs:element ref="TXM" minOccurs="0" maxOccurs="unbounded"/>\r
669                                         <xs:element ref="fonctionUtilisateur" minOccurs="0" maxOccurs="1"/>\r
670                                 </xs:choice>\r
671                         </xs:restriction>\r
672                 </xs:complexContent>\r
673         </xs:complexType>\r
674 </xs:schema>\r
675 <!-- Catalogue EFFICAS équivalent\r
676 \r
677 # coding: utf-8\r
678 from Accas import *\r
679 \r
680 class carte   (ASSD) : pass\r
681 class maille   (ASSD) : pass\r
682 class carte_flux_r   (carte):pass\r
683 \r
684 class NOM_CHAM_INTO:\r
685     def __call__(self, *l_typ_cham, **kwargs):\r
686         return tuple(('A','B','C'))\r
687 C_NOM_CHAM_INTO = NOM_CHAM_INTO()\r
688 \r
689 JdC = JDC_CATA(code='MAP',\r
690                execmodul=None,\r
691                regles=ENSEMBLE('E1','E2','E3')\r
692                )\r
693 \r
694 CREECARTE = OPER(nom="CREECARTE",op=None, sd_prod=carte, UNITE=SIMP(statut='f',typ='I',defaut=21),);\r
695 \r
696 CREECARTEFLUX = OPER(nom="CREECARTEFLUX",op=None, sd_prod=carte_flux_r,\r
697                    NOMFLUX=SIMP(statut='o',typ='TXM',defaut='monFlux'),\r
698                 );\r
699 \r
700 CREEMAILLE = OPER(nom="CREEMAILLE",op=None, sd_prod=maille,\r
701                 NOEUDS=SIMP(statut='o',typ='I',defaut=(1,2),min=2,max=2)\r
702               );\r
703 \r
704 E1=PROC(nom="E1",\r
705         op=None,\r
706         regles    = (EXCLUS('ETAT_INIT','RESULTAT',),),\r
707         ETAT_INIT = FACT(statut='f', max='**',\r
708                          GROUP_MA_1=SIMP(statut='o',typ='I',validators=NoRepeat(),max='**'),\r
709                          GROUP_NO_2=SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),\r
710                     ),\r
711 \r
712         RESULTAT  = FACT(statut='f',\r
713                          DEPL=SIMP(statut='o', typ='R',  validators=NoRepeat()),\r
714                          VITE=SIMP(statut='f', typ='R',  validators=NoRepeat()),\r
715                          ACCE=SIMP(statut='f', typ='R',  validators=NoRepeat()),\r
716                     ), \r
717         );\r
718 \r
719 E2=PROC(nom="E2", op=None,\r
720         regles   = (UN_PARMI('CONCEPT','CHAINE','TOUT' ),),\r
721         CONCEPT  = FACT(statut='f',max='**',\r
722                    NOM = SIMP(statut='o',typ=assd,validators=NoRepeat(),max='**'),\r
723                    ),\r
724         CHAINE   = SIMP(statut='f',typ='TXM'),\r
725         POSITION = SIMP(statut='f',typ='I',defaut=1),\r
726         TOUT     = SIMP(statut='f',typ='TXM',into=("OUI",) ),\r
727         );\r
728 \r
729 E3=PROC(nom="E3",op=None,\r
730         DEFORMATION = SIMP(statut='f',typ='TXM',defaut="PETIT",\r
731                            into=("PETIT","PETIT_REAC","GROT_GDEP","SIMO_MIEHE","GDEF_HYPO_ELAS","GDEF_LOG")),\r
732         b_blocIn    = BLOC(condition = "DEFORMATION in ('PETIT','PETIT_REAC','GROT_GDEP')",\r
733              ITER_INTE_PAS = SIMP(statut='f',typ='I',defaut= 0 ),\r
734              ALGO_INTE     = SIMP(statut='f',typ='TXM',into=("ANALYTIQUE", "SECANTE", "DEKKER", "NEWTON_1D","BRENT",),),\r
735              CARTE         = SIMP(statut='f',typ=carte,),\r
736              b_carte       = BLOC(condition= "(AsType(CARTE) != carte_flux_r)",\r
737                              CONTRAINTE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',\r
738                                           fr="Options pour le calcul de contraintes et efforts generalises",\r
739                                            into=C_NOM_CHAM_INTO(phenomene='CONTRAINTE',categorie='lin'),)\r
740                              ),\r
741                       ),  \r
742        );\r
743 \r
744 -->\r