<-
Apache > Serveur HTTP > Documentation > Version 2.4 > Modules

Module Apache mod_xml2enc

Langues Disponibles:  en  |  fr 

Description:Support avanc´┐Ż de l'internationalisation et des jeux de caract´┐Żres pour les modules de filtrage bas´┐Żs sur libxml2
Statut:Base
Identificateur´┐Żde´┐ŻModule:xml2enc_module
Fichier´┐ŻSource:mod_xml2enc.c
Compatibilit´┐Ż:Disponible depuis la version 2.4 du serveur HTTP Apache. Disponible en tant que module tiers dans les versions 2.2.x

Sommaire

Ce module fournit un support avanc´┐Ż de l'internationalisation pour les modules de filtrage supportant les balises (markup-aware) comme mod_proxy_html. 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 libxml2, 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 jeu de caract´┐Żres appropri´┐Ż sera d´┐Żfini dans l'en-t´┐Żte HTTP Content-Type.

Directives

Sujets

top

Utilisation

Il existe deux sc´┐Żnarios d'utilisation : le cas des modules programm´┐Żs pour travailler avec mod_xml2enc ; et les autres :

Modules de filtrages programm´┐Żs pour mod_xml2enc

Les modules comme mod_proxy_html versions 3.1 et sup´┐Żrieures utilisent la fonction optionnelle xml2enc_charset pour d´┐Żterminer la valeur de l'argument "jeu de caract´┐Żres" ´┐Ż transmettre ´┐Ż l'interpr´┐Żteur libxml2, et disposent de la fonction optionnelle xml2enc_filter 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).

Modules de filtrages non programm´┐Żs pour mod_xml2enc

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 foo fourni par un module mod_foo et pour am´┐Żliorer le support i18n de ce dernier avec HTML et XML, vous pouvez utiliser les directives suivantes :


    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
    

mod_foo supportera alors tout jeu de caract´┐Żre support´┐Ż soit par libxml2, soit par apr_xlate/iconv, soit par les deux.

top

API de programmation

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 mod_xml2enc.h, et mod_proxy_html est un exemple de son utilisation.

top

D´┐Żtection et encodage

A la diff´┐Żrence de mod_charset_lite, 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 :

  1. Si l'en-t´┐Żte HTTP Content-Type contient un param´┐Żtre charset, c'est ce dernier qui sera utilis´┐Ż.
  2. 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.
  3. Si un type d'encodage est d´┐Żclar´┐Ż dans un ´┐Żl´┐Żment HTML <META>, c'est ce dernier qui sera utilis´┐Ż.
  4. Si aucun des ´┐Żl´┐Żments pr´┐Żc´┐Żdents n'est trouv´┐Ż, c'est la valeur par d´┐Żfaut d´┐Żfinie par la directive xml2EncDefault qui sera utilis´┐Że.

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.

top

Codage en sortie

libxml2 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.

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.

top

Codages non support´┐Żs

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 xml2EncAlias.

top

xml2EncAlias Directive

Description:D´┐Żfinit des alias pour les valeurs d'encodage
Syntaxe:xml2EncAlias jeu-de-caract´┐Żres alias [alias ...]
Contexte:configuration du serveur
Statut:Base
Module:mod_xml2enc

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.

top

xml2EncDefault Directive

Description:D´┐Żfinit un encodage par d´┐Żfaut ´┐Ż utiliser lorsqu'aucune information ne peut ´┐Żtre automatiquement d´┐Żtect´┐Że
Syntaxe:xml2EncDefault nom
Contexte:configuration du serveur, serveur virtuel, r´┐Żpertoire, .htaccess
Statut:Base
Module:mod_xml2enc
Compatibilit´┐Ż:Disponible depuis la version 2.4.0 du serveur HTTP Apache ; disponible depuis un module tiers dans les versions ant´┐Żrieures.

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 (iso-8859-1 specifi´┐Że dans HTTP/1.0), utilisez :

xml2EncDefault iso-8859-1
top

xml2StartParse Directive

Description:Indique ´┐Ż l'interpr´┐Żteur ´┐Ż partir de quelle balise il doit commencer son traitement.
Syntaxe:xml2StartParse ´┐Żl´┐Żment [´┐Żl´┐Żment ...]
Contexte:configuration du serveur, serveur virtuel, r´┐Żpertoire, .htaccess
Statut:Base
Module:mod_xml2enc

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 (voir un exemple ici).

Elle ne doit ´┐Żtre utilis´┐Że ni pour les documents XML, ni pour les documents HTML correctement format´┐Żs.

Langues Disponibles:  en  |  fr 

top

Commentaires

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.