Forums : Template et RDF

Aller à la discussion :  Plus récente Plus ancienne

Aller à la page :  1 2 3

# [Resolu] Modification sequence RDF

Envoyé par : bross

Date : 25/04/2006 11:42

Bonjour, je n'arrive pas a modifier une sequence RDF. J'arrive à modifier la description (en suivant le tuto). par exemple :

<RDF:Description RDF:about="http://www.site.com/ACHCDA2C/MAGASIN">
    <MODIF:name>MAGASIN</MODIF:name>

devient sans probleme:

<RDF:Description RDF:about="http://www.site.com/ACHCDA2C/TOTO">
    <MODIF:name>TOTO</MODIF:name>

mais je ne sais pas comment changer

<RDF:Seq RDF:about="http://www.site.com/ACHCDA2C">
  <RDF:li RDF:resource="http://www.site.com/ACHCDA2C/MAGASIN"/>
</RDF:Seq>

en

<RDF:Seq RDF:about="http://www.site.com/ACHCDA2C">
  <RDF:li RDF:resource="http://www.site.com/ACHCDA2C/TOTO"/>
</RDF:Seq>

Comment faire ? Merci d'avance

# Re: Modification sequence RDF

Envoyé par : alexp

Date : 25/04/2006 13:08

Seq est un élément RDF conteneur, et il y'a des objets XPCOM spéciaux pour les modifier : voir le tutoriel sur les conteneurs RDF

Tu devrais donc arriver à faire ce que tu veux avec un code proche de ceci :

var container = Components.classes["@mozilla.org/rdf/container;1"].
                 createInstance(Components.interfaces.nsIRDFContainer);
try {
  container.Init(datasource, le_seq_a_modifier);
  container.RemoveElement(ancien_element,true);// ou container.RemoveElementAt(0,true);
  container.AppendElement(nouveau_element);
}
catch (ex){}

# Re: Modification sequence RDF

Envoyé par : bross

Date : 25/04/2006 14:18

c'est bien ce que je fais et ça fonctionne mais le problème est lorsque ça modifie et ecrit dans le fichier, le fichier se trouve complètement désorganisé, les Seq se retrouvent avant les descriptions et du coup, si je modifie un élément se trouvant au milieu de la seq, tous les autres éléments suivant ne sont plus afficher lors du rechargement Comment résoudre ce problème ?

# Re: Modification sequence RDF

Envoyé par : alexp

Date : 25/04/2006 14:37

Etrange, pour moi, le fichier RDF est toujours réorganisé en interne mais l'ordre des déclarations dans le fichier ne doit pas avoir d'importance ? Si un pro peut confirmer ...

# Re: Modification sequence RDF

Envoyé par : laurentj

Date : 25/04/2006 14:52

Comment résoudre ce problème ?

il n'y a pas de problème à resoudre. Du moment que les references sont toujours bonne, l'ordre de la description des elements n'a aucune importance.

# Re: Modification sequence RDF

Envoyé par : bross

Date : 25/04/2006 15:15

peut etre que je m'y prend mal voila mon code :

extrait du rdf (sans toutes les descriptions)

