<?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-11-01T14:14:38Z
Edition: 1.2.0. Last updated on October 31st 2008.
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.
A copy of the GNU General Public
	    License is stored on the TEI web site
	    along with this file; you can also contact the Free
	    Software Foundation, Inc., 59 Temple Place, Suite 330,
	    Boston, MA 02111-1307, USA, for a copy.
For information about the TEI, including contact
		details, consult the TEI web
	      site at http://www.tei-c.org/. 
		Linking, segmentation and alignment-->
  <!--Definitions from module linking-->
  <!--Set global predeclared macros-->
  <!--Set predeclared macros-->
  <!--0. predeclared macros-->
  <!--1. classes-->
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="att.global.linking.attributes">
    <ref name="att.global.linking.attribute.corresp"/>
    <ref name="att.global.linking.attribute.synch"/>
    <ref name="att.global.linking.attribute.sameAs"/>
    <ref name="att.global.linking.attribute.copyOf"/>
    <ref name="att.global.linking.attribute.next"/>
    <ref name="att.global.linking.attribute.prev"/>
    <ref name="att.global.linking.attribute.exclude"/>
    <ref name="att.global.linking.attribute.select"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="att.global.linking.attribute.corresp">
    <rng:optional>
      <rng:attribute name="corresp">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(corresponds) points to elements that correspond to the current
      element in some way.</a:documentation>
        <rng:list>
          <rng:oneOrMore>
            <ref name="data.pointer"/>
          </rng:oneOrMore>
        </rng:list>
      </rng:attribute>
    </rng:optional>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="att.global.linking.attribute.synch">
    <rng:optional>
      <rng:attribute name="synch">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(synchronous) points to elements that are synchronous with the current
      element.</a:documentation>
        <rng:list>
          <rng:oneOrMore>
            <ref name="data.pointer"/>
          </rng:oneOrMore>
        </rng:list>
      </rng:attribute>
    </rng:optional>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="att.global.linking.attribute.sameAs">
    <rng:optional>
      <rng:attribute name="sameAs">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">points to an element that is the same as the current
      element.</a:documentation>
        <ref name="data.pointer"/>
      </rng:attribute>
    </rng:optional>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="att.global.linking.attribute.copyOf">
    <rng:optional>
      <rng:attribute name="copyOf">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">points to an element of which the current element is a
	copy.</a:documentation>
        <ref name="data.pointer"/>
      </rng:attribute>
    </rng:optional>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="att.global.linking.attribute.next">
    <rng:optional>
      <rng:attribute name="next">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">points to the next element of a virtual aggregate of which
      the current element is part.</a:documentation>
        <ref name="data.pointer"/>
      </rng:attribute>
    </rng:optional>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="att.global.linking.attribute.prev">
    <rng:optional>
      <rng:attribute name="prev">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(previous) points to the previous element of a virtual aggregate of
      which the current element is part.</a:documentation>
        <ref name="data.pointer"/>
      </rng:attribute>
    </rng:optional>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="att.global.linking.attribute.exclude">
    <rng:optional>
      <rng:attribute name="exclude">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">points to elements that are in exclusive alternation
      with the current element.</a:documentation>
        <rng:list>
          <rng:oneOrMore>
            <ref name="data.pointer"/>
          </rng:oneOrMore>
        </rng:list>
      </rng:attribute>
    </rng:optional>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="att.global.linking.attribute.select">
    <rng:optional>
      <rng:attribute name="select">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">selects one or more alternants; if one alternant is
      selected, the ambiguity or uncertainty is marked as resolved. If
      more than one alternant is selected, the degree of ambiguity or
      uncertainty is marked as reduced by the number of alternants not
      selected.</a:documentation>
        <rng:list>
          <rng:oneOrMore>
            <ref name="data.pointer"/>
          </rng:oneOrMore>
        </rng:list>
      </rng:attribute>
    </rng:optional>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="att.pointing.attributes">
    <ref name="att.pointing.attribute.type"/>
    <ref name="att.pointing.attribute.evaluate"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="att.pointing.attribute.type">
    <rng:optional>
      <rng:attribute name="type">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">categorizes the pointer in some respect, using any
      convenient set of categories.</a:documentation>
        <ref name="data.enumerated"/>
      </rng:attribute>
    </rng:optional>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="att.pointing.attribute.evaluate">
    <rng:optional>
      <rng:attribute name="evaluate">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies the intended meaning when the target of a
      pointer is itself a pointer.</a:documentation>
        <rng:choice>
          <rng:value>all</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">if the element pointed to is itself a pointer, then
	  the target of that pointer will be taken, and so on, until
	  an element is found which is not a pointer.</a:documentation>
          <rng:value>one</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">if the element pointed to is itself a pointer, then
	  its target (whether a pointer or not) is taken as the target
	  of this pointer.</a:documentation>
          <rng:value>none</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">no further evaluation of targets is carried out
	  beyond that needed to find the element specified in the
	  pointer's target.</a:documentation>
        </rng:choice>
      </rng:attribute>
    </rng:optional>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="att.pointing.group.attributes">
    <ref name="att.pointing.attributes"/>
    <ref name="att.pointing.group.attribute.domains"/>
    <ref name="att.pointing.group.attribute.targFunc"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="att.pointing.group.attribute.domains">
    <rng:optional>
      <rng:attribute name="domains">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">optionally specifies the identifiers of the elements
      within which all elements indicated by the contents of this
      element lie.</a:documentation>
        <rng:list>
          <rng:oneOrMore>
            <ref name="data.name"/>
          </rng:oneOrMore>
        </rng:list>
      </rng:attribute>
    </rng:optional>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="att.pointing.group.attribute.targFunc">
    <rng:optional>
      <rng:attribute name="targFunc">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(target function) describes the function of each of the values of the
      targets attribute of the enclosed link,
      join, or alt tags.</a:documentation>
        <rng:list>
          <rng:oneOrMore>
            <ref name="data.word"/>
          </rng:oneOrMore>
        </rng:list>
      </rng:attribute>
    </rng:optional>
  </define>
  <!--2. elements-->
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="ab">
    <element name="ab">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(anonymous block) contains any arbitrary component-level unit of text, acting as
