外部vxml语法的结构如何?
目前我已经遵循内联语法:
<grammar root="main" version="1.0" xml:lang="de-DE">
<rule id="main" scope="public">
<one-of>
<item> 1 </item>
<item> 2 </item>
<item>3 </item>
<item> 4</item>
</one-of>
</rule>
</grammar>
而不是我想写的内联语法
<grammar src = "mygrammar.grxml" type="application/srgs+xml" />
并参考外部语法。
我可以只复制内联语法并将其放在mygrammer.grxml中吗?
还是需要更多代码?
提前致谢
---- ---- EDIT
现在我的内联语法更早,我有
<grammar src = "grammar_produkte.grxml" type="application/srgs+xml" />
我的外部语法看起来像这样(就像你说的那样):
<?xml version="1.0" ?>
<grammar root="main" version="1.0" xml:lang="de-DE">
<rule id="main" scope="public">
<one-of>
<item> 1 </item>
<item> 2 </item>
<item> 3 </item>
<item> 4 </item>
</one-of>
</rule>
</grammar>
但它不起作用。它说,发生错误并且应用程序停止。 我做错什么了吗? 该文件与.vxml。
位于同一目录中我使用MS Speech Server 2007
----------------编辑-------
您好,
我正在引用语法文件:
<grammar src = "grammar_produkte2.grxml" type="application/srgs+xml" />
除了我之前使用的语法,现在我使用这个例子(来自网站):
<?xml version="1.0"?>
<grammar xml:lang="de-DE"
tag-format="semantics-ms/1.0" version="1.0"
root="Root" mode="voice"
xmlns="http://www.w3.org/2001/06/grammar"
xmlns:sapi=
"http://schemas.microsoft.com/
Speech/2002/06/SRGSExtensions">
<rule id="produkte" scope="public">
<one-of>
<item>
<item>ham</item>
<tag>$._value = "ham"</tag>
</item>
<item>
<item>roast beef</item>
<tag>$._value = "roast beef"</tag>
</item>
<item>
<item>italian</item>
<tag>$._value = "italian"</tag>
</item>
</one-of>
</rule>
</grammar>
我用mode = voice和dtmf尝试了它。
我还需要其他任何期待语音服务器吗? 文件位于同一文件夹中。
答案 0 :(得分:4)
至少你需要XML声明(条目)。 Doctypes通常是可选的(对于一些解析器,你最好避免使用)。对于大多数语法,大多数其他属性也可以避免。
以下内容来自SRGS (grammar) specification:
中的示例 <?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE grammar PUBLIC "-//W3C//DTD GRAMMAR 1.0//EN"
"http://www.w3.org/TR/speech-grammar/grammar.dtd">
<!-- the default grammar language is US English -->
<grammar xmlns="http://www.w3.org/2001/06/grammar"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/06/grammar
http://www.w3.org/TR/speech-grammar/grammar.xsd"
xml:lang="en-US" version="1.0">
...
</grammar>
在您的具体示例中,对于大多数平台,以下内容应该足够了:
<?xml version="1.0" ?>
<grammar root="main" version="1.0" xml:lang="de-DE">
<rule id="main" scope="public">
<one-of>
<item> 1 </item>
<item> 2 </item>
<item>3 </item>
<item> 4</item>
</one-of>
</rule>
</grammar>
上面,我提到doctype在某些情况下是一个问题。我发现一些系统在列出的情况下不断获取DTD。这是不好的形式,但并不总是被注意到。如果Internet链接断开,则系统无法正确响应。而且,如果你有足够的音量,你可能会被识别为DOS攻击并被阻止一段时间。