Forums : Template et RDF

Aller à la discussion :  Plus récente Plus ancienne

# filtrage d'un arbre peuplé par RDF

Envoyé par : syl

Date : 10/08/2006 18:35

Bonjour,

J'ai une fenetre avec un arbre (non hierarchique), une case à cocher et une liste déroulante. Ces 2 derniers éléments me permettent de filtrer mon arbre en modifiant les attributs des 2 rule correspondant. La première rule (case à cocher) fonctionne bien. par contre pour le filtrage par liste déroulante seule l'item "tous" fonctionne : voici le rdf pour peupler ma liste déroulante:

<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
        xmlns:aa="http://www.aase.org/rdf#">
 
 
<rdf:Seq rdf:about="urn:themes">
    <rdf:li>
       <rdf:Description rdf:about="urn:theme0">
	        <aa:nom>tous</aa:nom>
			
		</rdf:Description>
    </rdf:li>
    <rdf:li>
       <rdf:Description rdf:about="urn:theme1">
	        <aa:nom>patrimoine</aa:nom>
			
		</rdf:Description>
    </rdf:li>
	<rdf:li>
      <rdf:Description rdf:about="urn:theme2">
	        <aa:nom>partenaires</aa:nom>
			
		</rdf:Description>
    </rdf:li>
	</rdf:Seq>
 </rdf:RDF>

voici le rdf pour peupler mon tree :

<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
        xmlns:aa="http://www.aase.org/rdf#">
	<rdf:Seq rdf:about="urn:vues">
		
		<rdf:li>
	    <rdf:Description rdf:about="urn:vue2" aa:nom = "vue2" aa:type="systeme" aa:theme="partenaires">
			<aa:libelle>hjfsfs</aa:libelle>
		</rdf:Description>
		</rdf:li>
		<rdf:li>
		<rdf:Description rdf:about="urn:vue4" aa:nom = "vue4" aa:type="systeme" aa:theme="patrimoine">
		    <aa:libelle>hjfsfs</aa:libelle>
		</rdf:Description>
		</rdf:li>
		<rdf:li>
	    <rdf:Description rdf:about="urn:vue5" aa:nom = "vue5" aa:type="utilisateur" aa:theme="patrimoine">
			<aa:libelle>hjfsfs</aa:libelle>
		</rdf:Description>
		</rdf:li>
		<rdf:li>
	    </rdf:Seq>
</rdf:RDF>

voici mon fichier XUL

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<dialog id="form" 
	title="Aase - Selection d'une vue" 
	xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
	xmlns:aa="http://www.aase.org/rdf#">
	<script src="aaFormSelectVue.js"/>
	<hbox>
		<label value="Thème"/>
		<menulist id="LD_choixtheme" datasources="./rdf/rdf_listetheme.rdf" ref="urn:themes" flex="1" oncommand ="aaSelectThemeVue();">
			<template>
				<menupopup>
					<menuitem uri="rdf:*" label ="rdf:http://www.aase.org/rdf#nom" value="rdf:http://www.aase.org/rdf#nom"/>
				</menupopup>
			</template>
		</menulist>
		<spacer flex="1"/>
		<checkbox id="CBOX_masquevuesys" label = "masquer les vues systemes" checked="false" oncommand ="aaMasqVueSys();"/>
	</hbox>
	<tree id="TREE_selectvue" datasources="./rdf/rdf_listevue.rdf" ref="urn:vues" flex="10">
				<treecols> 
					<treecol id="COL_nomvue" label="Nom" />
					<treecol id="COL_descri" label="Description"/>
					<treecol id="COL_theme" label="Thème"/>
					<treecol id="COL_type" label="Type"/>
				</treecols>
				<template>
					<rule id="filtrevuesysteme" aa:type = ""></rule>
					<rule id="filtrevuetheme">
							<treechildren>
								<treeitem uri="rdf:*">
									<treerow>
										<treecell label="rdf:http://www.aase.org/rdf#nom" />
										<treecell label="rdf:http://www.aase.org/rdf#libelle"/>
										<treecell label="rdf:http://www.aase.org/rdf#theme"/>
										<treecell label="rdf:http://www.aase.org/rdf#type"/>
									</treerow>
								</treeitem>
							</treechildren>
						</rule>
				</template>	
			</tree>
</dialog>

Et enfin, mon javascript :

function aaMasqVueSys()
{	// filtrage type a partir de la case à cocher
var filtre = document.getElementById("filtrevuesysteme");
if (document.getElementById("CBOX_masquevuesys").checked ==  true)
{	filtre.setAttribute("aa:type","systeme"); }	
else
{	filtre.setAttribute("aa:type",""); }

var tree = document.getElementById("TREE_selectvue");
var data = tree.getAttribute("datasources");
tree.setAttribute("datasources","");
tree.setAttribute("datasources",data);
}
function aaSelectThemeVue()
{	// filtrage theme a partir de la liste deroulante

var filtre = document.getElementById("filtrevuetheme");
var val = document.getElementById("LD_choixtheme").value
if (val == "tous")
{	filtre.removeAttribute("aa:theme"); }	
else
{ alert(val);	
filtre.setAttribute("aa:theme",val);}


var tree = document.getElementById("TREE_selectvue");
var data = tree.getAttribute("datasources");
tree.setAttribute("datasources","");
tree.setAttribute("datasources",data);

}

Les 2 rules fonctionnent si les attributs sont renseignés en statique. Par contre, le filtre sur la liste déroulante ne me retourne aucun enregistrement dans mon arbre sauf pour la valeur tous. Les rules ne sont pas encore limpide pour moi, je preferais donc ne pas passer par un template en full syntaxe, est-ce que mon code est juste ?

Merci d'un petit coup d'oeil averti

Syl

# Re: filtrage d'un arbre peuplé par RDF

Envoyé par : syl

Date : 11/08/2006 15:15

Je me répond à moi-même. En fait, le souci vient du fait que j'utilise une syntaxe simplifiée pour mon template. Et je viens de lire que cette syntaxe ne permet de définir des rules uniquement sur un seul arc, alors que j'en utilisais 2 : un pour le thème et l'autre pour le type. Je vais donc passer à la syntaxe complète pour mes templates.

A bientot probablement

Syl

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.