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
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
45 <xs:complexType name="T_cata">
\r
47 <xs:element ref="commandes" minOccurs="0" maxOccurs="unbounded"/>
\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
56 <xs:complexType name="T_plageValeur">
\r
59 <xs:element ref="borneSup" minOccurs="0"/>
\r
60 <xs:element ref="borneInf" minOccurs="0"/>
\r
62 <xs:element ref="into"/>
\r
65 <xs:complexType name="T_accasCommon">
\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
75 <xs:attribute ref="nom" use="required"/>
\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
82 <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>
\r
84 <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>
\r
85 <xs:field xpath="@efficas:nom"/>
\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
91 <xs:unique name="Oper_Uniq_Name_In_Exclus">
\r
92 <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>
\r
93 <xs:field xpath="."/>
\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
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
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
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
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
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
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
123 <xs:unique name="Oper_Uniq_Name_In_Ensemble">
\r
124 <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>
\r
125 <xs:field xpath="."/>
\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
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
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
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
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
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
152 <xs:complexType name="T_OPER">
\r
153 <xs:complexContent>
\r
154 <xs:extension base="T_accasCommon">
\r
156 <xs:element ref="typeCree"/>
\r
158 <xs:attribute ref="subroutine"/>
\r
160 </xs:complexContent>
\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
166 <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>
\r
168 <xs:selector xpath="./efficas:BLOC | ./efficas:FACT| ./efficas:SIMP"/>
\r
169 <xs:field xpath="@efficas:nom"/>
\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
175 <xs:unique name="Proc_Uniq_Name_In_Exclus">
\r
176 <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>
\r
177 <xs:field xpath="."/>
\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
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
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
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
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
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
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
207 <xs:unique name="Proc_Uniq_Name_In_Ensemble">
\r
208 <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>
\r
209 <xs:field xpath="."/>
\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
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
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
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
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
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
236 <xs:complexType name="T_PROC">
\r
237 <xs:complexContent>
\r
238 <xs:extension base="T_accasCommon">
\r
239 <xs:attribute ref="subroutine"/>
\r
241 </xs:complexContent>
\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
248 <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>
\r
250 <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>
\r
251 <xs:field xpath="@efficas:nom"/>
\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
258 <!-- Définition par restriction -->
\r
259 <!-- <xs:complexType name="T_FACT">
\r
260 <xs:complexContent>
\r
261 <xs:restriction base="T_accasCommon">
\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
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
281 <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>
\r
285 <!-- <xs:assert test=".[exists(@efficas:maxOccurences) and exists(@efficas:minOccurences) and @efficas:maxOccurences gt @efficas:minOccurences]"/>
\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
290 <xs:simpleType name="T_fonctionUtilisateur">
\r
291 <xs:restriction base="xs:string"/>
\r
293 <xs:element name="BLOC" type="T_BLOC">
\r
294 <xs:key name="Key_Name_In_Bloc">
\r
296 <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>
\r
298 <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>
\r
299 <xs:field xpath="@efficas:nom"/>
\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
306 <xs:complexType name="T_BLOC">
\r
307 <xs:complexContent>
\r
308 <xs:extension base="T_accasCommon">
\r
310 <xs:element ref="condition"/>
\r
313 </xs:complexContent>
\r
315 <xs:complexType name="T_SIMP">
\r
317 <xs:element ref="doc" minOccurs="0"/>
\r
318 <xs:element ref="portee" minOccurs="0">
\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
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
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
334 <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>
\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
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
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
356 <xs:simpleType name="AT_maxOccurences">
\r
357 <xs:restriction base="xs:long">
\r
358 <xs:minInclusive value="-1"/>
\r
361 <xs:simpleType name="AT_minOccurences">
\r
362 <xs:restriction base="xs:long">
\r
363 <xs:minExclusive value="0"/>
\r
366 <!-- Comparable -->
\r
367 <!-- <xs:simpleType name="AT_borne_sup">
\r
368 <xs:atomic base="xs:double"/>
\r
370 <xs:simpleType name="AT_borne_inf">
\r
371 <xs:restriction base="xs:double"/>
\r
374 <xs:simpleType name="AT_docu">
\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
378 <xs:restriction base="xs:string"/>
\r
380 <xs:simpleType name="AT_valeurSugg">
\r
381 <xs:restriction base="xs:string"/>
\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
389 <xs:simpleType name="T_predicat1">
\r
390 <xs:list itemType="AT_nom"/>
\r
391 <!-- TODO: Supprimer la liste -->
\r
393 <xs:complexType name="T_predicat2">
\r
395 <xs:element name="p1" type="T_predicat1" minOccurs="1"/>
\r
396 <xs:element name="p2" type="AT_nom" minOccurs="1"/>
\r
398 <!-- TODO: Supprimer la séquence -->
\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
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
420 <xs:complexType name="T_regles">
\r
421 <xs:sequence maxOccurs="unbounded">
\r
422 <xs:group ref="predicat"/>
\r
425 <!-- <xs:simpleType name="T_typeCree">
\r
426 <xs:restriction base="T_classeUtilisateur"/>
\r
429 <xs:simpleType name="AT_subroutine">
\r
430 <xs:restriction base="AT_nom"/>
\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
440 <xs:simpleType name="T_Bool">
\r
441 <xs:restriction base="xs:boolean"/>
\r
443 <xs:simpleType name="T_list_Bool">
\r
444 <xs:list itemType="T_Bool"/>
\r
446 <xs:simpleType name="T_I">
\r
447 <xs:restriction base="xs:int"/>
\r
449 <xs:simpleType name="T_list_I">
\r
450 <xs:list itemType="T_I"/>
\r
452 <xs:simpleType name="T_R">
\r
453 <xs:restriction base="xs:double"/>
\r
455 <xs:simpleType name="T_list_R">
\r
456 <xs:list itemType="T_R"/>
\r
458 <xs:simpleType name="T_TXM">
\r
459 <xs:restriction base="AT_nom"/>
\r
461 <xs:simpleType name="T_list_TXM">
\r
462 <xs:list itemType="T_TXM"/>
\r
464 <!--fonctionne mais ne permet pas de créer une liste de liste -->
\r
465 <xs:simpleType name="T_C">
\r
468 <xs:list itemType="xs:double"/>
\r
470 <xs:minLength value="2"/>
\r
471 <xs:maxLength value="2"/>
\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
479 <xs:simpleType name="T_nameBase">
\r
480 <xs:restriction base="AT_nom"/>
\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
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
500 <xs:simpleType name="T_classeUtilisateurTypeName">
\r
501 <xs:restriction base="T_name">
\r
502 <xs:enumeration value="T_classeUtilisateur"/>
\r
505 <xs:complexType name="T_classeUtilisateurName">
\r
507 <xs:extension base="T_classeUtilisateurTypeName">
\r
508 <xs:attribute ref="nom" use="required"/>
\r
510 </xs:simpleContent>
\r
512 <xs:simpleType name="T_name">
\r
513 <xs:union memberTypes="T_simpleName">
\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
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
532 <xs:restriction base="xs:string">
\r
533 <xs:whiteSpace value="preserve"/>
\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
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
557 <xs:simpleType name="T_list_Double">
\r
558 <xs:list itemType="xs:double"/>
\r
560 <!-- Possibilité d'utiliser un type paramétré ? -->
\r
561 <xs:complexType name="T_matriceDouble">
\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
567 </xs:simpleContent>
\r
569 <!-- Faire l'exercice de dériver de T_matriceDouble -->
\r
570 <xs:complexType name="T_matriceSymetriqueDouble">
\r
572 <xs:extension base="T_list_Double">
\r
573 <xs:attribute name="n" type="xs:int" use="required"/>
\r
575 </xs:simpleContent>
\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
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
585 <xs:extension base="xs:anySimpleType">
\r
586 <xs:attribute name="n" type="xs:int" use="required"/>
\r
588 </xs:simpleContent>
\r
590 <xs:simpleType name="T_classeUtilisateur">
\r
591 <xs:restriction base="AT_nom"/>
\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
599 <!-- <xs:group name="T_Attendu_group1">
\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
609 <xs:group name="T_Attendu_group2">
\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
620 <xs:complexType name="T_typeAttendu">
\r
621 <xs:group ref="T_Attendu_group1"/>
\r
624 <!-- Faire plutot un groupe de substitution pour ne pas croiser les choix -->
\r
626 <xs:complexType name="T_into">
\r
627 <xs:group ref="T_Attendu_group2"/>
\r
630 <xs:complexType name="T_into">
\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
641 <xs:complexType name="T_typeAttendu">
\r
642 <xs:complexContent>
\r
643 <xs:restriction base="T_into">
\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
652 </xs:complexContent>
\r
655 <!-- Catalogue EFFICAS équivalent
\r
658 from Accas import *
\r
660 class carte (ASSD) : pass
\r
661 class maille (ASSD) : pass
\r
662 class carte_flux_r (carte):pass
\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
669 JdC = JDC_CATA(code='MAP',
\r
671 regles=ENSEMBLE('E1','E2','E3')
\r
674 CREECARTE = OPER(nom="CREECARTE",op=None, sd_prod=carte, UNITE=SIMP(statut='f',typ='I',defaut=21),);
\r
676 CREECARTEFLUX = OPER(nom="CREECARTEFLUX",op=None, sd_prod=carte_flux_r,
\r
677 NOMFLUX=SIMP(statut='o',typ='TXM',defaut='monFlux'),
\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
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
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
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
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
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