Table Of Contents
Cisco VoiceXML DTD
Cisco VoiceXML DTD
Revised: June 20, 2007, OL-11175-01
Cisco VoiceXML DTD
VoiceXML 2.1 DTD (20060322)
Copyright 1998-2006 W3C (MIT, ERCIM, Keio), All Rights Reserved.
Permission to use, copy, modify and distribute the VoiceXML DTD and
its accompanying documentation for any purpose and without fee is
hereby granted in perpetuity, provided that the above copyright
notice and this paragraph appear in all copies.
The copyright holders make no representation about the suitability
of the DTD for any purpose. It is provided "as is" without expressed
<!ENTITY % audio "#PCDATA | audio | enumerate | value">
<!ENTITY % bargeintype "( speech | hotword )">
<!ENTITY % boolean "(true|false)">
<!ENTITY % content.type "CDATA">
<!ENTITY % duration "CDATA">
<!ENTITY % event.handler "catch | help | noinput | nomatch | error">
<!ENTITY % event.name "NMTOKEN">
<!ENTITY % event.names "NMTOKENS">
<!ENTITY % executable.content "%audio; | assign | clear | data | disconnect |
exit | foreach |goto | if | log | prompt |
reprompt | return | script | submit | throw | var | cisco-data | cisco-typeaheadflush
| cisco-debug ">
<!ENTITY % expression "CDATA">
<!ENTITY % restrictedvariable.name "CDATA">
<!ENTITY % variable.name "CDATA">
<!ENTITY % restrictedvariable.names "CDATA">
<!ENTITY % variable.names "CDATA">
<!ENTITY % integer "CDATA">
<!ENTITY % item.attrs "name %restrictedvariable.name; #IMPLIED
cond %expression; #IMPLIED
expr %expression; #IMPLIED ">
<!ENTITY % cache.attrs "fetchhint (prefetch|safe) #IMPLIED
fetchtimeout %duration; #IMPLIED
maxage %integer; #IMPLIED
maxstale %integer; #IMPLIED">
<!ENTITY % next.attrs "next %uri; #IMPLIED
expr %expression; #IMPLIED ">
<!ENTITY % submit.attrs "method (get|post) 'get'
enctype %content.type; 'application/x-www-form-urlencoded'
namelist %variable.names; #IMPLIED">
<!ENTITY % throw.attrs "event %event.name; #IMPLIED
eventexpr %expression; #IMPLIED
messageexpr %expression; #IMPLIED">
<!ENTITY % variable "block | data | field | var">
<!--================================= Root ================================-->
<!ELEMENT vxml (%event.handler; | data | form | link | menu | meta | metadata |
property | script | var | cisco-data)+>
application %uri; #IMPLIED
xml:lang NMTOKEN #IMPLIED
xmlns CDATA #FIXED 'http://www.w3.org/2001/vxml'
xsi:schemaLocation CDATA #IMPLIED
http-equiv NMTOKEN #IMPLIED
<!--================================ Prompts ==============================-->
<!-- definitions adapted from SSML 1.0 DTD -->
<!ENTITY % structure "p | s">
<!ENTITY % sentence-elements "break | emphasis | mark | phoneme | prosody |
<!-- addition of enumerate and value elements as 'allowed-within-sentence'
<!ENTITY % allowed-within-sentence " %audio; | %sentence-elements; ">
<!-- Prompt is modelled on SSML 1.0 DTD speak element:
- addition of 'bargein', 'bargeintype', 'cond', 'count' and 'timeout' attributes
- removal of xmlns, xmlns:xsi, and xsi:schemaLocation attributes
- version attribute fixed as "1.0"
<!ELEMENT prompt (%allowed-within-sentence; | foreach | %structure; | lexicon
bargein %boolean; #IMPLIED
bargeintype %bargeintype; #IMPLIED
cond %expression; #IMPLIED
xml:lang NMTOKEN #IMPLIED
cisco-vcrprompt %boolean; #IMPLIED
cisco-rate %integer; #IMPLIED
cisco-typeaheadflush %boolean; false
timeout %duration; #IMPLIED
version CDATA #FIXED "1.0"
<!ELEMENT enumerate (%allowed-within-sentence; | %structure;)*>
<!ELEMENT reprompt EMPTY>
<!--================================= Dialogs =============================-->
<!ENTITY % input "grammar">
<!ENTITY % scope "(document | dialog)">
<!ELEMENT form (%input; | %event.handler; | filled | initial | object | link |
property | record | script | subdialog | transfer | %variable |
cisco-vcrcontrol | cisco-data;)*>
<!ENTITY % accept.attrs "accept (exact | approximate) 'exact'">
<!ELEMENT menu (%audio; | choice | %event.handler; | prompt | property |
cisco-vcrcontrol)*>
<!ELEMENT choice ( #PCDATA | %input; )*>
accept (exact | approximate) #IMPLIED
fetchaudio %uri; #IMPLIED
<!--================================ Audio Output ==============================-->
<!-- definitions adapted from SSML 1.0 DTD -->
<!ELEMENT p (%allowed-within-sentence; | s)*>
xml:lang NMTOKEN #IMPLIED
<!ELEMENT s (%allowed-within-sentence;)*>
xml:lang NMTOKEN #IMPLIED
<!ELEMENT voice (%allowed-within-sentence; | %structure;)*>
xml:lang NMTOKEN #IMPLIED
gender (male | female | neutral) #IMPLIED
variant %integer; #IMPLIED
<!ELEMENT prosody (%allowed-within-sentence; | %structure;)*>
duration %duration; #IMPLIED
<!-- Changes to SSML 1.0 DTD audio element:
- src not obligatory, addition of 'expr' and caching attributes
<!ELEMENT audio (%allowed-within-sentence; | %structure; | desc)*>
expr %expression; #IMPLIED
<!ELEMENT desc (#PCDATA)>
xml:lang NMTOKEN #IMPLIED
<!ELEMENT emphasis (%allowed-within-sentence;)*>
level (strong | moderate | none | reduced) "moderate"
<!-- Changes to SSML 1.0 DTD say-as element:
- allows value element as child
<!ELEMENT say-as (#PCDATA | value )*>
interpret-as NMTOKEN #REQUIRED
<!ELEMENT phoneme (#PCDATA)>
strength (none | x-weak | weak | medium | strong | x-strong) "medium"
nameexpr %expression; #IMPLIED
<!--"cisco-vcrcontrol" can be in <form>, <menu> and form item (including <block>).-->
<!ELEMENT cisco-vcrcontrol EMPTY>
<!ATTLIST cisco-vcrcontrol
action (rate|volume) #REQUIRED
step %integer; #REQUIRED>
<!--================================ Fields ===============================-->
<!ELEMENT field (%audio; | %event.handler; | filled | %input; | link | option |
prompt | property | cisco-vcrcontrol)*>
<!ELEMENT option (#PCDATA)>
name %restrictedvariable.name; #REQUIRED
expr %expression; #IMPLIED
<!ELEMENT initial (%audio; | %event.handler; | link | prompt | property |
cisco-vcrcontrol)*>
<!ELEMENT block (%executable.content; | cisco-vcrcontrol)*>
name %variable.name; #REQUIRED
expr %expression; #REQUIRED
namelist %variable.names; #IMPLIED
expr %expression; #REQUIRED
<!--================================== Events =============================-->
<!ENTITY % event.handler.attrs "count %integer; #IMPLIED
cond %expression; #IMPLIED">
<!ELEMENT catch (%executable.content;)*>
event %event.names; #IMPLIED
<!ELEMENT error (%executable.content;)*>
<!ELEMENT help (%executable.content;)*>
<!ELEMENT link (%input;)*>
fetchaudio %uri; #IMPLIED
<!ELEMENT noinput (%executable.content;)*>
<!ELEMENT nomatch (%executable.content;)*>
<!--============================= Grammar Input =============================-->
<!-- definitions adapted from SRGS 1.0 DTD -->
<!ENTITY % rule-expansion "#PCDATA | token | ruleref
special (NULL | VOID | GARBAGE) #IMPLIED
<!ELEMENT token (#PCDATA)>
xml:lang NMTOKEN #IMPLIED
<!ELEMENT one-of (item)+>
xml:lang NMTOKEN #IMPLIED
<!ELEMENT item (%rule-expansion;)*>
repeat-prob NMTOKEN #IMPLIED
xml:lang NMTOKEN #IMPLIED
<!ELEMENT rule (%rule-expansion; | example)*>
scope (private | public) "private"
<!ELEMENT example (#PCDATA)>
<!-- Changes to SRGS 1.0 DTD grammar element:
- mixed, unordered content model
- addition of 'scope', 'src', 'type', 'weight' and caching attributes
- 'version' attribute is optional
- removal of xmlns, xmlns:xsi, and xsi:schemaLocation attributes
<!ELEMENT grammar (#PCDATA | meta | metadata | lexicon | rule | tag)*>
srcexpr %expression; #IMPLIED
tag-format %uri; #IMPLIED
xml:lang NMTOKEN #IMPLIED
mode (voice | dtmf) "voice"
<!--============================= Audio Input =============================-->
<!ELEMENT record (%audio; | %event.handler; | filled | %input; | prompt |
Property | cisco-vcrcontrol)*>
maxtime %duration; #IMPLIED
finalsilence %duration; #IMPLIED
dtmfterm %boolean; "true"
cisco-recordbeep %boolean; "false"
cisco-recordbeepinterval %duration; #IMPLIED
cisco-dest %uri; #IMPLIED
cisco-destexpr %expression; #IMPLIED
<!--============================ Call Control ============================-->
<!ELEMENT disconnect EMPTY>
namelist %variable.names; #IMPLIED
cisco-gtd expression; #IMPLIED
cisco-disc_cause expression; #IMPLIED
<!ELEMENT transfer (%audio; | %event.handler; | filled | %input; | prompt |
Property | cisco-vcrcontrol)*>
destexpr %expression; #IMPLIED
bridge %boolean; #IMPLIED
connecttimeout %duration; #IMPLIED
maxtime %duration; #IMPLIED
transferaudio %uri; #IMPLIED
aaiexpr %expression; #IMPLIED
cisco-longpound %boolean; 'true'
cisco-newguid %expression; #IMPLIED
cisco-mailtoaddress %expression; #IMPLIED
cisco-username %expression; #IMPLIED
cisco-destplan %integer; #IMPLIED
cisco-desttype %integer; #IMPLIED
cisco-aniexpr %expression; #IMPLIED
cisco-anitype %integer; #IMPLIED
cisco-aniplan %integer; #IMPLIED
cisco-anipi %integer; #IMPLIED
cisco-anisi %integer; #IMPLIED
cisco-rdnexpr %expression; #IMPLIED
cisco-rdntype %integer; #IMPLIED
cisco-rdnplan %integer; #IMPLIED
cisco-rdnpi %integer; #IMPLIED
cisco-rdnsi %integer; #IMPLIED
cisco-redirectreason %integer; #IMPLIED
cisco-handoffexpr %expression; #IMPLIED
cisco-gtd %expression; #IMPLIED
cisco-carrierid-source %expression; #IMPLIED
cisco-carrierid-target %expression; #IMPLIED
<!--============================ Control Flow ============================-->
<!ENTITY % if.attrs "cond %expression; #REQUIRED">
<!ELEMENT if (%executable.content; | elseif | else)*>
expr %expression; #IMPLIED
namelist %variable.names; #IMPLIED
<!ELEMENT filled (%executable.content;)*>
mode (any | all) #IMPLIED
namelist %restrictedvariable.names; #IMPLIED
<!-- executable content + contents of prompt -->
<!ELEMENT foreach (%executable.content; | %sentence-elements; |
%structure; | cisco-vcrcontrol )*
item %restrictedvariable.name; #REQUIRED
fetchaudio %uri; #IMPLIED
expritem %expression; #IMPLIED
nextitem %restrictedvariable.name; #IMPLIED
expr %expression; #IMPLIED
valuetype (data | ref) "data"
namelist %variable.names; #IMPLIED
<!ELEMENT subdialog (%audio; | %event.handler; | filled | param | prompt |
Property | cisco-vcrcontrol)*>
srcexpr %expression; #IMPLIED
fetchaudio %uri; #IMPLIED
fetchaudio %uri; #IMPLIED
<!--========================== Miscellaneous ==============================-->
name %restrictedvariable.name; #IMPLIED
srcexpr %expression; #IMPLIED
fetchaudio %uri; #IMPLIED
<!ELEMENT log (#PCDATA | value)*>
expr %expression; #IMPLIED
<!ELEMENT object (%audio; | %event.handler; | filled | param | prompt |
Property | cisco-vcrcontrol)*>
<!ELEMENT property EMPTY>
<!ELEMENT script (#PCDATA)>
srcexpr %expression; #IMPLIED
<!ELEMENT cisco-data EMPTY>
name %restrictedvariable.name; #REQUIRED
expr %expression; #IMPLIED
srcexpr %expression; #IMPLIED
fetchaudio %uri; #IMPLIED
< !ELEMENT cisco-debug EMPTY >
enabled %boolean; #REQUIRED >
< !ELEMENT cisco-typeaheadflush EMPTY >