Forums : Template et RDF

Aller à la discussion :  Plus récente Plus ancienne

# exploration rdf

Envoyé par : chris

Date : 09/04/2007 21:00

Bonjour,

Malgré mes multiples lectures, je ne parviens pas à réaliser quelque chose de fort simple (à priori). Manifestement, le RDF et moi, ça fait 2.

Soit un RDF distant, dont je ne suis pas maître, du genre :

<?xml version="1.0" encoding="ISO-8859-1"?>
<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	 xmlns:ARTICLE="http://url/facturation/rechArticles/rdf#">
<RDF:Seq RDF:about="http://url/facturation/rechArticles">
	<RDF:li>
		<RDF:Description>
			<ARTICLE:Article_Id>INFPRCARTTDM11B</ARTICLE:Article_Id>
		</RDF:Description>
	</RDF:li>
	<RDF:li>
		<RDF:Description>
			<ARTICLE:Article_Id>INFPRHEADSET1</ARTICLE:Article_Id>
		</RDF:Description>
	</RDF:li>
	<RDF:li>
		<RDF:Description>
			<ARTICLE:Article_Id>INFPRMODADSLETH</ARTICLE:Article_Id>
		</RDF:Description>
	</RDF:li>
</RDF:Seq>
</RDF:RDF>

Comment faire concrètement, en JS, pour récupérer tous les "Article_Id" ?

Si je passe cette étape, cela devrait m'aider à commencer à comprendre les différentes docs. En effet, autant je parviens à me débrouiller avec les templates xul, autant là, je m'y perds complètement.

Je vous remercie d'avance.

# Re: exploration rdf

Envoyé par : chris

Date : 10/04/2007 00:42

Bon, je me suis débrouillé avec un :

var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
var datasource = rdfService.GetDataSourceBlocking(urlRdf);
var sourceArticles = rdfService.GetResource("http://url/facturation/rechArticles");
var targets = datasource.ArcLabelsOut(sourceArticles);
while (targets.hasMoreElements()){
	var predicate = targets.getNext();
	if (predicate instanceof Components.interfaces.nsIRDFResource) {
		var target = datasource.GetTarget(sourceArticles, predicate, true);
		if (target instanceof Components.interfaces.nsIRDFResource) {
			var name = rdfService.GetResource("http://url/facturation/rechArticles/rdf#Article_Id");
			var resp = datasource.GetTarget(target, name, true);
			if (resp instanceof Components.interfaces.nsIRDFLiteral){
     				gArticles.push(resp.Value);
   			}
		}
	}
}

Je ne sais pas s'il y a mieux, mais ça fonctionne.

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.