Envoyé par : jcs
Date : 04/11/2007 13:34
Je travaille actuellement sur une extension qui télécharge des données sur un serveur en HTTP. Ces données sont envoyées sur la forme d'un document XML.
Je veux afficher ces données dans un fenêtre de mon extension, j'ai donc pensé utiliser les gabarits XUL et une source de données RDF. Pour cela j'ai écrit une feuille de style XSLT pour transformer les données reçues du serveur en RDF. Tout fonctionne bien mais je me retrouve avec un objet de type XMLDocument qui contient le RDF et là je suis coincé. Je ne sais pas quoi faire pour l'utiliser mon document RDF dans un gabarit XUL.
Quelqu'un peut il m'aider ?
Merci
Envoyé par : Christophe Charron
Date : 05/11/2007 08:07
Bonjour, quelle présentation souhaitez-vous pour vos données ? Une table ? Une liste ?
Envoyé par : jcs
Date : 05/11/2007 11:51
Bonjour
En fait je veux faire quelque chose un peu comme ça :
<vbox id="playlist" datasources="rdf:null" ref="urn:null" flex="1" style="overflow:auto"> <template> <dataentry ... /> </template> </vbox>
où dataentry est un composant XBL dont les différentes propriétés sont tirées de mon RDF.
Envoyé par : jcs
Date : 06/11/2007 09:44
Finalement j'ai trouvé une solution. Ce n'est pas très élégant et il y a peut-être une meilleure façon de faire (si quelqu'un sait comment...) mais elle a le mérite de fonctionner :
le XUL :
<vbox id="mybox" datasources="rdf:null" ref="urn:null" flex="1"> <template> <hbox uri="rdf:*"> <image src="rdf:http://..." flex="0" /> <label value="rdf:http://..." /> <!-- et d'autres choses --> </hbox> </template> </vbox>
et le javascript qui charge le RDF:
/* processXSLT applique une transformation XSLT aux données reçues du serveur et renvoie un objet de type « XMLDocument » */ var docRDF = processXSLT(docXML); /* on transforme le doc XML en une string */ var str = new XMLSerializer().serializeToString(docRDF); /* on crée une datasource vide */ var ds = Components.classes["@mozilla.org/rdf/datasource;1?name=in-memory-datasource"].createInstance(Components.interfaces.nsIRDFDataSource); var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService); baseUri = ios.newURI("http://mon_url_bidon", null, null); /* on crée le parser et on remplie la datasource avec la source de données RDF parsée */ var parser = Components.classes["@mozilla.org/rdf/xml-parser;1"].createInstance(Components.interfaces.nsIRDFXMLParser); parser.parseString(ds, baseUri, str); /* on récupère l'élément du DOM à mettre à jour */ var elt = document.getElementById("mybox"); /* on applique le RDF qu'on avait défini à null dans le fichier XUL */ elt.database.AddDataSource(ds); elt.setAttribute("ref", "http://..."); // source des données
Envoyé par : Christophe Charron
Date : 06/11/2007 09:52
Bonjour,
ce ne serait pas plus simple de ne récupérérer qu'un fichier xml tout bête ?
Envoyé par : jcs
Date : 06/11/2007 10:15
Christophe Charron a écrit:
ce ne serait pas plus simple de ne récupérérer
qu'un fichier xml tout bête ?
C'est à dire ? Je récupère déjà un fichier XML mais il faudrait le parser « à la main » pour ensuite modifier le DOM.
Envoyé par : Christophe Charron
Date : 06/11/2007 14:44
Récupérer un "vl_c_datas" (fichier xml de forme)
<?xml version="1.0" encoding="utf-8"?><Description><'zone01 data=""/><'zone02 data=""/><'zone03 data=""/></Description>
et affecter comme cela
document.getElementById("id_textbox_01").value=vl_c_datas.getElementsByTagName('zone01')[0].getAttribute('data') document.getElementById("id_textbox_02").value=vl_c_datas.getElementsByTagName('zone02')[0].getAttribute('data')
A décliner de manière plus ou moins complexe...
Envoyé par : jcs
Date : 07/11/2007 10:30
Plus facile.. Je ne sais pas. C'est vrai que j'avais très peu utlisé RDF avant d'être confronté au problème et la manipulation des données dans le XML semble plus simple en manipulant directement le XML (au moins en dans le cas de mon problème particulier).
Je vais regarder ça de plus près. Merci.
Il n'est plus possible de poster des messages dans ce forum.
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.