<?xml version="1.0"?>
<rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  <!--Schema generated 2008-07-08T17:38:34Z..
Copyright 2008 TEI Consortium.
This is free software; you can redistribute it and/or
	    modify it under the terms of the GNU General Public
	    License as published by the Free Software Foundation;
	    either version 2 of the License, or (at your option) any
	    later version.
This material is distributed in the hope that it will be
	    useful, but WITHOUT ANY WARRANTY; without even the implied
	    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
	    PURPOSE. See the GNU General Public License for more
	    details.
You should have received a copy of the GNU General Public
	    License along with this file; if not, write to the Free
	    Software Foundation, Inc., 59 Temple Place, Suite 330,
	    Boston, MA 02111-1307, USA.
For general (non-technical) enquiries, contact the TEI
	  Consortium at info@tei-c.org; 
for membership enquiries contact membership@tei-c.org; for
technical enquiries, particularly about the
		Guidelines, DTDs, schemas, or software available from
		the TEI-C, contact editors@tei-c.org.
For up to date information, consult the TEI web
	      site at http://www.tei-c.org/P5/. 
		Graphs, networks, and trees-->
  <!--Definitions from module nets-->
  <!--Set global predeclared macros-->
  <!--Set predeclared macros-->
  <!--0. predeclared macros-->
  <!--1. classes-->
  <!--2. elements-->
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="arc">
    <element name="arc">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">encodes an arc, the connection from one node to another in a graph.</a:documentation>
      <ref name="arc.content"/>
      <ref name="arc.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="arc.content">
    <rng:optional>
      <rng:ref name="label"/>
      <rng:optional>
        <rng:ref name="label"/>
      </rng:optional>
    </rng:optional>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="arc.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:attribute name="from">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">gives the identifier of the node which is adjacent from this arc.</a:documentation>
      <ref name="data.pointer"/>
    </rng:attribute>
    <rng:attribute name="to">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">gives the identifier of the node which is adjacent to this arc.</a:documentation>
      <ref name="data.pointer"/>
    </rng:attribute>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="eLeaf">
    <element name="eLeaf">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(leaf or terminal node of an embedding tree) provides explicitly for a leaf of an embedding tree, which may also
be encoded with the eTree element.</a:documentation>
      <ref name="eLeaf.content"/>
      <ref name="eLeaf.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="eLeaf.content">
    <rng:group>
      <rng:optional>
        <rng:ref name="label"/>
      </rng:optional>
      <rng:optional>
        <rng:ref name="model.ptrLike"/>
      </rng:optional>
    </rng:group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="eLeaf.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.typed.attributes"/>
    <rng:optional>
      <rng:attribute name="value">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">provides the value of an embedding leaf, which is a feature
structure or other analytic element.</a:documentation>
        <ref name="data.pointer"/>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="eTree">
    <element name="eTree">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(embedding tree) provides an alternative to tree element for representing
ordered rooted tree structures.</a:documentation>
      <ref name="eTree.content"/>
      <ref name="eTree.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="eTree.content">
    <rng:group>
      <rng:optional>
        <rng:ref name="label"/>
      </rng:optional>
      <rng:zeroOrMore>
        <rng:choice>
          <rng:ref name="eTree"/>
          <rng:ref name="triangle"/>
          <rng:ref name="eLeaf"/>
          <rng:ref name="model.ptrLike"/>
        </rng:choice>
      </rng:zeroOrMore>
    </rng:group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="eTree.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.typed.attributes"/>
    <rng:optional>
      <rng:attribute name="value">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">provides the value of an embedding tree, which is a feature
structure or other analytic element.</a:documentation>
        <ref name="data.pointer"/>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="forest">
    <element name="forest">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">provides for groups of rooted trees.</a:documentation>
      <ref name="forest.content"/>
      <ref name="forest.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="forest.content">
    <rng:oneOrMore>
      <rng:choice>
        <rng:ref name="tree"/>
        <rng:ref name="eTree"/>
        <rng:ref name="triangle"/>
      </rng:choice>
    </rng:oneOrMore>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="forest.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:optional>
      <rng:attribute name="type">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">identifies the type of the forest.</a:documentation>
        <ref name="data.enumerated"/>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="forestGrp">
    <element name="forestGrp">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(forest group) provides for groups of forests.</a:documentation>
      <ref name="forestGrp.content"/>
      <ref name="forestGrp.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="forestGrp.content">
    <rng:oneOrMore>
      <rng:ref name="forest"/>
    </rng:oneOrMore>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="forestGrp.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:optional>
      <rng:attribute name="type">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">identifies the type of the forest group.</a:documentation>
        <ref name="data.enumerated"/>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="graph">
    <element name="graph">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">encodes a graph, which is a collection of nodes, and arcs which
