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
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
46 <xs:complexType name="T_cata">
\r
48 <xs:element ref="commandes" minOccurs="0" maxOccurs="unbounded"/>
\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
57 <xs:complexType name="T_Cardinalite"/>
\r
58 <xs:complexType name="T_plageValeur">
\r
61 <xs:element ref="borne_sup" minOccurs="0"/>
\r
62 <xs:element ref="borne_inf" minOccurs="0"/>
\r
64 <xs:element ref="into"/>
\r
67 <xs:complexType name="T_Accas_Common">
\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
77 <xs:attribute ref="nom" use="required"/>
\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
84 <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>
\r
86 <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>
\r
87 <xs:field xpath="@efficas:nom"/>
\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
93 <xs:unique name="Oper_Uniq_Name_In_Exclus">
\r
94 <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>
\r
95 <xs:field xpath="."/>
\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
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
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
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
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
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
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
125 <xs:unique name="Oper_Uniq_Name_In_Ensemble">
\r
126 <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>
\r
127 <xs:field xpath="."/>
\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
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
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
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
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
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
155 <xs:complexType name="T_OPER">
\r
156 <xs:complexContent>
\r
157 <xs:extension base="T_Accas_Common">
\r
159 <xs:element ref="typeCree"/>
\r
161 <xs:attribute ref="subroutine"/>
\r
163 </xs:complexContent>
\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
169 <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>
\r
171 <xs:selector xpath="./efficas:BLOC | ./efficas:FACT| ./efficas:SIMP"/>
\r
172 <xs:field xpath="@efficas:nom"/>
\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
178 <xs:unique name="Proc_Uniq_Name_In_Exclus">
\r
179 <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>
\r
180 <xs:field xpath="."/>
\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
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
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
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
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
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
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
210 <xs:unique name="Proc_Uniq_Name_In_Ensemble">
\r
211 <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>
\r
212 <xs:field xpath="."/>
\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
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
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
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
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
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
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
244 </xs:complexContent>
\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
251 <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>
\r
253 <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>
\r
254 <xs:field xpath="@efficas:nom"/>
\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
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
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
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
284 <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>
\r
288 <!-- <xs:assert test=".[exists(@efficas:max_occurs) and exists(@efficas:min_occurs) and @efficas:max_occurs gt @efficas:min_occurs]"/>
\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
293 <xs:simpleType name="T_fonction_python">
\r
294 <xs:restriction base="xs:string"/>
\r
296 <xs:element name="BLOC" type="T_BLOC">
\r
297 <xs:key name="Key_Name_In_Bloc">
\r
299 <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>
\r
301 <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>
\r
302 <xs:field xpath="@efficas:nom"/>
\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
309 <xs:complexType name="T_BLOC">
\r
310 <xs:complexContent>
\r
311 <xs:extension base="T_Accas_Common">
\r
313 <xs:element ref="condition"/>
\r
316 </xs:complexContent>
\r
318 <xs:complexType name="T_SIMP">
\r
320 <xs:element ref="doc" minOccurs="0"/>
\r
321 <xs:element ref="portee" minOccurs="0">
\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
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
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
337 <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>
\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
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
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
359 <xs:simpleType name="AT_max_occurs">
\r
360 <xs:restriction base="xs:long">
\r
361 <xs:minInclusive value="-1"/>
\r
364 <xs:simpleType name="AT_min_occurs">
\r
365 <xs:restriction base="xs:long">
\r
366 <xs:minExclusive value="0"/>
\r
369 <!-- Comparable -->
\r
370 <!-- <xs:simpleType name="AT_borne_sup">
\r
371 <xs:atomic base="xs:double"/>
\r
373 <xs:simpleType name="AT_borne_inf">
\r
374 <xs:restriction base="xs:double"/>
\r
377 <xs:simpleType name="AT_ag">
\r
378 <xs:restriction base="xs:string">
\r
379 <xs:enumeration value="No comment"/>
\r
382 <xs:simpleType name="AT_docu">
\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
386 <xs:restriction base="xs:string"/>
\r
388 <xs:simpleType name="AT_valeur_sugg">
\r
389 <xs:restriction base="xs:string"/>
\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
397 <xs:simpleType name="T_predicat1">
\r
398 <xs:list itemType="AT_nom"/>
\r
399 <!-- TODO: Supprimer la liste -->
\r
401 <xs:complexType name="T_predicat2">
\r
403 <xs:element name="p1" type="T_predicat1" minOccurs="1"/>
\r
404 <xs:element name="p2" type="AT_nom" minOccurs="1"/>
\r
406 <!-- TODO: Supprimer la séquence -->
\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
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
428 <xs:complexType name="T_regles">
\r
429 <xs:sequence maxOccurs="unbounded">
\r
430 <xs:group ref="predicat"/>
\r
433 <!-- <xs:simpleType name="T_typeCree">
\r
434 <xs:restriction base="T_classe_utilisateur"/>
\r
437 <xs:simpleType name="AT_subroutine">
\r
438 <xs:restriction base="AT_nom"/>
\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
448 <xs:simpleType name="T_Bool">
\r
449 <xs:restriction base="xs:boolean"/>
\r
451 <xs:simpleType name="T_list_Bool">
\r
452 <xs:list itemType="T_Bool"/>
\r
454 <xs:simpleType name="T_I">
\r
455 <xs:restriction base="xs:int"/>
\r
457 <xs:simpleType name="T_list_I">
\r
458 <xs:list itemType="T_I"/>
\r
460 <xs:simpleType name="T_R">
\r
461 <xs:restriction base="xs:double"/>
\r
463 <xs:simpleType name="T_list_R">
\r
464 <xs:list itemType="T_R"/>
\r
466 <xs:simpleType name="T_TXM">
\r
467 <xs:restriction base="AT_nom"/>
\r
469 <xs:simpleType name="T_list_TXM">
\r
470 <xs:list itemType="T_TXM"/>
\r
472 <!--fonctionne mais ne permet pas de créer une liste de liste -->
\r
473 <xs:simpleType name="T_C">
\r
476 <xs:list itemType="xs:double"/>
\r
478 <xs:minLength value="2"/>
\r
479 <xs:maxLength value="2"/>
\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
487 <xs:simpleType name="T_name_base">
\r
488 <xs:restriction base="AT_nom"/>
\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
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
508 <xs:simpleType name="T_classe_utilisateur_name">
\r
509 <xs:restriction base="T_name">
\r
510 <xs:enumeration value="T_classe_utilisateur"/>
\r
513 <xs:complexType name="T_classe_utilisateur_username">
\r
515 <xs:extension base="T_classe_utilisateur_name">
\r
516 <xs:attribute ref="nom" use="required"/>
\r
518 </xs:simpleContent>
\r
520 <xs:simpleType name="T_name">
\r
521 <xs:union memberTypes="T_simple_name">
\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
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
540 <xs:restriction base="xs:string">
\r
541 <xs:whiteSpace value="preserve"/>
\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
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
565 <xs:simpleType name="T_list_double">
\r
566 <xs:list itemType="xs:double"/>
\r
568 <!-- Possibilité d'utiliser un type paramétré ? -->
\r
569 <xs:complexType name="T_Matrice_double">
\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
575 </xs:simpleContent>
\r
577 <!-- Faire l'exercice de dériver de T_Matrice_double -->
\r
578 <xs:complexType name="T_Matrice_Symetrique_double">
\r
580 <xs:extension base="T_list_double">
\r
581 <xs:attribute name="n" type="xs:int" use="required"/>
\r
583 </xs:simpleContent>
\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
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
593 <xs:extension base="xs:anySimpleType">
\r
594 <xs:attribute name="n" type="xs:int" use="required"/>
\r
596 </xs:simpleContent>
\r
598 <xs:simpleType name="T_classe_utilisateur">
\r
599 <xs:restriction base="AT_nom"/>
\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
607 <!-- <xs:group name="T_Attendu_group1">
\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
617 <xs:group name="T_Attendu_group2">
\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
628 <xs:complexType name="T_typeAttendu">
\r
629 <xs:group ref="T_Attendu_group1"/>
\r
632 <!-- Faire plutot un groupe de substitution pour ne pas croiser les choix -->
\r
634 <xs:complexType name="T_into">
\r
635 <xs:group ref="T_Attendu_group2"/>
\r
638 <xs:complexType name="T_into">
\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
649 <xs:complexType name="T_typeAttendu">
\r
650 <xs:complexContent>
\r
651 <xs:restriction base="T_into">
\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
660 </xs:complexContent>
\r
663 <!-- Catalogue EFFICAS équivalent
\r
666 from Accas import *
\r
668 class carte (ASSD) : pass
\r
669 class maille (ASSD) : pass
\r
670 class carte_flux_r (carte):pass
\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
677 JdC = JDC_CATA(code='MAP',
\r
679 regles=ENSEMBLE('E1','E2','E3')
\r
682 CREECARTE = OPER(nom="CREECARTE",op=None, sd_prod=carte, UNITE=SIMP(statut='f',typ='I',defaut=21),);
\r
684 CREECARTEFLUX = OPER(nom="CREECARTEFLUX",op=None, sd_prod=carte_flux_r,
\r
685 NOMFLUX=SIMP(statut='o',typ='TXM',defaut='monFlux'),
\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
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
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
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
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
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