<?xml version="1.0"?>
<!-- @ Copyright 1998-2003 W3C (MIT, ERCIM, Keio), All Rights Reserved. See http://www.w3.org/Consortium/Legal/. @ -->
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml"
      xmlns:conf="http://www.w3.org/2002/vxml-conformance">

<!--
    If an input matches a grammar in the form then each
    identified filled action is executed in document order.
-->

  <catch>
    <conf:comment>
      Toplevel caught event <value expr="_event"/>
    </conf:comment>
    <conf:fail expr="_event"/>
  </catch>


  <var name="next_filled_number" expr="1"/>


  <!-- This form tests the form item scoped handler. -->
  <form id="form1">
    <conf:grammar utterance="alpha">
      <conf:key name="f1" value="9999"/>
      <conf:key name="f2" value="9999"/>
      <conf:key name="f3" value="9999"/>
      <conf:key name="f4" value="9999"/>
      <conf:key name="f5" value="9999"/>
    </conf:grammar>

    <field name="f1">
      <conf:speech value="alpha"/>
      <filled>
      <if cond="next_filled_number != 1">
          <conf:fail reason="filled number 1 was not executed in order."/>
        </if>
        <assign name="next_filled_number" expr="next_filled_number+1"/>
    </filled>
    </field>

    <filled mode="any" namelist="f1 f2 f3 f4 f5">
    <if cond="next_filled_number != 2">
        <conf:fail reason="filled number 2 was not executed in order."/>
      </if>
      <assign name="next_filled_number" expr="next_filled_number+1"/>
    </filled>

    <field name="f2">
      <filled>
      <if cond="next_filled_number != 3">
          <conf:fail reason="filled number 3 was not executed in order."/>
        </if>
        <assign name="next_filled_number" expr="next_filled_number+1"/>
    </filled>
    </field>

    <filled mode="all" namelist="f1 f2 f3 f4 f5">
    <if cond="next_filled_number != 4">
        <conf:fail reason="filled number 4 was not executed in order."/>
      </if>
      <assign name="next_filled_number" expr="next_filled_number+1"/>
    </filled>

    <field name="f3">
      <filled>
      <if cond="next_filled_number != 5">
          <conf:fail reason="filled number 5 was not executed in order."/>
        </if>
        <assign name="next_filled_number" expr="next_filled_number+1"/>
    </filled>
    </field>

    <filled mode="any" namelist="f2 f3 f5">
    <if cond="next_filled_number != 6">
        <conf:fail reason="filled number 6 was not executed in order."/>
      </if>
      <assign name="next_filled_number" expr="next_filled_number+1"/>
    </filled>

    <field name="f4">
      <filled>
      <if cond="next_filled_number != 7">
          <conf:fail reason="filled number 7 was not executed in order."/>
        </if>
        <assign name="next_filled_number" expr="next_filled_number+1"/>
    </filled>
    </field>

    <filled mode="all" namelist="f2 f3 f5">
    <if cond="next_filled_number != 8">
        <conf:fail reason="filled number 8 was not executed in order."/>
      </if>
      <assign name="next_filled_number" expr="next_filled_number+1"/>
    </filled>

    <field name="f5">
      <filled>
      <if cond="next_filled_number != 9">
          <conf:fail reason="filled number 9 was not executed in order."/>
        </if>
        <assign name="next_filled_number" expr="next_filled_number+1"/>
    </filled>
    </field>

    <filled mode="any" namelist="f3 f5">
    <if cond="next_filled_number != 10">
        <conf:fail reason="filled number 10 was not executed in order."/>
      </if>
      <assign name="next_filled_number" expr="next_filled_number+1"/>
    </filled>

    <filled mode="all" namelist="f5">
    <if cond="next_filled_number != 11">
        <conf:fail reason="filled number 11 was not executed in order."/>
      </if>
      <assign name="next_filled_number" expr="next_filled_number+1"/>
    </filled>

    <block>
    <if cond="next_filled_number != 12">
        <conf:fail reason="Some filled blocks were not executed in order."/>
      </if>
      <conf:pass/>
    </block>
  </form>

</vxml>
