Forums : Template et RDF

Aller à la discussion :  Plus récente Plus ancienne

# recursivité de gabarits

Envoyé par : $grm$

Date : 21/08/2006 10:05

Bonjour,

en référence au code ci-dessous je souhaite créer un arbre qui affiche un ensemble de task qui ont en référence des substaks. J'arrive bien à afficher le premier élément (soit http://www.kotekom.com/task/1) mais pas les autres... je dois donc avoir un probleme de récursivité afin d'afficher les autres task... pourriez-vous m'aider SVP

Voici le code RDF:

 <?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  xmlns:task="http://www.kotekom.com/task#">
<rdf:Description rdf:about="http://www.kotekom.com/task/1">
<task:name>test1</task:name>
<task:description>test1</task:description>
<task:status>1</task:status>
<task:priority>1</task:priority>
<task:deadline>2006-08-15</task:deadline>
<task:subtasks>
<rdf:Seq >
<rdf:li rdf:resource="http://www.kotekom.com/task/2" />
<rdf:li rdf:resource="http://www.kotekom.com/task/3" />
</rdf:Seq>
</task:subtasks>
</rdf:Description>

<rdf:Description rdf:about="http://www.kotekom.com/task/2">
<task:name>test2</task:name>
<task:description>test2</task:description>
<task:status>3</task:status>
<task:priority>2</task:priority>
<task:deadline>2006-08-23</task:deadline>
<task:subtasks>
<rdf:Seq >
<rdf:li rdf:resource="http://www.kotekom.com/task/4" />
</rdf:Seq>
</task:subtasks>
</rdf:Description>

<rdf:Description rdf:about="http://www.kotekom.com/task/4">
<task:name>test4</task:name>
<task:description>test4</task:description>
<task:status>1</task:status>
<task:priority>2</task:priority>
<task:deadline>2006-08-30</task:deadline>
<task:subtasks>
</task:subtasks>
</rdf:Description>

<rdf:Description rdf:about="http://www.kotekom.com/task/3">
<task:name>test3</task:name>
<task:description>test3</task:description>
<task:status>3</task:status>
<task:priority>3</task:priority>
<task:deadline>2006-08-30</task:deadline>
<task:subtasks>
<rdf:Seq >
<rdf:li rdf:resource="http://www.kotekom.com/task/5" />
<rdf:li rdf:resource="http://www.kotekom.com/task/6" />
</rdf:Seq>
</task:subtasks>
</rdf:Description>

<rdf:Description rdf:about="http://www.kotekom.com/task/5">
<task:name>test6</task:name>
<task:description>test6</task:description>
<task:status>3</task:status>
<task:priority>3</task:priority>
<task:deadline>2006-08-13</task:deadline>
<task:subtasks>
</task:subtasks>
</rdf:Description>
<rdf:Description rdf:about="http://www.kotekom.com/task/6">
<task:name>test7</task:name>

<task:description>test7</task:description>
<task:status>2</task:status> 
<task:priority>3</task:priority>
<task:deadline></task:deadline>
<task:subtasks>
</task:subtasks>
</rdf:Description>
</rdf:RDF>

Voici le code XUL:

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window id="task-window" title="task"  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"  xmlns:task="http://www.kotekom.com/task">
 <tree flex="1" datasources="http://localhost/task/taskRdf.php" ref="http://www.kotekom.com/task">   
   <treecols>
     <treecol id="name" label="Nom" primary="true" flex="1"/>     
   </treecols>
   <template>
     <rule>
<conditions>
  <content uri="?start"/>
  <triple subject="?start" predicate="http://www.kotekom.com/task#subtasks" object="?subtasks"/>
  <member container="?subtasks" child="?task"/>
</conditions>
<bindings>
  <binding subject="?task" predicate="http://www.kotekom.com/task#name" object="?name"/>
</bindings>
<action>
  <treechildren>
    <treeitem uri="?task">
             <treerow>
	<treecell label="?name"/>              
             </treerow>
    </treeitem>
  </treechildren>
</action>
     </rule>  
   </template>
 </tree>
</window>

Merci d'avance pour votre aide

# Re: recursivité de gabarits

Envoyé par : thefab

Date : 23/08/2006 17:15

Ton template ne risque pas de fonctionner car la ref="http://www.kotekom.com/task" n'existe pas dans ton RDF.

Personnelement je n'ai jamais réussi à faire fonctionner ce genre de syntaxe:

<rdf:Description>
  <task:subtasks>
    <rdf:Seq>
      <rdf:li ...
    </rdf:Seq>
  </task:subtasks>
</rdf:Description>

Càd un Seq dans un élément lui-même dans un Description.

Comme solution de remplacement je te propose:

RDF

<?xml version="1.0"?>

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:task="http://www.kotekom.com/task#">

<!-- changé task en task (cosmétique uniquement) -->
<rdf:Seq rdf:about="http://www.kotekom.com/tasks">
  <rdf:li rdf:resource="http://www.kotekom.com/task/1"/>
</rdf:Seq>

<rdf:Description rdf:about="http://www.kotekom.com/task/1">
  <task:name>Task1</task:name>
</rdf:Description>

<!-- même rdf:about que la tâche (IMPORTANT: les 2 sont fusionnés) -->
<!-- (en gros ça veut dire qu'une tâche EST une liste de sous-tâches) -->
<rdf:Seq rdf:about="http://www.kotekom.com/task/1">
  <rdf:li rdf:resource="http://www.kotekom.com/task/2"/>
  <rdf:li rdf:resource="http://www.kotekom.com/task/3"/>
</rdf:Seq>

<rdf:Description rdf:about="http://www.kotekom.com/task/2">
  <task:name>Task2</task:name>
</rdf:Description>

<rdf:Description rdf:about="http://www.kotekom.com/task/3">
  <task:name>Task3</task:name>
</rdf:Description>

</rdf:RDF>

Comme je suppose que tes sous-tâches sont aussi des tâches tu peux définir la tâche en tant que Description et la liste des sous-tâches en tant que Seq avec le même rdf:about, ce qui veut dire que la tâche est à la fois un Description ET un Seq.

XUL:

<template>
  <rule>
    <conditions>
      <content uri="?tasks"/>
      <member container="?tasks" child="?task"/>
      <triple subject="?task" predicate="http://www.kotekom.com/task#name" object="?name"/>
    </conditions>
    <action>
      <treechildren>
        <treeitem uri="?task">
          <treerow>
            <treecell label="?name"/>
          </treerow>
        </treeitem>
      </treechildren>
    </action>
  </rule>
</template>

Fabrice

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.