connect the nodes.</a:documentation>
      <ref name="graph.content"/>
      <ref name="graph.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="graph.content">
    <rng:group>
      <rng:optional>
        <rng:ref name="label"/>
        <rng:zeroOrMore>
          <rng:ref name="model.global"/>
        </rng:zeroOrMore>
      </rng:optional>
      <rng:choice>
        <rng:group>
          <rng:oneOrMore>
            <rng:ref name="node"/>
            <rng:zeroOrMore>
              <rng:ref name="model.global"/>
            </rng:zeroOrMore>
          </rng:oneOrMore>
          <rng:zeroOrMore>
            <rng:ref name="arc"/>
            <rng:zeroOrMore>
              <rng:ref name="model.global"/>
            </rng:zeroOrMore>
          </rng:zeroOrMore>
        </rng:group>
        <rng:group>
          <rng:oneOrMore>
            <rng:ref name="arc"/>
            <rng:zeroOrMore>
              <rng:ref name="model.global"/>
            </rng:zeroOrMore>
          </rng:oneOrMore>
          <rng:oneOrMore>
            <rng:ref name="node"/>
            <rng:zeroOrMore>
              <rng:ref name="model.global"/>
            </rng:zeroOrMore>
          </rng:oneOrMore>
        </rng:group>
      </rng:choice>
    </rng:group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="graph.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:optional>
      <rng:attribute name="type">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">describes the type of graph.
Suggested values include: 1] undirected; 2] directed; 3] transitionNetwork; 4] transducer</a:documentation>
        <rng:choice>
          <rng:value>undirected</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">undirected graph</a:documentation>
          <rng:value>directed</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">directed graph</a:documentation>
          <rng:value>transitionNetwork</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">a directed graph with distinguished initial and final nodes</a:documentation>
          <rng:value>transducer</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">a transition network with up to two labels on each arc</a:documentation>
          <rng:data type="Name"/>
        </rng:choice>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="order">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">states the order of the graph, i.e., the number of its nodes.</a:documentation>
        <ref name="data.count"/>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="size">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">states the size of the graph, i.e., the number of its arcs.</a:documentation>
        <ref name="data.count"/>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="iNode">
    <element name="iNode">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(intermediate (or internal) node) represents an intermediate (or internal) node of a tree.</a:documentation>
      <ref name="iNode.content"/>
      <ref name="iNode.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="iNode.content">
    <rng:optional>
      <rng:ref name="label"/>
    </rng:optional>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="iNode.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:optional>
      <rng:attribute name="value">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">provides the value of an intermediate node, which is a feature
structure or other analytic element.</a:documentation>
        <ref name="data.pointer"/>
      </rng:attribute>
    </rng:optional>
    <rng:attribute name="children">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">provides a list of identifiers of the elements which are the children of
the intermediate node.</a:documentation>
      <rng:list>
        <rng:oneOrMore>
          <ref name="data.pointer"/>
        </rng:oneOrMore>
      </rng:list>
    </rng:attribute>
    <rng:optional>
      <rng:attribute name="parent">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">provides the identifier of the element which is the parent of this node.</a:documentation>
        <ref name="data.pointer"/>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="ord">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(ordered) indicates whether or not the internal node is ordered.</a:documentation>
        <ref name="data.xTruthValue"/>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="follow">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">provides an identifier of
the element which this node
follows.</a:documentation>
        <ref name="data.pointer"/>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="outDegree">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">gives the out degree of an intermediate node, the number of its
children.</a:documentation>
        <ref name="data.count"/>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="leaf">
    <element name="leaf">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">encodes the leaves (terminal nodes) of a tree.</a:documentation>
      <ref name="leaf.content"/>
      <ref name="leaf.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="leaf.content">
    <rng:optional>
      <rng:ref name="label"/>
    </rng:optional>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="leaf.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:optional>
      <rng:attribute name="value">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">provides a pointer to a feature
structure or other analytic element.</a:documentation>
        <ref name="data.pointer"/>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="parent">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">provides the identifier of parent of a leaf.</a:documentation>
        <ref name="data.pointer"/>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="follow">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">provides an identifier of an element which this leaf follows.</a:documentation>
        <ref name="data.pointer"/>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="node">
    <element name="node">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">encodes a node, a possibly labeled point in a graph.</a:documentation>
      <ref name="node.content"/>
      <ref name="node.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="node.content">
    <rng:optional>
      <rng:ref name="label"/>
      <rng:optional>
        <rng:ref name="label"/>
      </rng:optional>
    </rng:optional>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="node.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:optional>
      <rng:attribute name="value">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">provides the value of a node, which is a feature structure or
other analytic element.</a:documentation>
        <ref name="data.pointer"/>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="type">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">provides a type for a node.