an anonymous container for phrase or inter level elements analogous to, but
without the semantic baggage of, a paragraph.</a:documentation>
      <ref name="ab.content"/>
      <ref name="ab.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="ab.content">
    <rng:ref name="macro.paraContent"/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="ab.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.typed.attributes"/>
    <rng:optional>
      <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="part" a:defaultValue="N">
        <a:documentation>specifies whether or not the block is complete. </a:documentation>
        <rng:choice>
          <rng:value>Y</rng:value>
          <a:documentation>(yes) the block is incomplete</a:documentation>
          <rng:value>N</rng:value>
          <a:documentation>(no) either the block is complete, or no claim is made as to its
completeness</a:documentation>
          <rng:value>I</rng:value>
          <a:documentation>(initial) the initial part of an incomplete block</a:documentation>
          <rng:value>M</rng:value>
          <a:documentation>(medial) a medial part of an incomplete block</a:documentation>
          <rng:value>F</rng:value>
          <a:documentation>(final) the final part of an incomplete block</a:documentation>
        </rng:choice>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="alt">
    <element name="alt">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(alternation) identifies an alternation or a set of choices among elements or passages.</a:documentation>
      <ref name="alt.content"/>
      <ref name="alt.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="alt.content">
    <rng:empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="alt.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.pointing.attributes"/>
    <rng:attribute name="targets">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies the identifiers of the alternative elements or passages.</a:documentation>
      <rng:list>
        <ref name="data.pointer"/>
        <rng:oneOrMore>
          <ref name="data.pointer"/>
        </rng:oneOrMore>
      </rng:list>
    </rng:attribute>
    <rng:optional>
      <rng:attribute name="mode">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">states whether the alternations gathered in this collection are exclusive or inclusive.</a:documentation>
        <rng:choice>
          <rng:value>excl</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(exclusive) indicates that the alternation is exclusive, i.e. that
		  at most one of the alternatives occurs.</a:documentation>
          <rng:value>incl</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(inclusive) indicates that the alternation is not exclusive, i.e. that
		  one or more of the alternatives occur.</a:documentation>
        </rng:choice>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="weights">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">If mode is , each weight
      states the probability that the corresponding alternative
      occurs. If mode is incl each weight states
      the probability that the corresponding alternative occurs given
      that at least one of the other alternatives occurs.</a:documentation>
        <rng:list>
          <ref name="data.probability"/>
          <rng:oneOrMore>
            <ref name="data.probability"/>
          </rng:oneOrMore>
        </rng:list>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="altGrp">
    <element name="altGrp">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(alternation group) groups a collection of alt elements and possibly
