Les fondements
Pourquoi le XFT ?
Des transactions en ligne pour vendre des produits voyages ont été proposé par Galileo France au début de l’année 1998 en complément de la plateforme OpenLink. A l’époque, les acteurs du tourisme n’étaient pas encore prêt à être comparés car la première étape avant la vente en ligne est le shopping. Lorsqu’un utilisateur fait une recherche sur internet, il obtient des listes de résultats et les compare avant d’en choisir plusieurs pour lesquels ils demandera des cotations plus précise et ira ensuite jusqu’à la finalisation du booking (avec ou sans paiement)
Au fil des années, les mentalités et les besoins ont évolués et ces mêmes acteurs ont finalement décidés de développer des transactions en ligne en utilisant un langage orienté objet. A cette époque, l’utilisation des transactions OTA avait été envisagé mais celles-ci ne remplissaient pas les besoins élémentaires des différents acteurs notamment la capacité d’évoluer rapidement, une flexibilité importante, la capacité de travailler avec différents process de ventes qui sont largement différents entre Kuoni, Jet Tours, Marmara ou Thalasso n°1 mais aussi le besoin d’une cohérence des objets dans les différentes transactions.
Les transactions OTA en 2002/2003 étaient très limitées en terme de revente de tours pré-packagés (Ceci parce que ce type de produit n’était pas très répandu aux États Unis à l’époque et que les transactions OTA ont été crées initialement pour faire de la gestion de profil et non pas de la vente). OTA était aussi très stricte et demandait de nombreuses évolutions. Les TO avaient aussi quelques difficultés à dépendre d’une société étrangère sur laquelle baser leur cœur de métier et ont toujours souhaité rester indépendant des GDS.
Par conséquent, le besoin de développer un langage orienté voyage s’est fait ressentir. Les TO auraient pu partir d’un format existant, le XML CETO dédié aux exports de catalogues mais qui dit transaction dit échanges entre les différents types d’acteurs : Les fournisseurs qui produises les contenus qui seront vendus, les société de services et les GDS (Amadeus, Galileo/Worldspan, Sabre) qui développent des plateformes de vente en ligne et enfin les distributeurs qui vendent les produits (traditionnels ou agences web). Pour garantir le succès du langage et l’adhésion de nombreux acteurs de la chaine, les tours opérateurs du début ont impliqué tous ces acteurs.
Le langage XFT (eXchange For Travel) a donc été crée en 2003.
Qu’est ce que le XFT ?
Les objectifs initiaux du XFT ont été de donner l’accès direct aux fournisseurs dès qu’un produit pré-packagé avait été sélectionné d’une liste de résultats provenant d’un moteur de packages. Les transactions de recherches n’étaient pas vraiment nécessaires à cette étape car il existait déjà des moteurs de recherches basés sur les formats catalogues XML CETO. Ces moteurs agissaient comme des caches permettant à tous de se passer de transactions de recherche.
Une fois que le package a été sélectionne, une première demande est faite au fournisseur avec certains paramètres qui permettent d’obtenir une transaction de Quoted Availability (demande de dispo) pour un produit donné.
La seconde transaction est une création de booking (requête, en option ou confirmée) qui renvoie un numéro de référence valide du fournisseur.
Un certain nombre de transactions simples permettant de gérer les bookings ont alors été crées comme l’annulation d’un booking, la confirmation (ou l’abandon) d’un booking, la récupération des informations d’un booking et finalement, une demande de frais d’annulation.
Bien sûr, depuis le début, le XFT n’est pas juste une collection de transactions mais un véritable langage structuré avec une grammaire, un vocabulaire, des verbes et une syntaxe validés par un schéma
Le langage XFT est un langage orienté objet qui intègre l’héritage, la récursivité des pointeur…etc et basé sur 7 familles d’entités principales :
- Les types qui étendent les standards du XML au travers d’expressions régulières (majuscules, codes à 3 caractères (pour les codes IATA), union de textes libres et de codes…etc le plus souvent utilisé dans la définition des attributs.
- Les liste d’énumérations sont des listes de valeurs soumises à une validation stricte. (liste de codes repas (mealplan), listes de codes fournisseurs…Etc). Elles sont utilisée dans la définition des attributs et d’autres types (via des unions XSD)
- Les groupes d’attributs sont une collection de plusieurs attributs regroupés pour des raisons fonctionnelles et utilisés dans la définition des classes.
- Les éléments sont des instances de classes et constituent le vocabulaire actuel du XFT. Un élément a un usage particulier. Il peut être utilisé soit directement dans les fichiers XFT et les transactions ou constituer les classes.
Certains sont des synonymes et certains peuvent être substitués à d’autres sans utiliser l’héritage. - Les collections sont des instances de collections de classe utilisées pour contenir une collection d’éléments ou des collections du même type. Ils sont utilisés soit directement dans les fichiers XML et les transactions, soit dans la constitution des classes.
- Le groupe est un élément abstrait utilisé dans les définitions du schéma mais jamais présenté comme des entités XML véritable. Il est utilisé à la fois pour grouper des éléments et des collections de même type tel qu’une chambre ou des collections de chambres (appelés groupes cohérents) ou pour grouper des éléments de différents types avec des rapprochements fonctionnels comme le début et la fin d’un voyage ou le lieu de départ et d’arrivé du voyage (appelés agrégats). L’utilisation de groupes augmente la clarté du schéma mais impose un ordre dans les tags.
- La classe est l’équivalent des classes dans les langages orientés objet. Cela correspond à un un Complex Type dans le schéma. Les classes nerf central d’XFT. Un complex type peut contenir des attributs, des groupes d’attributs, des éléments (uniques ou collections) ou des groupes. Les classes XFT sont indépendantes mais peuvent hériter de classes basiques. Par exemple, un segment aérien pourra hériter d’un segment transport qui héritera lui même d’un segment, dérivé d’une entity voyage lui même dérivé d’entité, pour arrivé ainsi jusqu’à l’atome. A une classe correspond au moins une collection de classes, un élément, un élément classe ou un groupe. Les types spécifiques et les énumérations peuvent aussi bien exister en tant que classes ou agrégats. Il existe des classes pour les éléments seuls ou les collections.
Tous les éléments utilisés dans le XFT ont une classe correspondante le plus souvent héritée d’autres classes racine. Une classe n’est jamais directement présente dans le fichier XML ou les transactions.
Les interactions entre les différentes entités sont illustrées dans le diagramme suivant :

Facile à maitriser, les conventions de nommage permettent une interprétation et une navigation intuitives dans le schéma. Par exemple, les classes d’une chambre (room) sont RoomType (Room préfixe l’élément) et les classes correspondantes sont RoomCollectionType (et Rooms pour un élément). Le groupe est nommé RoomGroup. RoomType a un RoomCodeCodeType (CodeType postfixe toutes les énumérations)
État de l’art
Depuis 2003, le XFT a beaucoup évolué. Une association a été crée en 2004 avec 7 membres fondateur et nous en sommes maintenant à 37 membres dont la plupart sont les principales sociétés de tourisme en France.
La quantité et le contenu des transaction a aussi évolué. Le XFT possède maintenant :
- Des transactions pour les moteurs de recherche. (packages, vols, accommodations)
- Des requêtes de demande d’information (pour avoir plus de détails sur un élément spécifique comme des médias, des dates de départ, des disponibilités, des tableaux de prix)
- Des transactions originales de vente en ligne (demande de cotation, demande de cotation disponibilité, demande de disponibilité, création de booking ou d’option)
- Des transactions de gestions utilisateurs comme de l’authentification, de la création d’utilisateurs, de la recherche, de la gestion…
- Des transactions de gestion de booking (Get Booking, Update Booking, Search Booking, Confirm Booking, Cancel Booking, Release Booking)

