function get_user_ax($uid, $raw=false)
{
- require_once('webservices/manageurs.inc.php');
- require_once('webservices/manageurs.client.inc.php');
+ require_once('webservices/ax/client.inc');
global $globals;
WHERE u.user_id = {?}", $uid);
$matricule_ax = $res->fetchOneCell();
- $array = get_annuaire_infos(2, $matricule_ax, 0);
+ $ancien = recupere_infos_ancien($matricule_ax);
$userax = Array();
$userax['matricule_ax'] = $matricule_ax;
$userax['uid'] = $uid;
- $ancien = $array['dump']['ancien'];
- $userax['nom'] = $ancien[0];
- // ancien1 = ?
- $userax['nom_usage'] = ($ancien[2] != $ancien[0])?$ancien[2]:"";
- // ancien3 = ?
- $userax['prenom'] = $ancien[4];
- $userax['sexe'] = ($ancien[5] != 'M')?1:0;
- $userax['promo'] = $ancien[6];
- // ancien7 = Type de membre à l'AX
- // ancien8 = dernière année de cotisation
- $userax['nationalite'] = $ancien[9];
+ $userax['nom'] = $ancien->Nom_patr();
+ $userax['nom_usage'] = $ancien->Nom_usuel();
+ if ($userax['nom_usage'] == $userax['nom']) $userax['nom_usage'] = '';
+ $userax['prenom'] = $ancien->Prenom();
+ $userax['sexe'] = ($ancien->Civilite() != 'M')?1:0;
+ $userax['promo'] = $ancien->Promo();
+ $userax['nationalite'] = $ancien->Nationalite();
if ($userax['nationalite'] == 'F') $userax['nationalite'] = 'Français';
- // ancien10 = ?
- // ancine11 = ?
- $userax['date'] = substr($ancien[12], 0, 10);
- $userax['mobile'] = $array['cell'];
- if ($ancien[13] == 'D' || $ancien[13] == 'Z') {
+ //$userax['date'] = substr($ancien[12], 0, 10);
+ $userax['mobile'] = $ancien->Mobile(0);
+ if ($ancien->Corps() == 'D' || $ancien->Corps() == 'Z') {
$userax['applis_join'] = "pas un corps";
} else {
- $userax['applis_join'] = "Corps ".$ancien[13]." - ".$ancien[14];
+ $userax['applis_join'] = "Corps ".$ancien->Corps()." - ".$ancien->Grade();
}
- // ancien15 = login AX
- // ancien16 = ?
- // ancien17 = prenom.nom
-
$userax['adr_pro'] = array();
- if (is_array($array['dump']['pro'])) {
- foreach ($array['dump']['pro'] as $job) {
- // job0 = code identifiant de l'entreprise
- $jobax['entreprise'] = $job[1];
- // job2 = comme job1 (peut etre plus court pour les noms longs)
- // job4 = sigle de l'entreprise
- // job5 = maj de l'adresse pro
- $jobax['fonction'] = $job[6];
- // job7 = ? peut être id de l'adresse dans la base AX
- // job8 = matricule AX
- // job9 = type d'adresse PRO = professionelle
- $jobax['adr1'] = $job[10];
- $jobax['adr2'] = $job[11];
- $jobax['adr3'] = $job[12];
- $jobax['cp'] = $job[13];
- $jobax['ville'] = $job[14];
- // job15 = ?
- // job16 = ?
- $jobax['pays'] = $job[17];
- // job18 = ?
- $jobax['tel'] = $job[19];
- $jobax['fax'] = $job[20];
- // job21 = f ?
- // job22 = ?
- // job23 = date de mise à jour de l'adresse
- // job24 = ?
- $userax['adr_pro'][] = $jobax;
- }
+
+ for ($i = 0; $i < $ancien->Num_Activite(); $i++) {
+ $jobax = array();
+ $jobax['entreprise'] = $ancien->Entreprise($i);
+ $jobax['fonction'] = $ancien->Fonction($i);
+ $jobax['adr1'] = $ancien->Adresse_act_adresse1($i);
+ $jobax['adr2'] = $ancien->Adresse_act_adresse2($i);
+ $jobax['adr3'] = $ancien->Adresse_act_adresse3($i);
+ $jobax['cp'] = $ancien->Adresse_act_code_pst($i);
+ $jobax['ville'] = $ancien->Adresse_act_ville($i);
+ $jobax['region'] = $ancien->Adresse_act_etat_region($i);
+ $jobax['pays'] = $ancien->Adresse_act_pays($i);
+ $jobax['tel'] = $ancien->Adresse_act_tel($i);
+ $jobax['fax'] = $ancien->Adresse_act_fax($i);
+ $jobax['mobile'] = $ancien->Adresse_act_mobile($i);
+ $userax['adr_pro'][] = $jobax;
}
$userax['adr'] = array();
- if (is_array($array['dump']['adresse'])) {
- foreach ($array['dump']['adresse'] as $adr) {
- // adr0 : ?
- // adr1 = matricule ax
- // adr2 = type d'adresse P = personnelle
- $adrax['adr1'] = $adr[3];
- $adrax['adr2'] = $adr[4];
- $adrax['adr3'] = $adr[5];
- $adrax['cp'] = $adr[6];
- $adrax['ville'] = $adr[7];
- // adr8 = ?
- // adr9 = ?
- $adrax['pays'] = $adr[10];
- // adr 11 = ?
- $adrax['tel'] = $adr[12];
- $adrax['fax'] = $adr[13];
- // adr 14 = t ?
- // adr15 = ?
- // adr 16 = date de mise a jour
- $userax['adr'][] = $adrax;
- }
+ foreach ($array['dump']['adresse'] as $adr) {
+ $adrax = array();
+ $adrax['adr1'] = $ancien->Adresse1($i);
+ $adrax['adr2'] = $ancien->Adresse2($i);
+ $adrax['adr3'] = $ancien->Adresse3($i);
+ $adrax['cp'] = $ancien->Code_pst($i);
+ $adrax['ville'] = $ancien->Ville($i);
+ $adrax['region'] = $ancien->Etat_region($i);
+ $adrax['pays'] = $ancien->Pays($i);
+ $adrax['tel'] = $ancien->Tel($i);
+ $adrax['fax'] = $ancien->Fax($i);
+ $userax['adr'][] = $adrax;
}
if ($raw) {
- $userax['raw'] = $array;
+ $userax['raw'] = $ancien;
}
return $userax;
--- /dev/null
+<?php\r
+\r
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker:\r
+ class Ancien { \r
+ var $NOM_PATR; \r
+ var $PART_NOM;\r
+ var $PRENOM;\r
+ var $NOM_USUEL;\r
+ var $PART_NOMUS;\r
+ var $NOM_COMPLET;\r
+ var $CIVILITE;\r
+ var $GRADE;\r
+ var $CORPS;\r
+ var $PROMO;\r
+ var $NATIONALITE;\r
+ var $CORPS_LIBELLE;\r
+ var $EMAIL; \r
+ var $ADRESSE = array();\r
+ var $NUM_ADRESSE = 0;\r
+ var $ACTIVITE = array();\r
+ var $NUM_ACTIVITE = 0;\r
+ var $FORMATION = array();\r
+ var $NUM_FORMATION = 0; \r
+ var $Erreur;\r
+ \r
+ function Ancien ($aa) {\r
+ if ($aa<>'')\r
+ {\r
+ foreach ($aa as $k=>$v)\r
+ $this->$k = $aa[$k];\r
+ } \r
+ } \r
+ function Ajout_adresse ($adresse,$i) {\r
+ $this->ADRESSE[$i] = $adresse; \r
+ $this->NUM_ADRESSE++;\r
+ } \r
+ function Ajout_activite ($activite,$i) {\r
+ $this->ACTIVITE[$i] = $activite; \r
+ $this->NUM_ACTIVITE++;\r
+ } \r
+ function Ajout_formation ($formation,$i) {\r
+ $this->FORMATION[$i] = $formation; \r
+ $this->NUM_FORMATION++;\r
+ } \r
+ function Ajout_erreur ($erreur) {\r
+ $this->Erreur = $erreur; \r
+ } \r
+ function Erreur() {\r
+ return $this->Erreur;\r
+ } \r
+ function Nom_patr() {\r
+ return $this->NOM_PATR;\r
+ }\r
+ function Part_nom() {\r
+ return $this->PART_NOM;\r
+ }\r
+ function Prenom() {\r
+ return $this->PRENOM;\r
+ }\r
+ function Nom_usuel() {\r
+ return $this->NOM_USUEL;\r
+ }\r
+ function Part_nomus() {\r
+ return $this->PART_NOMUS;\r
+ }\r
+ function Nom_complet() {\r
+ return $this->NOM_COMPLET;\r
+ } \r
+ function Civilite() {\r
+ return $this->CIVILITE;\r
+ } \r
+ function Grade() {\r
+ return $this->GRADE;\r
+ } \r
+ function Corps() {\r
+ return $this->CORPS;\r
+ } \r
+ function Corps_Libelle() {\r
+ return $this->CORPS_LIBELLE;\r
+ } \r
+ function Promo() {\r
+ return $this->PROMO;\r
+ } \r
+ function Nationalite() {\r
+ return $this->NATIONALITE;\r
+ } \r
+ function Email() {\r
+ return $this->EMAIL;\r
+ } \r
+ function Adresse_type($i) {\r
+ return $this->ADRESSE[$i]->TYPE;\r
+ } \r
+ function Adresse1($i) {\r
+ return $this->ADRESSE[$i]->ADRESS1;\r
+ }\r
+ function Adresse2($i) {\r
+ return $this->ADRESSE[$i]->ADRESS2;\r
+ }\r
+ function Adresse3($i) {\r
+ return $this->ADRESSE[$i]->ADRESS3;\r
+ }\r
+ function Code_pst($i) {\r
+ return $this->ADRESSE[$i]->CODE_PST;\r
+ }\r
+ function Ville($i) {\r
+ return $this->ADRESSE[$i]->VILLE;\r
+ }\r
+ function Zip_cedex($i) {\r
+ return $this->ADRESSE[$i]->ZIPCEDEX;\r
+ }\r
+ function Etat_region($i) {\r
+ return $this->ADRESSE[$i]->ETATREGION;\r
+ }\r
+ function Pays($i) {\r
+ return $this->ADRESSE[$i]->PAYS;\r
+ }\r
+ function Mobile($i) {\r
+ return $this->ADRESSE[$i]->MOBILE;\r
+ }\r
+ function Tel($i) {\r
+ return $this->ADRESSE[$i]->TEL;\r
+ } \r
+ function Fax($i) {\r
+ return $this->ADRESSE[$i]->FAX;\r
+ } \r
+ function Num_adresse() {\r
+ return $this->NUM_ADRESSE;\r
+ } \r
+ function Entreprise($i) {\r
+ return $this->ACTIVITE[$i]->ENTREPRISE;;\r
+ }\r
+ function Raison_sociale($i) {\r
+ return $this->ACTIVITE[$i]->RAISON_SOCIALE;\r
+ }\r
+ function Fonction($i) {\r
+ return $this->ACTIVITE[$i]->FONCTION;\r
+ } \r
+ function Adresse_act_type($i) {\r
+ return $this->ACTIVITE[$i]->TYPE;\r
+ }\r
+ function Adresse_act_adresse1($i) {\r
+ return $this->ACTIVITE[$i]->ADRESS1;\r
+ }\r
+ function Adresse_act_adresse2($i) {\r
+ return $this->ACTIVITE[$i]->ADRESS2;\r
+ }\r
+ function Adresse_act_adresse3($i) {\r
+ return $this->ACTIVITE[$i]->ADRESS3;\r
+ }\r
+ function Adresse_act_code_pst($i) {\r
+ return $this->ACTIVITE[$i]->CODE_PST;\r
+ }\r
+ function Adresse_act_ville($i) {\r
+ return $this->ACTIVITE[$i]->VILLE;\r
+ }\r
+ function Adresse_act_zip_cedex($i) {\r
+ return $this->ACTIVITE[$i]->ZIPCEDEX;\r
+ }\r
+ function Adresse_act_etat_region($i) {\r
+ return $this->ACTIVITE[$i]->ETATREGION;\r
+ }\r
+ function Adresse_act_pays($i) {\r
+ return $this->ACTIVITE[$i]->PAYS;\r
+ }\r
+ function Adresse_act_mobile($i) {\r
+ return $this->ACTIVITE[$i]->MOBILE;\r
+ }\r
+ function Adresse_act_tel($i) {\r
+ return $this->ACTIVITE[$i]->TEL;\r
+ } \r
+ function Adresse_act_fax($i) {\r
+ return $this->ACTIVITE[$i]->FAX;\r
+ } \r
+ function Num_activite() {\r
+ return $this->NUM_ACTIVITE;\r
+ } \r
+ function Formation($i) {\r
+ return $this->FORMATION[$i]->LIBELLE;\r
+ } \r
+ function Num_formation() {\r
+ return $this->NUM_FORMATION;\r
+ } \r
+ }\r
+\r
+ class Adresse { \r
+ var $TYPE; \r
+ var $ADRESS1;\r
+ var $ADRESS2;\r
+ var $ADRESS3;\r
+ var $CODE_PST;\r
+ var $VILLE;\r
+ var $ZIPCEDEX;\r
+ var $ETATREGION;\r
+ var $PAYS;\r
+ var $MOBILE;\r
+ var $TEL;\r
+ var $FAX;\r
+ \r
+ function Adresse ($aa) {\r
+ foreach ($aa as $k=>$v)\r
+ $this->$k = $aa[$k]; \r
+ } \r
+ }\r
+ \r
+ class Activite { \r
+ var $ENTREPRISE;\r
+ var $RAISON_SOCIALE;\r
+ var $FONCTION;\r
+ var $TYPE; \r
+ var $ADRESS1;\r
+ var $ADRESS2;\r
+ var $ADRESS3;\r
+ var $CODE_PST;\r
+ var $VILLE;\r
+ var $ZIPCEDEX;\r
+ var $ETATREGION;\r
+ var $PAYS;\r
+ var $MOBILE;\r
+ var $TEL;\r
+ var $FAX;\r
+ \r
+ function Activite ($aa) {\r
+ foreach ($aa as $k=>$v)\r
+ $this->$k = $aa[$k]; \r
+ } \r
+ } \r
+ \r
+ class Formation { \r
+ var $LIBELLE;\r
+ \r
+ function Formation ($aa) {\r
+ foreach ($aa as $k=>$v)\r
+ $this->$k = $aa[$k]; \r
+ } \r
+ } \r
+ \r
+ function xml_get_children($vals, &$i) {\r
+ $children = array();\r
+ if (isset($vals[$i]['value'])) $children[] = $vals[$i]['value'];\r
+ \r
+ while (++$i < count($vals)) {\r
+ switch ($vals[$i]['type']) {\r
+ case 'cdata':\r
+ $children[] = $vals[$i]['value'];\r
+ break;\r
+\r
+ case 'complete':\r
+ $children[] = array(\r
+ 'tag' => $vals[$i]['tag'],\r
+ 'attributes' => isset($vals[$i]['attributes'])?\r
+ $vals[$i]['attributes'] : null,\r
+ 'value' => $vals[$i]['value'],\r
+ );\r
+ break;\r
+\r
+ case 'open':\r
+ $children[] = array(\r
+ 'tag' => $vals[$i]['tag'],\r
+ 'attributes' => isset($vals[$i]['attributes'])?\r
+ $vals[$i]['attributes'] : null,\r
+ 'children' => xml_get_children($vals, $i),\r
+ );\r
+ break;\r
+\r
+ case 'close':\r
+ return $children;\r
+ }\r
+ }\r
+ }\r
+\r
+ //fonction principale de récupération des données de l'ancien\r
+ //à indiquer: matricule de l'ancien\r
+ function recupere_infos_ancien($AX_MATRICULE)\r
+ {\r
+ include('config.inc');\r
+ \r
+ $id =13;//13 params persos ancien\r
+ $id_ad = 11; //12 params adresse\r
+ $id_ac = 14; //15 params adresse \r
+ $id_fo = 1; //1 params fonction \r
+ \r
+ $erreur = "";\r
+ \r
+ // Génération d'un identifiant de "session" inter-serveurs\r
+ $id_session = md5 (uniqid (rand())); \r
+ \r
+ // Connexion au serveur pour lui fournir l'identifiant et lui demander un challenge\r
+ $challenge = file_get_contents ($nom_script_renvoi_challenge."?id_session=".urlencode($id_session)); \r
+ if ($challenge == 'ERROR') \r
+ {\r
+ $erreur = "Erreur lors de la demande du challenge";\r
+ } \r
+ else\r
+ {\r
+ // On va relire la clé privée (codée)\r
+ $privkeypass = $phrase;\r
+ $pkey_txt = file_get_contents ($chemin_cle_privee);\r
+ if (($pkey_res = openssl_pkey_get_private($pkey_txt, $privkeypass)) == false) \r
+ {\r
+ $erreur = "Erreur lors de l'ouverture de la clé privée";\r
+ }\r
+ else\r
+ {\r
+ // Signature du challenge (cryptage avec clé privée)\r
+ if ( openssl_private_encrypt($challenge, $response, $pkey_res) == false ) \r
+ {\r
+ $erreur = "Erreur lors du cryptage du challenge avec la clé privée";\r
+ }\r
+ else\r
+ {\r
+ // Signature du login (cryptage avec clé privée)\r
+ if ( openssl_private_encrypt($AX_MATRICULE, $AX_MATRICULE_CRYPTE, $pkey_res) == false ) \r
+ {\r
+ $erreur = "Erreur lors du cryptage du matricule avec la clé privée";\r
+ }\r
+ else\r
+ {\r
+ // Envoi de la réponse au serveur avec l'identifiant de l'ancien dont on veut récupérer les infos\r
+ $reponse_serveur .= file_get_contents ($nom_script_renvoi_infos."?id_session=".urlencode($id_session)."&AX_MATRICULE_CRYPTE=".urlencode($AX_MATRICULE_CRYPTE)."&response=".urlencode($response));\r
+ \r
+ $parser = xml_parser_create();\r
+ xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);\r
+ xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);\r
+ xml_parse_into_struct($parser, $reponse_serveur, $vals, $index);\r
+ xml_parser_free($parser);\r
+ \r
+ $tree = array();\r
+ $tree[] = array(\r
+ 'tag' => $vals[0]['tag'],\r
+ 'attributes' => isset($vals[0]['attributes'])?\r
+ $vals[0]['attributes'] : null,\r
+ 'children' => xml_get_children($vals, $i = 0),\r
+ );\r
+ \r
+ for ($i=0; $i < $id; $i++) \r
+ {\r
+ $val_ancien[$tree[0]['children'][0]['children'][$i]['tag']] = $tree[0]['children'][0]['children'][$i]['value']; \r
+ } \r
+ \r
+ $Ancien_renvoye = new Ancien($val_ancien); \r
+ \r
+ //adresse while pour nbre d'adresses\r
+ $num_ad = 0;\r
+ while ($tree[0]['children'][0]['children'][$id]['tag'] == 'ADRESSE')\r
+ {\r
+ for ($i=0; $i <= $id_ad; $i++) \r
+ {\r
+ $val_adresse[$tree[0]['children'][0]['children'][$id]['children'][$i]['tag']] = $tree[0]['children'][0]['children'][$id]['children'][$i]['value']; \r
+ } \r
+ \r
+ $Adresse_renvoyee = new Adresse($val_adresse);\r
+ $Ancien_renvoye->Ajout_adresse($Adresse_renvoyee,$num_ad); \r
+ \r
+ //prochaine adresse\r
+ $num_ad = $num_ad + 1;\r
+ $id = $id+1;\r
+ }\r
+ \r
+ //idem pour activité \r
+ $num_ac = 0;\r
+ while ($tree[0]['children'][0]['children'][$id]['tag'] == 'ACTIVITE')\r
+ {\r
+ for ($i=0; $i <= $id_ac; $i++) \r
+ {\r
+ $val_activite[$tree[0]['children'][0]['children'][$id]['children'][$i]['tag']] = $tree[0]['children'][0]['children'][$id]['children'][$i]['value']; \r
+ \r
+ for ($j=0; $j <= $id_ad; $j++) \r
+ {\r
+ $val_activite[$tree[0]['children'][0]['children'][$id]['children'][$i]['children'][$j]['tag']] = $tree[0]['children'][0]['children'][$id]['children'][$i]['children'][$j]['value']; \r
+ }\r
+ } \r
+ \r
+ $Activite_renvoyee = new Activite($val_activite);\r
+ $Ancien_renvoye->Ajout_activite($Activite_renvoyee,$num_ac); \r
+ \r
+ //prochaine activité\r
+ $num_ac = $num_ac + 1;\r
+ $id = $id+1;\r
+ }\r
+ //idem pour formation \r
+ $num_fo = 0;\r
+ while ($tree[0]['children'][0]['children'][$id]['tag'] == 'FORMATION')\r
+ {\r
+ for ($i=0; $i <= $id_fo; $i++) \r
+ {\r
+ $val_formation[$tree[0]['children'][0]['children'][$id]['children'][$i]['tag']] = $tree[0]['children'][0]['children'][$id]['children'][$i]['value']; \r
+ } \r
+ \r
+ $Formation_renvoyee = new Formation($val_formation);\r
+ $Ancien_renvoye->Ajout_formation($Formation_renvoyee,$num_fo); \r
+ \r
+ //prochaine formation\r
+ $num_fo = $num_fo + 1;\r
+ $id = $id+1;\r
+ } \r
+ }\r
+ }\r
+ }\r
+ }\r
+ \r
+ //erreur indiquée\r
+ if ($erreur) //erreur ici\r
+ {\r
+ $Ancien_renvoye = new Ancien('');\r
+ $Ancien_renvoye->Ajout_erreur($erreur); \r
+ }\r
+ else\r
+ { //renvoyée par le fichier serveur_renvoie_infos\r
+ $Ancien_renvoye->Ajout_erreur($tree[0]['children'][1]['value']);\r
+ } \r
+ \r
+ return $Ancien_renvoye;\r
+ }\r
+ \r
+?>\r
--- /dev/null
+ <!ELEMENT MESSAGE (CODE_RETOUR, ANCIEN)>\r
+ <!ELEMENT CODE_RETOUR (#PCDATA)>\r
+ <!ELEMENT ANCIEN (NOM_PATR, PART_NOM, PRENOM, NOM_USUEL, PART_NOMUS, NOM_COMPLET, CIVILITE, GRADE, CORPS, PROMO, NATIONALITE, CORPS_LIBELLE, EMAIL, ADRESSE, ACTIVITE, FORMATION)>\r
+ <!ELEMENT NOM_PATR (#PCDATA)>\r
+ <!ELEMENT PART_NOM (#PCDATA)>\r
+ <!ELEMENT PRENOM (#PCDATA)>\r
+ <!ELEMENT NOM_USUEL (#PCDATA)>\r
+ <!ELEMENT PART_NOMUS (#PCDATA)>\r
+ <!ELEMENT NOM_COMPLET (#PCDATA)>\r
+ <!ELEMENT CIVILITE (#PCDATA)>\r
+ <!ELEMENT GRADE (#PCDATA)>\r
+ <!ELEMENT CORPS (#PCDATA)>\r
+ <!ELEMENT PROMO (#PCDATA)>\r
+ <!ELEMENT NATIONALITE (#PCDATA)> \r
+ <!ELEMENT EMAIL (#PCDATA)> \r
+ <!ELEMENT CORPS_LIBELLE (#PCDATA)> \r
+ <!ELEMENT ADRESSE (TYPE, ADRESS1, ADRESS2, ADRESS3, CODE_PST, VILLE, ZIPCEDEX, ETATREGION, PAYS, MOBILE,TEL,FAX)>\r
+ <!ELEMENT TYPE (#PCDATA)>\r
+ <!ELEMENT ADRESS1 (#PCDATA)>\r
+ <!ELEMENT ADRESS2 (#PCDATA)>\r
+ <!ELEMENT ADRESS3 (#PCDATA)>\r
+ <!ELEMENT CODE_PST (#PCDATA)>\r
+ <!ELEMENT VILLE (#PCDATA)>\r
+ <!ELEMENT ZIPCEDEX (#PCDATA)>\r
+ <!ELEMENT ETATREGION (#PCDATA)>\r
+ <!ELEMENT PAYS (#PCDATA)>\r
+ <!ELEMENT MOBILE (#PCDATA)>\r
+ <!ELEMENT TEL (#PCDATA)>\r
+ <!ELEMENT FAX (#PCDATA)>\r
+ <!ELEMENT ACTIVITE (ENTREPRISE, RAISON_SOCIALE, FONCTION, ADRESSE)>\r
+ <!ELEMENT ENTREPRISE (#PCDATA)>\r
+ <!ELEMENT RAISON_SOCIALE (#PCDATA)>\r
+ <!ELEMENT FONCTION (#PCDATA)>\r
+ <!ELEMENT FORMATION (LIBELLE)>\r
+ <!ELEMENT LIBELLE (#PCDATA)>
\ No newline at end of file