Vous pouvez utiliser des sources de données au FormatRdf pour peupler vos composants comme les arbres, les listes, les menus etc..
Pour cela, il faut utiliser la balise <template> et associées.
Il y a tout d'abord la section correspondante dans
le tutoriel.
Pour ceux qui veulent approfondir le sujet, il y aussi le tutoriel
Comment réussir ses gabarits
Des exemples de template sont visible sur le site de xulplanet :
http://xulplanet.com/tutorials/xulqa/index.html#templates
http://xulplanet.com/testcases/example-viewer.xul
http://www.xulplanet.com/ndeakin/tests/edittree.xulD'autres exemples utilisant des sources de données RDF distantes générées en PHP :
Les sources RDF sont chargés de manière asynchrone. Si on veut accéder aux éléments générés par le template, il faut savoir alors quand le RDF est fini d'être chargé et le template appliqué.
ToDo : à compléter.
Au lieu de déployer tout le tag template et ses différent élément sous l'élément XUL incriminé, il s'agit de simplement ajouter l'attribut template="idTemplate" dans le dit élément XUL :
Exemple d'utilisation de l'attribut template : (bout de code de browser.xul de firefox version 1.0.4)
<menu id="bookmarks-menu" label="&bookmarksMenu.label;"
accesskey="&bookmarksMenu.accesskey;"
datasources="rdf:bookmarks rdf:files rdf:localsearch"
ref="NC:?BookmarksRoot" flags="dont-test-empty"
template='bookmarks-template'
infer="forward-proxy"
...
Il s'agira ensuite de bien spécifier l'id du template en attribut comme on le fait avec les éléments XUL. La définition du template pourra dès lors être extérieur, et réutilisée par d'autres élément XUL.
Exemple d'assignation d'id à un template : (bout de code de browser.xul de firefox version 1.0.4)
... <template id='bookmarks-template' xmlns:nc="http://home.netscape.com/NC-rdf#"> <rule parent="hbox" rdf:type="
http://home.netscape.com/NC-rdf#BookmarkSeparator"> ...
Il permet de tester quel est l'élément XUL parent dans lequel le template va ajouter du code XUL.
Très utile pour 2 raisons :
Exemple d'assignation d'utilisation de "parent" : (bout de code de browser.xul de firefox version 1.0.4)
<template id='bookmarks-template' xmlns:nc="http://home.netscape.com/NC-rdf#"> <rule parent="hbox" rdf:type="
http://home.netscape.com/NC-rdf#BookmarkSeparator"> <toolbarseparator uri="rdf:*" rdf:type="rdf:
http://www.w3.org/1999/02/22-rdf-syntax-ns#type"/> </rule> <rule parent="hbox" rdf:type="
http://home.netscape.com/NC-rdf#Livemark"> <toolbarbutton type="menu" class="bookmark-item" uri="rdf:*" editable="true" rdf:type="
http://home.netscape.com/NC-rdf#Folder" label="rdf:
http://home.netscape.com/NC-rdf#Name" livemark="true" chromedir="&locale.dir;"> <menupopup contextmenu="bookmarks-context-menu"/> </toolbarbutton> </rule> ...
Notons que cet attribut se met dans le tag "rule" cela uniquement dans l'utilisation de la syntaxe simplifié des templates ! (celle n'utilisant pas les tag conditions / bindings / actions). Dans la syntaxe complexe, vous pouvez utiliser la même fonctionnalité mais en mettant l'attribut "tag" dans le tag "content"... Celui ci possède alors donc 2 attributs le "uri" qui est obligatoire, et l'attribut "tag" qui a exactement le même sens que l'attribut parent de l'élément "rule" dans la syntaxe simplifiée.
Trier les sorties dans la syntaxe complète, se fait directement sur les variables "?nomVar". Ainsi :
Exemple : use of attribute "tag" in tag content and sorting on a content variable name...
<tree id="treeExample"
flex="1"
datasources="rdf:null"
allownegativeassertions="false"
flags="dont-build-content">
<treecols >
<treecol id="labelTreeCV"
primary="true"
class="sortDirectionIndicator"
sortDirection="ascending"
sortActive="true"
sort="?nom"/>
<splitter class="tree-splitter"/>
<treecol id="uriTreeCV"
hideheader="true"
ignoreincolumnpicker="true"
hidden="true"/>
</treecols>
<template>
<rule>
<conditions>
<!-- use of tag="tree" to avoid unnecessary recursion -->
<content uri="?ref" tag="tree"/>
...
Le contenu de cette page est disponible selon certaines conditions de réutilisation. Lire aussi la page des 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.