XTF signifie eXtensible Tag Framework. C'est un nouveau système dans Gecko 1.8 (Firefox 1.5) qui permet d'ajouter dans Gecko (sans avoir à le "hacker"), la prise en charge d'un nouveau dialecte XML. Par exemple, l'implementation de Xforms utilise XTF. Il est possible d'apporter cette prise en charge via une extension.
Avec XTF, vous pouvez faire aussi des choses plus complexes qu'en XBL.
Ressources en anglais :
Avec XBL, vous pouvez réaliser vos propres balises, avec leur propre apparence et comportement. Mais XTF apporte beaucoup plus :
extends
de XBL
Cependant, XBL et XTF ont une similitude : pour l'apparence, ils doivent génèrer des élements "anonymes", qui ne sont pas accessibles directement par le DOM.
Pour pouvoir développer des élements XTF, il faut bien sûr connaître la programmation XpCom.
Il faut distinguer deux ensembles d'interface : les interfaces des objets XTF clients, et les interfaces des objets XTF spécifiques au framework. (Voir le schéma sur http://www.croczilla.com/xtf )
Attention : étant donné qu'il n'y a pas de documentation sur XTF (même en anglais), il se peut qu'il y ait des erreurs, et il est certain qu'il y a des imprécisions dans les explications qui suivent. N'hésitez pas à compléter si vous en savez un peu plus ;-) (en cliquant sur "editer la page").
Il faut implémenter en premier lieu un objet ayant pour interface nsIXTFElementFactory. Cet objet est chargé d'instancier un objet nsIXTFElement correspondant à une balise donnée.
Cette factory doit avoir le contract id : "@mozilla.org/xtf/element-factory;1?namespace=votre_espace_de_nom". Par exemple, l'espace de nom de XForms est "http:www.w3.org/2002/xforms", la factory des éléments Xforms a donc pour contract id "@mozilla.org/xtf/element-factory;1?namespace=http:www.w3.org/2002/xforms". (rappel : le contract id est le nom du composant que l'on donne lorsque l'on instancie un composant, comme par exemple en javascript : Components.classe["le_contract_id"] )
L'interface nsIXTFElementFactory propose une seule méthode :
nsIXTFElement createElement(in AString tagName);
Cette méthode reçoit le nom de l'élement XML, et doit renvoyer l'objet de type nsIXFTElement correspondant.
Chaque élément XML de votre éspace de nom est géré par un objet XPCOM implémentant au minimum l'interface nsIXTFElement (ou l'une parmis celle héritant de nsIXTFElement : nsIXTFGenericElement, nsIXTFVisual etc..).
Comme ils sont instanciés par votre factory, vous n'avez pas besoin (voir, il est déconseillé) de les déclarer avec un contract id.
Votre élement peut être invisible : il ne doit pas s'afficher. (Auquel cas il faut implémenter l'interface nsIXTFGenericElement ?)
Si votre élément est visible, il faut qu'il définisse un contenu (Vous devez alors implémenter l'interface nsIXTFVisual ?)
ToDo : à compléter
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.