Tutorial 3: Multi-Document Applications and Scope

A multi-document application consists of a “root” document and one or more “supporting” documents. The use of supporting documents allows the application developer to:

assign global behaviors

cleanly group various dialog tasks into distinct documents

break up large applications into smaller loadable pieces, reducing

delays associated with loading large document files

An example of a multi-document application is shown in Fig. 1 below.

The above pizza purchasing application consists of a root document (“pizza.vxml”), and two supporting documents (“order_pizza.vxml” and “deliver_pizza.vxml”). In this example, the “pizza.vxml” document plays a welcome prompt and gives the caller a list of options, the “order_pizza.vxml” document contains all of the functionality for ordering a pizza, and the “deliver_pizza.vxml” document acquires the information required for deliveries.

Specifying the root and supporting documents

Supporting documents are created by setting the application attribute equal to the root document name in the <vxml> tag. A root document would not include the application attribute in its tag. Looking at the sample above, you can see that the two supporting documents have the following in their <vxml> tag:

<vxml version="2.0" application="pizza.vxml" >

while the root document has only:

<vxml version="2.0" >

Transitioning between documents

To transition between document, utilize the <goto> element and specify the document name in URI set by the next attribute. This will begin execution at the top of the chosen document. For example, if we wanted to move from the “mainMenu” form of the “pizza.vxml” root document to the top of the “deliver_pizza.vxml” document we would need the following statement somewhere in the originating form:

<goto next="deliver_pizza.vxml" />

To transition to a specific form in a document, specify the document name and the form name separated by the “#” symbol. This will begin execution at the top of the chosen form:

<goto next="deliver_pizza.vxml#address" />

When specifying the document name in a URI for the <goto>, the interpreter will upon executing this element unload the current document and load the new document. This will result in the loss of all variables of document and lesser scope. To avoid this when transitioning between forms in the same document, simply specify the form name only as follows:

However, switching between the vxml scripts using goto doesn’t seem to work for me because variables’ data doesn’t change, how can i go back to a vxml script and re-use the variables in that particular script? e.g going back to a page that prompts user to enter password when the one provided is incorrect?
thanks in advance