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