<!-- A DTD for Voice Extensible Markup Language -->
<!-- Copyright (c) 2000 VoiceXML Forum (AT&T, IBM, Lucent Technologies, Motorola) -->
<!-- Modified to reflect the VoiceGenie VoiceXML Gateway implementation, v4.5 -->
<!-- Changes Copyright (c) 2001 VoiceGenie Technologies Inc. -->
<!-- $Id: voicexml_vg.dtd,v 1.2 2001/05/24 01:45:06 rob Exp $ -->
<!-- $Name: $ -->
<!ENTITY % audio
"#PCDATA | audio | enumerate | value" >
<!ENTITY % boolean "(true|false)" >
<!ENTITY % connect.when "(analysis | answered | immediate)" >
<!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 | disconnect | exit | goto | if | log | prompt |
reprompt | return | script | submit | throw | var " >
<!ENTITY % expression "CDATA" >
<!ENTITY % field.name "NMTOKEN" >
<!ENTITY % field.names "NMTOKENS" >
<!ENTITY % integer "CDATA" >
<!ENTITY % item.attrs
"name %field.name; #IMPLIED
cond %expression; #IMPLIED
expr %expression; #IMPLIED " >
<!ENTITY % uri "CDATA" >
<!ENTITY % cache.attrs
"caching (safe|fast) #IMPLIED
fetchhint (prefetch|safe|stream) #IMPLIED
fetchtimeout %duration; #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 %field.names; #IMPLIED" >
<!ENTITY % fetch.attrs
"fetchaudio %uri; #IMPLIED
fetchaudiodelay %duration; #IMPLIED
fetchaudiotime %duration; #IMPLIED" >
<!ENTITY % tts "break | div | emp | pros | sayas" >
<!ENTITY % variable "block | field | var" >
<!--================================= Root ================================-->
<!ELEMENT vxml
(%event.handler; | form | link | menu | meta |
property | script | var)+ >
<!ATTLIST vxml
application %uri; #IMPLIED
base %uri; #IMPLIED
lang CDATA #IMPLIED
logpage %boolean; 'false'
version CDATA #REQUIRED >
<!ELEMENT meta EMPTY >
<!ATTLIST meta
name NMTOKEN #IMPLIED
content CDATA #REQUIRED
http-equiv NMTOKEN #IMPLIED >
<!--================================= Dialogs =============================-->
<!ENTITY % input "dtmf | grammar" >
<!ENTITY % scope "(document | dialog)" >
<!ELEMENT form
(%input; | %event.handler; | filled | initial | object | link | property |
record | subdialog | transfer | %variable;)* >
<!ATTLIST form
id ID #IMPLIED
cleardtmf %boolean; 'false'
scope %scope; 'dialog' >
<!ELEMENT menu
(%audio; | choice | %event.handler; | prompt | property)* >
<!ATTLIST menu
id ID #IMPLIED
scope %scope; 'dialog'
dtmf %boolean; 'false' >
<!ELEMENT choice (%audio; | grammar | %tts;)* >
<!ATTLIST choice
%cache.attrs;
dtmf CDATA #IMPLIED
event %event.name; #IMPLIED
%fetch.attrs;
%next.attrs; >
<!--================================ Prompts ==============================-->
<!ELEMENT prompt (%audio; | %tts;)* >
<!ATTLIST prompt
bargein %boolean; #IMPLIED
cond %expression; #IMPLIED
count %integer; #IMPLIED
timeout %duration; #IMPLIED >
<!ELEMENT enumerate (%audio; | %tts;)*>
<!ELEMENT reprompt EMPTY >
<!--================================ Fields ===============================-->
<!ELEMENT field
(%audio; | %event.handler; | filled | %input; | link | option | prompt | property)* >
<!ATTLIST field
%item.attrs;
type CDATA #IMPLIED
slot NMTOKEN #IMPLIED
bargeinlevel CDATA #IMPLIED
asrengine CDATA #IMPLIED
endbeep %boolean; 'false'
modal %boolean; 'false' >
<!ELEMENT option (#PCDATA)* >
<!ATTLIST option
dtmf CDATA #IMPLIED
value CDATA #IMPLIED >
<!ELEMENT var EMPTY >
<!ATTLIST var
name %field.name; #REQUIRED
expr %expression; #IMPLIED >
<!ELEMENT initial (%audio; | %event.handler; | link | prompt | property)* >
<!ATTLIST initial
endbeep %boolean; 'false'
%item.attrs; >
<!ELEMENT block (%executable.content;)* >
<!ATTLIST block
%item.attrs; >
<!ELEMENT assign EMPTY >
<!ATTLIST assign
name %field.name; #REQUIRED
expr %expression; #REQUIRED >
<!ELEMENT clear EMPTY >
<!ATTLIST clear
namelist %field.names; #IMPLIED >
<!ELEMENT value EMPTY >
<!ATTLIST value
class CDATA #IMPLIED
expr %expression; #REQUIRED
mode (tts|recorded) "tts"
recsrc %uri; #IMPLIED >
<!--================================== Events =============================-->
<!ENTITY % event.handler.attrs
"count %integer; #IMPLIED
cond %expression; #IMPLIED" >
<!ELEMENT catch (%executable.content;)* >
<!ATTLIST catch
event %event.names; #REQUIRED
%event.handler.attrs; >
<!ELEMENT error (%executable.content;)* >
<!ATTLIST error
%event.handler.attrs; >
<!ELEMENT help (%executable.content;)* >
<!ATTLIST help
%event.handler.attrs; >
<!ELEMENT link (dtmf | grammar)* >
<!ATTLIST link
%cache.attrs;
%next.attrs;
fetchaudio %uri; #IMPLIED
event %event.name; #IMPLIED >
<!ELEMENT noinput (%executable.content;)* >
<!ATTLIST noinput
%event.handler.attrs; >
<!ELEMENT nomatch (%executable.content;)* >
<!ATTLIST nomatch
%event.handler.attrs; >
<!ELEMENT throw EMPTY >
<!ATTLIST throw
event %event.name; #REQUIRED >
<!--============================== Audio Output ===========================-->
<!ELEMENT audio (%audio; | %tts;)* >
<!ATTLIST audio
src %uri; #IMPLIED
expr %expression; #IMPLIED
volume %integer; #IMPLIED
%cache.attrs; >
<!ELEMENT break EMPTY >
<!ATTLIST break
msecs %integer; #IMPLIED
size (none|small|medium|large) #IMPLIED >
<!ELEMENT div (%audio; | %tts;)* >
<!ATTLIST div
type CDATA #IMPLIED>
<!ELEMENT emp (%audio; | %tts;)* >
<!ATTLIST emp
level (strong | moderate | none | reduced) "moderate" >
<!ELEMENT pros (%audio; | %tts;)* >
<!ATTLIST pros
rate CDATA #IMPLIED
vol CDATA #IMPLIED
pitch CDATA #IMPLIED
range CDATA #IMPLIED >
<!ELEMENT sayas (#PCDATA)* >
<!ATTLIST sayas
sub CDATA #IMPLIED
class CDATA #IMPLIED
phon CDATA #IMPLIED >
<!--============================= Audio Input =============================-->
<!ENTITY % key "CDATA" >
<!ENTITY % grammar.attrs
"%cache.attrs;
scope %scope; #IMPLIED
src %uri; #IMPLIED
expr %expression; #IMPLIED
type CDATA #IMPLIED " >
<!ELEMENT dtmf (#PCDATA)* >
<!ATTLIST dtmf
%fetch.attrs;
%grammar.attrs; >
<!ELEMENT grammar (#PCDATA)* >
<!ATTLIST grammar
%grammar.attrs; >
<!ELEMENT record
(%audio; | %event.handler; | filled | grammar | prompt | property)* >
<!ATTLIST record
%item.attrs;
type CDATA #IMPLIED
beep %boolean; 'false'
maxtime %duration; #IMPLIED
mintime %duration; #IMPLIED
modal %boolean; 'true'
beginsilence %duration; #IMPLIED
finalsilence %duration; #IMPLIED
dtmfterm %boolean; 'true' >
<!--============================ Call Control ============================-->
<!ELEMENT disconnect EMPTY >
<!ELEMENT transfer
(%audio; | %event.handler; | dtmf | filled | grammar | prompt | property)* >
<!ATTLIST transfer
%item.attrs;
dest %uri; #IMPLIED
destexpr %expression; #IMPLIED
bridge %boolean; 'false'
connecttimeout %duration; #IMPLIED
analysis %boolean; 'false'
connectwhen %connect.when; 'immediate'
maxtime %duration; #IMPLIED >
<!--============================ Control Flow ============================-->
<!ENTITY % if.attrs
"cond %expression; #REQUIRED" >
<!ELEMENT if (%executable.content; | elseif | else)* >
<!ATTLIST if
%if.attrs; >
<!ELEMENT elseif EMPTY >
<!ATTLIST elseif
%if.attrs; >
<!ELEMENT else EMPTY >
<!ELEMENT exit EMPTY >
<!ATTLIST exit
expr %expression; #IMPLIED
namelist %field.names; #IMPLIED >
<!ELEMENT filled (%executable.content;)* >
<!ATTLIST filled
mode (any|all) "all"
namelist %field.names; #IMPLIED >
<!ELEMENT goto EMPTY >
<!ATTLIST goto
%cache.attrs;
%next.attrs;
%fetch.attrs;
expritem %expression; #IMPLIED
nextitem %field.name; #IMPLIED >
<!ELEMENT param EMPTY >
<!ATTLIST param
name NMTOKEN #REQUIRED
expr %expression; #IMPLIED
value CDATA #IMPLIED
valuetype (data|ref) 'data'
type CDATA #IMPLIED >
<!ELEMENT return EMPTY >
<!ATTLIST return
namelist %field.names; #IMPLIED
event %event.name; #IMPLIED >
<!ELEMENT subdialog
(%audio; | %event.handler; | filled | param | prompt | property)* >
<!ATTLIST subdialog
%item.attrs;
src %uri; #IMPLIED
srcexpr %expression; #IMPLIED
%cache.attrs;
fetchaudio %uri; #IMPLIED
%submit.attrs; >
<!ELEMENT submit EMPTY >
<!ATTLIST submit
%cache.attrs;
%next.attrs;
%fetch.attrs;
%submit.attrs; >
<!--========================== Miscellaneous ==============================-->
<!ENTITY % log
"#PCDATA | value" >
<!ELEMENT log (%log;)* >
<!ATTLIST log
expr %expression; #IMPLIED
cond %expression; #IMPLIED
level %integer; #IMPLIED >
<!ELEMENT object
(%audio; | %event.handler; | filled | param | prompt | property)* >
<!ATTLIST object
%item.attrs;
%cache.attrs;
classid %uri; #IMPLIED
codebase %uri; #IMPLIED
data %uri; #IMPLIED
type CDATA #IMPLIED
codetype CDATA #IMPLIED
archive %uri; #IMPLIED >
<!ELEMENT property EMPTY >
<!ATTLIST property
name NMTOKEN #REQUIRED
value CDATA #REQUIRED >
<!ELEMENT script (#PCDATA)* >
<!ATTLIST script
src %uri; #IMPLIED
charset CDATA #IMPLIED
%cache.attrs; >