summaryrefslogtreecommitdiffstats
path: root/htdocs/sgml-lib
diff options
context:
space:
mode:
authorVille Skytt? <ville.skytta@iki.fi>2011-10-30 19:52:52 +0200
committerVille Skytt? <ville.skytta@iki.fi>2011-10-30 19:52:52 +0200
commit34a557bd2ebaf71fb7974992dd5d1744ad1d4655 (patch)
treee4bc045e1694dfe3f1205ce625b782e8b9fa43ee /htdocs/sgml-lib
parent660d82032d486a89c07755e901535a92c37ad3ea (diff)
downloadmarkup-validator-34a557bd2ebaf71fb7974992dd5d1744ad1d4655.zip
markup-validator-34a557bd2ebaf71fb7974992dd5d1744ad1d4655.tar.gz
markup-validator-34a557bd2ebaf71fb7974992dd5d1744ad1d4655.tar.bz2
Add VoiceXML 2.0 and 2.1 DTDs.
Diffstat (limited to 'htdocs/sgml-lib')
-rw-r--r--htdocs/sgml-lib/REC-voicexml20-20040316/vxml.dtd446
-rw-r--r--htdocs/sgml-lib/REC-voicexml21-20070619/vxml.dtd474
-rw-r--r--htdocs/sgml-lib/catalog.xml2
-rw-r--r--htdocs/sgml-lib/xml.soc12
4 files changed, 934 insertions, 0 deletions
diff --git a/htdocs/sgml-lib/REC-voicexml20-20040316/vxml.dtd b/htdocs/sgml-lib/REC-voicexml20-20040316/vxml.dtd
new file mode 100644
index 0000000..3eba640
--- /dev/null
+++ b/htdocs/sgml-lib/REC-voicexml20-20040316/vxml.dtd
@@ -0,0 +1,446 @@
+<!--
+VoiceXML 2.0 DTD (20031213)
+
+Copyright 1998-2004 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
+or implied warranty.
+-->
+
+<!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 | disconnect |
+ exit | goto | if | log | prompt |
+ reprompt | return | script | submit | throw | var ">
+<!ENTITY % expression "CDATA">
+<!ENTITY % restrictedvariable.name "NMTOKEN">
+<!ENTITY % variable.name "CDATA">
+<!ENTITY % restrictedvariable.names "NMTOKENS">
+<!ENTITY % variable.names "CDATA">
+<!ENTITY % integer "CDATA">
+<!ENTITY % item.attrs "name %restrictedvariable.name; #IMPLIED
+ cond %expression; #IMPLIED
+ expr %expression; #IMPLIED ">
+<!ENTITY % uri "CDATA">
+<!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
+ message CDATA #IMPLIED
+ messageexpr %expression; #IMPLIED">
+<!ENTITY % variable "block | field | var">
+<!--================================= Root ================================-->
+<!ELEMENT vxml (%event.handler; | form | link | menu | meta | metadata |
+ property | script | var)+>
+<!ATTLIST vxml
+ application %uri; #IMPLIED
+ xml:base %uri; #IMPLIED
+ xml:lang NMTOKEN #IMPLIED
+ xmlns CDATA #FIXED 'http://www.w3.org/2001/vxml'
+ xmlns:xsi CDATA #IMPLIED
+ xsi:schemaLocation CDATA #IMPLIED
+ version CDATA #REQUIRED
+>
+<!ELEMENT meta EMPTY>
+<!ATTLIST meta
+ name NMTOKEN #IMPLIED
+ content CDATA #REQUIRED
+ http-equiv NMTOKEN #IMPLIED
+>
+
+<!ELEMENT metadata ANY>
+
+<!--================================ Prompts ==============================-->
+<!-- definitions adapted from SSML 1.0 DTD -->
+<!ENTITY % structure "p | s">
+<!ENTITY % sentence-elements "break | emphasis | mark | phoneme | prosody |
+ say-as | voice | sub">
+<!-- addition of enumerate and value elements as 'allowed-within-sentence'
+ audio elements -->
+<!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; | %structure; | lexicon
+ | metadata | meta )*>
+<!ATTLIST prompt
+ bargein %boolean; #IMPLIED
+ bargeintype %bargeintype; #IMPLIED
+ cond %expression; #IMPLIED
+ count %integer; #IMPLIED
+ xml:lang NMTOKEN #IMPLIED
+ timeout %duration; #IMPLIED
+ xml:base %uri; #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;)*>
+<!ATTLIST form
+ id ID #IMPLIED
+ scope %scope; "dialog"
+>
+<!ENTITY % accept.attrs "accept (exact | approximate) 'exact'">
+<!ELEMENT menu (%audio; | choice | %event.handler; | prompt | property)*>
+<!ATTLIST menu
+ id ID #IMPLIED
+ scope %scope; "dialog"
+ %accept.attrs;
+ dtmf %boolean; "false"
+>
+<!ELEMENT choice ( #PCDATA | %input; )*>
+<!ATTLIST choice
+ %cache.attrs;
+ accept (exact | approximate) #IMPLIED
+ dtmf CDATA #IMPLIED
+ %throw.attrs;
+ fetchaudio %uri; #IMPLIED
+ %next.attrs;
+>
+<!--================================ Audio Output ==============================-->
+<!-- definitions adapted from SSML 1.0 DTD -->
+<!ELEMENT p (%allowed-within-sentence; | s)*>
+<!ATTLIST p
+ xml:lang NMTOKEN #IMPLIED
+>
+<!ELEMENT s (%allowed-within-sentence;)*>
+<!ATTLIST s
+ xml:lang NMTOKEN #IMPLIED
+>
+<!ELEMENT voice (%allowed-within-sentence; | %structure;)*>
+<!ATTLIST voice
+ xml:lang NMTOKEN #IMPLIED
+ gender (male | female | neutral) #IMPLIED
+ age %integer; #IMPLIED
+ variant %integer; #IMPLIED
+ name CDATA #IMPLIED
+>
+<!ELEMENT prosody (%allowed-within-sentence; | %structure;)*>
+<!ATTLIST prosody
+ pitch CDATA #IMPLIED
+ contour CDATA #IMPLIED
+ range CDATA #IMPLIED
+ rate CDATA #IMPLIED
+ duration %duration; #IMPLIED
+ volume CDATA #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)*>
+<!ATTLIST audio
+ src %uri; #IMPLIED
+ expr %expression; #IMPLIED
+ %cache.attrs;
+>
+<!ELEMENT desc (#PCDATA)>
+<!ATTLIST desc
+ xml:lang NMTOKEN #IMPLIED
+>
+<!ELEMENT emphasis (%allowed-within-sentence;)*>
+<!ATTLIST emphasis
+ 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 )*>
+<!ATTLIST say-as
+ interpret-as NMTOKEN #REQUIRED
+ format NMTOKEN #IMPLIED
+ detail NMTOKEN #IMPLIED
+>
+<!ELEMENT sub (#PCDATA)>
+<!ATTLIST sub
+ alias CDATA #REQUIRED
+>
+<!ELEMENT phoneme (#PCDATA)>
+<!ATTLIST phoneme
+ ph CDATA #REQUIRED
+ alphabet CDATA #IMPLIED
+>
+<!ELEMENT break EMPTY>
+<!ATTLIST break
+ time CDATA #IMPLIED
+ strength (none | x-weak | weak | medium | strong | x-strong) "medium"
+>
+<!ELEMENT mark EMPTY>
+<!ATTLIST mark
+ name CDATA #REQUIRED
+>
+<!--================================ Fields ===============================-->
+<!ELEMENT field (%audio; | %event.handler; | filled | %input; | link | option |
+ prompt | property)*>
+<!ATTLIST field
+ %item.attrs;
+ type CDATA #IMPLIED
+ slot NMTOKEN #IMPLIED
+ modal %boolean; "false"
+>
+<!ELEMENT option (#PCDATA)>
+<!ATTLIST option
+ %accept.attrs;
+ dtmf CDATA #IMPLIED
+ value CDATA #IMPLIED
+>
+<!ELEMENT var EMPTY>
+<!ATTLIST var
+ name %restrictedvariable.name; #REQUIRED
+ expr %expression; #IMPLIED
+>
+<!ELEMENT initial (%audio; | %event.handler; | link | prompt | property)*>
+<!ATTLIST initial
+ %item.attrs;
+>
+<!ELEMENT block (%executable.content;)*>
+<!ATTLIST block
+ %item.attrs;
+>
+<!ELEMENT assign EMPTY>
+<!ATTLIST assign
+ name %variable.name; #REQUIRED
+ expr %expression; #REQUIRED
+>
+<!ELEMENT clear EMPTY>
+<!ATTLIST clear
+ namelist %variable.names; #IMPLIED
+>
+<!ELEMENT value EMPTY>
+<!ATTLIST value
+ expr %expression; #REQUIRED
+>
+<!--================================== Events =============================-->
+<!ENTITY % event.handler.attrs "count %integer; #IMPLIED
+ cond %expression; #IMPLIED">
+<!ELEMENT catch (%executable.content;)*>
+<!ATTLIST catch
+ event %event.names; #IMPLIED
+ %event.handler.attrs;
+>
+<!ELEMENT error (%executable.content;)*>
+<!ATTLIST error
+ %event.handler.attrs;
+>
+<!ELEMENT help (%executable.content;)*>
+<!ATTLIST help
+ %event.handler.attrs;
+>
+<!ELEMENT link (%input;)*>
+<!ATTLIST link
+ %cache.attrs;
+ %next.attrs;
+ fetchaudio %uri; #IMPLIED
+ dtmf CDATA #IMPLIED
+ %throw.attrs;
+>
+<!ELEMENT noinput (%executable.content;)*>
+<!ATTLIST noinput
+ %event.handler.attrs;
+>
+<!ELEMENT nomatch (%executable.content;)*>
+<!ATTLIST nomatch
+ %event.handler.attrs;
+>
+<!ELEMENT throw EMPTY>
+<!ATTLIST throw
+ %throw.attrs;
+>
+<!--============================= Grammar Input =============================-->
+<!-- definitions adapted from SRGS 1.0 DTD -->
+<!ENTITY % rule-expansion "#PCDATA | token | ruleref
+ | item | one-of | tag ">
+<!ELEMENT ruleref EMPTY>
+<!ATTLIST ruleref
+ uri %uri; #IMPLIED
+ type CDATA #IMPLIED
+ special (NULL | VOID | GARBAGE) #IMPLIED
+>
+<!ELEMENT token (#PCDATA)>
+<!ATTLIST token
+ xml:lang NMTOKEN #IMPLIED
+>
+<!ELEMENT tag (#PCDATA)>
+<!ELEMENT one-of (item)+>
+<!ATTLIST one-of
+ xml:lang NMTOKEN #IMPLIED
+>
+<!ELEMENT item (%rule-expansion;)*>
+<!ATTLIST item
+ repeat NMTOKEN #IMPLIED
+ repeat-prob NMTOKEN #IMPLIED
+ weight NMTOKEN #IMPLIED
+ xml:lang NMTOKEN #IMPLIED
+>
+<!ELEMENT rule (%rule-expansion; | example)*>
+<!ATTLIST rule
+ id ID #REQUIRED
+ scope (private | public) "private"
+>
+<!ELEMENT example (#PCDATA)>
+<!ELEMENT lexicon EMPTY>
+<!ATTLIST lexicon
+ uri %uri; #REQUIRED
+ type CDATA #IMPLIED
+>
+<!-- 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)*>
+<!ATTLIST grammar
+ scope %scope; #IMPLIED
+ src %uri; #IMPLIED
+ type CDATA #IMPLIED
+ weight CDATA #IMPLIED
+ %cache.attrs;
+ tag-format %uri; #IMPLIED
+ xml:base %uri; #IMPLIED
+ version NMTOKEN #IMPLIED
+ xml:lang NMTOKEN #IMPLIED
+ root IDREF #IMPLIED
+ mode (voice | dtmf) "voice"
+>
+<!--============================= Audio Input =============================-->
+<!ELEMENT record (%audio; | %event.handler; | filled | %input; | prompt |
+ property)*>
+<!ATTLIST record
+ %item.attrs;
+ type CDATA #IMPLIED
+ beep %boolean; "false"
+ maxtime %duration; #IMPLIED
+ modal %boolean; "true"
+ finalsilence %duration; #IMPLIED
+ dtmfterm %boolean; "true"
+>
+<!--============================ Call Control ============================-->
+<!ELEMENT disconnect EMPTY>
+<!ELEMENT transfer (%audio; | %event.handler; | filled | %input; | prompt |
+ property)*>
+<!ATTLIST transfer
+ %item.attrs;
+ dest %uri; #IMPLIED
+ destexpr %expression; #IMPLIED
+ bridge %boolean; "false"
+ connecttimeout %duration; #IMPLIED
+ maxtime %duration; #IMPLIED
+ transferaudio %uri; #IMPLIED
+ aai CDATA #IMPLIED
+ aaiexpr %expression; #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 %variable.names; #IMPLIED
+>
+<!ELEMENT filled (%executable.content;)*>
+<!ATTLIST filled
+ mode (any | all) #IMPLIED
+ namelist %restrictedvariable.names; #IMPLIED
+>
+<!ELEMENT goto EMPTY>
+<!ATTLIST goto
+ %cache.attrs;
+ %next.attrs;
+ fetchaudio %uri; #IMPLIED
+ expritem %expression; #IMPLIED
+ nextitem %restrictedvariable.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 %variable.names; #IMPLIED
+ %throw.attrs;
+>
+<!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;
+ fetchaudio %uri; #IMPLIED
+ %submit.attrs;
+>
+<!--========================== Miscellaneous ==============================-->
+<!ELEMENT log (#PCDATA | value)*>
+<!ATTLIST log
+ label CDATA #IMPLIED
+ expr %expression; #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;
+>
diff --git a/htdocs/sgml-lib/REC-voicexml21-20070619/vxml.dtd b/htdocs/sgml-lib/REC-voicexml21-20070619/vxml.dtd
new file mode 100644
index 0000000..7eb8e80
--- /dev/null
+++ b/htdocs/sgml-lib/REC-voicexml21-20070619/vxml.dtd
@@ -0,0 +1,474 @@
+<!--
+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
+or implied warranty.
+-->
+
+<!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 ">
+<!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 % uri "CDATA">
+<!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
+ message CDATA #IMPLIED
+ messageexpr %expression; #IMPLIED">
+<!ENTITY % variable "block | data | field | var">
+<!--================================= Root ================================-->
+<!ELEMENT vxml (%event.handler; | data | form | link | menu | meta | metadata |
+ property | script | var)+>
+<!ATTLIST vxml
+ application %uri; #IMPLIED
+ xml:base %uri; #IMPLIED
+ xml:lang NMTOKEN #IMPLIED
+ xmlns CDATA #FIXED 'http://www.w3.org/2001/vxml'
+ xmlns:xsi CDATA #IMPLIED
+ xsi:schemaLocation CDATA #IMPLIED
+ version CDATA #REQUIRED
+>
+<!ELEMENT meta EMPTY>
+<!ATTLIST meta
+ name NMTOKEN #IMPLIED
+ content CDATA #REQUIRED
+ http-equiv NMTOKEN #IMPLIED
+>
+
+<!ELEMENT metadata ANY>
+
+<!--================================ Prompts ==============================-->
+<!-- definitions adapted from SSML 1.0 DTD -->
+<!ENTITY % structure "p | s">
+<!ENTITY % sentence-elements "break | emphasis | mark | phoneme | prosody |
+ say-as | voice | sub">
+<!-- addition of enumerate and value elements as 'allowed-within-sentence'
+ audio elements -->
+<!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
+ | metadata | meta )*>
+<!ATTLIST prompt
+ bargein %boolean; #IMPLIED
+ bargeintype %bargeintype; #IMPLIED
+ cond %expression; #IMPLIED
+ count %integer; #IMPLIED
+ xml:lang NMTOKEN #IMPLIED
+ timeout %duration; #IMPLIED
+ xml:base %uri; #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;)*>
+<!ATTLIST form
+ id ID #IMPLIED
+ scope %scope; "dialog"
+>
+<!ENTITY % accept.attrs "accept (exact | approximate) 'exact'">
+<!ELEMENT menu (%audio; | choice | %event.handler; | prompt | property)*>
+<!ATTLIST menu
+ id ID #IMPLIED
+ scope %scope; "dialog"
+ %accept.attrs;
+ dtmf %boolean; "false"
+>
+<!ELEMENT choice ( #PCDATA | %input; )*>
+<!ATTLIST choice
+ %cache.attrs;
+ accept (exact | approximate) #IMPLIED
+ dtmf CDATA #IMPLIED
+ %throw.attrs;
+ fetchaudio %uri; #IMPLIED
+ %next.attrs;
+>
+<!--================================ Audio Output ==============================-->
+<!-- definitions adapted from SSML 1.0 DTD -->
+<!ELEMENT p (%allowed-within-sentence; | s)*>
+<!ATTLIST p
+ xml:lang NMTOKEN #IMPLIED
+>
+<!ELEMENT s (%allowed-within-sentence;)*>
+<!ATTLIST s
+ xml:lang NMTOKEN #IMPLIED
+>
+<!ELEMENT voice (%allowed-within-sentence; | %structure;)*>
+<!ATTLIST voice
+ xml:lang NMTOKEN #IMPLIED
+ gender (male | female | neutral) #IMPLIED
+ age %integer; #IMPLIED
+ variant %integer; #IMPLIED
+ name CDATA #IMPLIED
+>
+<!ELEMENT prosody (%allowed-within-sentence; | %structure;)*>
+<!ATTLIST prosody
+ pitch CDATA #IMPLIED
+ contour CDATA #IMPLIED
+ range CDATA #IMPLIED
+ rate CDATA #IMPLIED
+ duration %duration; #IMPLIED
+ volume CDATA #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)*>
+<!ATTLIST audio
+ src %uri; #IMPLIED
+ expr %expression; #IMPLIED
+ %cache.attrs;
+>
+<!ELEMENT desc (#PCDATA)>
+<!ATTLIST desc
+ xml:lang NMTOKEN #IMPLIED
+>
+<!ELEMENT emphasis (%allowed-within-sentence;)*>
+<!ATTLIST emphasis
+ 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 )*>
+<!ATTLIST say-as
+ interpret-as NMTOKEN #REQUIRED
+ format NMTOKEN #IMPLIED
+ detail NMTOKEN #IMPLIED
+>
+<!ELEMENT sub (#PCDATA)>
+<!ATTLIST sub
+ alias CDATA #REQUIRED
+>
+<!ELEMENT phoneme (#PCDATA)>
+<!ATTLIST phoneme
+ ph CDATA #REQUIRED
+ alphabet CDATA #IMPLIED
+>
+<!ELEMENT break EMPTY>
+<!ATTLIST break
+ time CDATA #IMPLIED
+ strength (none | x-weak | weak | medium | strong | x-strong) "medium"
+>
+<!ELEMENT mark EMPTY>
+<!ATTLIST mark
+ name ID #IMPLIED
+ nameexpr %expression; #IMPLIED
+>
+<!--================================ Fields ===============================-->
+<!ELEMENT field (%audio; | %event.handler; | filled | %input; | link | option |
+ prompt | property)*>
+<!ATTLIST field
+ %item.attrs;
+ type CDATA #IMPLIED
+ slot NMTOKEN #IMPLIED
+ modal %boolean; "false"
+>
+<!ELEMENT option (#PCDATA)>
+<!ATTLIST option
+ %accept.attrs;
+ dtmf CDATA #IMPLIED
+ value CDATA #IMPLIED
+>
+<!ELEMENT var EMPTY>
+<!ATTLIST var
+ name %restrictedvariable.name; #REQUIRED
+ expr %expression; #IMPLIED
+>
+<!ELEMENT initial (%audio; | %event.handler; | link | prompt | property)*>
+<!ATTLIST initial
+ %item.attrs;
+>
+<!ELEMENT block (%executable.content;)*>
+<!ATTLIST block
+ %item.attrs;
+>
+<!ELEMENT assign EMPTY>
+<!ATTLIST assign
+ name %variable.name; #REQUIRED
+ expr %expression; #REQUIRED
+>
+<!ELEMENT clear EMPTY>
+<!ATTLIST clear
+ namelist %variable.names; #IMPLIED
+>
+<!ELEMENT value EMPTY>
+<!ATTLIST value
+ expr %expression; #REQUIRED
+>
+<!--================================== Events =============================-->
+<!ENTITY % event.handler.attrs "count %integer; #IMPLIED
+ cond %expression; #IMPLIED">
+<!ELEMENT catch (%executable.content;)*>
+<!ATTLIST catch
+ event %event.names; #IMPLIED
+ %event.handler.attrs;
+>
+<!ELEMENT error (%executable.content;)*>
+<!ATTLIST error
+ %event.handler.attrs;
+>
+<!ELEMENT help (%executable.content;)*>
+<!ATTLIST help
+ %event.handler.attrs;
+>
+<!ELEMENT link (%input;)*>
+<!ATTLIST link
+ %cache.attrs;
+ %next.attrs;
+ fetchaudio %uri; #IMPLIED
+ dtmf CDATA #IMPLIED
+ %throw.attrs;
+>
+<!ELEMENT noinput (%executable.content;)*>
+<!ATTLIST noinput
+ %event.handler.attrs;
+>
+<!ELEMENT nomatch (%executable.content;)*>
+<!ATTLIST nomatch
+ %event.handler.attrs;
+>
+<!ELEMENT throw EMPTY>
+<!ATTLIST throw
+ %throw.attrs;
+>
+<!--============================= Grammar Input =============================-->
+<!-- definitions adapted from SRGS 1.0 DTD -->
+<!ENTITY % rule-expansion "#PCDATA | token | ruleref
+ | item | one-of | tag ">
+<!ELEMENT ruleref EMPTY>
+<!ATTLIST ruleref
+ uri %uri; #IMPLIED
+ type CDATA #IMPLIED
+ special (NULL | VOID | GARBAGE) #IMPLIED
+>
+<!ELEMENT token (#PCDATA)>
+<!ATTLIST token
+ xml:lang NMTOKEN #IMPLIED
+>
+<!ELEMENT tag (#PCDATA)>
+<!ELEMENT one-of (item)+>
+<!ATTLIST one-of
+ xml:lang NMTOKEN #IMPLIED
+>
+<!ELEMENT item (%rule-expansion;)*>
+<!ATTLIST item
+ repeat NMTOKEN #IMPLIED
+ repeat-prob NMTOKEN #IMPLIED
+ weight NMTOKEN #IMPLIED
+ xml:lang NMTOKEN #IMPLIED
+>
+<!ELEMENT rule (%rule-expansion; | example)*>
+<!ATTLIST rule
+ id ID #REQUIRED
+ scope (private | public) "private"
+>
+<!ELEMENT example (#PCDATA)>
+<!ELEMENT lexicon EMPTY>
+<!ATTLIST lexicon
+ uri %uri; #REQUIRED
+ type CDATA #IMPLIED
+>
+<!-- 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)*>
+<!ATTLIST grammar
+ scope %scope; #IMPLIED
+ src %uri; #IMPLIED
+ srcexpr %expression; #IMPLIED
+ type CDATA #IMPLIED
+ weight CDATA #IMPLIED
+ %cache.attrs;
+ tag-format %uri; #IMPLIED
+ xml:base %uri; #IMPLIED
+ version NMTOKEN #IMPLIED
+ xml:lang NMTOKEN #IMPLIED
+ root IDREF #IMPLIED
+ mode (voice | dtmf) "voice"
+>
+<!--============================= Audio Input =============================-->
+<!ELEMENT record (%audio; | %event.handler; | filled | %input; | prompt |
+ property)*>
+<!ATTLIST record
+ %item.attrs;
+ type CDATA #IMPLIED
+ beep %boolean; "false"
+ maxtime %duration; #IMPLIED
+ modal %boolean; "true"
+ finalsilence %duration; #IMPLIED
+ dtmfterm %boolean; "true"
+>
+<!--============================ Call Control ============================-->
+<!ELEMENT disconnect EMPTY>
+<!ATTLIST disconnect
+ namelist %variable.names; #IMPLIED
+>
+
+<!ELEMENT transfer (%audio; | %event.handler; | filled | %input; | prompt |
+ property)*>
+<!ATTLIST transfer
+ %item.attrs;
+ dest %uri; #IMPLIED
+ destexpr %expression; #IMPLIED
+ bridge %boolean; #IMPLIED
+ type NMTOKEN #IMPLIED
+ connecttimeout %duration; #IMPLIED
+ maxtime %duration; #IMPLIED
+ transferaudio %uri; #IMPLIED
+ aai CDATA #IMPLIED
+ aaiexpr %expression; #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 %variable.names; #IMPLIED
+>
+<!ELEMENT filled (%executable.content;)*>
+<!ATTLIST filled
+ mode (any | all) #IMPLIED
+ namelist %restrictedvariable.names; #IMPLIED
+>
+
+<!-- executable content + contents of prompt -->
+<!ELEMENT foreach (%executable.content; | %sentence-elements; |
+ %structure; )*
+>
+<!ATTLIST foreach
+ item %restrictedvariable.name; #REQUIRED
+ array CDATA #REQUIRED
+>
+
+<!ELEMENT goto EMPTY>
+<!ATTLIST goto
+ %cache.attrs;
+ %next.attrs;
+ fetchaudio %uri; #IMPLIED
+ expritem %expression; #IMPLIED
+ nextitem %restrictedvariable.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 %variable.names; #IMPLIED
+ %throw.attrs;
+>
+<!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;
+ fetchaudio %uri; #IMPLIED
+ %submit.attrs;
+>
+<!--========================== Miscellaneous ==============================-->
+<!ELEMENT data EMPTY>
+<!ATTLIST data
+ name %restrictedvariable.name; #IMPLIED
+ src %uri; #IMPLIED
+ srcexpr %expression; #IMPLIED
+ fetchaudio %uri; #IMPLIED
+ %submit.attrs;
+ %cache.attrs;
+>
+
+<!ELEMENT log (#PCDATA | value)*>
+<!ATTLIST log
+ label CDATA #IMPLIED
+ expr %expression; #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
+ srcexpr %expression; #IMPLIED
+ charset CDATA #IMPLIED
+ %cache.attrs;
+>
diff --git a/htdocs/sgml-lib/catalog.xml b/htdocs/sgml-lib/catalog.xml
index d4b612c..dc2d17d 100644
--- a/htdocs/sgml-lib/catalog.xml
+++ b/htdocs/sgml-lib/catalog.xml
@@ -254,4 +254,6 @@
<public publicId="-//W3C//ENTITIES Latin for HTML//EN//XML" uri="REC-xml-entity-names-20100401/xhtml1-lat1.ent" />
<public publicId="-//W3C//ENTITIES Special for HTML//EN//XML" uri="REC-xml-entity-names-20100401/xhtml1-special.ent" />
<public publicId="-//W3C//ENTITIES Symbol for HTML//EN//XML" uri="REC-xml-entity-names-20100401/xhtml1-symbol.ent" />
+ <public publicId="-//W3C//DTD VOICEXML 2.0//EN" uri="REC-voicexml20-20040316/vxml.dtd" />
+ <public publicId="-//W3C//DTD VOICEXML 2.1//EN" uri="REC-voicexml21-20070619/vxml.dtd" />
</catalog>
diff --git a/htdocs/sgml-lib/xml.soc b/htdocs/sgml-lib/xml.soc
index e3d77a1..b607b6e 100644
--- a/htdocs/sgml-lib/xml.soc
+++ b/htdocs/sgml-lib/xml.soc
@@ -608,6 +608,18 @@ PUBLIC "-//W3C//ENTITIES Symbol for HTML//EN//XML"
"REC-xml-entity-names-20100401/xhtml1-symbol.ent"
+-- VoiceXML 2.0 --
+
+PUBLIC "-//W3C//DTD VOICEXML 2.0//EN"
+ "REC-voicexml20-20040316/vxml.dtd"
+
+
+-- VoiceXML 2.1 --
+
+PUBLIC "-//W3C//DTD VOICEXML 2.1//EN"
+ "REC-voicexml21-20070619/vxml.dtd"
+
+
-- Do not prefer document type name over a SYSTEM Identifier. --
OVERRIDE NO