Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Ce document décrit l'interface JavaScript dans Mozilla 1.2 ainsi que le moteur de tranformation XSLT (TransforMiiX).

Créer d'un XSLTProcessor

Tout d'abord, il vous faut créer un objet XSLTProcessor :

var processeur = new XSLTProcessor();

Choisir une feuille de style XLST

Afin de pouvoir l'utiliser, vous devez importer une feuille de style XLST en utilisant la méthode  XSLTProcessor.importStylesheet() . Cette méthode n'a qu'un paramètre, le node DOM  de la feuille de style XSLT à importer.

Note: L'importation se fait directement, ce qui signifie que si vous modifiez la feuille de style après l'avoir importée, cela se répercutera sur le traitement. Plutôt que de modifier le DOM, il est conseillé d'utiliser les paramètres de la feuille de style ce qui est plus simple et permet de meilleures performances.

var testTransform = document.implementation.createDocument("", "test", null);
// Un simple exemple pour récupérer un transform dans un script comme un DOM.
// XMLDocument.load est asynchrone, donc tout le traitement se produit 
// dans l'écouteur surChargement
testTransform.addEventListener("load", surChargement, false);
testTransform.load("test-transform.xml");
function surChargement() {
  processor.importStylesheet(testTransform);
}

XSLTProcessor.importStylesheet() nécessite un seul argument, un node DOM. Si ce node est un document node, vous pouvez lui passer en argument un XSL Transform complet ou un literal result element transform, sinon ce doit être un xsl:stylesheet ou un élément xsl:transform.

Transformer le document

Vous pouvez utiliser les méthodes XSLTProcessor.transformToDocument() ou XSLTProcessor.transformToFragment() afin de transformer un document en utilisant la feuille de style XSLT importée.

transformToDocument

La méthode XSLTProcessor.transformToDocument() prend comme seul argument le node source à transformer, et renvoie un nouveau Document résultant de la transformation :

var documentNeuf = processor.transformToDocument(domQuiSeraTransforme);

Le type de résultat depend de la méthode output de la feuille de style :

transformToFragment

Vous pouvez aussi utiliser la méthode XSLTProcessor.transformToFragment() qui renverra un node DocumentFragment. C'est pratique car accrocher un fragment à un autre node ajoute tous les enfants de ce fragment, et le fragment lui-même n'est pas intégré. Les fragments sont de ce faut pratiques pour déplacer des nodes et les stocker sans avoir toute la surcharge que représenterait un objet document  complet.

XSLTProcessor.transformToFragment() prend deux arguments : le document source à transformer (comme vu plus haut) et l'objet Document qui sera l'hôte du fragment (tout fragment doit en effet être affecté à un document).

var proprioDocument = document.implementation.createDocument("", "test", null);
var fragmentNeuf = processor.transformToFragment(domQuiSeraTransforme, proprioDocument);

La méthode XSLTProcessor.transformToFragment() ne produira un objet HTML DOM que s le propriétaire est lui-même un HTMLDocument, ou si la méthode de sortie (output) choisie pour la feuille de style est HTML. Il ne produira pas d'objets HTML DOM si seul le niveau supérieur des éléments du résultat est un <html> car XSLTProcessor.transformToFragment() est rarement utilisée pour créer ce type d'element. Si vous voulez passer outre ce fait, il vous est néanmoins possible de définir la méthode output de façon classique.

Transformer du HTML

Malheureusement, il n'est actuellement pas possible de transformer des nodes HTML en utilisant du XSLT. Certaines choses fonctionnent correctement si vous mettez en minuscules les noms des nodes dans les motifs et expressions du xmld et les nodes sont traités comme s'ils appartenaient au namespace null. Cependant, ceci n'a pas été testé de façon intensive dans toutes les situations. Il est cependant possible que cet état de fait évolue dans une future version.

Toutefois, transformer un document XHTML devrait correctement fonctionner.

Régler les paramètres

Il est possible de contrôler les paramètres de la feuille de style XLST en utilisant les trois méthodes XSLTProcessor.setParameter(), XSLTProcessor.getParameter(), and XSLTProcessor.removeParameter(). Ces méthodes prennent toutes un URI d'espace de nom et un nom local comme deux premiers paramètres, alors que XSLTProcessor.setParameter() en a un troisième : la valeur du paramètre que l'on définit. Voyez-le dans l'exemple The XSLT/JavaScript Interface in Gecko.

Remise à zéro

L'objet XSLTProcessor implémentte aussi une méthode XSLTProcessor.reset(), qui peut être utilisée pour supprimer les feuille de style et paramètres afin que le traitement retrouve son état initial. Cette méthode est implémentée à partir de la version Mozilla 1.3.

Ressources

Les éléments suivants reflètent l'interface de l'objet XSLTProcessor :

Utiliser XSLTProcessor à partir de composants XPCOM

Instancier un XSLTProcessor à partir d'un composant XPCOM nécessite une syntaxe différent car le constructeur n'est pas défini pour les composants.

Au lieu de ceci :

var processeur = new XSLTProcessor();

Vous devrez faire :

var processeur = Components.classes["@mozilla.org/document-transformer;1?type=xslt"]
                          .createInstance(Components.interfaces.nsIXSLTProcessor);

A voir aussi

Original Document Information

  • Author(s): Mike Hearn
  • Last Updated Date: December 21, 2005
  • Copyright Information: Copyright (C) Mike Hearn

 

Document Tags and Contributors

Tags: 
 Last updated by: Jean-MariePETIT,