Langage de transformation XML

Un langage de transformation XML est un langage de programmation créé spécifiquement pour créer toute forme de document en sortie à partir d'un document XML en entrée.

Schéma illustrant une transformation XML vers XML.

Il y a deux cas spécifiques de transformation :

  • XML vers XML : le document de sortie est un document XML ;
  • XML vers binaire : le document de sortie est un flux d'octets.

XML vers XML

modifier

Comme une transformation XML vers XML fournit en sortie des documents XML, il est donc possible de créer une chaîne de transformation pour former un pipeline XML.

XML vers binaire

modifier

La transformation XML vers binaire contient des cas particuliers importants. Le plus courant étant la transformation XML vers HTML, puisque généralement un document HTML n'est pas un document XML.

Les langages disponibles

modifier

XSLT est le langage de transformation XML le plus connu. La recommandation XSLT 1.0 du W3C a été publiée en 1999, avec la recommandation XPath 1.0 et a fourni un grand nombre d'implémentations à ce jour (en Java, Perl, C).

XSLT 2.0 est la norme lui succédant qui est une recommandation depuis janvier 2007 et qui possède déjà des implémentations comme SAXON 9[1].

XQuery 1.0 est une recommandation du W3C depuis . Un programme XQuery peut être exprimé dans deux syntaxes : une compacte non XML et une syntaxe XML. Le langage est basé sur XPath 2.0. Les programmes XQuery sont dépourvus d'effets de bord, tout comme XSLT et fournissent des capacités voisines (par exemple : déclaration de variables et de fonctions, itération sur des séquences, utilisation de types de données XML Schema), même si la syntaxe n'a que peu de points communs. En plus de la syntaxe, la principale différence entre XSLT et XQuery est le modèle de motifs conditionnels (templates) de XSLT que XQuery ne possède pas.

XProc (XML Processing) est une spécification permettant d'encapsuler plusieurs transformations en détaillant les interactions entre elles. XProc est actuellement à l'état de Working Draft au W3C.

STX (Streaming Transformations for XML) est inspiré de XSLT mais a été conçu pour permettre un traitement en une ou plusieurs passes sous forme de flux du document de départ. Il utilise pour ce faire une version allégée de XPath 2.0, nommé STXPath. Des implémentations sont disponibles en Java (Joost[2]) et en Perl (XML::STX[3]).

Un langage impératif de script inspiré de Perl qui utilise la syntaxe XML. XML Script supporte XPath ainsi que son langage propriétaire de sélection des nœuds DSLPath. Remarque : XML Script est maintenant considéré obsolète, comme en témoigne le site de référence de ce langage, xmlscript.org : « XMLScript is obsolete, and is no longer being developed or supported. […] New projects should use XSLT instead. »[4].

A Functional XML Transformation Tool, littéralement « un outil fonctionnel de transformation XML ». Il est implémenté en Standard ML.

Un langage typé avec une syntaxe allégée (comparé à XSLT). L'implémentation est écrite en ML.

Étend XDuce en langage de programmation fonctionnel généraliste[5].

Applique des techniques de XDuce à C#[6].

Une bibliothèque d'outils pour écrire des transformations XML en Haskell. Son approche est très cohérente et puissante[7],[8].

XMLambda (XMλ) a été décrit dans un article daté de 1999 par Erik Meijer et Mark Shields. Aucune implémentation n'est actuellement disponible.

Un langage de requête pour les données semi-structurées basé sur la logique ambiante. Une implémentation non libre en Java est disponible (TQL System[9]).

Un langage de programmation pour les transformations XML basé sur la logique monadique du second ordre, proposé par Kazuhiro Inaba et Haruo Hosoya[10].

XTiSP (XML Transformation language indended for Stream Processing) est un langage conçu pour que le programmeur spécifie des transformations d'arbres sans devoir penser à un traitement en streaming. XTiSP s'occupe d'effectuer ce traitement en streaming, en utilisant les grammaires attribuées. XTiSP était à l'origine un langage, mais est devenu un framework pouvant s'appliquer à XSLT par exemple. Le langage originel est désormais désigné par "XTiSP/IV". Ce projet est développé par Keisuke Nakano.

XStream[11] est un langage de transformation XML fonctionnel, orienté streaming, proposé par Alain Frisch.

Xact[12] est un langage de transformation XML implémenté en Java, performant sur les problèmes de typage.

Notes et références

modifier

Références

modifier
  1. (en) « The Saxon XSLT and XQuery Processor » (consulté le ).
  2. (en) « Joost - The Streaming XML Transformer » (consulté le ).
  3. (en) « XML::STX », sur www.gingerall.org (version du sur Internet Archive).
  4. (en) « XML Script - XML Productivity Applications » (consulté le ).
  5. (en) « CDuce homepage » (consulté le ).
  6. (en) « The Xtatic Project: Native XML processing for C# » (consulté le ).
  7. (en) « HaXml : Haskell and XML » (consulté le ).
  8. (en) David Mertz, « XML Matters: Transcending the limits of DOM, SAX, and XSLT », sur IBM developerWorks, (consulté le ).
  9. (en) « TQL » (consulté le ).
  10. (en) « MTran », sur site de Kazuhiro Inaba (consulté le ).
  11. (en) « XStream », Inria.
  12. (en) « Xact - Type-Safe XML Transformation in Java », BRICS.