1 <!-- 2 VoiceXML 2.1 DTD (20060322) 3 4 Copyright 1998-2006 W3C (MIT, ERCIM, Keio), All Rights Reserved. 5 6 Permission to use, copy, modify and distribute the VoiceXML DTD and 7 its accompanying documentation for any purpose and without fee is 8 hereby granted in perpetuity, provided that the above copyright 9 notice and this paragraph appear in all copies. 10 11 The copyright holders make no representation about the suitability 12 of the DTD for any purpose. It is provided "as is" without expressed 13 or 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 "CDATA"> 29 <!ENTITY % variable.name "CDATA"> 30 <!ENTITY % restrictedvariable.names "CDATA"> 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 #FIXED 'http://www.w3.org/2001/vxml' 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 | meta )*> 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 | %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 (exact | approximate) #IMPLIED 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 p (%allowed-within-sentence; | s)*> 130 <!ATTLIST p 131 xml:lang NMTOKEN #IMPLIED 132 > 133 <!ELEMENT s (%allowed-within-sentence;)*> 134 <!ATTLIST s 135 xml:lang NMTOKEN #IMPLIED 136 > 137 <!ELEMENT voice (%allowed-within-sentence; | %structure;)*> 138 <!ATTLIST voice 139 xml:lang NMTOKEN #IMPLIED 140 gender (male | female | neutral) #IMPLIED 141 age %integer; #IMPLIED 142 variant %integer; #IMPLIED 143 name CDATA #IMPLIED 144 > 145 <!ELEMENT prosody (%allowed-within-sentence; | %structure;)*> 146 <!ATTLIST prosody 147 pitch CDATA #IMPLIED 148 contour CDATA #IMPLIED 149 range CDATA #IMPLIED 150 rate CDATA #IMPLIED 151 duration %duration; #IMPLIED 152 volume CDATA #IMPLIED 153 > 154 <!-- Changes to SSML 1.0 DTD audio element: 155 - src not obligatory, addition of 'expr' and caching attributes 156 --> 157 <!ELEMENT audio (%allowed-within-sentence; | %structure; | desc)*> 158 <!ATTLIST audio 159 src %uri; #IMPLIED 160 expr %expression; #IMPLIED 161 %cache.attrs; 162 > 163 <!ELEMENT desc (#PCDATA)> 164 <!ATTLIST desc 165 xml:lang NMTOKEN #IMPLIED 166 > 167 <!ELEMENT emphasis (%allowed-within-sentence;)*> 168 <!ATTLIST emphasis 169 level (strong | moderate | none | reduced) "moderate" 170 > 171 <!-- Changes to SSML 1.0 DTD say-as element: 172 - allows value element as child 173 --> 174 <!ELEMENT say-as (#PCDATA | value )*> 175 <!ATTLIST say-as 176 interpret-as NMTOKEN #REQUIRED 177 format NMTOKEN #IMPLIED 178 detail NMTOKEN #IMPLIED 179 > 180 <!ELEMENT sub (#PCDATA)> 181 <!ATTLIST sub 182 alias CDATA #REQUIRED 183 > 184 <!ELEMENT phoneme (#PCDATA)> 185 <!ATTLIST phoneme 186 ph CDATA #REQUIRED 187 alphabet CDATA #IMPLIED 188 > 189 <!ELEMENT break EMPTY> 190 <!ATTLIST break 191 time CDATA #IMPLIED 192 strength (none | x-weak | weak | medium | strong | x-strong) "medium" 193 > 194 <!ELEMENT mark EMPTY> 195 <!ATTLIST mark 196 name ID #IMPLIED 197 nameexpr %expression; #IMPLIED 198 > 199 <!--================================ Fields ===============================--> 200 <!ELEMENT field (%audio; | %event.handler; | filled | %input; | link | option | 201 prompt | property)*> 202 <!ATTLIST field 203 %item.attrs; 204 type CDATA #IMPLIED 205 slot NMTOKEN #IMPLIED 206 modal %boolean; "false" 207 > 208 <!ELEMENT option (#PCDATA)> 209 <!ATTLIST option 210 %accept.attrs; 211 dtmf CDATA #IMPLIED 212 value CDATA #IMPLIED 213 > 214 <!ELEMENT var EMPTY> 215 <!ATTLIST var 216 name %restrictedvariable.name; #REQUIRED 217 expr %expression; #IMPLIED 218 > 219 <!ELEMENT initial (%audio; | %event.handler; | link | prompt | property)*> 220 <!ATTLIST initial 221 %item.attrs; 222 > 223 <!ELEMENT block (%executable.content;)*> 224 <!ATTLIST block 225 %item.attrs; 226 > 227 <!ELEMENT assign EMPTY> 228 <!ATTLIST assign 229 name %variable.name; #REQUIRED 230 expr %expression; #REQUIRED 231 > 232 <!ELEMENT clear EMPTY> 233 <!ATTLIST clear 234 namelist %variable.names; #IMPLIED 235 > 236 <!ELEMENT value EMPTY> 237 <!ATTLIST value 238 expr %expression; #REQUIRED 239 > 240 <!--================================== Events =============================--> 241 <!ENTITY % event.handler.attrs "count %integer; #IMPLIED 242 cond %expression; #IMPLIED"> 243 <!ELEMENT catch (%executable.content;)*> 244 <!ATTLIST catch 245 event %event.names; #IMPLIED 246 %event.handler.attrs; 247 > 248 <!ELEMENT error (%executable.content;)*> 249 <!ATTLIST error 250 %event.handler.attrs; 251 > 252 <!ELEMENT help (%executable.content;)*> 253 <!ATTLIST help 254 %event.handler.attrs; 255 > 256 <!ELEMENT link (%input;)*> 257 <!ATTLIST link 258 %cache.attrs; 259 %next.attrs; 260 fetchaudio %uri; #IMPLIED 261 dtmf CDATA #IMPLIED 262 %throw.attrs; 263 > 264 <!ELEMENT noinput (%executable.content;)*> 265 <!ATTLIST noinput 266 %event.handler.attrs; 267 > 268 <!ELEMENT nomatch (%executable.content;)*> 269 <!ATTLIST nomatch 270 %event.handler.attrs; 271 > 272 <!ELEMENT throw EMPTY> 273 <!ATTLIST throw 274 %throw.attrs; 275 > 276 <!--============================= Grammar Input =============================--> 277 <!-- definitions adapted from SRGS 1.0 DTD --> 278 <!ENTITY % rule-expansion "#PCDATA | token | ruleref 279 | item | one-of | tag "> 280 <!ELEMENT ruleref EMPTY> 281 <!ATTLIST ruleref 282 uri %uri; #IMPLIED 283 type CDATA #IMPLIED 284 special (NULL | VOID | GARBAGE) #IMPLIED 285 > 286 <!ELEMENT token (#PCDATA)> 287 <!ATTLIST token 288 xml:lang NMTOKEN #IMPLIED 289 > 290 <!ELEMENT tag (#PCDATA)> 291 <!ELEMENT one-of (item)+> 292 <!ATTLIST one-of 293 xml:lang NMTOKEN #IMPLIED 294 > 295 <!ELEMENT item (%rule-expansion;)*> 296 <!ATTLIST item 297 repeat NMTOKEN #IMPLIED 298 repeat-prob NMTOKEN #IMPLIED 299 weight NMTOKEN #IMPLIED 300 xml:lang NMTOKEN #IMPLIED 301 > 302 <!ELEMENT rule (%rule-expansion; | example)*> 303 <!ATTLIST rule 304 id ID #REQUIRED 305 scope (private | public) "private" 306 > 307 <!ELEMENT example (#PCDATA)> 308 <!ELEMENT lexicon EMPTY> 309 <!ATTLIST lexicon 310 uri %uri; #REQUIRED 311 type CDATA #IMPLIED 312 > 313 <!-- Changes to SRGS 1.0 DTD grammar element: 314 - mixed, unordered content model 315 - addition of 'scope', 'src', 'type', 'weight' and caching attributes 316 - 'version' attribute is optional 317 - removal of xmlns, xmlns:xsi, and xsi:schemaLocation attributes 318 --> 319 <!ELEMENT grammar (#PCDATA | meta | metadata | lexicon | rule | tag)*> 320 <!ATTLIST grammar 321 scope %scope; #IMPLIED 322 src %uri; #IMPLIED 323 srcexpr %expression; #IMPLIED 324 type CDATA #IMPLIED 325 weight CDATA #IMPLIED 326 %cache.attrs; 327 tag-format %uri; #IMPLIED 328 xml:base %uri; #IMPLIED 329 version NMTOKEN #IMPLIED 330 xml:lang NMTOKEN #IMPLIED 331 root IDREF #IMPLIED 332 mode (voice | dtmf) "voice" 333 > 334 <!--============================= Audio Input =============================--> 335 <!ELEMENT record (%audio; | %event.handler; | filled | %input; | prompt | 336 property)*> 337 <!ATTLIST record 338 %item.attrs; 339 type CDATA #IMPLIED 340 beep %boolean; "false" 341 maxtime %duration; #IMPLIED 342 modal %boolean; "true" 343 finalsilence %duration; #IMPLIED 344 dtmfterm %boolean; "true" 345 > 346 <!--============================ Call Control ============================--> 347 <!ELEMENT disconnect EMPTY> 348 <!ATTLIST disconnect 349 namelist %variable.names; #IMPLIED 350 > 351 352 <!ELEMENT transfer (%audio; | %event.handler; | filled | %input; | prompt | 353 property)*> 354 <!ATTLIST transfer 355 %item.attrs; 356 dest %uri; #IMPLIED 357 destexpr %expression; #IMPLIED 358 bridge %boolean; #IMPLIED 359 type NMTOKEN #IMPLIED 360 connecttimeout %duration; #IMPLIED 361 maxtime %duration; #IMPLIED 362 transferaudio %uri; #IMPLIED 363 aai CDATA #IMPLIED 364 aaiexpr %expression; #IMPLIED 365 > 366 <!--============================ Control Flow ============================--> 367 <!ENTITY % if.attrs "cond %expression; #REQUIRED"> 368 <!ELEMENT if (%executable.content; | elseif | else)*> 369 <!ATTLIST if 370 %if.attrs; 371 > 372 <!ELEMENT elseif EMPTY> 373 <!ATTLIST elseif 374 %if.attrs; 375 > 376 <!ELEMENT else EMPTY> 377 <!ELEMENT exit EMPTY> 378 <!ATTLIST exit 379 expr %expression; #IMPLIED 380 namelist %variable.names; #IMPLIED 381 > 382 <!ELEMENT filled (%executable.content;)*> 383 <!ATTLIST filled 384 mode (any | all) #IMPLIED 385 namelist %restrictedvariable.names; #IMPLIED 386 > 387 388 <!-- executable content + contents of prompt --> 389 <!ELEMENT foreach (%executable.content; | %sentence-elements; | 390 %structure; )* 391 > 392 <!ATTLIST foreach 393 item %restrictedvariable.name; #REQUIRED 394 array CDATA #REQUIRED 395 > 396 397 <!ELEMENT goto EMPTY> 398 <!ATTLIST goto 399 %cache.attrs; 400 %next.attrs; 401 fetchaudio %uri; #IMPLIED 402 expritem %expression; #IMPLIED 403 nextitem %restrictedvariable.name; #IMPLIED 404 > 405 <!ELEMENT param EMPTY> 406 <!ATTLIST param 407 name NMTOKEN #REQUIRED 408 expr %expression; #IMPLIED 409 value CDATA #IMPLIED 410 valuetype (data | ref) "data" 411 type CDATA #IMPLIED 412 > 413 <!ELEMENT return EMPTY> 414 <!ATTLIST return 415 namelist %variable.names; #IMPLIED 416 %throw.attrs; 417 > 418 <!ELEMENT subdialog (%audio; | %event.handler; | filled | param | prompt | 419 property)*> 420 <!ATTLIST subdialog 421 %item.attrs; 422 src %uri; #IMPLIED 423 srcexpr %expression; #IMPLIED 424 %cache.attrs; 425 fetchaudio %uri; #IMPLIED 426 %submit.attrs; 427 > 428 <!ELEMENT submit EMPTY> 429 <!ATTLIST submit 430 %cache.attrs; 431 %next.attrs; 432 fetchaudio %uri; #IMPLIED 433 %submit.attrs; 434 > 435 <!--========================== Miscellaneous ==============================--> 436 <!ELEMENT data EMPTY> 437 <!ATTLIST data 438 name %restrictedvariable.name; #IMPLIED 439 src %uri; #IMPLIED 440 srcexpr %expression; #IMPLIED 441 fetchaudio %uri; #IMPLIED 442 %submit.attrs; 443 %cache.attrs; 444 > 445 446 <!ELEMENT log (#PCDATA | value)*> 447 <!ATTLIST log 448 label CDATA #IMPLIED 449 expr %expression; #IMPLIED 450 > 451 <!ELEMENT object (%audio; | %event.handler; | filled | param | prompt | 452 property)*> 453 <!ATTLIST object 454 %item.attrs; 455 %cache.attrs; 456 classid %uri; #IMPLIED 457 codebase %uri; #IMPLIED 458 data %uri; #IMPLIED 459 type CDATA #IMPLIED 460 codetype CDATA #IMPLIED 461 archive %uri; #IMPLIED 462 > 463 <!ELEMENT property EMPTY> 464 <!ATTLIST property 465 name NMTOKEN #REQUIRED 466 value CDATA #REQUIRED 467 > 468 <!ELEMENT script (#PCDATA)> 469 <!ATTLIST script 470 src %uri; #IMPLIED 471 srcexpr %expression; #IMPLIED 472 charset CDATA #IMPLIED 473 %cache.attrs; 474 >