Générer un ensemble de menulists

Ce gabarit parcourt la liste des races animales. Pour chaque race, il génère un menu déroulant. Il utilise deux règles. La première règle utilise une syntaxe simple pour trouver tous les conteneurs et générer un élément vbox avec un libellé label dedans. Ce libellé est lié avec le nom du prédicat.

La seconde règle trouve tous les non-conteneurs qui seront les animaux individuels. Nous utilisons une syntaxe complète bien qu'une règle simple aurait suffit puisque nous parcourons un conteneur. La condition génère la liste des enfants des races. Tandis que le constructeur du gabarit est automatiquement récursif, la seconde règle s'appliquera à l'intérieur des items. Le contenu sera inséré comme enfant du parent hbox (défini par la première règle). Le menu déroulant et le menu surgissant sont générés une fois pour chaque liste d'enfants car l'attribut uri est utilisé sur la balise menuitem.

Voir   Voir la source de données

<vbox datasources="animals.rdf" ref="http://www.some-fictitious-zoo.com/all-animals">
  <template>
    <rule iscontainer="true">
      <hbox align="left" uri="rdf:*">
        <label value="rdf:http://www.some-fictitious-zoo.com/rdf#name"/>
      </hbox>
    </rule>
    <rule>
      <conditions>
          <content uri="?uri"/>
          <member container="?uri" child="?animal"/>
          <triple subject="?animal"
                  predicate="http://www.some-fictitious-zoo.com/rdf#name"
                  object="?name"/>
      </conditions>
      <action>
        <menulist>
          <menupopup>
            <menuitem uri="?animal" label="?name"/>
          </menupopup>
        </menulist>
      </action>
    </rule>
  </template>
</vbox>

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.