<?xml version="1.0" encoding="iso-8859-1"?>
<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"   xmlns:MODIF="http://www.site.com/rdf#">
 
  <RDF:Description RDF:about="http://www.site.com/GCHAXFAC">
     <MODIF:name>GCHAXFAC</MODIF:name>
  </RDF:Description>
  <RDF:Description RDF:about="http://www.site.com/ACHCDA2C">
     <MODIF:name>ACHCDA2C</MODIF:name>
  </RDF:Description>
  <RDF:Description RDF:about="http://www.site.com/ACHCDA2C/JLESUEUR">
     <MODIF:name>JLESUEUR</MODIF:name>
     <MODIF:nid>d0e137</MODIF:nid>
  </RDF:Description>
  <RDF:Description RDF:about="http://www.site.com/ACHCDA2C/MAGASIN">
     <MODIF:name>MAGASIN</MODIF:name>
     <MODIF:nid>d0e141</MODIF:nid>
  </RDF:Description>
 
  <RDF:Seq RDF:about="http://www.site.com/all-elts">
     <RDF:li>
        <RDF:Seq RDF:about="http://www.site.com/ACHCDA2C">
           <RDF:li  RDF:resource="http://www.site.com/ACHCDA2C/JLESUEUR"/>
           <RDF:li RDF:resource="http://www.site.com/ACHCDA2C/MAGASIN"/>
        </RDF:Seq>
     </RDF:li>
     <RDF:li>
        <RDF:Seq RDF:about="http://www.site.com/GCHAXBON">
           <RDF:li RDF:resource="http://www.site.com/GCHAXBON/JECOUDER"/>
           <RDF:li RDF:resource="http://www.site.com/GCHAXBON/MLJOANNES"/>
           <RDF:li RDF:resource="http://www.site.com/GCHAXBON/EBERLEMON"/>
           <RDF:li RDF:resource="http://www.site.com/GCHAXBON/EDEPIERRE"/>
           <RDF:li RDF:resource="http://www.site.com/GCHAXBON/EC"/>
           <RDF:li RDF:resource="http://www.site.com/GCHAXBON/JUAN"/>
           <RDF:li RDF:resource="http://www.site.com/GCHAXBON/ELEBORGNE"/>
           <RDF:li RDF:resource="http://www.site.com/GCHAXBON/GJEAN"/>
           <RDF:li RDF:resource="http://www.site.com/GCHAXBON/CCROISSANT"/>
           <RDF:li RDF:resource="http://www.site.com/GCHAXBON/CMALLET"/>
        </RDF:Seq>
     </RDF:li>
  </RDF:Seq>
</RDF:RDF>

code :

var classdoc = document.getElementById("labelClasse").value;
var ancienNom = document.getElementById("selectedLabel").value;
var nouveauNom = document.getElementById("nouveau-nom").value;
var nid = document.getElementById("labelNid").value;
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
                  getService(Components.interfaces.nsIRDFService);                   
var ds = rdfService.GetDataSourceBlocking("file:///home/users.rdf");
var subject = rdfService.GetResource("http://www.site.com/" +classdoc +"/" + ancienNom );
var predicate = rdfService.GetResource("http://www.site.com/rdf#name");
var oldName = rdfService.GetLiteral(ancienNom);
var newName = rdfService.GetLiteral(nouveauNom);
ds.Change(subject, predicate, oldName, newName);
var newSubject = rdfService.GetResource("http://www.site.com/"+classdoc + "/" + nouveauNom);
ds.Move(subject, newSubject, predicate, newName);
var predicate2 = rdfService.GetResource("http://www.site.com/rdf#nid");
var newNid = rdfService.GetLiteral(nid);
ds.Assert(newSubject, predicate2, newNid, true);
ds.Unassert(subject,predicate2,newNid);
var container = Components.classes["@mozilla.org/rdf/container;1"].
                createInstance(Components.interfaces.nsIRDFContainer);
var folderRes = rdfService.GetResource("http://www.site.com/"+ classdoc);                
try {
 container.Init(ds, folderRes);
 container.RemoveElement(subject,true);
 container.AppendElement(newSubject);
}
catch (ex){};
ds.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
ds.Flush();
recharger();   

# Re: Modification sequence RDF

Envoyé par : bross

Date : 25/04/2006 16:19

vous avez raison, ce n'est pas un problème rdf mais un problème de rechargement, ma méthode de rechargement ne doit pas etre correcte :(

# Re: Modification sequence RDF

Envoyé par : bross

Date : 25/04/2006 17:44

ce qui est bizarre c'est que lorsque je recharge en utilisant :

var conteneurTreeUser = document.getElementById("treeUser");
conteneurTreeUser.builder.refresh();

alors je n'ai que la partie supérieure visible de mon tree (au dessus de l'element modifie), alors que si je ferme l'appli et que je recompile, le tree s'affiche correctement. Quelqu'un a-t-il une solution ?

# Re: Modification sequence RDF

Envoyé par : bross

Date : 26/04/2006 16:09

je n'ai toujours pas de solution à mon problème, avez vous des pistes afin que ça fonctionne correctement car je ne vois plus ou chercher actuellement

# Re: Modification sequence RDF

Envoyé par : alexp

Date : 26/04/2006 16:30

Le problème ne doit pas se situer au niveau du refresh, puisque l'arbre devrait être modifié directement après les appels : assert, change, removeelement, appendelement, ...
(il n'y a pas besoin de faire un refresh pour voir apparaitre les modifications du datasource)

Aller à la page :  1 2 3

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.