<?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 a form has a form level grammar, its input items
    can be filled in any order.
-->

  <catch>
    <conf:comment>
      Toplevel caught event <value expr="_event"/>
    </conf:comment>
    <conf:fail expr="_event"/>
  </catch>



  <!-- Try filling the first of three fields only. -->
  <form id="form100">
    <conf:grammar utterance="alpha">
      <conf:key name="f1" value="1234"/>
    </conf:grammar>

    <initial>
      <conf:speech value="alpha"/>
    </initial>

    <field name="f1">
      <conf:noinput/>
      <noinput>
        <conf:fail reason="Grammar did not fill right field or fields."/>
      </noinput>
    </field>

    <field name="f2">
      <conf:noinput/>
      <noinput>
        <conf:fail reason="Grammar did not fill right field or fields."/>
      </noinput>
    </field>

    <field name="f3">
      <conf:noinput/>
      <noinput>
        <conf:fail reason="Grammar did not fill right field or fields."/>
      </noinput>
    </field>

    <filled mode="any">
      <if cond="f1 == 1234 &amp;&amp; f2 == undefined &amp;&amp; f3 == undefined">
        <goto next="#form010"/>
      </if>
      <conf:fail reason="Grammar did not fill right field or fields."/>
    </filled>
  </form>



  <!-- Try filling the second of three fields only. -->
  <form id="form010">
    <conf:grammar utterance="alpha">
      <conf:key name="f2" value="1234"/>
    </conf:grammar>

    <initial>
      <conf:speech value="alpha"/>
    </initial>

    <field name="f1">
      <conf:noinput/>
      <noinput>
        <conf:fail reason="Grammar did not fill right field or fields."/>
      </noinput>
    </field>

    <field name="f2">
      <conf:noinput/>
      <noinput>
        <conf:fail reason="Grammar did not fill right field or fields."/>
      </noinput>
    </field>

    <field name="f3">
      <conf:noinput/>
      <noinput>
        <conf:fail reason="Grammar did not fill right field or fields."/>
      </noinput>
    </field>

    <filled mode="any">
      <if cond="f1 == undefined &amp;&amp; f2 == 1234 &amp;&amp; f3 == undefined">
        <goto next="#form001"/>
      </if>
      <conf:fail reason="Grammar did not fill right field or fields."/>
    </filled>
  </form>



  <!-- Try filling the third of three fields only. -->
  <form id="form001">
    <conf:grammar utterance="alpha">
      <conf:key name="f3" value="1234"/>
    </conf:grammar>

    <initial>
      <conf:speech value="alpha"/>
    </initial>

    <field name="f1">
      <conf:noinput/>
      <noinput>
        <conf:fail reason="Grammar did not fill right field or fields."/>
      </noinput>
    </field>

    <field name="f2">
      <conf:noinput/>
      <noinput>
        <conf:fail reason="Grammar did not fill right field or fields."/>
      </noinput>
    </field>

    <field name="f3">
      <conf:noinput/>
      <noinput>
        <conf:fail reason="Grammar did not fill right field or fields."/>
      </noinput>
    </field>

    <filled mode="any">
      <if cond="f1 == undefined &amp;&amp; f2 == undefined &amp;&amp; f3 == 1234">
        <goto next="#form011"/>
      </if>
      <conf:fail reason="Grammar did not fill right field or fields."/>
    </filled>
  </form>



  <!-- Try filling all but the first field. -->
  <form id="form011">
    <conf:grammar utterance="alpha">
      <conf:key name="f2" value="1234"/>
      <conf:key name="f3" value="1234"/>
    </conf:grammar>

    <initial>
      <conf:speech value="alpha"/>
    </initial>

    <field name="f1">
      <conf:noinput/>
      <noinput>
        <conf:fail reason="Grammar did not fill right field or fields."/>
      </noinput>
    </field>

    <field name="f2">
      <conf:noinput/>
      <noinput>
        <conf:fail reason="Grammar did not fill right field or fields."/>
      </noinput>
    </field>

    <field name="f3">
      <conf:noinput/>
      <noinput>
        <conf:fail reason="Grammar did not fill right field or fields."/>
      </noinput>
    </field>

    <filled mode="any">
      <if cond="f1 == undefined &amp;&amp; f2 == 1234 &amp;&amp; f3 == 1234">
        <goto next="#form101"/>
      </if>
      <conf:fail reason="Grammar did not fill right field or fields."/>
    </filled>
  </form>



  <!-- Try filling all but the second field. -->
  <form id="form101">
    <conf:grammar utterance="alpha">
      <conf:key name="f1" value="1234"/>
      <conf:key name="f3" value="1234"/>
    </conf:grammar>

    <initial>
      <conf:speech value="alpha"/>
    </initial>

    <field name="f1">
      <conf:noinput/>
      <noinput>
        <conf:fail reason="Grammar did not fill right field or fields."/>
      </noinput>
    </field>

    <field name="f2">
      <conf:noinput/>
      <noinput>
        <conf:fail reason="Grammar did not fill right field or fields."/>
      </noinput>
    </field>

    <field name="f3">
      <conf:noinput/>
      <noinput>
        <conf:fail reason="Grammar did not fill right field or fields."/>
      </noinput>
    </field>

    <filled mode="any">
      <if cond="f1 == 1234 &amp;&amp; f2 == undefined &amp;&amp; f3 == 1234">
        <goto next="#form110"/>
      </if>
      <conf:fail reason="Grammar did not fill right field or fields."/>
    </filled>
  </form>



  <!-- Try filling all but the third field. -->
  <form id="form110">
    <conf:grammar utterance="alpha">
      <conf:key name="f1" value="1234"/>
      <conf:key name="f2" value="1234"/>
    </conf:grammar>

    <initial>
      <conf:speech value="alpha"/>
    </initial>

    <field name="f1">
      <conf:noinput/>
      <noinput>
        <conf:fail reason="Grammar did not fill right field or fields."/>
      </noinput>
    </field>

    <field name="f2">
      <conf:noinput/>
      <noinput>
        <conf:fail reason="Grammar did not fill right field or fields."/>
      </noinput>
    </field>

    <field name="f3">
      <conf:noinput/>
      <noinput>
        <conf:fail reason="Grammar did not fill right field or fields."/>
      </noinput>
    </field>

    <filled mode="any">
      <if cond="f1 == 1234 &amp;&amp; f2 == 1234 &amp;&amp; f3 == undefined">
        <goto next="#form111"/>
      </if>
      <conf:fail reason="Grammar did not fill right field or fields."/>
    </filled>
  </form>



  <!-- Try filling all fields. -->
  <form id="form111">
    <conf:grammar utterance="alpha">
      <conf:key name="f1" value="1234"/>
      <conf:key name="f2" value="1234"/>
      <conf:key name="f3" value="1234"/>
    </conf:grammar>

    <initial>
      <conf:speech value="alpha"/>
    </initial>

    <field name="f1">
      <conf:noinput/>
      <noinput>
        <conf:fail reason="Grammar did not fill right field or fields."/>
      </noinput>
    </field>

    <field name="f2">
      <conf:noinput/>
      <noinput>
        <conf:fail reason="Grammar did not fill right field or fields."/>
      </noinput>
    </field>

    <field name="f3">
      <conf:noinput/>
      <noinput>
        <conf:fail reason="Grammar did not fill right field or fields."/>
      </noinput>
    </field>

    <filled mode="any">
      <if cond="f1 == 1234 &amp;&amp; f2 == 1234 &amp;&amp; f3 == 1234">
        <conf:pass/>
      </if>
      <conf:fail reason="Grammar did not fill right field or fields."/>
    </filled>

    <block>
      <conf:fail reason="Grammar did not fill right field or fields."/>
    </block>
  </form>

</vxml>
