blob: bf34a247dc9862e6454db7fad3190d310098960e [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# VoiceXML 2.0 RDC FRAGMENT DTD (200410805)
default namespace = ""
namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
audio = text | element.audio | element.value
bargeintype = "speech" | "hotword"
boolean = "true" | "false"
duration = string
expression = string
integer = string
uri = string
event.handler.content = audio | element.prompt
cache.attrs =
attribute fetchhint { "prefetch" | "safe" }?,
attribute fetchtimeout { duration }?,
attribute maxage { integer }?,
attribute maxstale { integer }?
event.handler.attrs =
attribute count { integer }?,
attribute cond { expression }?
# ================================ Prompts ==============================
# definitions adapted from SSML 1.0 DTD
structure = element.p | element.s
sentence-elements =
element.break
| element.emphasis
| element.mark
| element.phoneme
| element.prosody
| element.say-as
| element.voice
| element.sub
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 =
element prompt {
attlist.prompt, (allowed-within-sentence | structure)*
}
attlist.prompt &=
attribute bargein { boolean }?,
attribute bargeintype { bargeintype }?,
attribute cond { expression }?,
attribute count { integer }?,
attribute xml:lang { xsd:NMTOKEN }?,
attribute timeout { duration }?,
attribute xml:base { uri }?,
[ a:defaultValue = "1.0" ] attribute version { string "1.0" }?
# ================================ Audio Output ==============================
# definitions adapted from SSML 1.0 DTD
element.p =
element p { attlist.p, (allowed-within-sentence | element.s)* }
attlist.p &= attribute xml:lang { xsd:NMTOKEN }?
element.s = element s { attlist.s, allowed-within-sentence* }
attlist.s &= attribute xml:lang { xsd:NMTOKEN }?
element.voice =
element voice {
attlist.voice, (allowed-within-sentence | structure)*
}
attlist.voice &=
attribute xml:lang { xsd:NMTOKEN }?,
attribute gender { "male" | "female" | "neutral" }?,
attribute age { integer }?,
attribute variant { integer }?,
attribute name { text }?
element.prosody =
element prosody {
attlist.prosody, (allowed-within-sentence | structure)*
}
attlist.prosody &=
attribute pitch { text }?,
attribute contour { text }?,
attribute range { text }?,
attribute rate { text }?,
attribute duration { duration }?,
attribute volume { text }?
# Changes to SSML 1.0 DTD audio element:
# - src not obligatory, addition of 'expr' and caching attributes
element.audio =
element audio {
attlist.audio, (allowed-within-sentence | structure | element.desc)*
}
attlist.audio &=
attribute src { uri }?,
attribute expr { expression }?,
cache.attrs
element.desc = element desc { attlist.desc, text }
attlist.desc &= attribute xml:lang { xsd:NMTOKEN }?
element.emphasis =
element emphasis { attlist.emphasis, allowed-within-sentence* }
attlist.emphasis &=
[ a:defaultValue = "moderate" ]
attribute level { "strong" | "moderate" | "none" | "reduced" }?
element.say-as =
element say-as { attlist.say-as, (text | element.value)* }
attlist.say-as &=
attribute interpret-as { xsd:NMTOKEN },
attribute format { xsd:NMTOKEN }?,
attribute detail { xsd:NMTOKEN }?
element.sub = element sub { attlist.sub, text }
attlist.sub &= attribute alias { text }
element.phoneme = element phoneme { attlist.phoneme, text }
attlist.phoneme &=
attribute ph { text },
attribute alphabet { text }?
element.break = element break { attlist.break, empty }
attlist.break &=
attribute time { text }?,
[ a:defaultValue = "medium" ]
attribute strength {
"none" | "x-weak" | "weak" | "medium" | "strong" | "x-strong"
}?
element.mark = element mark { attlist.mark, empty }
attlist.mark &= attribute name { text }
element.value = element value { attlist.value, empty }
attlist.value &= attribute expr { expression }
# ================================== Events =============================
element.help = element help { attlist.help, event.handler.content* }
attlist.help &= event.handler.attrs
element.noinput =
element noinput { attlist.noinput, event.handler.content* }
attlist.noinput &= event.handler.attrs
element.nomatch =
element nomatch { attlist.nomatch, event.handler.content* }
attlist.nomatch &= event.handler.attrs
# ============================ Property =================================
element.property = element property { attlist.property, empty }
attlist.property &=
attribute name { xsd:NMTOKEN },
attribute value { text }