[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