pointers.</a:documentation>
      <ref name="altGrp.content"/>
      <ref name="altGrp.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="altGrp.content">
    <rng:zeroOrMore>
      <rng:choice>
        <rng:ref name="alt"/>
        <rng:ref name="ptr"/>
      </rng:choice>
    </rng:zeroOrMore>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="altGrp.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.pointing.group.attributes"/>
    <rng:optional>
      <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="mode" a:defaultValue="excl">
        <a:documentation>states whether the alternations gathered in this collection are
exclusive or inclusive.</a:documentation>
        <rng:choice>
          <rng:value>excl</rng:value>
          <a:documentation>(exclusive) indicates that the alternation is exclusive, i.e. that at
most one of the alternatives occurs.</a:documentation>
          <rng:value>incl</rng:value>
          <a:documentation>(inclusive) indicates that the alternation is not exclusive, i.e. that
one or more of the alternatives occur.</a:documentation>
        </rng:choice>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="anchor">
    <element name="anchor">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(anchor point) attaches an identifier to a
point within a text, whether or not it corresponds with a textual
element.</a:documentation>
      <ref name="anchor.content"/>
      <ref name="anchor.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="anchor.content">
    <rng:empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="anchor.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.typed.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="join">
    <element name="join">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">identifies a possibly fragmented segment of text, by pointing
at the possibly discontiguous elements which compose it.</a:documentation>
      <ref name="join.content"/>
      <ref name="join.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="join.content">
    <rng:zeroOrMore>
      <rng:ref name="model.glossLike"/>
    </rng:zeroOrMore>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="join.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.pointing.attributes"/>
    <rng:attribute name="targets">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies the identifiers of the elements or passages
       to be joined into a virtual
       element.</a:documentation>
      <rng:list>
        <ref name="data.pointer"/>
        <rng:oneOrMore>
          <ref name="data.pointer"/>
        </rng:oneOrMore>
      </rng:list>
    </rng:attribute>
    <rng:optional>
      <rng:attribute name="result">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies the name of an element
which this aggregation
may be understood to represent.</a:documentation>
        <ref name="data.name"/>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="scope" a:defaultValue="root">
        <a:documentation>indicates whether the targets to be joined include the
entire element indicated (the entire subtree including its root),
or just the children of the target (the branches of the subtree).</a:documentation>
        <rng:choice>
          <rng:value>root</rng:value>
          <a:documentation>the rooted subtrees indicated by the targets
attribute are joined, each subtree become a child of the virtual
element created by the join</a:documentation>
          <rng:value>branches</rng:value>
          <a:documentation>the children of the subtrees indicated by the
targets attribute become the children of the virtual element
(i.e. the roots of the subtrees are discarded)</a:documentation>
        </rng:choice>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="joinGrp">
    <element name="joinGrp">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(join group) groups a collection of join elements and possibly
  pointers.</a:documentation>
      <ref name="joinGrp.content"/>
      <ref name="joinGrp.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="joinGrp.content">
    <rng:group>
      <rng:zeroOrMore>
        <rng:ref name="model.glossLike"/>
      </rng:zeroOrMore>
      <rng:oneOrMore>
        <rng:choice>
          <rng:ref name="join"/>
          <rng:ref name="ptr"/>
        </rng:choice>
      </rng:oneOrMore>
    </rng:group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="joinGrp.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.pointing.group.attributes"/>
    <rng:optional>
      <rng:attribute name="result">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">describes the result of the joins gathered in this collection.</a:documentation>
        <ref name="data.name"/>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="link">
    <element name="link">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">defines an association or hypertextual link
