When the accept attribute of choice is set to "approximate", or is not set and
the accept attribute of its enclosing menu is set to "approximate", then the text
of the choice element defines an approximate recognition phrase, as defined under
"Grammar Generation" in section 2.2.
The type attribute, if present, specifies the name of one of the following builtin
grammar types from Appendix P: boolean, date, digits, currency, number, phone,
time.
[optional] A field containing two builtin grammar elements, one referring to the
builtin speech grammar and the other referring to the builtin DTMF grammar of
the same type is equivlent to a field whose type attribute is set to the equivalent
type.
A VoiceXML document can initiate a transfer to another entity using the transfer
tag, such that the Interpreter remains connected to the original caller and interpretation
resumes upon termination of the transfer.
A VoiceXML document can initiate a transfer to another entity using the transfer
tag, such that the Interpreter disconnects from the caller immediately upon attempting
the transfer and continues execution as it would under termination of the Session.
A bridged transfer can contain speech grammars such that the interpreter listens
to the original caller for the duration of the transfer, terminating the transfer
as soon as a spoken utterance matches an active speech grammar.
A bridged transfer specifying a 'connecttimeout' attribute with a W3C time specification
will terminate a transfer attempt if the destination entity cannot be connected
to within that period of time.
A bridged transfer specifying a 'maxtime' attribute with a W3C time specification
will terminate a transfer after that period of time has elapsed after connecting
to the destination entity if it has not already been terminated for other reasons.
A bridged transfer specifying a 'transferaudio' attribute with valid URI to an
audio file wil play that audio from the beginning of the transfer attempt until
the attempt is terminated or the destination entity is connected to.
If the originating caller hangs up during a bridged transfer, a 'connection.disconnect.hangup'
event is thrown and the transfer name variable remains undefined.
If the Interpreter is unable to connect to the destination entity when attempting
a transfer because it is busy, the transfer name variable is filled with the value
'busy'.
If a transfer is terminated because the original caller matches an active DTMF
grammar, the transfer name variable is filled with the value 'near_end_disconnect'.
If a bridge transfer is terminated by the Interpreter because the 'maxtime' has
expired without the transfer being terminated, the transfer name variable is filled
with the value 'maxtime_disconnect'.
Upon termination of bridge transfer, the shadow variable 'name$.duration' (where
name is the name attribute of the transfer element) is set to the number of seconds
from the time the destination entity was connected to and the transfer was terminated.
Upon termination of bridge transfer due to the caller matching an active speech
grammar ('near_end_disconnect'), the 'name$.inputmode' shadow variable is set
to 'voice'.
Upon termination of bridge transfer due to the caller matching an active DTMF
grammar ('near_end_disconnect'), the 'name$.inputmode' shadow variable is set
to 'dtmf'.
Upon termination of a bridge transfer due to the caller matching an active speech
grammar ('near_end_disconnect'), the 'name$.utterance' shadow variable is set
to utterance text.
session.connection.redirect returns an array representing the connection redirection
paths. The first element is the original called number, the last element is the
last redirected number. Each element of the array contains a uri, pi (presentation
information), si (screening information), and reason property. The reason property
can be either "unknown", "user busy", "no reply", "deflection during alerting",
"deflection immediate response", "mobile subscriber not reachable".
session.connection.originator returns the local or remote property. (For instance,
the following ECMAScript would return true if the remote party initiated the connection:
var caller_initiate = connection.originator == connection.remote;
A bridged transfer can contain DTMF grammars such that the interpreter listens
to the original caller for the duration of the transfer, terminating the transfer
as soon as DTMF input matches an active DTMF grammar.
The form item 'object' has a guard condition specified with the cond attribute.
A form item is visited if it is not filled and its cond is not specified or evaluates,
after conversion to boolean, to true.
The input item transfer may contain the filled element. Filled elements contain
an action to execute after the result input item variable is filled in.
Upon termination of a bridged transfer due to the caller matching an active DTMF
grammar ('near_end_disconnect'), application.lastresult$ is assigned to the DTMF
result.
Upon termination of a bridged transfer due to the caller matching an active speech
grammar ('near_end_disconnect'), application.lastresult$.utterance is assigned
the same value as the transfer's utterance shadow.
If a bridged transfer is terminated due to a reason other than the caller matching
an active speech or DTMF grammar ('near_end_disconnect'), application.lastresult$
is undefined.
When the accept attribute of an option element is set to "approximate", the user
may say a subphrase of the specified PCDATA for the option to be selected.
If the caller has insufficient permission to perform a call transfer (e.g. not
allowed to make long distance calls, not permitted to make any transfers, etc.),
destination URL is malformed, a error.connection.noauthorization error is thrown.
The name (session.connection.protocol.name) also represents the subobject name
for protocol specific information. For instance, if session.connection.protocol.name
is 'q931', session.connection.protocol.q931.uui might specify the user-to-user
information property of the connection.
An application root document's variables are defined and reachable via the application
scope upon the loading of a document that specifies it as the application root.
An application root document's variables are no longer reachable from the application
scope when the user transitions to a document not in that application.
A user can direct interpretation in scenarios where grammars outside the current
dialog are active, by matching one of these grammars, at which point execution
transitions to the dialog containing the matched grammar.
The value of xml:lang must be inherited down the document hierarchy by elements
which also define the xml:lang attribute and do not have an alternative value.
When transitioning between two leaf documents that both specify the same application
fully resolved URI then the transition must preserve the application root document's
variables for use by the second leaf document.
A transition from an application leaf document to its own application root document
caused by a 'goto' must preserve the application root document's variables for
use by the root document.
If a transition occurs as the result of a submit between an application leaf document
and its own application root document the application root document's variables
must be re-initialized.
If a transition occurs from an application root document to a different application
root document it must initialize the new application root document and use the
new application root document's variables.
A form may contain form items, which are subdivided into input items ( <field>,
<record>, <transfer>, <object>, <subdialog>) and control
items (<block> and <initial>).
The value of the name attribute of a form item defines a dialog-scoped variable
that holds the value of the form item, i.e., dialog.name is a reference to the
form item variable.
For all types of form item, if the form item is assigned a value, that form item
is not eligible to be visited by the FIA (unless/until it is subsequently set
to undefined).
Using the clear tag on a form item variable will make it eligible to be visited
by the FIA (provided that it does not have a cond attribute evaluating to false).
If the last main FIA loop did not result in a goto nextitem and there is no form
item which is eligible to be visited then an implicit exit is generated.
If an event handler, executed after an event is thrown while processing a form
item, transfers control with a <goto> or <submit>, the FIA resumes
in the new form at the initialisation phase.
If an event handler, executed after an event is thrown while processing a form
item, does not transfer control with a <goto> or <submit> the FIA
resumes in the current form at the selection phase.
If an event is thrown during the execution of a <filled>, event handler
selection starts in the scope of the <filled>, which could be a form item
or the form itself, and then proceeds outward by enclosing dialog scopes.
If a menu's scope attribute is set to "document", the menu's grammars are active
over the whole document (or if the menu is in the application root document, any
loaded document in the application).
If a menu's dtmf attribute is set to "true", the first nine choices that have
not explicitly specified a value for the dtmf attribute are given the implicit
ones "1", "2", etc. Remaining choices that have not explicitly specified a value
for the dtmf attribute will not be assigned DTMF values (and thus cannot be matched
via a DTMF keypress).
When the accept attribute of choice is set to "exact", or is not set and the accept
attribute of its enclosing menu is set to "exact", or neither choice's accept
attribute nor menu's is set, then the text of the choice element defines the exact
phrase to be recognized. The user must say the entire phrase in the same order
in which it occurs in the choice element phrase for matching this element.
The messageexpr attribute is an ECMAScript expression evaluating to the variable
_message inside the catch element which catches the event being thrown.
If the event handler called after matching a choice with an event or eventexpr
attribute does not cause the interpreter to exit or transition control, then the
FIA will clear the form item variable of the menu's anonymous field, causing the
menu to be executed again.
If the form item is initialized to a value via evaluation of the expr attribute,
the form item will not be visited unless the form item variable is cleared.
If the slot attribute is absent, the interpreter uses the value associated with
the name attribute of the field to map the grammar slot to the form item variable.
The field element exposes a shadow variables named confidence, utterance, inputmode,
and interpretation. The values of the utterance and inputmode shadow variables
correspond to the values of the corresponding properties of the first object in
the application-scoped lastresult$ array.
The confidence shadow variable is the confidence level for the name field of this
interpretation and may range from 0.0-1.0. A value of 0.0 indicates minimum confidence,
and a value of 1.0 indicates maximum confidence.
When the accept attribute of an option element is set to "exact", the PCDATA of
the option defines the exact phrase to be recognized for the option to be selected.
The variables passed to the subdialog via the <param> element are accessible
as variables within the dialog scope of the invoked subdialog. A <param>
overrides the corresponding <var> expr attribute which is ignored.
The interpreter throws error.badfetch after the specified fetchtimeout when the
URL associated with the src or srcexpr attribute points to a non-existent resource.
The variable associated with the name attribute of the record element can be submitted
via the namelist of the submit element. The submitted audio is valid.
If the dtmfterm attribute is true, and the user terminates the recording by pressing
a DTMF key which doesn't match any active DTMF grammar, then the name$.termchar
shadow variable is set to the key pressed.
If the dtmfterm attribute is false, and user presses a key which does not match
any active DTMF grammar, then recording is not terminated and the name$.termchar
shadow variable is undefined when the recording terminates
When <filled> is a child of a <form>, and the mode attribute is set
to "any", the filled is executed when any of the form items specified in the namelist
has been filled.
When <filled> is a child of a <form>, and the mode attribute is set
to "all", the filled is executed when all of the form items specified in the namelist
have been filled.
A link may specify a message or messageexpr attribute providing additional context
about the event being thrown. The message is available as the value of the _message
variable within the scope of the catch element the interpreter selects to handle
the event.
During a dialog, the interpreter can receive input from the user via the user's
spoken utterance, such that the spoken utterance is one of those described by
an active grammar.
A grammar element can contain child XML elements, such that those elements taken
in context of the enclosing grammar element comprise a proper SRGS grammar.
A document containing a grammar element specifying both a 'src' attribute and
an inline grammar description causes the Interpreter to throw an 'error.badfetch'
event upon fetching of the document.
During a dialog, the Interpreter can receive input from the user via a set of
dual tone multi frequency (DTMF) key presses, such that the sequence of presses
is one of those described by an active grammar.
If a form-level grammar matches and returns a semantic interpretation for a field
name or slot that is a non-scalar ECMAScript variable, the field will be filled
with that non-scalar ECMAScript value. The selected property may be a compound
object.
If the result from a field-level grammar is neither a simple result nor a structure
with a property that matches the slot name, the entire semantic result is assigned
to the input item variable.
If the interval specified by the timeout attribute of the prompt element is exceeded,
the platform will throw a noinput event. The default is the value specified by
the timeout property
Variables must be declared prior to use. Assigning to an undeclared variable does
not automatically create it. Instead, it results in error.semantic being thrown.
In a form, variables declared by var and by form items are initialized every time
the form is entered. These initializations take place in document order.
Variables can be declared in application, document, dialog and anonymous scopes.
Variables declared at one scope are visible at that scope and all more local scopes.
var and script elements that are children of the application root document's vxml
element create their variables at application scope. They are no longer accessible
when another application is entered.
var and script elements that are children of the document's vxml element create
their variables at document scope. They are no longer accessible when another
document is entered.
var and script elements that are children of a form element (but not in an anonymous
scope) create their variables at dialog scope. They are no longer accessible when
another dialog is entered.
var and script elements that are children of block, filled and catch elements
(including synonyms for catch, such as nomatch) create their variables at anonymous
scope.
Scopes are not cleared when they become inaccessible. Instead, the old scope object
is left to exist (or to be garbage collected) and a new one is created and linked
into the scope hierarchy. References to previously-existing scope objects will
continue to access the old scope objects.
When executing in a document that does not have a separate application root document,
the application and document scopes are the same; that is, a single scope has
variables named both "application" and "document" that are references to the scope
itself. This includes execution in an application root document's var and script
elements.
The elements of application.lastresult$ will be sorted from highest confidence
score to lowest, with ties resolved by sorting by the precedence relationship
among the grammars producing the interpretations.
The number of elements in application.lastresult$ is never more than the value
of the property "maxnbest", and never less than one, unless the value of application.lastresult$
itself is undefined.
If the value of application.lastresult$ is not undefined, application.lastresult$
itself will contain the properties confidence, utterance, inputmode and intepretation
corresponding to those of application.lastresult$[0].
Assuming no cond or count attribute specified, given a field level event handler,
the interpreter must select it when the corresponding event is thrown.
Assuming no cond or count attribute specified and no field-level event handler,
given a form-level event handler, the interpreter must select it when the corresponding
event is thrown.
Assuming no cond or count attribute specified and no field- or form-level event
handler, given a document-level event handler, the interpreter must select it
when the corresponding event is thrown.
Assuming no cond or count attribute specified and no field-, form-, or document-level
event handler, given an application-level event handler, the interpreter must
select it when the corresponding event is thrown.
If the cond attribute of the most inner-scoped event handler evaluates to false,
the interpreter must not select it and instead select the next qualifying event
handler.
Event count matching takes precedence over scoping, ie on the second occurrence
of an event a root document level handler with count=2 takes precedence over a
field level handler with count=1
An event handler catches all events for which the event attribute specifies a
token prefix of the event (NB token prefix matching is done after removing trailing
dots.)
When the accept attribute of choice is set to "approximate", or is not set and
the accept attribute of its enclosing menu is set to "approximate", then the text
of the choice element defines an approximate recognition phrase, as defined under
"Grammar Generation" in section 2.2.
The type attribute, if present, specifies the name of one of the following builtin
grammar types from Appendix P: boolean, date, digits, currency, number, phone,
time.
[optional] A field containing two builtin grammar elements, one referring to the
builtin speech grammar and the other referring to the builtin DTMF grammar of
the same type is equivlent to a field whose type attribute is set to the equivalent
type.
A VoiceXML document can initiate a transfer to another entity using the transfer
tag, such that the Interpreter remains connected to the original caller and interpretation
resumes upon termination of the transfer.
A VoiceXML document can initiate a transfer to another entity using the transfer
tag, such that the Interpreter disconnects from the caller immediately upon attempting
the transfer and continues execution as it would under termination of the Session.
A bridged transfer can contain speech grammars such that the interpreter listens
to the original caller for the duration of the transfer, terminating the transfer
as soon as a spoken utterance matches an active speech grammar.
A bridged transfer specifying a 'connecttimeout' attribute with a W3C time specification
will terminate a transfer attempt if the destination entity cannot be connected
to within that period of time.
A bridged transfer specifying a 'maxtime' attribute with a W3C time specification
will terminate a transfer after that period of time has elapsed after connecting
to the destination entity if it has not already been terminated for other reasons.
A bridged transfer specifying a 'transferaudio' attribute with valid URI to an
audio file wil play that audio from the beginning of the transfer attempt until
the attempt is terminated or the destination entity is connected to.
If the originating caller hangs up during a bridged transfer, a 'connection.disconnect.hangup'
event is thrown and the transfer name variable remains undefined.
If the Interpreter is unable to connect to the destination entity when attempting
a transfer because it is busy, the transfer name variable is filled with the value
'busy'.
If a transfer is terminated because the original caller matches an active DTMF
grammar, the transfer name variable is filled with the value 'near_end_disconnect'.
If a bridge transfer is terminated by the Interpreter because the 'maxtime' has
expired without the transfer being terminated, the transfer name variable is filled
with the value 'maxtime_disconnect'.
Upon termination of bridge transfer, the shadow variable 'name$.duration' (where
name is the name attribute of the transfer element) is set to the number of seconds
from the time the destination entity was connected to and the transfer was terminated.
Upon termination of bridge transfer due to the caller matching an active speech
grammar ('near_end_disconnect'), the 'name$.inputmode' shadow variable is set
to 'voice'.
Upon termination of bridge transfer due to the caller matching an active DTMF
grammar ('near_end_disconnect'), the 'name$.inputmode' shadow variable is set
to 'dtmf'.
Upon termination of a bridge transfer due to the caller matching an active speech
grammar ('near_end_disconnect'), the 'name$.utterance' shadow variable is set
to utterance text.
session.connection.redirect returns an array representing the connection redirection
paths. The first element is the original called number, the last element is the
last redirected number. Each element of the array contains a uri, pi (presentation
information), si (screening information), and reason property. The reason property
can be either "unknown", "user busy", "no reply", "deflection during alerting",
"deflection immediate response", "mobile subscriber not reachable".
session.connection.originator returns the local or remote property. (For instance,
the following ECMAScript would return true if the remote party initiated the connection:
var caller_initiate = connection.originator == connection.remote;
A bridged transfer can contain DTMF grammars such that the interpreter listens
to the original caller for the duration of the transfer, terminating the transfer
as soon as DTMF input matches an active DTMF grammar.
The form item 'object' has a guard condition specified with the cond attribute.
A form item is visited if it is not filled and its cond is not specified or evaluates,
after conversion to boolean, to true.
The input item transfer may contain the filled element. Filled elements contain
an action to execute after the result input item variable is filled in.
Upon termination of a bridged transfer due to the caller matching an active DTMF
grammar ('near_end_disconnect'), application.lastresult$ is assigned to the DTMF
result.
Upon termination of a bridged transfer due to the caller matching an active speech
grammar ('near_end_disconnect'), application.lastresult$.utterance is assigned
the same value as the transfer's utterance shadow.
If a bridged transfer is terminated due to a reason other than the caller matching
an active speech or DTMF grammar ('near_end_disconnect'), application.lastresult$
is undefined.
When the accept attribute of an option element is set to "approximate", the user
may say a subphrase of the specified PCDATA for the option to be selected.
If the caller has insufficient permission to perform a call transfer (e.g. not
allowed to make long distance calls, not permitted to make any transfers, etc.),
destination URL is malformed, a error.connection.noauthorization error is thrown.
The name (session.connection.protocol.name) also represents the subobject name
for protocol specific information. For instance, if session.connection.protocol.name
is 'q931', session.connection.protocol.q931.uui might specify the user-to-user
information property of the connection.
An application root document's variables are defined and reachable via the application
scope upon the loading of a document that specifies it as the application root.
An application root document's variables are no longer reachable from the application
scope when the user transitions to a document not in that application.
A user can direct interpretation in scenarios where grammars outside the current
dialog are active, by matching one of these grammars, at which point execution
transitions to the dialog containing the matched grammar.
The value of xml:lang must be inherited down the document hierarchy by elements
which also define the xml:lang attribute and do not have an alternative value.
When transitioning between two leaf documents that both specify the same application
fully resolved URI then the transition must preserve the application root document's
variables for use by the second leaf document.
A transition from an application leaf document to its own application root document
caused by a 'goto' must preserve the application root document's variables for
use by the root document.
If a transition occurs as the result of a submit between an application leaf document
and its own application root document the application root document's variables
must be re-initialized.
If a transition occurs from an application root document to a different application
root document it must initialize the new application root document and use the
new application root document's variables.
A form may contain form items, which are subdivided into input items ( <field>,
<record>, <transfer>, <object>, <subdialog>) and control
items (<block> and <initial>).
The value of the name attribute of a form item defines a dialog-scoped variable
that holds the value of the form item, i.e., dialog.name is a reference to the
form item variable.
For all types of form item, if the form item is assigned a value, that form item
is not eligible to be visited by the FIA (unless/until it is subsequently set
to undefined).
Using the clear tag on a form item variable will make it eligible to be visited
by the FIA (provided that it does not have a cond attribute evaluating to false).
If the last main FIA loop did not result in a goto nextitem and there is no form
item which is eligible to be visited then an implicit exit is generated.
If an event handler, executed after an event is thrown while processing a form
item, transfers control with a <goto> or <submit>, the FIA resumes
in the new form at the initialisation phase.
If an event handler, executed after an event is thrown while processing a form
item, does not transfer control with a <goto> or <submit> the FIA
resumes in the current form at the selection phase.
If an event is thrown during the execution of a <filled>, event handler
selection starts in the scope of the <filled>, which could be a form item
or the form itself, and then proceeds outward by enclosing dialog scopes.
If a menu's scope attribute is set to "document", the menu's grammars are active
over the whole document (or if the menu is in the application root document, any
loaded document in the application).
If a menu's dtmf attribute is set to "true", the first nine choices that have
not explicitly specified a value for the dtmf attribute are given the implicit
ones "1", "2", etc. Remaining choices that have not explicitly specified a value
for the dtmf attribute will not be assigned DTMF values (and thus cannot be matched
via a DTMF keypress).
When the accept attribute of choice is set to "exact", or is not set and the accept
attribute of its enclosing menu is set to "exact", or neither choice's accept
attribute nor menu's is set, then the text of the choice element defines the exact
phrase to be recognized. The user must say the entire phrase in the same order
in which it occurs in the choice element phrase for matching this element.
The messageexpr attribute is an ECMAScript expression evaluating to the variable
_message inside the catch element which catches the event being thrown.
If the event handler called after matching a choice with an event or eventexpr
attribute does not cause the interpreter to exit or transition control, then the
FIA will clear the form item variable of the menu's anonymous field, causing the
menu to be executed again.
If the form item is initialized to a value via evaluation of the expr attribute,
the form item will not be visited unless the form item variable is cleared.
If the slot attribute is absent, the interpreter uses the value associated with
the name attribute of the field to map the grammar slot to the form item variable.
The field element exposes a shadow variables named confidence, utterance, inputmode,
and interpretation. The values of the utterance and inputmode shadow variables
correspond to the values of the corresponding properties of the first object in
the application-scoped lastresult$ array.
The confidence shadow variable is the confidence level for the name field of this
interpretation and may range from 0.0-1.0. A value of 0.0 indicates minimum confidence,
and a value of 1.0 indicates maximum confidence.
When the accept attribute of an option element is set to "exact", the PCDATA of
the option defines the exact phrase to be recognized for the option to be selected.
The variables passed to the subdialog via the <param> element are accessible
as variables within the dialog scope of the invoked subdialog. A <param>
overrides the corresponding <var> expr attribute which is ignored.
The interpreter throws error.badfetch after the specified fetchtimeout when the
URL associated with the src or srcexpr attribute points to a non-existent resource.
The variable associated with the name attribute of the record element can be submitted
via the namelist of the submit element. The submitted audio is valid.
If the dtmfterm attribute is true, and the user terminates the recording by pressing
a DTMF key which doesn't match any active DTMF grammar, then the name$.termchar
shadow variable is set to the key pressed.
If the dtmfterm attribute is false, and user presses a key which does not match
any active DTMF grammar, then recording is not terminated and the name$.termchar
shadow variable is undefined when the recording terminates
When <filled> is a child of a <form>, and the mode attribute is set
to "any", the filled is executed when any of the form items specified in the namelist
has been filled.
When <filled> is a child of a <form>, and the mode attribute is set
to "all", the filled is executed when all of the form items specified in the namelist
have been filled.
A link may specify a message or messageexpr attribute providing additional context
about the event being thrown. The message is available as the value of the _message
variable within the scope of the catch element the interpreter selects to handle
the event.
During a dialog, the interpreter can receive input from the user via the user's
spoken utterance, such that the spoken utterance is one of those described by
an active grammar.
A grammar element can contain child XML elements, such that those elements taken
in context of the enclosing grammar element comprise a proper SRGS grammar.
A document containing a grammar element specifying both a 'src' attribute and
an inline grammar description causes the Interpreter to throw an 'error.badfetch'
event upon fetching of the document.
During a dialog, the Interpreter can receive input from the user via a set of
dual tone multi frequency (DTMF) key presses, such that the sequence of presses
is one of those described by an active grammar.
If a form-level grammar matches and returns a semantic interpretation for a field
name or slot that is a non-scalar ECMAScript variable, the field will be filled
with that non-scalar ECMAScript value. The selected property may be a compound
object.
If the result from a field-level grammar is neither a simple result nor a structure
with a property that matches the slot name, the entire semantic result is assigned
to the input item variable.
If the interval specified by the timeout attribute of the prompt element is exceeded,
the platform will throw a noinput event. The default is the value specified by
the timeout property
Variables must be declared prior to use. Assigning to an undeclared variable does
not automatically create it. Instead, it results in error.semantic being thrown.
In a form, variables declared by var and by form items are initialized every time
the form is entered. These initializations take place in document order.
Variables can be declared in application, document, dialog and anonymous scopes.
Variables declared at one scope are visible at that scope and all more local scopes.
var and script elements that are children of the application root document's vxml
element create their variables at application scope. They are no longer accessible
when another application is entered.
var and script elements that are children of the document's vxml element create
their variables at document scope. They are no longer accessible when another
document is entered.
var and script elements that are children of a form element (but not in an anonymous
scope) create their variables at dialog scope. They are no longer accessible when
another dialog is entered.
var and script elements that are children of block, filled and catch elements
(including synonyms for catch, such as nomatch) create their variables at anonymous
scope.
Scopes are not cleared when they become inaccessible. Instead, the old scope object
is left to exist (or to be garbage collected) and a new one is created and linked
into the scope hierarchy. References to previously-existing scope objects will
continue to access the old scope objects.
When executing in a document that does not have a separate application root document,
the application and document scopes are the same; that is, a single scope has
variables named both "application" and "document" that are references to the scope
itself. This includes execution in an application root document's var and script
elements.
The elements of application.lastresult$ will be sorted from highest confidence
score to lowest, with ties resolved by sorting by the precedence relationship
among the grammars producing the interpretations.
The number of elements in application.lastresult$ is never more than the value
of the property "maxnbest", and never less than one, unless the value of application.lastresult$
itself is undefined.
If the value of application.lastresult$ is not undefined, application.lastresult$
itself will contain the properties confidence, utterance, inputmode and intepretation
corresponding to those of application.lastresult$[0].
Assuming no cond or count attribute specified, given a field level event handler,
the interpreter must select it when the corresponding event is thrown.
Assuming no cond or count attribute specified and no field-level event handler,
given a form-level event handler, the interpreter must select it when the corresponding
event is thrown.
Assuming no cond or count attribute specified and no field- or form-level event
handler, given a document-level event handler, the interpreter must select it
when the corresponding event is thrown.
Assuming no cond or count attribute specified and no field-, form-, or document-level
event handler, given an application-level event handler, the interpreter must
select it when the corresponding event is thrown.
If the cond attribute of the most inner-scoped event handler evaluates to false,
the interpreter must not select it and instead select the next qualifying event
handler.
Event count matching takes precedence over scoping, ie on the second occurrence
of an event a root document level handler with count=2 takes precedence over a
field level handler with count=1
An event handler catches all events for which the event attribute specifies a
token prefix of the event (NB token prefix matching is done after removing trailing
dots.)