[Xulfr] Une condition simple dans un template : sélection de l'élément par défaut en fonction de la présence ou non d'une entrée dans un RDF
KLEIN Stéphane
klein.stephane at gmail.com
Mar 13 Mar 09:50:44 CET 2007
Le 12/03/07, reluc<rldhont at no-log.org> a écrit :
> KLEIN Stéphane a écrit :
> > Le 12/03/07, reluc<rldhont at no-log.org> a écrit :
> >
> >> KLEIN Stéphane a écrit :
> >>
> >>> Le 12/03/07, reluc<rldhont at no-log.org> a écrit :
> >>>
> >>>
> >>>> KLEIN Stéphane a écrit :
> >>>>
> >>>>
> >>>>> Le 12/03/07, reluc<rldhont at no-log.org> a écrit :
> >>>>>
> >>>>>
> >>>>>
> >>>>>> KLEIN Stéphane a écrit :
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>> J'ai un RDF du type :
> >>>>>>>
> >>>>>>> <RDF:RDF>
> >>>>>>> <RDF:Seq RDF:about="http://exemple.com/all-zone">
> >>>>>>> <RDF:li>
> >>>>>>> <RDF:Description RDF:about="RDF:about="http://exemple.com/zone/49"">
> >>>>>>> <ZONE:zone_id>49</ZONE:zone_id>
> >>>>>>> <ZONE:intitule>0</ZONE:intitule>
> >>>>>>> </RDF:Description>
> >>>>>>> </RDF:li>
> >>>>>>> <RDF:li>
> >>>>>>> <RDF:Description RDF:about="RDF:about="http://exemple.com/zone/50"">
> >>>>>>> <ZONE:zone_id>50</ZONE:zone_id>
> >>>>>>> <ZONE:intitule>1</ZONE:intitule>
> >>>>>>> </RDF:Description>
> >>>>>>> </RDF:li>
> >>>>>>> <RDF:li>
> >>>>>>> <RDF:Description RDF:about="RDF:about="http://exemple.com/zone/51"">
> >>>>>>> <ZONE:zone_id>51</ZONE:zone_id>
> >>>>>>> <ZONE:intitule>2</ZONE:intitule>
> >>>>>>> <ZONE:selected/>
> >>>>>>> </RDF:Description>
> >>>>>>> </RDF:li>
> >>>>>>> <RDF:li>
> >>>>>>> <RDF:Description RDF:about="RDF:about="http://exemple.com/zone/52"">
> >>>>>>> <ZONE:zone_id>52</ZONE:zone_id>
> >>>>>>> <ZONE:intitule>3</ZONE:intitule>
> >>>>>>> </RDF:Description>
> >>>>>>> </RDF:li>
> >>>>>>> </RDF:RDF>
> >>>>>>>
> >>>>>>> À partir de ces données, j'aimerais remplir une balise <menulist>.
> >>>>>>> J'aimerais que l'élément qui a une entrée "<ZONE:selected/>" soit
> >>>>>>> sélectionné.
> >>>>>>>
> >>>>>>> Je sais comment réaliser un template de base mais je n'arrive pas à
> >>>>>>> réaliser la condition qui permet d'activer la sélection.
> >>>>>>>
> >>>>>>> Voici mon template de base :
> >>>>>>>
> >>>>>>> <menulist datasources="mon_fichier_rdf.php" ref="http://exemple.com/all-zone">
> >>>>>>> <template>
> >>>>>>> <rule>
> >>>>>>> <menupopup>
> >>>>>>> <menuitem
> >>>>>>> uri="rdf:*"
> >>>>>>> label="rdf:http://exemple.com/rdf#intitule"
> >>>>>>> value="rdf:http://exemple.com/rdf#zone_id"
> >>>>>>> />
> >>>>>>> </menupopup>
> >>>>>>> </rule>
> >>>>>>> </menulist>
> >>>>>>>
> >>>>>>> dois-je utiliser une syntax du type <condition> <member> <triple> ? ou
> >>>>>>> alors un simple <rule ....> (comme ici
> >>>>>>> :http://xulfr.org/xulplanet/xultu/templates.html pour le separator )
> >>>>>>> peut suffir ?
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>> Tout d'abord, ton rdf est-il valide ? J'ai peur que non.
> >>>>>> Et je pense que le mieux sera d'utiliser une règle complexe, plus approprié.
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>> Mon RDF est valide, il fonctionne mais je ne vous ai pas envoyé tout
> >>>>> l'entête. C'était simplement pour vous donner un exemple.
> >>>>>
> >>>>>
> >>>>>
> >>>> Ce qui me gène dans ton RDF c'est que l'arc ou triplet dont le predicat
> >>>> est http://exemple.com/rdf#selected n'est pas complet.
> >>>> Il y a bien l'objet, le predicat mais il manque le sujet! Voici en quoi
> >>>> pour moi ton RDF n'est pas valide.
> >>>> L'as tu validé avec le W3C RDF validation service
> >>>> http://www.w3.org/RDF/Validator/ ?
> >>>>
> >>>>
> >>> Bon... je viens de le faire à l'instant et j'ai comme message un beau
> >>> "Your RDF document validated successfully."
> >>>
> >>> Je ne comprends pas ta partie à propos du sujet (à noter que je ne
> >>> maitrise que partiellement la techno RDF).
> >>>
> >>>
> >> http://xulfr.org/xulplanet/mozsdk/rdfstart.html
> >>
> >> En RDF une information est sous forme de triplet :
> >> object -> predicate -> subject
> >>
> >> l'object est obligatoirement une resource
> >> le predicate est obligatoirment une resource
> >> le subject est soit un literal soit une resource
> >>
> >> voilà pourquoi je te disais que pour moi il y a avait une erreur.
> >> Que te dit le validator pour l'arc correspondant au predicat selected ?
> >>
> >
> > Il me dit :
> >
> > Subject : RDF:about="http://logeka.com/zone/52"
> > Predicate : http://logeka.com/rdf#selected
> > Object: ""
> >
> Dans ma description, je me suis trompé, un triplet c'est subject ->
> predicate -> object
> et donc dans ton cas on pourrait traduire cela par zone 52 -> selected
> -> null
>
> Mais c'est à toi de voir si ça te vas, moi je mettrais true ou false
> sachant que tu n'est pas obligé de mettre ce predicat pour toutes tes zones.
Ça me donnerait quelque chose comme cela ? (je ne suis pas sûr du tout de moi)
<menulist datasources="mon_fichier_rdf.php" ref="http://exemple.com/all-zone">
<template>
<rule>
<condition>
<content uri="?uri" />
<member container="?uri" child="?zone"/>
<triple
subject="?uri"
predicate="http://example.com/rdf#selected"
object="?selected"
/>
</condition>
<action>
<menuitem
uri="rdf:*"
label="rdf:http://exemple.com/rdf#intitule"
value="rdf:http://exemple.com/rdf#zone_id"
selected="true"
/>
</action>
</rule>
<rule>
<menupopup>
<menuitem
uri="rdf:*"
label="rdf:http://exemple.com/rdf#intitule"
value="rdf:http://exemple.com/rdf#zone_id"
/>
</menupopup>
</rule>
</menulist>
Je viens de tester, mon code ne fonctionne pas. Avez vous une idée ?
Plus d'informations sur la liste de diffusion Xulfr