<tree>

<tree> (arbre) encode un arbre, qui est composé d'une racine, de nœuds internes, de feuilles et d'arcs allant de la racine vers les feuilles. 19.2 Trees
Module nets — 19 Graphs, Networks, and Trees
En complément des attributs globaux
arity donne le nombre maximal d'enfants de la racine et des nœuds internes de l'arbre.
Statut Optionel
Type de données

<rng:ref name="data.count"/>
data.count
Valeurs Un entier non négatif.
ord (ordonné) indique si l'arbre est ordonné ou non ou s'il l'est partiellement.
Statut Requis
Les valeurs autorisées sont:
true
indique que, dans l'arbre, tous les nœuds d'embranchement sont ordonnés. [Valeur par défaut]
partial
indique que, dans l'arbre, certains nœuds d'embranchement sont ordonnés et d'autres non.
false
indique que, dans l'arbre, tous les nœuds d'embranchement sont non ordonnés.
order donne l'ordre de l'arbre, c'est-à-dire le nombre de ses nœuds.
Statut Optionel
Type de données

<rng:ref name="data.count"/>
data.count
Valeurs Un entier non négatif.
Note
La taille d'un arbre étant toujours inférieure d'un à son ordre, il n'est donc pas nécessaire d'avoir en même temps un attribut size et un attribut order.
Utilisé par
Peut contenir
core: label
nets: iNode leaf root
Declaration

<rng:element name="tree">
 <rng:ref name="att.global.attributes"/>
 <rng:optional>
  <rng:attribute name="arity">
   <rng:ref name="data.count"/>
  </rng:attribute>
 </rng:optional>
 <rng:attribute name="ord" a:defaultValue="true">
  <rng:choice>
   <rng:value>true</rng:value>
   <rng:value>partial</rng:value>
   <rng:value>false</rng:value>
  </rng:choice>
 </rng:attribute>
 <rng:optional>
  <rng:attribute name="order">
   <rng:ref name="data.count"/>
  </rng:attribute>
 </rng:optional>
 <rng:group>
  <rng:optional>
   <rng:ref name="label"/>
  </rng:optional>
  <rng:group>
   <rng:zeroOrMore>
    <rng:choice>
     <rng:ref name="leaf"/>
     <rng:ref name="iNode"/>
    </rng:choice>
   </rng:zeroOrMore>
   <rng:ref name="root"/>
   <rng:zeroOrMore>
    <rng:choice>
     <rng:ref name="leaf"/>
     <rng:ref name="iNode"/>
    </rng:choice>
   </rng:zeroOrMore>
  </rng:group>
 </rng:group>
</rng:element>
element tree
{
   att.global.attributes,
   attribute arity { data.count }?,
   attribute ord { "true" | "partial" | "false" },
   attribute order { data.count }?,
   ( label?, ( ( leaf | iNode )*, root, ( leaf | iNode )* ) )
}
Exemple
<tree
  n="ex2"
  arity="2"
  ord="partial"
  order="13">

 <root xml:id="G-div1" children="#G-plu1 #G-exp1" ord="true">
  <label>/</label>
 </root>
 <iNode
   xml:id="G-plu1"
   children="#G-exp2 #G-exp3"
   parent="#G-div1"
   ord="false">

  <label>+</label>
 </iNode>
 <iNode
   xml:id="G-exp1"
   children="#G-plu2 #G-num2.3"
   parent="#G-div1"
   ord="true">

  <label>**</label>
 </iNode>
 <iNode
   xml:id="G-exp2"
   children="#G-vara1 #G-num2.1"
   parent="#G-plu1"
   ord="true">

  <label>**</label>
 </iNode>
 <iNode
   xml:id="G-exp3"
   children="#G-varb1 #G-num2.2"
   parent="#G-plu1"
   ord="true">

  <label>**</label>
 </iNode>
 <iNode
   xml:id="G-plu2"
   children="#G-vara2 #G-varb2"
   parent="#G-exp1"
   ord="false">

  <label>+</label>
 </iNode>
 <leaf xml:id="G-vara1" parent="#G-exp2">
  <label>a</label>
 </leaf>
 <leaf xml:id="G-num2.1" parent="#G-exp2">
  <label>2</label>
 </leaf>
 <leaf xml:id="G-varb1" parent="#G-exp3">
  <label>b</label>
 </leaf>
 <leaf xml:id="G-num2.2" parent="#G-exp3">
  <label>2</label>
 </leaf>
 <leaf xml:id="G-vara2" parent="#G-plu2">
  <label>a</label>
 </leaf>
 <leaf xml:id="G-varb2" parent="#G-plu2">
  <label>b</label>
 </leaf>
 <leaf xml:id="G-num2.3" parent="#G-exp1">
  <label>2</label>
 </leaf>
</tree>
Exemple
<tree
  n="ex2"
  arity="2"
  ord="partial"
  order="13">

 <root xml:id="fr_G-div1" children="#fr_G-plu1 #fr_G-exp1" ord="true">
  <label>/</label>
 </root>
 <iNode
   xml:id="fr_G-plu1"
   children="#fr_G-exp2 #fr_G-exp3"
   parent="#fr_G-div1"
   ord="false">

  <label>+</label>
 </iNode>
 <iNode
   xml:id="fr_G-exp1"
   children="#fr_G-plu2 #fr_G-num2.3"
   parent="#fr_G-div1"
   ord="true">

  <label>**</label>
 </iNode>
 <iNode
   xml:id="fr_G-exp2"
   children="#fr_G-vara1 #fr_G-num2.1"
   parent="#fr_G-plu1"
   ord="true">

  <label>**</label>
 </iNode>
 <iNode
   xml:id="fr_G-exp3"
   children="#fr_G-varb1 #fr_G-num2.2"
   parent="#fr_G-plu1"
   ord="true">

  <label>**</label>
 </iNode>
 <iNode
   xml:id="fr_G-plu2"
   children="#fr_G-vara2 #fr_G-varb2"
   parent="#fr_G-exp1"
   ord="false">

  <label>+</label>
 </iNode>
 <leaf xml:id="fr_G-vara1" parent="#fr_G-exp2">
  <label>a</label>
 </leaf>
 <leaf xml:id="fr_G-num2.1" parent="#fr_G-exp2">
  <label>2</label>
 </leaf>
 <leaf xml:id="fr_G-varb1" parent="#fr_G-exp3">
  <label>b</label>
 </leaf>
 <leaf xml:id="fr_G-num2.2" parent="#fr_G-exp3">
  <label>2</label>
 </leaf>
 <leaf xml:id="fr_G-vara2" parent="#fr_G-plu2">
  <label>a</label>
 </leaf>
 <leaf xml:id="fr_G-varb2" parent="#fr_G-plu2">
  <label>b</label>
 </leaf>
 <leaf xml:id="fr_G-num2.3" parent="#fr_G-exp1">
  <label>2</label>
 </leaf>
</tree>
Note
Il doit y avoir un nœud racine et zéro, un ou plusieurs nœuds internes et feuilles. S'il y a un nœud interne, il doit y avoir au moins une feuille.