]> SALOME platform Git repositories - tools/eficas.git/blob - Efi2Xsd/ModeleEficas/Model Efficas (1.1) v6.xsd
Salome HOME
update version
[tools/eficas.git] / Efi2Xsd / ModeleEficas / Model Efficas (1.1) v6.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         \r
155         <xs:complexType name="T_OPER">\r
156                 <xs:complexContent>\r
157                         <xs:extension base="T_Accas_Common">\r
158                                 <xs:sequence>\r
159                                         <xs:element ref="typeCree"/>\r
160                                 </xs:sequence>\r
161                                 <xs:attribute ref="subroutine"/>\r
162                         </xs:extension>\r
163                 </xs:complexContent>\r
164         </xs:complexType>\r
165         <xs:element name="PROC" type="T_PROC">\r
166                 <!-- La contrainte fonctionne pour toutes les PROC adjacentes et devrait être par PROC -->\r
167                 <xs:key name="Key_Name_In_Proc">\r
168                         <xs:annotation>\r
169                                 <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
170                         </xs:annotation>\r
171                         <xs:selector xpath="./efficas:BLOC | ./efficas:FACT| ./efficas:SIMP"/>\r
172                         <xs:field xpath="@efficas:nom"/>\r
173                 </xs:key>\r
174                 <xs:keyref name="Proc_Ref_A_Name_In_Exclus" refer="Key_Name_In_Proc">\r
175                         <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
176                         <xs:field xpath="."/>\r
177                 </xs:keyref>\r
178                 <xs:unique name="Proc_Uniq_Name_In_Exclus">\r
179                         <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
180                         <xs:field xpath="."/>\r
181                 </xs:unique>\r
182                 <xs:keyref name="Proc_Ref_A_Name_In_A_Classer" refer="Key_Name_In_Proc">\r
183                         <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
184                         <xs:field xpath="."/>\r
185                 </xs:keyref>\r
186                 <xs:unique name="Proc_Uniq_Name_In_A_Classer">\r
187                         <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
188                         <xs:field xpath="."/>\r
189                 </xs:unique>\r
190                 <xs:keyref name="Proc_Ref_A_Name_In_Au_Moins_Un" refer="Key_Name_In_Proc">\r
191                         <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
192                         <xs:field xpath="."/>\r
193                 </xs:keyref>\r
194                 <xs:unique name="Proc_Uniq_Name_In_Au_Moins_Un">\r
195                         <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
196                         <xs:field xpath="."/>\r
197                 </xs:unique>\r
198                 <xs:keyref name="Proc_Ref_A_Name_In_Au_Plus_Un" refer="Key_Name_In_Proc">\r
199                         <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
200                         <xs:field xpath="."/>\r
201                 </xs:keyref>\r
202                 <xs:unique name="Proc_Uniq_Name_In_Au_Plus_Un">\r
203                         <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
204                         <xs:field xpath="."/>\r
205                 </xs:unique>\r
206                 <xs:keyref name="Proc_Ref_A_Name_In_Ensemble" refer="Key_Name_In_Proc">\r
207                         <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
208                         <xs:field xpath="."/>\r
209                 </xs:keyref>\r
210                 <xs:unique name="Proc_Uniq_Name_In_Ensemble">\r
211                         <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
212                         <xs:field xpath="."/>\r
213                 </xs:unique>\r
214                 <xs:keyref name="Proc_Ref_A_Name_In_Present_Absent" refer="Key_Name_In_Proc">\r
215                         <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
216                         <xs:field xpath="."/>\r
217                 </xs:keyref>\r
218                 <xs:unique name="Proc_Uniq_Name_In_Present_Absent">\r
219                         <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
220                         <xs:field xpath="."/>\r
221                 </xs:unique>\r
222                 <xs:keyref name="Proc_Ref_A_Name_In_Present_Present" refer="Key_Name_In_Proc">\r
223                         <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
224                         <xs:field xpath="."/>\r
225                 </xs:keyref>\r
226                 <xs:unique name="Proc_Uniq_Name_In_Present_Present">\r
227                         <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
228                         <xs:field xpath="."/>\r
229                 </xs:unique>\r
230                 <xs:keyref name="Ref_A_Name_In_Un_Parmi" refer="Key_Name_In_Proc">\r
231                         <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
232                         <xs:field xpath="."/>\r
233                 </xs:keyref>\r
234                 <xs:unique name="Proc_Uniq_Name_In_Un_Parmi">\r
235                         <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
236                         <xs:field xpath="."/>\r
237                 </xs:unique>\r
238         </xs:element>\r
239         <xs:complexType name="T_PROC">\r
240                 <xs:complexContent>\r
241                         <xs:extension base="T_Accas_Common">\r
242                                 <xs:attribute ref="subroutine"/>\r
243                         </xs:extension>\r
244                 </xs:complexContent>\r
245         </xs:complexType>\r
246         <xs:element name="FACT" type="T_FACT">\r
247                 <!-- La contrainte fonctionne uniquement si l'on n'oublie pas le prefix dans l'expression du selector !  -->\r
248                 <!-- aucun nom identique ne doit apparaître dans les sous élements d'un même niveau de FACT              -->\r
249                 <xs:key name="Key_Name_In_Fact">\r
250                         <xs:annotation>\r
251                                 <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
252                         </xs:annotation>\r
253                         <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
254                         <xs:field xpath="@efficas:nom"/>\r
255                 </xs:key>\r
256                 <xs:keyref name="Ref_A_Name_In_Fact" refer="Key_Name_In_Fact">\r
257                         <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
258                         <xs:field xpath="."/>\r
259                 </xs:keyref>\r
260         </xs:element>\r
261         <!-- Définition par restriction -->\r
262         <!--    <xs:complexType name="T_FACT">\r
263                 <xs:complexContent>\r
264                         <xs:restriction base="T_Accas_Common">\r
265                                 <xs:sequence>\r
266                                         <xs:element ref="regles" minOccurs="0"/>\r
267                                         <xs:element ref="doc" minOccurs="0"/>\r
268                                         <xs:choice maxOccurs="unbounded">\r
269                                                 <xs:element ref="BLOC"/>\r
270                                                 <xs:element ref="FACT"/>\r
271                                                 <xs:element ref="SIMP"/>\r
272                                         </xs:choice>\r
273                                 </xs:sequence>\r
274                         </xs:restriction>\r
275                 </xs:complexContent>\r
276         </xs:complexType>-->\r
277         <xs:complexType name="T_FACT">\r
278                 <xs:complexContent>\r
279                         <xs:extension base="T_Accas_Common">\r
280                                 <xs:attribute ref="statut"/>\r
281                                 <xs:attribute ref="min_occurs" default="1"/>\r
282                                 <xs:attribute ref="max_occurs" default="1">\r
283                                         <xs:annotation>\r
284                                                 <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
285                                         </xs:annotation>\r
286                                 </xs:attribute>\r
287                         </xs:extension>\r
288                         <!--                            <xs:assert test=".[exists(@efficas:max_occurs) and exists(@efficas:min_occurs) and @efficas:max_occurs  gt @efficas:min_occurs]"/>\r
289 -->\r
290                         <!--<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
291                 </xs:complexContent>\r
292         </xs:complexType>\r
293         <xs:simpleType name="T_fonction_python">\r
294                 <xs:restriction base="xs:string"/>\r
295         </xs:simpleType>\r
296         <xs:element name="BLOC" type="T_BLOC">\r
297                 <xs:key name="Key_Name_In_Bloc">\r
298                         <xs:annotation>\r
299                                 <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
300                         </xs:annotation>\r
301                         <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
302                         <xs:field xpath="@efficas:nom"/>\r
303                 </xs:key>\r
304                 <xs:keyref name="Ref_A_Name_In_Bloc" refer="Key_Name_In_Bloc">\r
305                         <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
306                         <xs:field xpath="."/>\r
307                 </xs:keyref>\r
308         </xs:element>\r
309         <xs:complexType name="T_BLOC">\r
310                 <xs:complexContent>\r
311                         <xs:extension base="T_Accas_Common">\r
312                                 <xs:sequence>\r
313                                         <xs:element ref="condition"/>\r
314                                 </xs:sequence>\r
315                         </xs:extension>\r
316                 </xs:complexContent>\r
317         </xs:complexType>\r
318         <xs:complexType name="T_SIMP">\r
319                 <xs:sequence>\r
320                         <xs:element ref="doc" minOccurs="0"/>\r
321                         <xs:element ref="portee" minOccurs="0">\r
322                                 <xs:annotation>\r
323                                         <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
324                                 </xs:annotation>\r
325                         </xs:element>\r
326                         <xs:element ref="valeurDef" minOccurs="0"/>\r
327                         <xs:element ref="valeurSugg" minOccurs="0"/>\r
328                         <xs:element ref="plageValeur" minOccurs="0"/>\r
329                         <xs:element ref="typeAttendu"/>\r
330                         <xs:element ref="validators" minOccurs="0"/>\r
331                 </xs:sequence>\r
332                 <xs:attribute ref="nom" use="required"/>\r
333                 <xs:attribute ref="statut" default="o"/>\r
334                 <xs:attribute ref="min_occurs" default="1"/>\r
335                 <xs:attribute ref="max_occurs" default="1">\r
336                         <xs:annotation>\r
337                                 <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
338                         </xs:annotation>\r
339                 </xs:attribute>\r
340         </xs:complexType>\r
341         <xs:simpleType name="AT_statut">\r
342                 <xs:restriction base="xs:string">\r
343                         <xs:enumeration value="f"/>\r
344                         <xs:enumeration value="o"/>\r
345                 </xs:restriction>\r
346         </xs:simpleType>\r
347         <!--<xs:simpleType name="T_repetable">\r
348                 <xs:restriction base="xs:string">\r
349                         <xs:enumeration value="n"/>\r
350                         <xs:enumeration value="o"/>\r
351                 </xs:restriction>\r
352         </xs:simpleType>-->\r
353         <xs:simpleType name="T_portee">\r
354                 <xs:restriction base="xs:string">\r
355                         <xs:enumeration value="None"/>\r
356                         <xs:enumeration value="Global"/>\r
357                 </xs:restriction>\r
358         </xs:simpleType>\r
359         <xs:simpleType name="AT_max_occurs">\r
360                 <xs:restriction base="xs:long">\r
361                         <xs:minInclusive value="-1"/>\r
362                 </xs:restriction>\r
363         </xs:simpleType>\r
364         <xs:simpleType name="AT_min_occurs">\r
365                 <xs:restriction base="xs:long">\r
366                         <xs:minExclusive value="0"/>\r
367                 </xs:restriction>\r
368         </xs:simpleType>\r
369         <!-- Comparable -->\r
370         <!--    <xs:simpleType name="AT_borne_sup">\r
371         <xs:atomic base="xs:double"/>\r
372         </xs:simpleType>\r
373         <xs:simpleType name="AT_borne_inf">\r
374                 <xs:restriction base="xs:double"/>\r
375         </xs:simpleType>\r
376 -->\r
377         <xs:simpleType name="AT_ag">\r
378                 <xs:restriction base="xs:string">\r
379                         <xs:enumeration value="No comment"/>\r
380                 </xs:restriction>\r
381         </xs:simpleType>\r
382         <xs:simpleType name="AT_docu">\r
383                 <xs:annotation>\r
384                         <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
385                 </xs:annotation>\r
386                 <xs:restriction base="xs:string"/>\r
387         </xs:simpleType>\r
388         <xs:simpleType name="AT_valeur_sugg">\r
389                 <xs:restriction base="xs:string"/>\r
390         </xs:simpleType>\r
391         <!-- TODO: Exclure mots clés python|efficas -->\r
392         <xs:simpleType name="AT_nom">\r
393                 <xs:restriction base="xs:string">\r
394                         <xs:pattern value="([A-Z]|[a-z]|_)([A-Z]|[a-z]|_|[0-9])*"/>\r
395                 </xs:restriction>\r
396         </xs:simpleType>\r
397         <xs:simpleType name="T_predicat1">\r
398                 <xs:list itemType="AT_nom"/>\r
399                 <!-- TODO: Supprimer la liste -->\r
400         </xs:simpleType>\r
401         <xs:complexType name="T_predicat2">\r
402                 <xs:sequence>\r
403                         <xs:element name="p1" type="T_predicat1" minOccurs="1"/>\r
404                         <xs:element name="p2" type="AT_nom" minOccurs="1"/>\r
405                 </xs:sequence>\r
406                 <!-- TODO: Supprimer la séquence -->\r
407         </xs:complexType>\r
408         <xs:element name="A_CLASSER" type="T_predicat2"/>\r
409         <xs:element name="AU_MOINS_UN" type="T_predicat1"/>\r
410         <xs:element name="AU_PLUS_UN" type="T_predicat1"/>\r
411         <xs:element name="ENSEMBLE" type="T_predicat1"/>\r
412         <xs:element name="EXCLUS" type="T_predicat1"/>\r
413         <xs:element name="PRESENT_ABSENT" type="T_predicat1"/>\r
414         <xs:element name="PRESENT_PRESENT" type="T_predicat1"/>\r
415         <xs:element name="UN_PARMI" type="T_predicat1"/>\r
416         <xs:group name="predicat">\r
417                 <xs:choice>\r
418                         <xs:element ref="A_CLASSER"/>\r
419                         <xs:element ref="AU_MOINS_UN"/>\r
420                         <xs:element ref="AU_PLUS_UN"/>\r
421                         <xs:element ref="ENSEMBLE"/>\r
422                         <xs:element ref="EXCLUS"/>\r
423                         <xs:element ref="PRESENT_ABSENT"/>\r
424                         <xs:element ref="PRESENT_PRESENT"/>\r
425                         <xs:element ref="UN_PARMI"/>\r
426                 </xs:choice>\r
427         </xs:group>\r
428         <xs:complexType name="T_regles">\r
429                 <xs:sequence maxOccurs="unbounded">\r
430                         <xs:group ref="predicat"/>\r
431                 </xs:sequence>\r
432         </xs:complexType>\r
433         <!--    <xs:simpleType name="T_typeCree">\r
434                 <xs:restriction base="T_classe_utilisateur"/>\r
435         </xs:simpleType>\r
436 -->\r
437         <xs:simpleType name="AT_subroutine">\r
438                 <xs:restriction base="AT_nom"/>\r
439         </xs:simpleType>\r
440         <xs:simpleType name="T_validators">\r
441                 <xs:restriction base="xs:string">\r
442                         <xs:enumeration value="NoRepeat"/>\r
443                         <xs:enumeration value="OnlyStr"/>\r
444                         <xs:enumeration value="VerifExiste"/>\r
445                         <xs:enumeration value="VerifTypeTuple"/>\r
446                 </xs:restriction>\r
447         </xs:simpleType>\r
448         <xs:simpleType name="T_Bool">\r
449                 <xs:restriction base="xs:boolean"/>\r
450         </xs:simpleType>\r
451         <xs:simpleType name="T_list_Bool">\r
452                 <xs:list itemType="T_Bool"/>\r
453         </xs:simpleType>\r
454         <xs:simpleType name="T_I">\r
455                 <xs:restriction base="xs:int"/>\r
456         </xs:simpleType>\r
457         <xs:simpleType name="T_list_I">\r
458                 <xs:list itemType="T_I"/>\r
459         </xs:simpleType>\r
460         <xs:simpleType name="T_R">\r
461                 <xs:restriction base="xs:double"/>\r
462         </xs:simpleType>\r
463         <xs:simpleType name="T_list_R">\r
464                 <xs:list itemType="T_R"/>\r
465         </xs:simpleType>\r
466         <xs:simpleType name="T_TXM">\r
467                 <xs:restriction base="AT_nom"/>\r
468         </xs:simpleType>\r
469         <xs:simpleType name="T_list_TXM">\r
470                 <xs:list itemType="T_TXM"/>\r
471         </xs:simpleType>\r
472         <!--fonctionne mais ne permet pas de créer une liste de liste -->\r
473         <xs:simpleType name="T_C">\r
474                 <xs:restriction>\r
475                         <xs:simpleType>\r
476                                 <xs:list itemType="xs:double"/>\r
477                         </xs:simpleType>\r
478                         <xs:minLength value="2"/>\r
479                         <xs:maxLength value="2"/>\r
480                 </xs:restriction>\r
481         </xs:simpleType>\r
482         <!-- Ajouter une contrainte : taille pair -->\r
483         <!-- Il n'est pas possible de définir des listes de listes -->\r
484         <xs:simpleType name="T_list_C">\r
485                 <xs:list itemType="xs:double"/>\r
486         </xs:simpleType>\r
487         <xs:simpleType name="T_name_base">\r
488                 <xs:restriction base="AT_nom"/>\r
489         </xs:simpleType>\r
490         <xs:simpleType name="T_simple_name">\r
491                 <xs:restriction base="T_name_base">\r
492                         <xs:enumeration value="Fichier"/>\r
493                         <xs:enumeration value="Repertoire"/>\r
494                         <xs:enumeration value="TXM"/>\r
495                         <xs:enumeration value="I"/>\r
496                         <xs:enumeration value="R"/>\r
497                         <xs:enumeration value="C"/>\r
498                         <xs:enumeration value="Bool"/>\r
499                         <xs:enumeration value="grma"/>\r
500                         <xs:enumeration value="grno"/>\r
501                         <xs:enumeration value="SalomeEntry"/>\r
502                 </xs:restriction>\r
503         </xs:simpleType>\r
504         <!-- On ne peut pas rendre abstrait un simpleType && \r
505           Il n'est pas possible de dériver par restriction un simplecontent d'un type complex qui\r
506           lui peut être abstrait.\r
507     -->\r
508         <xs:simpleType name="T_classe_utilisateur_name">\r
509                 <xs:restriction base="T_name">\r
510                         <xs:enumeration value="T_classe_utilisateur"/>\r
511                 </xs:restriction>\r
512         </xs:simpleType>\r
513         <xs:complexType name="T_classe_utilisateur_username">\r
514                 <xs:simpleContent>\r
515                         <xs:extension base="T_classe_utilisateur_name">\r
516                                 <xs:attribute ref="nom" use="required"/>\r
517                         </xs:extension>\r
518                 </xs:simpleContent>\r
519         </xs:complexType>\r
520         <xs:simpleType name="T_name">\r
521                 <xs:union memberTypes="T_simple_name">\r
522                         <xs:simpleType>\r
523                                 <xs:restriction base="AT_nom">\r
524                                         <xs:enumeration value="T_Matrice_double"/>\r
525                                         <xs:enumeration value="T_Matrice_Symetrique_double"/>\r
526                                         <xs:enumeration value="T_tuple"/>\r
527                                         <xs:enumeration value="T_classe_utilisateur"/>\r
528                                 </xs:restriction>\r
529                         </xs:simpleType>\r
530                 </xs:union>\r
531         </xs:simpleType>\r
532         <xs:complexType name="T_grma"/>\r
533         <xs:complexType name="T_grno"/>\r
534         <xs:complexType name="T_SalomeEntry"/>\r
535         <xs:complexType name="T_Fichier"/>\r
536         <!--    <xs:complexType name="T_Repertoire"/>-->\r
537         <xs:simpleType name="T_Repertoire">\r
538                 <xs:list>\r
539                         <xs:simpleType>\r
540                                 <xs:restriction base="xs:string">\r
541                                         <xs:whiteSpace value="preserve"/>\r
542                                 </xs:restriction>\r
543                         </xs:simpleType>\r
544                 </xs:list>\r
545         </xs:simpleType>\r
546         <xs:simpleType name="T_simple">\r
547                 <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
548         </xs:simpleType>\r
549         <!--    <xs:complexType name="T_TXM"/>-->\r
550         <!--    <xs:simpleType name="T_simple">\r
551                 <xs:restriction base="xs:string">\r
552                         <xs:enumeration value="Fichier"/>\r
553                         <xs:enumeration value="Repertoire"/>\r
554                         <xs:enumeration value="TXM"/>\r
555                         <xs:enumeration value="I"/>\r
556                         <xs:enumeration value="R"/>\r
557                         <xs:enumeration value="C"/>\r
558                         <xs:enumeration value="Bool"/>\r
559                         <xs:enumeration value="grma"/>\r
560                         <xs:enumeration value="grno"/>\r
561                         <xs:enumeration value="SalomeEntry"/>\r
562                 </xs:restriction>\r
563         </xs:simpleType>\r
564 -->\r
565         <xs:simpleType name="T_list_double">\r
566                 <xs:list itemType="xs:double"/>\r
567         </xs:simpleType>\r
568         <!-- Possibilité d'utiliser un type paramétré ? -->\r
569         <xs:complexType name="T_Matrice_double">\r
570                 <xs:simpleContent>\r
571                         <xs:extension base="T_list_double">\r
572                                 <xs:attribute name="n" type="xs:integer" use="required"/>\r
573                                 <xs:attribute name="m" type="xs:integer" use="required"/>\r
574                         </xs:extension>\r
575                 </xs:simpleContent>\r
576         </xs:complexType>\r
577         <!-- Faire l'exercice de dériver de T_Matrice_double -->\r
578         <xs:complexType name="T_Matrice_Symetrique_double">\r
579                 <xs:simpleContent>\r
580                         <xs:extension base="T_list_double">\r
581                                 <xs:attribute name="n" type="xs:int" use="required"/>\r
582                         </xs:extension>\r
583                 </xs:simpleContent>\r
584         </xs:complexType>\r
585         <!-- Une liste est aussi un type simple ! -->\r
586         <!--    <xs:simpleType name="T_list_anySimpleType">\r
587                 <xs:list itemType="xs:anySimpleType"/>\r
588         </xs:simpleType>\r
589 -->\r
590         <!-- Le fait de ne pas déclarer une liste risque d'être problématique pour le parsing : A voir-->\r
591         <xs:complexType name="T_tuple">\r
592                 <xs:simpleContent>\r
593                         <xs:extension base="xs:anySimpleType">\r
594                                 <xs:attribute name="n" type="xs:int" use="required"/>\r
595                         </xs:extension>\r
596                 </xs:simpleContent>\r
597         </xs:complexType>\r
598         <xs:simpleType name="T_classe_utilisateur">\r
599                 <xs:restriction base="AT_nom"/>\r
600         </xs:simpleType>\r
601         <xs:element name="typesimple" type="T_simple"/>\r
602         <xs:element name="matrice_double" type="T_Matrice_double"/>\r
603         <xs:element name="matrice_symetrique_double" type="T_Matrice_Symetrique_double"/>\r
604         <xs:element name="tuple" type="T_tuple"/>\r
605         <xs:element name="classe_utilisateur" type="T_classe_utilisateur"/>\r
606         <!-- Essai -->\r
607         <!--    <xs:group name="T_Attendu_group1">\r
608                 <xs:choice>\r
609                         <xs:element ref="typesimple"/>\r
610                         <xs:element ref="matrice_double"/>\r
611                         <xs:element ref="matrice_symetrique_double"/>\r
612                         <xs:element ref="tuple"/>\r
613                         <xs:element ref="classe_utilisateur"/>\r
614                 </xs:choice>\r
615         </xs:group>\r
616 \r
617         <xs:group name="T_Attendu_group2">\r
618                 <xs:choice>\r
619                         <xs:element ref="typesimple"/>\r
620                         <xs:element ref="matrice_double"/>\r
621                         <xs:element ref="matrice_symetrique_double"/>\r
622                         <xs:element ref="tuple"/>\r
623                         <xs:element ref="classe_utilisateur"/>\r
624                         <xs:element ref="fonction_utilisateur" minOccurs="1" maxOccurs="unbounded"/>\r
625                 </xs:choice>\r
626         </xs:group>\r
627 \r
628         <xs:complexType name="T_typeAttendu">\r
629                 <xs:group ref="T_Attendu_group1"/>\r
630         </xs:complexType>\r
631         -->\r
632         <!-- Faire plutot un groupe de substitution pour ne pas croiser les choix -->\r
633         <!--\r
634         <xs:complexType name="T_into">\r
635           <xs:group ref="T_Attendu_group2"/>\r
636         </xs:complexType>\r
637         -->\r
638         <xs:complexType name="T_into">\r
639                 <xs:choice>\r
640                         <!--                    <xs:element ref="typesimple" type="T_Base"/>-->\r
641                         <xs:element ref="typesimple" minOccurs="0" maxOccurs="unbounded"/>\r
642                         <xs:element ref="matrice_double" minOccurs="0" maxOccurs="unbounded"/>\r
643                         <xs:element ref="matrice_symetrique_double" minOccurs="0" maxOccurs="unbounded"/>\r
644                         <xs:element ref="tuple" minOccurs="0" maxOccurs="unbounded"/>\r
645                         <xs:element ref="classe_utilisateur" minOccurs="0" maxOccurs="unbounded"/>\r
646                         <xs:element ref="fonction_utilisateur" minOccurs="1" maxOccurs="unbounded"/>\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="unbounded"/>\r
654                                         <xs:element ref="matrice_double" minOccurs="0" maxOccurs="unbounded"/>\r
655                                         <xs:element ref="matrice_symetrique_double" minOccurs="0" maxOccurs="unbounded"/>\r
656                                         <xs:element ref="tuple" minOccurs="0" maxOccurs="unbounded"/>\r
657                                         <xs:element ref="classe_utilisateur" minOccurs="0" maxOccurs="unbounded"/>\r
658                                 </xs:choice>\r
659                         </xs:restriction>\r
660                 </xs:complexContent>\r
661         </xs:complexType>\r
662 </xs:schema>\r
663 <!-- Catalogue EFFICAS équivalent\r
664 \r
665 # coding: utf-8\r
666 from Accas import *\r
667 \r
668 class carte   (ASSD) : pass\r
669 class maille   (ASSD) : pass\r
670 class carte_flux_r   (carte):pass\r
671 \r
672 class NOM_CHAM_INTO:\r
673     def __call__(self, *l_typ_cham, **kwargs):\r
674         return tuple(('A','B','C'))\r
675 C_NOM_CHAM_INTO = NOM_CHAM_INTO()\r
676 \r
677 JdC = JDC_CATA(code='MAP',\r
678                execmodul=None,\r
679                regles=ENSEMBLE('E1','E2','E3')\r
680                )\r
681 \r
682 CREECARTE = OPER(nom="CREECARTE",op=None, sd_prod=carte, UNITE=SIMP(statut='f',typ='I',defaut=21),);\r
683 \r
684 CREECARTEFLUX = OPER(nom="CREECARTEFLUX",op=None, sd_prod=carte_flux_r,\r
685                    NOMFLUX=SIMP(statut='o',typ='TXM',defaut='monFlux'),\r
686                 );\r
687 \r
688 CREEMAILLE = OPER(nom="CREEMAILLE",op=None, sd_prod=maille,\r
689                 NOEUDS=SIMP(statut='o',typ='I',defaut=(1,2),min=2,max=2)\r
690               );\r
691 \r
692 E1=PROC(nom="E1",\r
693         op=None,\r
694         regles    = (EXCLUS('ETAT_INIT','RESULTAT',),),\r
695         ETAT_INIT = FACT(statut='f', max='**',\r
696                          GROUP_MA_1=SIMP(statut='o',typ='I',validators=NoRepeat(),max='**'),\r
697                          GROUP_NO_2=SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),\r
698                     ),\r
699 \r
700         RESULTAT  = FACT(statut='f',\r
701                          DEPL=SIMP(statut='o', typ='R',  validators=NoRepeat()),\r
702                          VITE=SIMP(statut='f', typ='R',  validators=NoRepeat()),\r
703                          ACCE=SIMP(statut='f', typ='R',  validators=NoRepeat()),\r
704                     ), \r
705         );\r
706 \r
707 E2=PROC(nom="E2", op=None,\r
708         regles   = (UN_PARMI('CONCEPT','CHAINE','TOUT' ),),\r
709         CONCEPT  = FACT(statut='f',max='**',\r
710                    NOM = SIMP(statut='o',typ=assd,validators=NoRepeat(),max='**'),\r
711                    ),\r
712         CHAINE   = SIMP(statut='f',typ='TXM'),\r
713         POSITION = SIMP(statut='f',typ='I',defaut=1),\r
714         TOUT     = SIMP(statut='f',typ='TXM',into=("OUI",) ),\r
715         );\r
716 \r
717 E3=PROC(nom="E3",op=None,\r
718         DEFORMATION = SIMP(statut='f',typ='TXM',defaut="PETIT",\r
719                            into=("PETIT","PETIT_REAC","GROT_GDEP","SIMO_MIEHE","GDEF_HYPO_ELAS","GDEF_LOG")),\r
720         b_blocIn    = BLOC(condition = "DEFORMATION in ('PETIT','PETIT_REAC','GROT_GDEP')",\r
721              ITER_INTE_PAS = SIMP(statut='f',typ='I',defaut= 0 ),\r
722              ALGO_INTE     = SIMP(statut='f',typ='TXM',into=("ANALYTIQUE", "SECANTE", "DEKKER", "NEWTON_1D","BRENT",),),\r
723              CARTE         = SIMP(statut='f',typ=carte,),\r
724              b_carte       = BLOC(condition= "(AsType(CARTE) != carte_flux_r)",\r
725                              CONTRAINTE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',\r
726                                           fr="Options pour le calcul de contraintes et efforts generalises",\r
727                                            into=C_NOM_CHAM_INTO(phenomene='CONTRAINTE',categorie='lin'),)\r
728                              ),\r
729                       ),  \r
730        );\r
731 \r
732 -->\r