Générer des descendants dépendants d'un parent

Dans cet exemple, nous voulons afficher une série de libellés pour tous les animaux excepté les mammifères que nous voulons afficher dans bouton de menu. Pour cela, quatre règles sont nécessaires, les deux premières pour les conteneurs et les deux autres pour les noeuds isolés. Dans la première règle, une condition filtre tous les animaux qui ne sont pas des mammifères. Ceux des autres types tombent dans la seconde règle. Pour les mammifères, un bouton de menu est utilisé. Pour les autres types, un élément hbox contenant un label est utilisé.

Lors du parcours récursif des noeuds isolés des animaux, la troisième règle est utilisée pour les mammifères et la quatrième règle pour les autres types. La troisième règle utilise un attribut parent permettant à la règle de de trouver et placer le contenu à l'intérieur du bouton. Elle ne s'applique qu'aux mammifères avec l'attribut conteneur dans le bouton. Les autres seront insérés dans la balise hbox avec l'utilisation de la quatrième règle. La dernière règle génère un libellé.

Voir   Voir la source de données

<vbox align="start" datasources="animals.rdf"
      ref="http://www.some-fictitious-zoo.com/all-animals"
      xmlns:animals="http://www.some-fictitious-zoo.com/rdf#">
  <template>
    <rule iscontainer="true" animals:name="Mammals">
      <button type="menu" uri="rdf:*" label="rdf:http://www.some-fictitious-zoo.com/rdf#name"/>
    </rule>
    <rule iscontainer="true">
      <hbox uri="rdf:*">
        <label class="header" value="rdf:http://www.some-fictitious-zoo.com/rdf#name"/>
      </hbox>
    </rule>
    <rule parent="button">
      <menupopup>
        <menuitem uri="rdf:*" label="rdf:http://www.some-fictitious-zoo.com/rdf#name"/>
      </menupopup>
    </rule>
    <rule>
      <label class="indent" uri="rdf:*" value="rdf:http://www.some-fictitious-zoo.com/rdf#name"/>
    </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.