1<!-- 2VoiceXML 2.1 DTD (20031228) 3 4Copyright 1998-2003 W3C (MIT, ERCIM, Keio), All Rights Reserved. 5 6Permission to use, copy, modify and distribute the VoiceXML DTD and 7its accompanying documentation for any purpose and without fee is 8hereby granted in perpetuity, provided that the above copyright 9notice and this paragraph appear in all copies. 10 11The copyright holders make no representation about the suitability 12of the DTD for any purpose. It is provided "as is" without expressed 13or implied warranty. 14--> 15 16<!ENTITY % audio "#PCDATA | audio | enumerate | value"> 17<!ENTITY % bargeintype "( speech | hotword )"> 18<!ENTITY % boolean "(true|false)"> 19<!ENTITY % content.type "CDATA"> 20<!ENTITY % duration "CDATA"> 21<!ENTITY % event.handler "catch | help | noinput | nomatch | error"> 22<!ENTITY % event.name "NMTOKEN"> 23<!ENTITY % event.names "NMTOKENS"> 24<!ENTITY % executable.content "%audio; | assign | clear | data | disconnect | 25 exit | foreach |goto | if | log | prompt | 26 reprompt | return | script | submit | throw | var "> 27<!ENTITY % expression "CDATA"> 28<!ENTITY % restrictedvariable.name "NMTOKEN"> 29<!ENTITY % variable.name "CDATA"> 30<!ENTITY % restrictedvariable.names "NMTOKENS"> 31<!ENTITY % variable.names "CDATA"> 32<!ENTITY % integer "CDATA"> 33<!ENTITY % item.attrs "name %restrictedvariable.name; #IMPLIED 34 cond %expression; #IMPLIED 35 expr %expression; #IMPLIED "> 36<!ENTITY % uri "CDATA"> 37<!ENTITY % cache.attrs "fetchhint (prefetch|safe) #IMPLIED 38 fetchtimeout %duration; #IMPLIED 39 maxage %integer; #IMPLIED 40 maxstale %integer; #IMPLIED"> 41<!ENTITY % next.attrs "next %uri; #IMPLIED 42 expr %expression; #IMPLIED "> 43<!ENTITY % submit.attrs "method (get|post) 'get' 44 enctype %content.type; 'application/x-www-form-urlencoded' 45 namelist %variable.names; #IMPLIED"> 46<!ENTITY % throw.attrs "event %event.name; #IMPLIED 47 eventexpr %expression; #IMPLIED 48 message CDATA #IMPLIED 49 messageexpr %expression; #IMPLIED"> 50<!ENTITY % variable "block | data | field | var"> 51<!--================================= Root ================================--> 52<!ELEMENT vxml (%event.handler; | data | form | link | menu | meta | metadata | 53 property | script | var)+> 54<!ATTLIST vxml 55 application %uri; #IMPLIED 56 xml:base %uri; #IMPLIED 57 xml:lang NMTOKEN #IMPLIED 58 xmlns CDATA #REQUIRED 59 xmlns:xsi CDATA #IMPLIED 60 xsi:schemaLocation CDATA #IMPLIED 61 version CDATA #REQUIRED 62> 63<!ELEMENT meta EMPTY> 64<!ATTLIST meta 65 name NMTOKEN #IMPLIED 66 content CDATA #REQUIRED 67 http-equiv NMTOKEN #IMPLIED 68> 69 70<!ELEMENT metadata ANY> 71 72<!--================================ Prompts ==============================--> 73<!-- definitions adapted from SSML 1.0 DTD --> 74<!ENTITY % structure "p | s"> 75<!ENTITY % sentence-elements "break | emphasis | mark | phoneme | prosody | 76 say-as | voice | sub"> 77<!-- addition of enumerate and value elements as 'allowed-within-sentence' 78 audio elements --> 79<!ENTITY % allowed-within-sentence " %audio; | %sentence-elements; "> 80 81<!-- Prompt is modelled on SSML 1.0 DTD speak element: 82- addition of 'bargein', 'bargeintype', 'cond', 'count' and 'timeout' attributes 83- removal of xmlns, xmlns:xsi, and xsi:schemaLocation attributes 84- version attribute fixed as "1.0" 85--> 86<!ELEMENT prompt (%allowed-within-sentence; | foreach | %structure; | lexicon 87 | metadata )*> 88<!ATTLIST prompt 89 bargein %boolean; #IMPLIED 90 bargeintype %bargeintype; #IMPLIED 91 cond %expression; #IMPLIED 92 count %integer; #IMPLIED 93 xml:lang NMTOKEN #IMPLIED 94 timeout %duration; #IMPLIED 95 xml:base %uri; #IMPLIED 96 version CDATA #FIXED "1.0" 97> 98<!ELEMENT enumerate (%allowed-within-sentence; | %structure;)*> 99<!ELEMENT reprompt EMPTY> 100 101<!--================================= Dialogs =============================--> 102<!ENTITY % input "grammar"> 103<!ENTITY % scope "(document | dialog)"> 104<!ELEMENT form (%input; | %event.handler; | filled | initial | object | link | 105 property | record | script | subdialog | transfer | %variable;)*> 106<!ATTLIST form 107 id ID #IMPLIED 108 scope %scope; "dialog" 109> 110<!ENTITY % accept.attrs "accept (exact | approximate) 'exact'"> 111<!ELEMENT menu (%audio; | choice | data | %event.handler; | prompt | property)*> 112<!ATTLIST menu 113 id ID #IMPLIED 114 scope %scope; "dialog" 115 %accept.attrs; 116 dtmf %boolean; "false" 117> 118<!ELEMENT choice ( #PCDATA | %input; )*> 119<!ATTLIST choice 120 %cache.attrs; 121 %accept.attrs; 122 dtmf CDATA #IMPLIED 123 %throw.attrs; 124 fetchaudio %uri; #IMPLIED 125 %next.attrs; 126> 127<!--================================ Audio Output ==============================--> 128<!-- definitions adapted from SSML 1.0 DTD --> 129<!ELEMENT paragraph (%allowed-within-sentence; | sentence | s)*> 130<!ATTLIST paragraph 131 xml:lang NMTOKEN #IMPLIED 132> 133<!ELEMENT sentence (%allowed-within-sentence;)*> 134<!ATTLIST sentence 135 xml:lang NMTOKEN #IMPLIED 136> 137<!ELEMENT p (%allowed-within-sentence; | sentence | s)*> 138<!ATTLIST p 139 xml:lang NMTOKEN #IMPLIED 140> 141<!ELEMENT s (%allowed-within-sentence;)*> 142<!ATTLIST s 143 xml:lang NMTOKEN #IMPLIED 144> 145<!ELEMENT voice (%allowed-within-sentence; | %structure;)*> 146<!ATTLIST voice 147 xml:lang NMTOKEN #IMPLIED 148 gender (male | female | neutral) #IMPLIED 149 age %integer; #IMPLIED 150 variant %integer; #IMPLIED 151 name CDATA #IMPLIED 152> 153<!ELEMENT prosody (%allowed-within-sentence; | %structure;)*> 154<!ATTLIST prosody 155 pitch CDATA #IMPLIED 156 contour CDATA #IMPLIED 157 range CDATA #IMPLIED 158 rate CDATA #IMPLIED 159 duration %duration; #IMPLIED 160 volume CDATA #IMPLIED 161> 162<!-- Changes to SSML 1.0 DTD audio element: 163- src not obligatory, addition of 'expr' and caching attributes 164--> 165<!ELEMENT audio (%allowed-within-sentence; | %structure; | desc)*> 166<!ATTLIST audio 167 src %uri; #IMPLIED 168 expr %expression; #IMPLIED 169 %cache.attrs; 170> 171<!ELEMENT desc (#PCDATA)> 172<!ELEMENT emphasis (%allowed-within-sentence;)*> 173<!ATTLIST emphasis 174 level (strong | moderate | none | reduced) "moderate" 175> 176<!-- Changes to SSML 1.0 DTD say-as element: 177- allows value element as child 178--> 179<!ELEMENT say-as (#PCDATA | value )*> 180<!ATTLIST say-as 181 interpret-as NMTOKEN #REQUIRED 182 format NMTOKEN #IMPLIED 183 detail NMTOKEN #IMPLIED 184> 185<!ELEMENT sub (#PCDATA)> 186<!ATTLIST sub 187 alias CDATA #REQUIRED 188> 189<!ELEMENT phoneme (#PCDATA)> 190<!ATTLIST phoneme 191 ph CDATA #REQUIRED 192 alphabet CDATA #IMPLIED 193> 194<!ELEMENT break EMPTY> 195<!ATTLIST break 196 time CDATA "medium" 197> 198<!ELEMENT mark EMPTY> 199<!ATTLIST mark 200 name ID #IMPLIED 201 nameexpr %expression; #IMPLIED 202> 203<!--================================ Fields ===============================--> 204<!ELEMENT field (%audio; | %event.handler; | filled | %input; | link | option | 205 prompt | property)*> 206<!ATTLIST field 207 %item.attrs; 208 type CDATA #IMPLIED 209 slot NMTOKEN #IMPLIED 210 modal %boolean; "false" 211> 212<!ELEMENT option (#PCDATA)> 213<!ATTLIST option 214 %accept.attrs; 215 dtmf CDATA #IMPLIED 216 value CDATA #IMPLIED 217> 218<!ELEMENT var EMPTY> 219<!ATTLIST var 220 name %restrictedvariable.name; #REQUIRED 221 expr %expression; #IMPLIED 222> 223<!ELEMENT initial (%audio; | %event.handler; | link | prompt | property)*> 224<!ATTLIST initial 225 %item.attrs; 226> 227<!ELEMENT block (%executable.content;)*> 228<!ATTLIST block 229 %item.attrs; 230> 231<!ELEMENT assign EMPTY> 232<!ATTLIST assign 233 name %variable.name; #REQUIRED 234 expr %expression; #REQUIRED 235> 236<!ELEMENT clear EMPTY> 237<!ATTLIST clear 238 namelist %variable.names; #IMPLIED 239> 240<!ELEMENT value EMPTY> 241<!ATTLIST value 242 expr %expression; #REQUIRED 243> 244<!--================================== Events =============================--> 245<!ENTITY % event.handler.attrs "count %integer; #IMPLIED 246 cond %expression; #IMPLIED"> 247<!ELEMENT catch (%executable.content;)*> 248<!ATTLIST catch 249 event %event.names; #IMPLIED 250 %event.handler.attrs; 251> 252<!ELEMENT error (%executable.content;)*> 253<!ATTLIST error 254 %event.handler.attrs; 255> 256<!ELEMENT help (%executable.content;)*> 257<!ATTLIST help 258 %event.handler.attrs; 259> 260<!ELEMENT link (%input;)*> 261<!ATTLIST link 262 %cache.attrs; 263 %next.attrs; 264 fetchaudio %uri; #IMPLIED 265 dtmf CDATA #IMPLIED 266 %throw.attrs; 267> 268<!ELEMENT noinput (%executable.content;)*> 269<!ATTLIST noinput 270 %event.handler.attrs; 271> 272<!ELEMENT nomatch (%executable.content;)*> 273<!ATTLIST nomatch 274 %event.handler.attrs; 275> 276<!ELEMENT throw EMPTY> 277<!ATTLIST throw 278 %throw.attrs; 279> 280<!--============================= Grammar Input =============================--> 281<!-- definitions adapted from SRGS 1.0 DTD --> 282<!ENTITY % rule-expansion "#PCDATA | token | ruleref 283 | item | one-of | tag "> 284<!ELEMENT ruleref EMPTY> 285<!ATTLIST ruleref 286 uri %uri; #IMPLIED 287 type CDATA #IMPLIED 288 special (NULL | VOID | GARBAGE) #IMPLIED 289 xml:lang NMTOKEN #IMPLIED 290> 291<!ELEMENT token (#PCDATA)> 292<!ATTLIST token 293 xml:lang NMTOKEN #IMPLIED 294> 295<!ELEMENT tag (#PCDATA)> 296<!ELEMENT one-of (item)+> 297<!ATTLIST one-of 298 xml:lang NMTOKEN #IMPLIED 299> 300<!ELEMENT item (%rule-expansion;)*> 301<!ATTLIST item 302 repeat NMTOKEN #IMPLIED 303 repeat-prob NMTOKEN #IMPLIED 304 weight NMTOKEN #IMPLIED 305 xml:lang NMTOKEN #IMPLIED 306> 307<!ELEMENT rule (%rule-expansion; | example)*> 308<!ATTLIST rule 309 id ID #REQUIRED 310 scope (private | public) "private" 311> 312<!ELEMENT example (#PCDATA)> 313<!ELEMENT lexicon EMPTY> 314<!ATTLIST lexicon 315 uri %uri; #REQUIRED 316 type CDATA #IMPLIED 317> 318<!-- Changes to SRGS 1.0 DTD grammar element: 319- mixed, unordered content model 320- addition of 'scope', 'src', 'type', 'weight' and caching attributes 321- 'version' attribute is optional 322- removal of xmlns, xmlns:xsi, and xsi:schemaLocation attributes 323--> 324<!ELEMENT grammar (#PCDATA | meta | metadata | lexicon | rule)*> 325<!ATTLIST grammar 326 scope %scope; #IMPLIED 327 src %uri; #IMPLIED 328 srcexpr %expression; #IMPLIED 329 type CDATA #IMPLIED 330 weight CDATA #IMPLIED 331 %cache.attrs; 332 tag-format %uri; #IMPLIED 333 xml:base %uri; #IMPLIED 334 version NMTOKEN #IMPLIED 335 xml:lang NMTOKEN #IMPLIED 336 root IDREF #IMPLIED 337 mode (voice | dtmf) "voice" 338> 339<!--============================= Audio Input =============================--> 340<!ELEMENT record (%audio; | %event.handler; | filled | %input; | prompt | 341 property)*> 342<!ATTLIST record 343 %item.attrs; 344 type CDATA #IMPLIED 345 beep %boolean; "false" 346 maxtime %duration; #IMPLIED 347 modal %boolean; "true" 348 finalsilence %duration; #IMPLIED 349 dtmfterm %boolean; "true" 350> 351<!--============================ Call Control ============================--> 352<!ELEMENT disconnect EMPTY> 353<!ATTLIST disconnect 354 namelist %variable.names; #IMPLIED 355> 356 357<!ELEMENT transfer (%audio; | %event.handler; | filled | %input; | prompt | 358 property)*> 359<!ATTLIST transfer 360 %item.attrs; 361 dest %uri; #IMPLIED 362 destexpr %expression; #IMPLIED 363 bridge %boolean; "false" 364 type NMTOKEN #IMPLIED 365 connecttimeout %duration; #IMPLIED 366 maxtime %duration; #IMPLIED 367 transferaudio %uri; #IMPLIED 368 aai CDATA #IMPLIED 369 aaiexpr %expression; #IMPLIED 370> 371<!--============================ Control Flow ============================--> 372<!ENTITY % if.attrs "cond %expression; #REQUIRED"> 373<!ELEMENT if (%executable.content; | elseif | else)*> 374<!ATTLIST if 375 %if.attrs; 376> 377<!ELEMENT elseif EMPTY> 378<!ATTLIST elseif 379 %if.attrs; 380> 381<!ELEMENT else EMPTY> 382<!ELEMENT exit EMPTY> 383<!ATTLIST exit 384 expr %expression; #IMPLIED 385 namelist %variable.names; #IMPLIED 386> 387<!ELEMENT filled (%executable.content;)*> 388<!ATTLIST filled 389 mode (any | all) #IMPLIED 390 namelist %restrictedvariable.names; #IMPLIED 391> 392 393<!-- executable content + contents of prompt --> 394<!ELEMENT foreach (%executable.content; | %sentence-elements; | 395 %structure; | metadata)* 396> 397<!ATTLIST foreach 398 item %restrictedvariable.name; #REQUIRED 399 array CDATA #REQUIRED 400> 401 402<!ELEMENT goto EMPTY> 403<!ATTLIST goto 404 %cache.attrs; 405 %next.attrs; 406 fetchaudio %uri; #IMPLIED 407 expritem %expression; #IMPLIED 408 nextitem %restrictedvariable.name; #IMPLIED 409> 410<!ELEMENT param EMPTY> 411<!ATTLIST param 412 name NMTOKEN #REQUIRED 413 expr %expression; #IMPLIED 414 value CDATA #IMPLIED 415 valuetype (data | ref) "data" 416 type CDATA #IMPLIED 417> 418<!ELEMENT return EMPTY> 419<!ATTLIST return 420 namelist %variable.names; #IMPLIED 421 %throw.attrs; 422> 423<!ELEMENT subdialog (%audio; | %event.handler; | filled | param | prompt | 424 property)*> 425<!ATTLIST subdialog 426 %item.attrs; 427 src %uri; #IMPLIED 428 srcexpr %expression; #IMPLIED 429 %cache.attrs; 430 fetchaudio %uri; #IMPLIED 431 %submit.attrs; 432> 433<!ELEMENT submit EMPTY> 434<!ATTLIST submit 435 %cache.attrs; 436 %next.attrs; 437 fetchaudio %uri; #IMPLIED 438 %submit.attrs; 439> 440<!--========================== Miscellaneous ==============================--> 441<!ELEMENT data EMPTY > 442<!ATTLIST data 443 name %restrictedvariable.name; #IMPLIED 444 src %uri; #IMPLIED 445 srcexpr %expression; #IMPLIED 446 fetchaudio %uri; #IMPLIED 447 %submit.attrs; 448 %cache.attrs; 449> 450 451<!ELEMENT log (#PCDATA | value)*> 452<!ATTLIST log 453 label CDATA #IMPLIED 454 expr %expression; #IMPLIED 455> 456<!ELEMENT object (%audio; | %event.handler; | filled | param | prompt | 457 property)*> 458<!ATTLIST object 459 %item.attrs; 460 %cache.attrs; 461 classid %uri; #IMPLIED 462 codebase %uri; #IMPLIED 463 data %uri; #IMPLIED 464 type CDATA #IMPLIED 465 codetype CDATA #IMPLIED 466 archive %uri; #IMPLIED 467> 468<!ELEMENT property EMPTY> 469<!ATTLIST property 470 name NMTOKEN #REQUIRED 471 value CDATA #REQUIRED 472> 473<!ELEMENT script (#PCDATA)> 474<!ATTLIST script 475 src %uri; #IMPLIED 476 srcexpr %expression; #IMPLIED 477 charset CDATA #IMPLIED 478 %cache.attrs; 479> 480