| <?xml version="1.0" encoding="UTF-8"?> | |
| <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> | |
| <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?> | |
| <!-- English Revision: 1933830 --> | |
| <!-- French translation : Lucien GENTIS --> | |
| <!-- Reviewed by : Vincent Deffontaines --> | |
| <!-- | |
| Licensed to the Apache Software Foundation (ASF) under one or more | |
| contributor license agreements. See the NOTICE file distributed with | |
| this work for additional information regarding copyright ownership. | |
| The ASF licenses this file to You under the Apache License, Version 2.0 | |
| (the "License"); you may not use this file except in compliance with | |
| the License. You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and | |
| limitations under the License. | |
| --> | |
| <modulesynopsis metafile="mod_xml2enc.xml.meta"> | |
| <name>mod_xml2enc</name> | |
| <description>Support avancé de l'internationalisation et des jeux de | |
| caractères pour les modules de filtrage basés sur libxml2</description> | |
| <status>Base</status> | |
| <sourcefile>mod_xml2enc.c</sourcefile> | |
| <identifier>xml2enc_module</identifier> | |
| <compatibility>Disponible depuis la version 2.4 du serveur HTTP Apache. | |
| Disponible en tant que module tiers dans les versions 2.2.x</compatibility> | |
| <summary> | |
| <p>Ce module fournit un support avancé de l'internationalisation | |
| pour les modules de filtrage supportant les balises (markup-aware) | |
| comme <module>mod_proxy_html</module>. Il est capable de détecter | |
| automatiquement l'encodage des données en entrée et de s'assurer | |
| qu'elle sont traitées correctement par l'interpréteur <a | |
| href="http://xmlsoft.org/">libxml2</a>, y compris la conversion en | |
| Unicode (UTF-8) si nécessaire. Il peut aussi convertir les données | |
| dans l'encodage de votre choix après le traitement des balises, et | |
| s'assurera que le <var>jeu de caractères</var> approprié sera défini | |
| dans l'en-tête HTTP <var>Content-Type</var>.</p> | |
| </summary> | |
| <section id="usage"><title>Utilisation</title> | |
| <p>Il existe deux scénarios d'utilisation : le cas des modules | |
| programmés pour travailler avec mod_xml2enc ; et les autres :</p> | |
| <dl> | |
| <dt>Modules de filtrages programmés pour mod_xml2enc</dt><dd> | |
| <p>Les modules comme <module>mod_proxy_html</module> versions 3.1 et | |
| supérieures utilisent la fonction optionnelle | |
| <code>xml2enc_charset</code> pour déterminer la valeur de l'argument | |
| "jeu de caractères" à transmettre à l'interpréteur libxml2, et | |
| disposent de la fonction optionnelle <code>xml2enc_filter</code> | |
| pour effectuer un encodage ultérieur éventuel. L'utilisation de | |
| mod_xml2enc avec un module préprogrammé à cet effet ne nécessite | |
| aucune configuration : ce dernier configurera mod_xml2enc pour vous | |
| (sachant que vous pouvez tout de même le personnaliser via les | |
| directives de configuration ci-dessous).</p> | |
| </dd> | |
| <dt>Modules de filtrages non programmés pour mod_xml2enc</dt><dd> | |
| <p>Pour utiliser mod_xml2enc avec un module basé sur libxml2 qui n'a | |
| pas été explicitement programmé pour mod_xml2enc, vous devrez | |
| configurer la chaîne de filtrage vous-même. Ainsi, pour utiliser | |
| mod_xml2enc avec un filtre <strong>foo</strong> fourni par un module | |
| <strong>mod_foo</strong> et pour | |
| améliorer le support i18n de ce dernier avec HTML et XML, vous | |
| pouvez utiliser les directives suivantes :</p> | |
| <pre><code> | |
| FilterProvider iconv xml2enc Content-Type $text/html | |
| FilterProvider iconv xml2enc Content-Type $xml | |
| FilterProvider markup foo Content-Type $text/html | |
| FilterProvider markup foo Content-Type $xml | |
| FilterChain iconv markup | |
| </code></pre> | |
| <p><strong>mod_foo</strong> supportera alors tout jeu de caractère supporté soit par | |
| libxml2, soit par apr_xlate/iconv, soit par les deux.</p> | |
| </dd></dl> | |
| </section> | |
| <section id="api"><title>API de programmation</title> | |
| <p>Les programmeurs de modules de filtrage basés sur libxml2 sont | |
| encouragés à les préprogrammer pour mod_xml2enc, afin de fournir un | |
| support i18n solide aux utilisateurs sans avoir à réinventer la | |
| roue. L'API de programmation est décrite dans | |
| <var>mod_xml2enc.h</var>, et <module>mod_proxy_html</module> est un | |
| exemple de son utilisation.</p> | |
| </section> | |
| <section id="sniffing"><title>Détection et encodage</title> | |
| <p>A la différence de <module>mod_charset_lite</module>, mod_xml2enc | |
| est conçu pour travailler avec des données dont l'encodage ne peut | |
| pas être connu, et donc configuré, à l'avance. Il utilise donc les | |
| techniques de 'reniflage' suivantes pour détecter le type d'encodage | |
| des données HTTP :</p> | |
| <ol> | |
| <li>Si l'en-tête HTTP <var>Content-Type</var> contient un | |
| paramètre <var>charset</var>, c'est ce dernier qui sera utilisé.</li> | |
| <li>Si les données commancent par une balise XML concernant | |
| l'ordre des octets (BOM) ou par une déclaration d'encodage XML, | |
| c'est celle-ci qui sera utilisée.</li> | |
| <li>Si un type d'encodage est déclaré dans un élément HTML | |
| <code><META></code>, c'est ce dernier qui sera utilisé.</li> | |
| <li>Si aucun des éléments précédents n'est trouvé, c'est la | |
| valeur par défaut définie par la directive | |
| <directive>xml2EncDefault</directive> qui sera utilisée.</li> | |
| </ol> | |
| <p>Les conditions sont testées dans cet ordre . Dès qu'une règle | |
| s'applique, elle est utilisée et la détection est terminée.</p> | |
| </section> | |
| <section id="output"><title>Codage en sortie</title> | |
| <p><a href="http://xmlsoft.org/">libxml2</a> utilise toujours UTF-8 | |
| (Unicode) en interne, et les modules de filtrage basés sur libxml2 | |
| utiliseront cet encodage en sortie par défaut. mod_xml2enc peut modifier | |
| l'encodage en sortie via l'API, mais il n'y a actuellement aucun moyen de le | |
| configurer directement.</p> | |
| <p>La modification de l'encodage en sortie ne devrait (du moins en théorie) | |
| jamais être nécessaire, et est même déconseillée à cause de la charge de | |
| traitement supplémentaire imposée au serveur par une conversion non | |
| nécessaire.</p> | |
| </section> | |
| <section id="alias"><title>Codages non supportés</title> | |
| <p>Si vous travaillez avec des encodages non supportés par aucune des | |
| méthodes de conversion disponibles sur votre plateforme, vous pouvez | |
| tout de même leur associer un alias vers un code supporté via la | |
| directive <directive>xml2EncAlias</directive>.</p> | |
| </section> | |
| <directivesynopsis> | |
| <name>xml2EncDefault</name> | |
| <description>Définit un encodage par défaut à utiliser lorsqu'aucune | |
| information ne peut être <a href="#sniffing">automatiquement détectée</a></description> | |
| <syntax>xml2EncDefault <var>nom</var></syntax> | |
| <contextlist><context>server config</context> | |
| <context>virtual host</context><context>directory</context> | |
| <context>.htaccess</context></contextlist> | |
| <override>All</override> | |
| <usage> | |
| <p>Si vous traitez des données dont l'encodage est connu, mais ne | |
| contenant aucune information à propos de ce dernier, vous pouvez | |
| définir une valeur par défaut afin d'aider mod_xml2enc à traiter | |
| correctement les données. Par exemple, pour définir la valeur par | |
| défaut Latin1 (<var>iso-8859-1</var>) specifiée dans HTTP/1.0, | |
| utilisez :</p> | |
| <highlight language="config"> | |
| xml2EncDefault iso-8859-1 | |
| </highlight> | |
| </usage> | |
| </directivesynopsis> | |
| <directivesynopsis> | |
| <name>xml2EncAlias</name> | |
| <description>Définit des alias pour les valeurs d'encodage</description> | |
| <syntax>xml2EncAlias <var>jeu-de-caractères alias [alias ...]</var></syntax> | |
| <contextlist><context>server config</context></contextlist> | |
| <usage> | |
| <p>Cette directive de niveau serveur permet de définir un ou | |
| plusieurs alias pour un encodage. Elle permet au support d'encodage de | |
| libxml2 de traiter en interne des encodages non reconnus par libxml2 | |
| en utilisant la table de conversion pour un encodage reconnu. Elle | |
| permet d'atteindre deux objectifs : supporter des jeux (ou noms) de | |
| caractères non reconnus par libxml2 ou iconv, et éviter une | |
| conversion pour un encodage lorsque cela n'est pas nécessaire.</p> | |
| </usage> | |
| </directivesynopsis> | |
| <directivesynopsis> | |
| <name>xml2StartParse</name> | |
| <description>Indique à l'interpréteur à partir de quelle balise il doit | |
| commencer son traitement.</description> | |
| <syntax>xml2StartParse <var>élément [élément ...]</var></syntax> | |
| <contextlist><context>server config</context><context>virtual host</context> | |
| <context>directory</context><context>.htaccess</context></contextlist> | |
| <override>All</override> | |
| <usage> | |
| <p>Cette directive permet de spécifier à partir de quelle balise, | |
| parmi les éléments spécifiés, l'interpréteur de balise doit | |
| commencer son traitement. Ccei permet de contourner le problème des | |
| serveurs d'arrière-plan qui insèrent des éléments non conformes en | |
| début de données, ce qui a pour effet de perturber l'interpréteur (<a | |
| href="http://bahumbug.wordpress.com/2006/10/12/mod_proxy_html-revisited/" | |
| >voir un exemple ici</a>).</p> | |
| <p>Elle ne doit être utilisée ni pour les documents XML, ni pour les | |
| documents HTML correctement formatés.</p> | |
| </usage> | |
| </directivesynopsis> | |
| </modulesynopsis> | |