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
154 <xs:complexType name="T_OPER">
\r
155 <xs:complexContent>
\r
156 <xs:extension base="T_Accas_Common">
\r
158 <xs:element ref="typeCree"/>
\r
160 <xs:attribute ref="subroutine"/>
\r
162 </xs:complexContent>
\r
164 <xs:element name="PROC" type="T_PROC">
\r
165 <!-- La contrainte fonctionne pour toutes les PROC adjacentes et devrait être par PROC -->
\r
166 <xs:key name="Key_Name_In_Proc">
\r
168 <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>
\r
170 <xs:selector xpath="./efficas:BLOC | ./efficas:FACT| ./efficas:SIMP"/>
\r
171 <xs:field xpath="@efficas:nom"/>
\r
173 <xs:keyref name="Proc_Ref_A_Name_In_Exclus" refer="Key_Name_In_Proc">
\r
174 <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>
\r
175 <xs:field xpath="."/>
\r
177 <xs:unique name="Proc_Uniq_Name_In_Exclus">
\r
178 <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>
\r
179 <xs:field xpath="."/>
\r
181 <xs:keyref name="Proc_Ref_A_Name_In_A_Classer" refer="Key_Name_In_Proc">
\r
182 <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>
\r
183 <xs:field xpath="."/>
\r
185 <xs:unique name="Proc_Uniq_Name_In_A_Classer">
\r
186 <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>
\r
187 <xs:field xpath="."/>
\r
189 <xs:keyref name="Proc_Ref_A_Name_In_Au_Moins_Un" refer="Key_Name_In_Proc">
\r
190 <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>
\r
191 <xs:field xpath="."/>
\r
193 <xs:unique name="Proc_Uniq_Name_In_Au_Moins_Un">
\r
194 <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>
\r
195 <xs:field xpath="."/>
\r
197 <xs:keyref name="Proc_Ref_A_Name_In_Au_Plus_Un" refer="Key_Name_In_Proc">
\r
198 <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>
\r
199 <xs:field xpath="."/>
\r
201 <xs:unique name="Proc_Uniq_Name_In_Au_Plus_Un">
\r
202 <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>
\r
203 <xs:field xpath="."/>
\r
205 <xs:keyref name="Proc_Ref_A_Name_In_Ensemble" refer="Key_Name_In_Proc">
\r
206 <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>
\r
207 <xs:field xpath="."/>
\r
209 <xs:unique name="Proc_Uniq_Name_In_Ensemble">
\r
210 <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>
\r
211 <xs:field xpath="."/>
\r
213 <xs:keyref name="Proc_Ref_A_Name_In_Present_Absent" refer="Key_Name_In_Proc">
\r
214 <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>
\r
215 <xs:field xpath="."/>
\r
217 <xs:unique name="Proc_Uniq_Name_In_Present_Absent">
\r
218 <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>
\r
219 <xs:field xpath="."/>
\r
221 <xs:keyref name="Proc_Ref_A_Name_In_Present_Present" refer="Key_Name_In_Proc">
\r
222 <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>
\r
223 <xs:field xpath="."/>
\r
225 <xs:unique name="Proc_Uniq_Name_In_Present_Present">
\r
226 <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>
\r
227 <xs:field xpath="."/>
\r
229 <xs:keyref name="Ref_A_Name_In_Un_Parmi" refer="Key_Name_In_Proc">
\r
230 <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>
\r
231 <xs:field xpath="."/>
\r
233 <xs:unique name="Proc_Uniq_Name_In_Un_Parmi">
\r
234 <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>
\r
235 <xs:field xpath="."/>
\r
238 <xs:complexType name="T_PROC">
\r
239 <xs:complexContent>
\r
240 <xs:extension base="T_Accas_Common">
\r
241 <xs:attribute ref="subroutine"/>
\r
243 </xs:complexContent>
\r
245 <xs:element name="FACT" type="T_FACT">
\r
246 <!-- La contrainte fonctionne uniquement si l'on n'oublie pas le prefix dans l'expression du selector ! -->
\r
247 <!-- aucun nom identique ne doit apparaître dans les sous élements d'un même niveau de FACT -->
\r
248 <xs:key name="Key_Name_In_Fact">
\r
250 <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>
\r
252 <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>
\r
253 <xs:field xpath="@efficas:nom"/>
\r
255 <xs:keyref name="Ref_A_Name_In_Fact" refer="Key_Name_In_Fact">
\r
256 <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>
\r
257 <xs:field xpath="."/>
\r
260 <!-- Définition par restriction -->
\r
261 <!-- <xs:complexType name="T_FACT">
\r
262 <xs:complexContent>
\r
263 <xs:restriction base="T_Accas_Common">
\r
265 <xs:element ref="regles" minOccurs="0"/>
\r
266 <xs:element ref="doc" minOccurs="0"/>
\r
267 <xs:choice maxOccurs="unbounded">
\r
268 <xs:element ref="BLOC"/>
\r
269 <xs:element ref="FACT"/>
\r
270 <xs:element ref="SIMP"/>
\r
274 </xs:complexContent>
\r
275 </xs:complexType>-->
\r
276 <xs:complexType name="T_FACT">
\r
277 <xs:complexContent>
\r
278 <xs:extension base="T_Accas_Common">
\r
279 <xs:attribute ref="statut"/>
\r
280 <xs:attribute ref="min_occurs" default="1"/>
\r
281 <xs:attribute ref="max_occurs" default="1">
\r
283 <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>
\r
287 <!-- <xs:assert test=".[exists(@efficas:max_occurs) and exists(@efficas:min_occurs) and @efficas:max_occurs gt @efficas:min_occurs]"/>
\r
289 <!--<xs:assert test="if (.[exists(@efficas:max_occurs)] and .[exists(@efficas:min_occurs)] ) then (@efficas:max_occurs gt @efficas:min_occurs) or @efficas:max_occurs = -1 else true" altova:message="Erreur max_occurs > min_occurs "/>-->
\r
290 </xs:complexContent>
\r
292 <xs:simpleType name="T_fonction_python">
\r
293 <xs:restriction base="xs:string"/>
\r
295 <xs:element name="BLOC" type="T_BLOC">
\r
296 <xs:key name="Key_Name_In_Bloc">
\r
298 <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>
\r
300 <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>
\r
301 <xs:field xpath="@efficas:nom"/>
\r
303 <xs:keyref name="Ref_A_Name_In_Bloc" refer="Key_Name_In_Bloc">
\r
304 <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>
\r
305 <xs:field xpath="."/>
\r
308 <xs:complexType name="T_BLOC">
\r
309 <xs:complexContent>
\r
310 <xs:extension base="T_Accas_Common">
\r
312 <xs:element ref="condition"/>
\r
315 </xs:complexContent>
\r
317 <xs:complexType name="T_SIMP">
\r
319 <xs:element ref="doc" minOccurs="0"/>
\r
320 <xs:element ref="portee" minOccurs="0">
\r
322 <xs:documentation>La portée pouurait devenir un attribut de SIMP. Une autre solution consisterait a créer un SIMPG pour distinguer les @nom uniques des SIMP a portée globale des autres.</xs:documentation>
\r
325 <xs:element ref="valeurDef" minOccurs="0"/>
\r
326 <xs:element ref="valeurSugg" minOccurs="0"/>
\r
327 <xs:element ref="plageValeur" minOccurs="0"/>
\r
328 <xs:element ref="typeAttendu"/>
\r
329 <xs:element ref="validators" minOccurs="0"/>
\r
331 <xs:attribute ref="nom" use="required"/>
\r
332 <xs:attribute ref="statut" default="o"/>
\r
333 <xs:attribute ref="min_occurs" default="1"/>
\r
334 <xs:attribute ref="max_occurs" default="1">
\r
336 <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>
\r
340 <xs:simpleType name="AT_statut">
\r
341 <xs:restriction base="xs:string">
\r
342 <xs:enumeration value="f"/>
\r
343 <xs:enumeration value="o"/>
\r
346 <!--<xs:simpleType name="T_repetable">
\r
347 <xs:restriction base="xs:string">
\r
348 <xs:enumeration value="n"/>
\r
349 <xs:enumeration value="o"/>
\r
351 </xs:simpleType>-->
\r
352 <xs:simpleType name="T_portee">
\r
353 <xs:restriction base="xs:string">
\r
354 <xs:enumeration value="None"/>
\r
355 <xs:enumeration value="Global"/>
\r
358 <xs:simpleType name="AT_max_occurs">
\r
359 <xs:restriction base="xs:long">
\r
360 <xs:minInclusive value="-1"/>
\r
363 <xs:simpleType name="AT_min_occurs">
\r
364 <xs:restriction base="xs:long">
\r
365 <xs:minExclusive value="0"/>
\r
368 <!-- Comparable -->
\r
369 <!-- <xs:simpleType name="AT_borne_sup">
\r
370 <xs:atomic base="xs:double"/>
\r
372 <xs:simpleType name="AT_borne_inf">
\r
373 <xs:restriction base="xs:double"/>
\r
376 <xs:simpleType name="AT_ag">
\r
377 <xs:restriction base="xs:string">
\r
378 <xs:enumeration value="No comment"/>
\r
381 <xs:simpleType name="AT_docu">
\r
383 <xs:documentation>Référence une position dans un fichier maître contenant une liste de références à des pages de documentations</xs:documentation>
\r
385 <xs:restriction base="xs:string"/>
\r
387 <xs:simpleType name="AT_valeur_sugg">
\r
388 <xs:restriction base="xs:string"/>
\r
390 <!-- TODO: Exclure mots clés python|efficas -->
\r
391 <xs:simpleType name="AT_nom">
\r
392 <xs:restriction base="xs:string">
\r
393 <xs:pattern value="([A-Z]|[a-z]|_)([A-Z]|[a-z]|_|[0-9])*"/>
\r
396 <xs:simpleType name="T_predicat1">
\r
397 <xs:list itemType="AT_nom"/>
\r
398 <!-- TODO: Supprimer la liste -->
\r
400 <xs:complexType name="T_predicat2">
\r
402 <xs:element name="p1" type="T_predicat1" minOccurs="1"/>
\r
403 <xs:element name="p2" type="AT_nom" minOccurs="1"/>
\r
405 <!-- TODO: Supprimer la séquence -->
\r
407 <xs:element name="A_CLASSER" type="T_predicat2"/>
\r
408 <xs:element name="AU_MOINS_UN" type="T_predicat1"/>
\r
409 <xs:element name="AU_PLUS_UN" type="T_predicat1"/>
\r
410 <xs:element name="ENSEMBLE" type="T_predicat1"/>
\r
411 <xs:element name="EXCLUS" type="T_predicat1"/>
\r
412 <xs:element name="PRESENT_ABSENT" type="T_predicat1"/>
\r
413 <xs:element name="PRESENT_PRESENT" type="T_predicat1"/>
\r
414 <xs:element name="UN_PARMI" type="T_predicat1"/>
\r
415 <xs:group name="predicat">
\r
417 <xs:element ref="A_CLASSER"/>
\r
418 <xs:element ref="AU_MOINS_UN"/>
\r
419 <xs:element ref="AU_PLUS_UN"/>
\r
420 <xs:element ref="ENSEMBLE"/>
\r
421 <xs:element ref="EXCLUS"/>
\r
422 <xs:element ref="PRESENT_ABSENT"/>
\r
423 <xs:element ref="PRESENT_PRESENT"/>
\r
424 <xs:element ref="UN_PARMI"/>
\r
427 <xs:complexType name="T_regles">
\r
428 <xs:sequence maxOccurs="unbounded">
\r
429 <xs:group ref="predicat"/>
\r
432 <!-- <xs:simpleType name="T_typeCree">
\r
433 <xs:restriction base="T_classe_utilisateur"/>
\r
436 <xs:simpleType name="AT_subroutine">
\r
437 <xs:restriction base="AT_nom"/>
\r
439 <xs:simpleType name="T_validators">
\r
440 <xs:restriction base="xs:string">
\r
441 <xs:enumeration value="NoRepeat"/>
\r
442 <xs:enumeration value="OnlyStr"/>
\r
443 <xs:enumeration value="VerifExiste"/>
\r
444 <xs:enumeration value="VerifTypeTuple"/>
\r
447 <xs:simpleType name="T_Bool">
\r
448 <xs:restriction base="xs:boolean"/>
\r
450 <xs:simpleType name="T_list_Bool">
\r
451 <xs:list itemType="T_Bool"/>
\r
453 <xs:simpleType name="T_I">
\r
454 <xs:restriction base="xs:int"/>
\r
456 <xs:simpleType name="T_list_I">
\r
457 <xs:list itemType="T_I"/>
\r
459 <xs:simpleType name="T_R">
\r
460 <xs:restriction base="xs:double"/>
\r
462 <xs:simpleType name="T_list_R">
\r
463 <xs:list itemType="T_R"/>
\r
465 <xs:simpleType name="T_TXM">
\r
466 <xs:restriction base="AT_nom"/>
\r
468 <xs:simpleType name="T_list_TXM">
\r
469 <xs:list itemType="T_TXM"/>
\r
471 <!--fonctionne mais ne permet pas de créer une liste de liste -->
\r
472 <xs:simpleType name="T_C">
\r
475 <xs:list itemType="xs:double"/>
\r
477 <xs:minLength value="2"/>
\r
478 <xs:maxLength value="2"/>
\r
481 <!-- Ajouter une contrainte : taille pair -->
\r
482 <!-- Il n'est pas possible de définir des listes de listes -->
\r
483 <xs:simpleType name="T_list_C">
\r
484 <xs:list itemType="xs:double"/>
\r
486 <xs:simpleType name="T_name_base">
\r
487 <xs:restriction base="AT_nom"/>
\r
489 <xs:simpleType name="T_simple_name">
\r
490 <xs:restriction base="T_name_base">
\r
491 <xs:enumeration value="Fichier"/>
\r
492 <xs:enumeration value="Repertoire"/>
\r
493 <xs:enumeration value="TXM"/>
\r
494 <xs:enumeration value="I"/>
\r
495 <xs:enumeration value="R"/>
\r
496 <xs:enumeration value="C"/>
\r
497 <xs:enumeration value="Bool"/>
\r
498 <xs:enumeration value="grma"/>
\r
499 <xs:enumeration value="grno"/>
\r
500 <xs:enumeration value="SalomeEntry"/>
\r
503 <!-- On ne peut pas rendre abstrait un simpleType &&
\r
504 Il n'est pas possible de dériver par restriction un simplecontent d'un type complex qui
\r
505 lui peut être abstrait.
\r
507 <xs:simpleType name="T_classe_utilisateur_name">
\r
508 <xs:restriction base="T_name">
\r
509 <xs:enumeration value="T_classe_utilisateur"/>
\r
512 <xs:complexType name="T_classe_utilisateur_username">
\r
514 <xs:extension base="T_classe_utilisateur_name">
\r
515 <xs:attribute ref="nom" use="required"/>
\r
517 </xs:simpleContent>
\r
519 <xs:simpleType name="T_name">
\r
520 <xs:union memberTypes="T_simple_name">
\r
522 <xs:restriction base="AT_nom">
\r
523 <xs:enumeration value="T_Matrice_double"/>
\r
524 <xs:enumeration value="T_Matrice_Symetrique_double"/>
\r
525 <xs:enumeration value="T_tuple"/>
\r
526 <xs:enumeration value="T_classe_utilisateur"/>
\r
531 <xs:complexType name="T_grma"/>
\r
532 <xs:complexType name="T_grno"/>
\r
533 <xs:complexType name="T_SalomeEntry"/>
\r
534 <xs:complexType name="T_Fichier"/>
\r
535 <!-- <xs:complexType name="T_Repertoire"/>-->
\r
536 <xs:simpleType name="T_Repertoire">
\r
539 <xs:restriction base="xs:string">
\r
540 <xs:whiteSpace value="preserve"/>
\r
545 <xs:simpleType name="T_simple">
\r
546 <xs:union memberTypes="T_I T_list_I T_R T_list_R T_C T_list_C T_TXM T_list_TXM T_Bool T_list_Bool T_Repertoire"/>
\r
548 <!-- <xs:complexType name="T_TXM"/>-->
\r
549 <!-- <xs:simpleType name="T_simple">
\r
550 <xs:restriction base="xs:string">
\r
551 <xs:enumeration value="Fichier"/>
\r
552 <xs:enumeration value="Repertoire"/>
\r
553 <xs:enumeration value="TXM"/>
\r
554 <xs:enumeration value="I"/>
\r
555 <xs:enumeration value="R"/>
\r
556 <xs:enumeration value="C"/>
\r
557 <xs:enumeration value="Bool"/>
\r
558 <xs:enumeration value="grma"/>
\r
559 <xs:enumeration value="grno"/>
\r
560 <xs:enumeration value="SalomeEntry"/>
\r
564 <xs:simpleType name="T_list_double">
\r
565 <xs:list itemType="xs:double"/>
\r
567 <!-- Possibilité d'utiliser un type paramétré ? -->
\r
568 <xs:complexType name="T_Matrice_double">
\r
570 <xs:extension base="T_list_double">
\r
571 <xs:attribute name="n" type="xs:integer" use="required"/>
\r
572 <xs:attribute name="m" type="xs:integer" use="required"/>
\r
574 </xs:simpleContent>
\r
576 <!-- Faire l'exercice de dériver de T_Matrice_double -->
\r
577 <xs:complexType name="T_Matrice_Symetrique_double">
\r
579 <xs:extension base="T_list_double">
\r
580 <xs:attribute name="n" type="xs:int" use="required"/>
\r
582 </xs:simpleContent>
\r
584 <!-- Une liste est aussi un type simple ! -->
\r
585 <!-- <xs:simpleType name="T_list_anySimpleType">
\r
586 <xs:list itemType="xs:anySimpleType"/>
\r
589 <!-- Le fait de ne pas déclarer une liste risque d'être problématique pour le parsing : A voir-->
\r
590 <xs:complexType name="T_tuple">
\r
592 <xs:extension base="xs:anySimpleType">
\r
593 <xs:attribute name="n" type="xs:int" use="required"/>
\r
595 </xs:simpleContent>
\r
597 <xs:simpleType name="T_classe_utilisateur">
\r
598 <xs:restriction base="AT_nom"/>
\r
600 <xs:element name="typesimple" type="T_simple"/>
\r
601 <xs:element name="matrice_double" type="T_Matrice_double"/>
\r
602 <xs:element name="matrice_symetrique_double" type="T_Matrice_Symetrique_double"/>
\r
603 <xs:element name="tuple" type="T_tuple"/>
\r
604 <xs:element name="classe_utilisateur" type="T_classe_utilisateur"/>
\r
606 <!-- <xs:group name="T_Attendu_group1">
\r
608 <xs:element ref="typesimple"/>
\r
609 <xs:element ref="matrice_double"/>
\r
610 <xs:element ref="matrice_symetrique_double"/>
\r
611 <xs:element ref="tuple"/>
\r
612 <xs:element ref="classe_utilisateur"/>
\r
616 <xs:group name="T_Attendu_group2">
\r
618 <xs:element ref="typesimple"/>
\r
619 <xs:element ref="matrice_double"/>
\r
620 <xs:element ref="matrice_symetrique_double"/>
\r
621 <xs:element ref="tuple"/>
\r
622 <xs:element ref="classe_utilisateur"/>
\r
623 <xs:element ref="fonction_utilisateur" minOccurs="1" maxOccurs="unbounded"/>
\r
627 <xs:complexType name="T_typeAttendu">
\r
628 <xs:group ref="T_Attendu_group1"/>
\r
631 <!-- Faire plutot un groupe de substitution pour ne pas croiser les choix -->
\r
633 <xs:complexType name="T_into">
\r
634 <xs:group ref="T_Attendu_group2"/>
\r
637 <xs:complexType name="T_into">
\r
639 <!-- <xs:element ref="typesimple" type="T_Base"/>-->
\r
640 <xs:element ref="typesimple" minOccurs="0" maxOccurs="1"/>
\r
641 <xs:element ref="matrice_double" minOccurs="0" maxOccurs="1"/>
\r
642 <xs:element ref="matrice_symetrique_double" minOccurs="0" maxOccurs="1"/>
\r
643 <xs:element ref="tuple" minOccurs="0" maxOccurs="1"/>
\r
644 <xs:element ref="classe_utilisateur" minOccurs="0" maxOccurs="1"/>
\r
645 <xs:element ref="fonction_utilisateur" minOccurs="0" maxOccurs="1"/>
\r
648 <xs:complexType name="T_typeAttendu">
\r
649 <xs:complexContent>
\r
650 <xs:restriction base="T_into">
\r
652 <xs:element ref="typesimple" minOccurs="0" maxOccurs="1"/>
\r
653 <xs:element ref="matrice_double" minOccurs="0" maxOccurs="1"/>
\r
654 <xs:element ref="matrice_symetrique_double" minOccurs="0" maxOccurs="1"/>
\r
655 <xs:element ref="tuple" minOccurs="0" maxOccurs="1"/>
\r
656 <xs:element ref="classe_utilisateur" minOccurs="0" maxOccurs="1"/>
\r
659 </xs:complexContent>
\r
662 <!-- Catalogue EFFICAS équivalent
\r
665 from Accas import *
\r
667 class carte (ASSD) : pass
\r
668 class maille (ASSD) : pass
\r
669 class carte_flux_r (carte):pass
\r
671 class NOM_CHAM_INTO:
\r
672 def __call__(self, *l_typ_cham, **kwargs):
\r
673 return tuple(('A','B','C'))
\r
674 C_NOM_CHAM_INTO = NOM_CHAM_INTO()
\r
676 JdC = JDC_CATA(code='MAP',
\r
678 regles=ENSEMBLE('E1','E2','E3')
\r
681 CREECARTE = OPER(nom="CREECARTE",op=None, sd_prod=carte, UNITE=SIMP(statut='f',typ='I',defaut=21),);
\r
683 CREECARTEFLUX = OPER(nom="CREECARTEFLUX",op=None, sd_prod=carte_flux_r,
\r
684 NOMFLUX=SIMP(statut='o',typ='TXM',defaut='monFlux'),
\r
687 CREEMAILLE = OPER(nom="CREEMAILLE",op=None, sd_prod=maille,
\r
688 NOEUDS=SIMP(statut='o',typ='I',defaut=(1,2),min=2,max=2)
\r
693 regles = (EXCLUS('ETAT_INIT','RESULTAT',),),
\r
694 ETAT_INIT = FACT(statut='f', max='**',
\r
695 GROUP_MA_1=SIMP(statut='o',typ='I',validators=NoRepeat(),max='**'),
\r
696 GROUP_NO_2=SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
\r
699 RESULTAT = FACT(statut='f',
\r
700 DEPL=SIMP(statut='o', typ='R', validators=NoRepeat()),
\r
701 VITE=SIMP(statut='f', typ='R', validators=NoRepeat()),
\r
702 ACCE=SIMP(statut='f', typ='R', validators=NoRepeat()),
\r
706 E2=PROC(nom="E2", op=None,
\r
707 regles = (UN_PARMI('CONCEPT','CHAINE','TOUT' ),),
\r
708 CONCEPT = FACT(statut='f',max='**',
\r
709 NOM = SIMP(statut='o',typ=assd,validators=NoRepeat(),max='**'),
\r
711 CHAINE = SIMP(statut='f',typ='TXM'),
\r
712 POSITION = SIMP(statut='f',typ='I',defaut=1),
\r
713 TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
\r
716 E3=PROC(nom="E3",op=None,
\r
717 DEFORMATION = SIMP(statut='f',typ='TXM',defaut="PETIT",
\r
718 into=("PETIT","PETIT_REAC","GROT_GDEP","SIMO_MIEHE","GDEF_HYPO_ELAS","GDEF_LOG")),
\r
719 b_blocIn = BLOC(condition = "DEFORMATION in ('PETIT','PETIT_REAC','GROT_GDEP')",
\r
720 ITER_INTE_PAS = SIMP(statut='f',typ='I',defaut= 0 ),
\r
721 ALGO_INTE = SIMP(statut='f',typ='TXM',into=("ANALYTIQUE", "SECANTE", "DEKKER", "NEWTON_1D","BRENT",),),
\r
722 CARTE = SIMP(statut='f',typ=carte,),
\r
723 b_carte = BLOC(condition= "(AsType(CARTE) != carte_flux_r)",
\r
724 CONTRAINTE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
\r
725 fr="Options pour le calcul de contraintes et efforts generalises",
\r
726 into=C_NOM_CHAM_INTO(phenomene='CONTRAINTE',categorie='lin'),)
\r