Zend_Soap_Wsdl.xml 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.soap.wsdl">
  5. <title>WSDL</title>
  6. <note>
  7. <para>
  8. La classe <classname>Zend_Soap_Wsdl</classname> est utilisée par le composant
  9. Zend_Soap_Server pour manipuler des documents WSDL. Néanmoins, vous pouvez vous-même
  10. utiliser les services fournis par cette classe pour vos propres besoins. La classe
  11. Zend_Soap_Wsdl contient à la fois un analyseur et un constructeur de documents
  12. WSDL.
  13. </para>
  14. <para>
  15. Si vous ne voulez pas l'utiliser pour vos propres besoins, vous pouvez alors
  16. passer cette section de la documentation.
  17. </para>
  18. </note>
  19. <sect2 id="zend.soap.wsdl.constructor">
  20. <title>Constructeur Zend_Soap_Wsdl</title>
  21. <para>
  22. Le constructeur de <classname>Zend_Soap_Wsdl</classname> prend 3 paramètres :
  23. <orderedlist>
  24. <listitem>
  25. <simpara><varname>$name</varname> - nom du service Web décrit.</simpara>
  26. </listitem>
  27. <listitem>
  28. <simpara><varname>$uri</varname> - <acronym>URI</acronym> d'accès au fichier WSDL. (Une référence
  29. dans le système de fichier local est possible.)</simpara>
  30. </listitem>
  31. <listitem>
  32. <simpara><varname>$strategy</varname> - identifiant optionnel pour identifier la
  33. détection de stratégie des types complexes. Ceci est un booléen
  34. <varname>$extractComplexTypes</varname> avant la version 1.7 et peut toujours être
  35. paramétrer via un booléen pour la compatibilité ascendante. Par défaut le
  36. comportement de détection de la 1.6 est activé. Pour avoir de plus amples
  37. informations concernant les stratégies de détection des types complexes,
  38. lisez : <link linkend="zend.soap.wsdl.types.add_complex">ajoutez des types
  39. complexes</link>.</simpara>
  40. </listitem>
  41. </orderedlist>
  42. </para>
  43. </sect2>
  44. <sect2 id="zend.soap.wsdl.addmessage">
  45. <title>addMessage()</title>
  46. <para>
  47. <methodname>addMessage($name, $parts)</methodname> ajoute un message de description au
  48. document WSDL (/definitions/message de l'élément).
  49. </para>
  50. <para>
  51. Chaque message correspond à une méthode en terme de fonctionnalité de
  52. <classname>Zend_Soap_Server</classname> et
  53. <classname>Zend_Soap_Client</classname>.
  54. </para>
  55. <para>Le paramètre <varname>$name</varname> représente le nom du message.</para>
  56. <para>
  57. Le paramètre <varname>$parts</varname> est un tableau de paramètre des messages
  58. décrivant les paramètres d'appel <acronym>SOAP</acronym>. Le tableau est associatif: 'nom du paramètre'
  59. (nom du paramètre d'appel <acronym>SOAP</acronym>) =&gt; 'type du paramètre'.
  60. </para>
  61. <para>
  62. La correspondance de types est effectuée grâce à <methodname>addTypes()</methodname> et
  63. <methodname>addComplexType()</methodname>(voyez après).
  64. </para>
  65. <note>
  66. <para>
  67. Les paramètres de messages peuvent être soit "element", soit "type" (voyez
  68. <ulink url="http://www.w3.org/TR/wsdl#_messages"></ulink>).
  69. </para>
  70. <para>
  71. "element" doit correspondre à un élément de définition de type. "type"
  72. correspond à une entrée complexType.
  73. </para>
  74. <para>
  75. Tous les types standards XSD possèdent une définition "element" et
  76. "complexType" (Voyez <ulink
  77. url="http://schemas.xmlsoap.org/soap/encoding/"></ulink>).
  78. </para>
  79. <para>
  80. Tous les éléments non standards, qui doivent être ajoutés avec la méthode
  81. <methodname>Zend_Soap_Wsdl::addComplexType()</methodname>, sont décrits en utilisant
  82. un noeud "complexType" décrits dans la section "/definitions/types/schema/" du
  83. document WSDL.
  84. </para>
  85. <para>
  86. Ainsi, la méthode <methodname>addMessage()</methodname> utilise toujours un attribut
  87. "type" pour décrire des types.
  88. </para>
  89. </note>
  90. </sect2>
  91. <sect2 id="zend.soap.wsdl.add_port_type">
  92. <title><methodname>addPortType()</methodname></title>
  93. <para>
  94. <methodname>addPortType($name)</methodname> ajoute un nouveau type de portage au document WSDL
  95. (/definitions/portType).
  96. </para>
  97. <para>
  98. Ceci fait la jointure entre des méthodes du service décrites en tant
  99. qu'implémentations de Zend_Soap_Server.
  100. </para>
  101. <para>
  102. Voyez <ulink url="http://www.w3.org/TR/wsdl#_porttypes"></ulink> pour plus de
  103. détails.
  104. </para>
  105. </sect2>
  106. <sect2 id="zend.soap.wsdl.add_port_operation">
  107. <title><methodname>addPortOperation()</methodname></title>
  108. <para>
  109. <code>addPortOperation($portType, $name, $input = false, $output = false, $fault =
  110. false)</code> ajoute des définitions de portage au portage défini dans le document WSDL
  111. (/definitions/portType/operation).
  112. </para>
  113. <para>
  114. Chaque opération de portage correspond à une méthode de classe (si le Web Service
  115. est basé sur une classe) ou à une fonction (si le Web Service est basé sur des
  116. fonctions), ceci en terme d'implémentation de Zend_Soap_Server.
  117. </para>
  118. <para>
  119. Cette méthode ajoute aussi les messages d'opération correspondants aux portages,
  120. ceci dépend des paramètres <varname>$input</varname>, <varname>$output</varname> and
  121. <varname>$fault</varname>. <note>
  122. <para>
  123. Zend_Soap_Server génère 2 messages pour chaque opération de portage
  124. lorsque le service est décrit au travers de la classe
  125. <classname>Zend_Soap_Server</classname>: <itemizedlist>
  126. <listitem>
  127. <para>
  128. Le message d'entrée nommé <code>$methodName .
  129. 'Request'</code>.
  130. </para>
  131. </listitem>
  132. <listitem>
  133. <para>
  134. Les message de sortie nommé <code>$methodName .
  135. 'Response'</code>.
  136. </para>
  137. </listitem>
  138. </itemizedlist>
  139. </para>
  140. </note>
  141. </para>
  142. <para>
  143. Voyez <ulink url="http://www.w3.org/TR/wsdl#_request-response"></ulink> pour les
  144. détails.
  145. </para>
  146. </sect2>
  147. <sect2 id="zend.soap.wsdl.add_binding">
  148. <title><methodname>addBinding()</methodname></title>
  149. <para>
  150. <methodname>addBinding($name, $portType)</methodname> ajoute de nouvelles correspondances
  151. (bindings) au document WSDL (/definitions/binding).
  152. </para>
  153. <para>
  154. Le noeud du document WSDL "binding" définit le format du message et les détails du
  155. protocole pour les opérations et messages définis par un portage "portType" particulier
  156. (voyez <ulink url="http://www.w3.org/TR/wsdl#_bindings"></ulink>).
  157. </para>
  158. <para>
  159. La méthode crée le noeud de correspondance et le retourne. Il peut alors être
  160. utilisé.
  161. </para>
  162. <para>
  163. L'implémentation de Zend_Soap_Server utilise le nom <code>$serviceName .
  164. "Binding"</code> pour la correspondance ("binding") de l'élément du document
  165. WSDL.
  166. </para>
  167. </sect2>
  168. <sect2 id="zend.soap.wsdl.add_binding_operation">
  169. <title><methodname>addBindingOperation()</methodname></title>
  170. <para>
  171. <code>addBindingOperation($binding, $name, $input = false, $output = false, $fault
  172. = false)</code> ajoute une opération à l'élément de correspondance avec le nom spécifié
  173. (/definitions/binding/operation).
  174. </para>
  175. <para>
  176. Cette méthode prend un objet <code>XML_Tree_Node</code> tel que retourné par
  177. <methodname>addBinding()</methodname>, en paramètre (<varname>$binding</varname>) pour ajouter un élément
  178. "operation" avec des entrées input/output/false dépendantes des paramètres
  179. spécifiés.
  180. </para>
  181. <para>
  182. <classname>Zend_Soap_Server</classname> ajoute les correspondances pour chaque
  183. méthode du Web Service avec des entrées et sorties, définissant l'élément "soap:body"
  184. comme <code>&lt;soap:body use="encoded"
  185. encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/&gt;</code>
  186. </para>
  187. <para>
  188. Voyez les détails à <ulink
  189. url="http://www.w3.org/TR/wsdl#_bindings"></ulink>.
  190. </para>
  191. </sect2>
  192. <sect2 id="zend.soap.wsdl.add_soap_binding">
  193. <title><methodname>addSoapBinding()</methodname></title>
  194. <para>
  195. <code>addSoapBinding($binding, $style = 'document', $transport =
  196. 'http://schemas.xmlsoap.org/soap/http')</code> ajoute des correspondances (bindings)
  197. <acronym>SOAP</acronym> ("soap:binding") à l'élément (déjà lié à un portage de type) avec le style et le
  198. transport spécifié (<classname>Zend_Soap_Server</classname> utilise le style RPC sur
  199. <acronym>HTTP</acronym>).
  200. </para>
  201. <para>
  202. L'élément "/definitions/binding/soap:binding" est alors utilisé pour spécifier que
  203. la correspondance est relative au format du protocole <acronym>SOAP</acronym>.
  204. </para>
  205. <para>
  206. Voyez <ulink url="http://www.w3.org/TR/wsdl#_bindings"></ulink> pour les
  207. détails.
  208. </para>
  209. </sect2>
  210. <sect2 id="zend.soap.wsdl.add_soap_operation">
  211. <title><methodname>addSoapOperation()</methodname></title>
  212. <para>
  213. <methodname>addSoapOperation($binding, $soap_action)</methodname> ajoute une opération <acronym>SOAP</acronym>
  214. ("soap:operation") à l'élément de correspondance avec l'action spécifiée. L'attribut
  215. "style" de l'élément "soap:operation" n'est pas utilisé alors que le modèle de
  216. programmation (RPC-oriented ou document-oriented) devrait utiliser la méthode
  217. <methodname>addSoapBinding()</methodname>
  218. </para>
  219. <para>
  220. L'attribut "soapAction" de l'élément "/definitions/binding/soap:operation"
  221. spécifie la valeur de l'en-tête <acronym>SOAP</acronym>Action pour l'opération. Cet attribut est requis
  222. pour <acronym>SOAP</acronym> sur <acronym>HTTP</acronym> et <emphasis>ne doit pas</emphasis> être renseigné pour les autres
  223. modes de transports.
  224. </para>
  225. <para>
  226. <classname>Zend_Soap_Server</classname> utilise <code>$serviceUri . '#' .
  227. $methodName</code> pour le nom de l'action <acronym>SOAP</acronym>.
  228. </para>
  229. <para>
  230. Voyez <ulink url="http://www.w3.org/TR/wsdl#_soap:operation"></ulink> pour plus de
  231. détails.
  232. </para>
  233. </sect2>
  234. <sect2 id="zend.soap.wsdl.add_service">
  235. <title><methodname>addService()</methodname></title>
  236. <para>
  237. <methodname>addService($name, $port_name, $binding, $location)</methodname> ajoute un élément
  238. "/definitions/service" au document WSDL avec le nom du Web Service spécifié, le nom du
  239. portage, la correspondance, et l'adresse.
  240. </para>
  241. <para>
  242. WSDL 1.1 autorise d'avoir plusieurs types de portage par service. Cette
  243. particularité n'est pas utilisée dans <classname>Zend_Soap_Server</classname> et est non
  244. supportée par la classe <classname>Zend_Soap_Wsdl</classname>.
  245. </para>
  246. <para>
  247. Utilisations de <classname>Zend_Soap_Server</classname> : <itemizedlist>
  248. <listitem>
  249. <para><code>$name . 'Service'</code> comme nom du Web Service,</para>
  250. </listitem>
  251. <listitem>
  252. <para><code>$name . 'Port'</code> comme nom de portage des types,</para>
  253. </listitem>
  254. <listitem>
  255. <para>
  256. <code>'tns:' . $name . 'Binding'</code> <footnote>
  257. <para>
  258. <code>'tns:' namespace</code> est l'URI du script
  259. (<code>'http://' .$_SERVER['HTTP_HOST'] .
  260. $_SERVER['SCRIPT_NAME']</code>).
  261. </para>
  262. </footnote> comme nom de la correspondance,
  263. </para>
  264. </listitem>
  265. <listitem>
  266. <para>
  267. l'URI du script<footnote>
  268. <para>
  269. <code>'http://' .$_SERVER['HTTP_HOST'] .
  270. $_SERVER['SCRIPT_NAME']</code>
  271. </para>
  272. </footnote> en tant qu'URI du service pour les Web Service utilisant des
  273. classes.
  274. </para>
  275. </listitem>
  276. </itemizedlist> où <varname>$name</varname> est un nom de classe pour le Web Service
  277. utilisant des classes, ou un nom de script pour le Web Service qui utilise des
  278. fonctions.
  279. </para>
  280. <para>
  281. Voyez <ulink url="http://www.w3.org/TR/wsdl#_services"></ulink> pour les
  282. détails.
  283. </para>
  284. </sect2>
  285. <sect2 id="zend.soap.wsdl.types">
  286. <title>Correspondance de type</title>
  287. <para>
  288. Le WSDL de Zend_Soap utilise les correspondances suivantes pour faire correspondre
  289. les type <acronym>SOAP</acronym> à des types <acronym>PHP</acronym> : <itemizedlist>
  290. <listitem>
  291. <para>chaînes <acronym>PHP</acronym> &lt;-&gt; <code>xsd:string</code>.</para>
  292. </listitem>
  293. <listitem>
  294. <para>entiers <acronym>PHP</acronym> &lt;-&gt; <code>xsd:int</code>.</para>
  295. </listitem>
  296. <listitem>
  297. <para>flottants <acronym>PHP</acronym> &lt;-&gt; <code>xsd:float</code>.</para>
  298. </listitem>
  299. <listitem>
  300. <para>booléens <acronym>PHP</acronym> &lt;-&gt; <code>xsd:boolean</code>.</para>
  301. </listitem>
  302. <listitem>
  303. <para>tableaux <acronym>PHP</acronym> &lt;-&gt; <code>soap-enc:Array</code>.</para>
  304. </listitem>
  305. <listitem>
  306. <para>objets <acronym>PHP</acronym> &lt;-&gt; <code>xsd:struct</code>.</para>
  307. </listitem>
  308. <listitem>
  309. <para>
  310. Classe <acronym>PHP</acronym> &lt;-&gt; basé sur la stratégie des types complexes (Voir :
  311. <link linkend="zend.soap.wsdl.types.add_complex">cette section</link>)<footnote>
  312. <para>
  313. <classname>Zend_Soap_AutoDiscover</classname> sera créé avec
  314. la classe
  315. <classname>Zend_Soap_Wsdl_Strategy_DefaultComplexType</classname> en
  316. tant qu'algorithme de détection pour les types complexes. Le premier
  317. paramètre du constructeur AutoDiscover accepte toute stratégie de
  318. types complexes implémentant
  319. <classname>Zend_Soap_Wsdl_Strategy_Interface</classname> ou une
  320. chaîne correspondant au nom de la classe. Pour une compatibilité
  321. ascendante, avec <varname>$extractComplexType</varname> les variables
  322. booléennes sont analysées comme avec Zend_Soap_Wsdl. Regardez le
  323. manuel <link
  324. linkend="zend.soap.wsdl.types.add_complex">Zend_Soap_Wsdl sur
  325. l'ajout des types complexes</link> pour plus d'informations.
  326. </para>
  327. </footnote>.
  328. </para>
  329. </listitem>
  330. <listitem>
  331. <para>Type <acronym>PHP</acronym> vide &lt;-&gt; void.</para>
  332. </listitem>
  333. <listitem>
  334. <para>
  335. Si le type na aucune correspondance avec les valeurs ci-dessus, alors
  336. <code>xsd:anyType</code> est utilisé.
  337. </para>
  338. </listitem>
  339. </itemizedlist> Où <code>xsd:</code> est l'espace de noms
  340. "http://www.w3.org/2001/XMLSchema", <code>soap-enc:</code> est l'espace de noms
  341. "http://schemas.xmlsoap.org/soap/encoding/", <code>tns:</code> est un "espace de noms
  342. cible" pour le service.
  343. </para>
  344. <sect3 id="zend.soap.wsdl.types.retrieve">
  345. <title>Récupérer des infos sur les types</title>
  346. <para>
  347. <methodname>getType($type)</methodname> peut être utilisée pour récupérer la
  348. correspondance d'un type PHP spécifié : <programlisting language="php"><![CDATA[
  349. ...
  350. $wsdl = new Zend_Soap_Wsdl('My_Web_Service', $myWebServiceUri);
  351. ...
  352. $soapIntType = $wsdl->getType('int');
  353. ...
  354. class MyClass {
  355. ...
  356. }
  357. ...
  358. $soapMyClassType = $wsdl->getType('MyClass');
  359. ]]></programlisting></para>
  360. </sect3>
  361. <sect3 id="zend.soap.wsdl.types.add_complex">
  362. <title>Ajouter des infos sur les types complexes</title>
  363. <para>
  364. <methodname>addComplexType($type)</methodname> est utilisée pour ajouter des types
  365. complexes (classes <acronym>PHP</acronym>) à un document WSDL.
  366. </para>
  367. <para>
  368. C'est automatiquement utilisé par la méthode <methodname>getType()</methodname> pour
  369. ajouter les types complexes des paramètres de méthodes ou des types
  370. retournés.
  371. </para>
  372. <para>
  373. Sa détection et son algorithme de construction est basé sur la détection de
  374. stratégie des types complexes couramment active. Vous pouvez paramétrer la stratégie
  375. de détection soit en spécifiant le nom de classe sous la forme d'une chaîne de
  376. caractères ou une instance implémentant
  377. <classname>Zend_Soap_Wsdl_Strategy_Interface</classname> en tant que troisième
  378. paramètre du constructeur ou en utilisant la fonction
  379. <methodname>setComplexTypeStrategy($strategy)</methodname> de
  380. <classname>Zend_Soap_Wsdl</classname>. Les stratégies de détection suivantes
  381. existent couramment :
  382. </para>
  383. <itemizedlist>
  384. <listitem>
  385. <para>
  386. la classe
  387. <classname>Zend_Soap_Wsdl_Strategy_DefaultComplexType</classname> : activé
  388. par défaut (quand aucun troisième paramètre n'est fourni). Itère parmi les
  389. attributs publics d'un type de classe et les enregistre en tant que
  390. sous-types d'un type d'objet complexe.
  391. </para>
  392. </listitem>
  393. <listitem>
  394. <para>
  395. la classe <classname>Zend_Soap_Wsdl_Strategy_AnyType</classname> :
  396. caste tous les types complexes en un type XSD simple xsd:anyType. Attention
  397. ce raccourci pour la détection des types complexes peut probablement
  398. seulement être géré avec des langages faiblement typés comme le <acronym>PHP</acronym>.
  399. </para>
  400. </listitem>
  401. <listitem>
  402. <para>
  403. la classe
  404. <classname>Zend_Soap_Wsdl_Strategy_ArrayOfTypeSequence</classname> : cette
  405. stratégie permet de spécifier les paramètres de retour de type :
  406. <code>int[]</code> ou <code>string[]</code>. A partir de Zend Framework 1.9,
  407. il peut gérer des types <acronym>PHP</acronym> simples comme int, string, boolean, float ainsi
  408. que des objets ou des tableaux d'objets.
  409. </para>
  410. </listitem>
  411. <listitem>
  412. <para>
  413. la classe
  414. <classname>Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex</classname> : cette
  415. stratégie permet de détecter des tableaux complexes d'objets. Les types
  416. d'objets sont détectés sur la base de
  417. <classname>Zend_Soap_Wsdl_Strategy_DefaultComplexType</classname> et un
  418. tableau enveloppe cette définition.
  419. </para>
  420. </listitem>
  421. <listitem>
  422. <para>
  423. la classe <classname>Zend_Soap_Wsdl_Strategy_Composite</classname> :
  424. cette stratégie peut combiner toutes les stratégies en connectant les types
  425. complexes <acronym>PHP</acronym> (nom de classe) à la stratégie désirée grâce à la méthode
  426. <methodname>connectTypeToStrategy($type, $strategy)</methodname>. Une carte de
  427. correspondance complète de types peut être fourni au constructeur sous la
  428. forme d'un tableau de paires <varname>$type</varname> -&gt;
  429. <varname>$strategy</varname>. Le second paramètre spécifie la stratégie par défaut
  430. si un type inconnu est ajouté. La valeur par défaut de ce paramètre est la
  431. stratégie
  432. <classname>Zend_Soap_Wsdl_Strategy_DefaultComplexType</classname>.
  433. </para>
  434. </listitem>
  435. </itemizedlist>
  436. <para>
  437. la méthode <methodname>addComplexType()</methodname> crée un élément
  438. "<code>/definitions/types/xsd:schema/xsd:complexType</code>" pour chaque type
  439. complexe décrit avec le nom d'une classe <acronym>PHP</acronym> spécifiée.
  440. </para>
  441. <para>
  442. Les propriétés des classes <emphasis>doivent</emphasis> posséder un bloc de
  443. documentation avec le type <acronym>PHP</acronym> en question, afin que la propriété soit incluse dans
  444. la description WSDL.
  445. </para>
  446. <para>
  447. <methodname>addComplexType()</methodname> vérifie sur le type est déjà décrit dans la
  448. section des types du document WSDL.
  449. </para>
  450. <para>
  451. Ceci évite les duplications et récursions si cette méthode est appelée plus
  452. d'une fois.
  453. </para>
  454. <para>
  455. Voyez <ulink url="http://www.w3.org/TR/wsdl#_types"></ulink> pour plus de
  456. détails.
  457. </para>
  458. </sect3>
  459. </sect2>
  460. <sect2 id="zend.soap.wsdl.add_documentation">
  461. <title><methodname>addDocumentation()</methodname></title>
  462. <para>
  463. <methodname>addDocumentation($input_node, $documentation)</methodname> ajoute de la
  464. documentation lisible ("human readable") grâce à l'élément optionnel
  465. "wsdl:document".
  466. </para>
  467. <para>
  468. L'élément "/definitions/binding/soap:binding" est utilisé pour dire que la
  469. correspondance est liée au format du protocole <acronym>SOAP</acronym>.
  470. </para>
  471. <para>
  472. Voyez <ulink url="http://www.w3.org/TR/wsdl#_documentation"></ulink> pour les
  473. détails.
  474. </para>
  475. </sect2>
  476. <sect2 id="zend.soap.wsdl.retrieve">
  477. <title>Récupérer un document WSDL finalisé</title>
  478. <para>
  479. <methodname>toXML()</methodname>, <methodname>toDomDocument()</methodname> et <code>dump($filename =
  480. false)</code> peuvent être utilisées pour récupérer un document WSDL sous forme de <acronym>XML</acronym>,
  481. de structure DOM, ou de fichier.
  482. </para>
  483. </sect2>
  484. </sect1>