Suggested values include: 1] initial; 2] final</a:documentation>
        <rng:choice>
          <rng:value>initial</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">initial node in a transition network</a:documentation>
          <rng:value>final</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">final node in a transition network</a:documentation>
          <rng:data type="Name"/>
        </rng:choice>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="adjTo">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(adjacent to) gives the identifiers of the nodes which are adjacent to the current node.</a:documentation>
        <rng:list>
          <rng:oneOrMore>
            <ref name="data.pointer"/>
          </rng:oneOrMore>
        </rng:list>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="adjFrom">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(adjacent from) gives the identifiers of the nodes which are adjacent from the current
node.</a:documentation>
        <rng:list>
          <rng:oneOrMore>
            <ref name="data.pointer"/>
          </rng:oneOrMore>
        </rng:list>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="adj">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(adjacent) gives the identifiers of the nodes which are both adjacent to and
adjacent from the current node.</a:documentation>
        <rng:list>
          <rng:oneOrMore>
            <ref name="data.pointer"/>
          </rng:oneOrMore>
        </rng:list>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="inDegree">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">gives the in degree of the node, the number of nodes which
are adjacent from the given node.</a:documentation>
        <ref name="data.count"/>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="outDegree">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">gives the out degree of the node, the number of nodes which
are adjacent to the given node.</a:documentation>
        <ref name="data.count"/>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="degree">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">gives the degree of the node, the number of arcs with which
the node is incident.</a:documentation>
        <ref name="data.count"/>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="root">
    <element name="root">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(root node) represents the root node of a tree.</a:documentation>
      <ref name="root.content"/>
      <ref name="root.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="root.content">
    <rng:optional>
      <rng:ref name="label"/>
    </rng:optional>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="root.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:optional>
      <rng:attribute name="value">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">provides the value of the root, which is a feature structure or
other analytic element.</a:documentation>
        <ref name="data.pointer"/>
      </rng:attribute>
    </rng:optional>
    <rng:attribute name="children">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">provides a list of identifiers of the elements which are the children of
the root node.</a:documentation>
      <rng:list>
        <rng:oneOrMore>
          <ref name="data.pointer"/>
        </rng:oneOrMore>
      </rng:list>
    </rng:attribute>
    <rng:optional>
      <rng:attribute name="ord">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(ordered) indicates whether or not the root is ordered.</a:documentation>
        <ref name="data.xTruthValue"/>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="outDegree">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">gives the out degree of the root, the number of its children.</a:documentation>
        <ref name="data.count"/>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="tree">
    <element name="tree">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">encodes a tree, which is made up of a root, internal nodes,
leaves, and arcs from root to leaves.</a:documentation>
      <ref name="tree.content"/>
      <ref name="tree.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="tree.content">
    <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>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="tree.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:optional>
      <rng:attribute name="arity">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">gives the maximum number of children of the root and internal
nodes of the tree.</a:documentation>
        <ref name="data.count"/>
      </rng:attribute>
    </rng:optional>
    <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="ord" a:defaultValue="true">
      <a:documentation>(ordered) indicates whether or not the tree is ordered, or if it is
partially ordered.</a:documentation>
      <rng:choice>
        <rng:value>true</rng:value>
        <a:documentation>indicates that all of the branching nodes of the tree are ordered.</a:documentation>
        <rng:value>partial</rng:value>
        <a:documentation>indicates that some of the branching nodes of the tree are ordered
and some are unordered.</a:documentation>
        <rng:value>false</rng:value>
        <a:documentation>indicates that all of the branching nodes of the tree are
unordered.</a:documentation>
      </rng:choice>
    </rng:attribute>
    <rng:optional>
      <rng:attribute name="order">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">gives the order of the tree, i.e., the number of its nodes.</a:documentation>
        <ref name="data.count"/>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="triangle">
    <element name="triangle">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(underspecified embedding tree, so called because of its
  characteristic shape when drawn) Provides for an underspecified eTree, that is, an eTree with
  information left out.</a:documentation>
      <ref name="triangle.content"/>
      <ref name="triangle.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="triangle.content">
    <rng:group>
      <rng:optional>
        <rng:ref name="label"/>
      </rng:optional>
      <rng:zeroOrMore>
        <rng:choice>
          <rng:ref name="eTree"/>
          <rng:ref name="triangle"/>
          <rng:ref name="eLeaf"/>
        </rng:choice>
      </rng:zeroOrMore>
    </rng:group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="triangle.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:optional>
      <rng:attribute name="value">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">provides the value of a triangle, which is the identifier of a feature
structure or other analytic element.</a:documentation>
        <ref name="data.pointer"/>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <!--3. macros-->
</rng:grammar>
