<tree>

<tree> (arbre) encode un arbre, qui est composé d'une racine, de noeuds internes, de feuilles et d'arcs allant de la racine vers les feuilles. 19.2 Trees
Modulenets — 19 Graphs, Networks, and Trees
Attributs
aritydonne le nombre maximal d'enfants de la racine et des noeuds internes de l'arbre.
Statut Optionel
Type de données

<rng:ref name="data.count"/>
data.count
Valeurs A nonnegative integer.
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 noeuds d'embranchement sont ordonnés. [Valeur par défaut]
partial
indique que, dans l'arbre, certains noeuds d'embranchement sont ordonnés et d'autres non ordonnés.
false
indique que, dans l'arbre, tous les noeuds d'embranchement sont non ordonnés.
orderdonne l'ordre de l'arbre, c'est-à-dire le nombre de ses noeuds.
Statut Optionel
Type de données

<rng:ref name="data.count"/>
data.count
Valeurs A nonnegative integer.
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="orda: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-div1children="#G-plu1 #G-exp1ord="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-vara1parent="#G-exp2">
  <label>a</label>
 </leaf>
 <leaf xml:id="G-num2.1parent="#G-exp2">
  <label>2</label>
 </leaf>
 <leaf xml:id="G-varb1parent="#G-exp3">
  <label>b</label>
 </leaf>
 <leaf xml:id="G-num2.2parent="#G-exp3">
  <label>2</label>
 </leaf>
 <leaf xml:id="G-vara2parent="#G-plu2">
  <label>a</label>
 </leaf>
 <leaf xml:id="G-varb2parent="#G-plu2">
  <label>b</label>
 </leaf>
 <leaf xml:id="G-num2.3parent="#G-exp1">
  <label>2</label>
 </leaf>
</tree>
Note
Il doit y avoir n noeud racine et de zéro à plusieurs noeuds internes et feuilles mais s'il y a un noeud interne, il doit y avoir au moins une feuille.