among elements or passages, of some type
not more precisely specifiable by other elements.</a:documentation>
      <ref name="link.content"/>
      <ref name="link.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="link.content">
    <rng:empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="link.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.pointing.attributes"/>
    <rng:attribute name="targets">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies the identifiers of the elements or passages
    to be linked or associated.
 </a:documentation>
      <rng:list>
        <ref name="data.pointer"/>
        <rng:oneOrMore>
          <ref name="data.pointer"/>
        </rng:oneOrMore>
      </rng:list>
    </rng:attribute>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="linkGrp">
    <element name="linkGrp">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(link group) defines a collection of associations or hypertextual links.</a:documentation>
      <ref name="linkGrp.content"/>
      <ref name="linkGrp.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="linkGrp.content">
    <rng:oneOrMore>
      <rng:choice>
        <rng:ref name="link"/>
        <rng:ref name="ptr"/>
      </rng:choice>
    </rng:oneOrMore>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="linkGrp.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.pointing.group.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="seg">
    <element name="seg">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(arbitrary segment) represents any  segmentation of text below the
  chunk level.</a:documentation>
      <ref name="seg.content"/>
      <ref name="seg.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="seg.content">
    <rng:ref name="macro.paraContent"/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="seg.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.segLike.attributes"/>
    <ref name="att.typed.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="timeline">
    <element name="timeline">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(timeline) provides a set of ordered points in time which can be linked to
elements of a spoken text to create a temporal alignment of that text.</a:documentation>
      <ref name="timeline.content"/>
      <ref name="timeline.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="timeline.content">
    <rng:oneOrMore>
      <rng:ref name="when"/>
    </rng:oneOrMore>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="timeline.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:attribute name="origin">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">designates the origin of the timeline, i.e. the time at which it
begins.</a:documentation>
      <ref name="data.pointer"/>
    </rng:attribute>
    <rng:optional>
      <rng:attribute name="unit">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies the unit of time corresponding to the
	interval value of the timeline or of its
	constituent points in time.
Suggested values include: 1] d (days); 2] h (hours); 3] min (minutes); 4] s (seconds); 5] ms (milliseconds)</a:documentation>
        <rng:choice>
          <rng:value>d</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(days) </a:documentation>
          <rng:value>h</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(hours) </a:documentation>
          <rng:value>min</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(minutes) </a:documentation>
          <rng:value>s</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(seconds) </a:documentation>
          <rng:value>ms</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(milliseconds) </a:documentation>
          <rng:data type="Name"/>
        </rng:choice>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="interval">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies the numeric portion of a time interval</a:documentation>
        <choice>
          <data type="float">
            <param name="minExclusive">0</param>
          </data>
          <value>regular</value>
          <value>irregular</value>
        </choice>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="when">
    <element name="when">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates a point in time either relative to other elements in the
same timeline tag, or absolutely.</a:documentation>
      <ref name="when.content"/>
      <ref name="when.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="when.content">
    <rng:empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="when.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:optional>
      <rng:attribute name="absolute">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">supplies an absolute value for the time.</a:documentation>
        <ref name="data.temporal.w3c"/>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="unit">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies the unit of time in which the  interval
value is expressed, if this is not inherited from the parent timeline.
Suggested values include: 1] d (days); 2] h (hours); 3] min (minutes); 4] s (seconds); 5] ms (milliseconds)</a:documentation>
        <rng:choice>
          <rng:value>d</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(days) </a:documentation>
          <rng:value>h</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(hours) </a:documentation>
          <rng:value>min</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(minutes) </a:documentation>
          <rng:value>s</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(seconds) </a:documentation>
          <rng:value>ms</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(milliseconds) </a:documentation>
          <rng:data type="Name"/>
        </rng:choice>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="interval">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies the numeric portion of a time interval</a:documentation>
        <choice>
          <data type="float">
            <param name="minExclusive">0</param>
          </data>
          <value>unknown</value>
        </choice>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="since">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">identifies the reference point for determining the time of the
current when element, which is obtained by adding the interval to the
time of the reference point.</a:documentation>
        <ref name="data.pointer"/>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <!--3. macros-->
</rng:grammar>
