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