Forums : Template et RDF

Aller à la discussion :  Plus récente Plus ancienne

# [Résolu] XMLDocument et RDF

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

# Re: XMLDocument et RDF

Envoyé par : Christophe Charron

Date : 05/11/2007 08:07

Bonjour, quelle présentation souhaitez-vous pour vos données ? Une table ? Une liste ?

# Re: XMLDocument et RDF

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.

# Re: XMLDocument et 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

# Re: XMLDocument et RDF

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 ?

# Re: XMLDocument et RDF

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.

# Re: XMLDocument et RDF

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...

# Re: [Résolu] XMLDocument et RDF

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.