The <foreach> element allows a VoiceXML application to iterate through an ECMAScript array and to execute the content contained within the <foreach> element for each item in the array.
| array | An ECMAScript expression that must evaluate to an array; otherwise, an error.semantic event is thrown. |
| item | The variable that stores each array item upon each iteration of the loop. A new variable will be declared if it is not already defined within the parent's scope. |
Both "array" and "item" must be specified. Please refer to the VoiceXML 2.1 Draft for examples and detailed usage information for this tag.
<?xml version="1.0"?>
<vxml version="2.1">
<form>
<script>
var movies = new Array();
movies[0] = new Object();
movies[0].audio = 'godfather.wav';
movies[0].tts = 'The Godfather';
movies[1] = new Object();
movies[1].audio = 'highfidelity.wav';
movies[1].tts = 'High Fidelity';
movies[2] = new Object();
movies[2].audio = 'raiders.wav';
movies[2].tts = 'Raiders of The Lost Ark';
</script>
<field name="mov">
<prompt>
Please select one of the following movies.
<break time="500ms"/>
<foreach item="movie" array="movies">
<audio expr="movie.audio"><value expr="movie.tts"/></audio>
<break time="500ms"/>
</foreach>
</prompt>
<grammar mode="voice" type="application/srgs+xml" root="ROOT">
<rule id="ROOT">
<one-of>
<item>The Godfather</item>
<item>High Fidelity</item>
<item>Raiders of The Lost Ark</item>
</one-of>
</rule>
</grammar>
<filled>
You said <value expr="mov"/>.
</filled>
</field>
</form>
</vxml>The output of the above script would be:
Computer: Please select one of the following movies.
Computer: The Godfather, High Fidelity, Raiders of The Lost Ark.
Human: High Fidelity.
Computer: You said High Fidelity.
<audio>, <assign>, <break>, <clear>, <data>, <disconnect>, <emphasis>, <enumerate>, <exit>, <foreach>, <goto>, <if>, <log>, <metadata>, <mark>, <p>, <paragraph>, <phoneme>, <prompt>, <prosody>, <reprompt>, <return>, <s>, <say-as>, <sentence>, <script>, <speak>, <sub>, <submit>, <throw>, <value>, <var>, <voice>
<block>, <catch>, <error>, <filled>, <foreach>, <help>, <if>, <noinput>, <nomatch>, <prompt>