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
:
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.
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 :
- html -
HTMLDocument
- xml -
XMLDocument
- text -
XMLDocument
avec un unique élément racine<transformiix:result>
contenant le texte comme enfant.
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
- The XSLT JavaScript Interface in Gecko
- document.load() en ce qui concerne le chargement de documents XML (comme indiqué ci-dessus)
Original Document Information
- Author(s): Mike Hearn
- Last Updated Date: December 21, 2005
- Copyright Information: Copyright (C) Mike Hearn