<tree>

<tree> codifica un árbol, que se constituye de raíz, nodos internos, hojas, y arcos que conectan raíz y hojas. 19.2 Trees
Módulonets — 19 Graphs, Networks, and Trees
Atributos
arityestablece el número máximo de hijos (descendientes) de la raíz y de los nodos internos del árbol.
Estado Opcional
Tipo de datos

<rng:ref name="data.count"/>
data.count
Valores A nonnegative integer.
ord (ordenado) indica si el árbol es o no ordenado, o si es parcialmente ordenado.
Estado Necesario
Los valores admitidos son:
true
indica que todos los nodos de ramificación del árbol están ordenados. [Por defecto]
partial
indica que algunos de los nodos de ramificación del árbol están ordenados y otros desordenados.
false
indica que todos los nodos de ramificación del árbol estan desordenados.
orderproporciona el orden del árbol, es decir, el número de los nodos.
Estado Opcional
Tipo de datos

<rng:ref name="data.count"/>
data.count
Valores A nonnegative integer.
Usado por
Puede contener
core: label
nets: iNode leaf root
Declaración

<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 )* ) )
}
Ejemplo
<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>