• Aucun résultat trouvé

III.3 Transformations explicites

III.3.1 Méthodes de transformation explicite

Les moteurs de transformation se différencient selon deux critères princi-paux :

L’ordre d’application des règles

• Les transformations explicites peuvent être dirigées par la structure du document à transformer. Dans ce cas, une transformation est ex-primée par des actions liées aux types des éléments du document source. Nous désignerons cette approche par le terme transforma-tion dirigée par la source.

• L’autre approche consiste à spécifier les transformations par identi-fication dans le document source des éléments à composer pour pro-duire le document . Nous appellerons cette méthode transformation par requêtes. Ces deux approches sont développées ci−dessous. Le mode de génération du résultat

• Le document résultant de la transformation peut être engendré en écrivant directement sur un flot de sortie du système de transforma-tion ; la génératransforma-tion du document est alors dite linéaire.

• Le document peut être construit sous la forme d’un arbre représentant sa structure avant de produire la forme de sortie ; cette approche est appelée génération arborescente.

III.3.1.1 Transformations dirigées par la source

Dans cette approche, une transformation est conduite par un parcours dans l’ordre préfixe de la structure du document source. Un ensemble de règles ou de primitives de génération du document cible est associé à un événement du par-cours (début de document, début d’élément, fin d’élément, présence d’attribut, valeur d’attribut, etc.).

Dans certains formats de documents tels que MIF ou PDF, les éléments se sont pas ordonnés dans la forme stockée. Les documents stockés dans de tels formats sont lus par le système de transformation qui rétablit l’ordre logique des éléments avant leur traitement.

La figure 18 illustre la génération des événements lors de la transformation d’un document de la classe message. L’événement de début d’élément message est généré, puis la descendance de cet élément est parcourue pour produire les événements qui y sont associés, l’événement fin d’élément message est produit lorsque toute sa descendance à été parcourue.

Début message Début destinataire Fin destinataire Début expéditeur Fin expéditeur Début contenu Début titre ... Fin contenu Fin message message

destinataire expéditeur contenu titre corps

Figure 18 : Production des événements lors de la transformation dirigée par la source.

Les transformations dirigées par la source permettent une sélection des événements en fonction du contexte dans lequel intervient l’élément de structure auquel est attaché cet événement. Ce contexte couvre les éléments qui ont été traités précédemment par le système au moment où il applique une règle : les ancêtres de l’élément courant, ses voisins de gauche et leurs descendants.

La transformation dirigée par la source permet une génération linéaire du document cible. Dans ce cas, les transformations ont la propriété de préserver l’ordre des éléments. La génération peut également être arborescente si le système de transformation fournit des fonctions de construction de structure comme la création, l’insertion ou la copie d’éléments.

L’approche des transformations dirigées par la source est proche du méca-nisme d’un analyseur syntaxique et la plupart des outils proposant cette ap-proche sont fondés sur des analyseurs de documents structurés (CoST 2 [English 96a], STIL [Schrod 95]). Ces systèmes bénéficient des fonctionalités de l’analyseur pour la production des événements et fournissent un mécanisme de génération de la structure cible.

III.3.1.2 Transformations par requêtes

Les transformations par requêtes permettent de construire le document cible par extraction d’éléments du document source. Une transformation est décrite par un ensemble de règles « requête−actions ». Une requête permet de sélec-tionner un sous−ensemble des éléments du document source sur lesquels doit être appliquée une (ou plusieurs) action(s) de transformation.

Le processus de transformation par requêtes se fait en deux phases : • La sélection d’une transformation parmi l’ensemble de transformations

déclarées.

• L’application d’un ensemble de règles de génération d’un document cible.

Des formes de requêtes différentes interviennent lors de ces deux phases : les requêtes utilisées par la première permettent la reconnaissance d’une structure particulière de l’instance source. Ces requêtes se comportent comme des filtres sur la structure du document. La seconde phase utilise des requêtes pour extraire l’information du document source pour l’intégrer dans le document cible.

Selon les systèmes de transformation, une importance différente est donnée à ces deux phases. Certains systèmes (IDM, Balise) ne proposent que la phase d’application des règles de génération, celle−ci se faisant de façon séquentielle et inconditionnelle. Si la génération se fait de manière linéaire, les déclarations sont ordonnées dans l’ordre de la structure du document produit. Une telle transformation peut être exprimée à l’aide du langage de script du système IDM présenté dans la section III.3.3.1.

Si le système utilise les requêtes pour faire une sélection des règles à appli-quer, l’ensemble des requêtes est évalué et les règles associées à celles re-tournant un résultat sont appliquées. L’ordre d’application de ces règles peut varier d’un système à l’autre. Cet ordre peut être :

• donné dans l’expression : les règles priority−expression de DSSSL [ISO 94] permettent de définir un ordre de priorité sur les re-quêtes ; les expressions de transformation de Scrimshaw contiennent aussi l’ordre d’application dans leur description ;

• implicite : XSL [Clark 98] applique en priorité les règles associées aux requêtes les plus spécifiques ;

• celui de la structure du document source, comme dans le système de transformation d’Amaya (c.f. section III.4.3).

• celui de la structure du document à construire : les langages SgmlQL et Cost 2 permettent de décrire des transformations qui utilisent des re-quêtes sur le document source.