怎么检查vxml有没有错误?

How check vxml has error?

<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<!-- DOCTYPE vxml SYSTEM "http://127.0.0.1:5000/voicexml1-0.dtd" -->
<vxml xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0">

  <form id="dtmfForm">
      <property name="inputmodes" value="dtmf"/>
      <field name="dtmf">
        <audio src="http://localhost/File/voicefiles/T/menu/playCatDefinition.wav"/>

    <prompt>press 1</prompt>
        <audio src="http://localhost/File/voicefiles/T/cats/Love.wav"/>

    <prompt>press 2</prompt>
        <audio src="http://localhost/File/voicefiles/T/cats/Thinking of you.wav"/>

    <prompt>press 3</prompt>
        <audio src="http://localhost/File/voicefiles/T/cats/Oba Nathi Da.wav"/>

    <prompt>press 4</prompt>
        <audio src="http://localhost/File/voicefiles/T/cats/Adareta Kiyana Katha.wav"/>

    <prompt>press 5</prompt>
        <audio src="http://localhost/File/voicefiles/T/cats/Akamatththa.wav"/>

    <prompt>press 6</prompt>
        <audio src="http://localhost/File/voicefiles/T/cats/Sorry.wav"/>

    <prompt>press 7</prompt>
        <audio src="http://localhost/File/voicefiles/T/cats/Birthday.wav"/>

    <prompt>press 8</prompt>
        <audio src="http://localhost/File/voicefiles/T/cats/Annivesary.wav"/>

    <prompt>
        go to next step press 0 
    </prompt>

        <grammar mode="dtmf" root="digit">
          <rule id="digit" scope="public"> 
            <one-of>
                <item>0</item>
                <item>1</item>
                <item>2</item>
                <item>3</item>
                <item>4</item>
                <item>5</item>
                <item>6</item>
                <item>7</item>
                <item>8</item>
                <item>9</item>
            </one-of>
          </rule>
        </grammar>

    <if cond="dtmf=='9'">
        <goto next="http://localhost/myApp/resteasy/service/msisdn/7777?greetingCatagory='dtmf'"/>
    <else />
        <goto next="http://localhost/myApp/resteasy/service/msisdn/7777?greeting='dtmf'"/>
    </if>
      </field>      
    </form>
    <nomatch>
        No Match! I'm sorry, I didn't understand you.  Could you please try that again? 
        <reprompt />
    </nomatch>
    <noinput>
        No Input! I'm sorry, I didn't hear anything.  Could you please try that again? 
        <reprompt />
    </noinput>
</vxml>

考虑这个 vxml 任何错误在这个如何检查 vxml 有错误。如何,我解决它?这个 vxml 中包含什么样的错误,有时转到 <goto next={url}/> 这一步其他代码不起作用。此代码中的错误是什么? How to manage time next step go to.. 我正在寻找合适的答案?

谢谢。

<goto> 元素不能在 <field> 里面,它负责从用户那里收集信息。它应该移至 <filled> 负责解释。结构如下:

<form>
  <field>
    <grammar>...</grammar>
  </field>
  <filled>
     <goto ...
  </filled>
</form>

Voxeo documentation - filled element

VoiceXML 文档验证可以针对 VoiceXML DTD 在您发布的代码中完成 <goto> 并且 <if> 元素是 VoiceXML 中的内容称为可执行内容,可执行内容只能包含在以下元素中:

  • <block>
  • <catch>
  • <error>
  • <help>
  • <noinput>
  • <nomatch>
  • <if>
  • <filled>

所以在您的页面中,<if> 元素位于错误的元素内。

在线(语音)XML 验证可以使用 W3C 站点上的 validator 完成,直接根据 W3C 验证程序验证您的文档会出现以下错误:

Line 57, Column 25: document type does not allow element "if" here; missing one of "catch", "help", "noinput", "nomatch", "error", "filled" start-tag

为了进行正确的 DTD 验证,您需要在 VoiceXML 文档的开头添加有效的 DOCTYPE,例如语音XML 2.1 DOCTYPE如下:

<!DOCTYPE vxml PUBLIC "-//W3C//DTD VOICEXML 2.1//EN" "http://www.w3.org/TR/voicexml21/vxml.dtd">.

Voximal 集成了一个名为 vxmlvalidator 的命令行工具。

如果您安装了 Voximal 包,您可以使用它来验证 VoiceXML 2.0 和 2.1 标准文档。

root@192:~# vxmlvalidator http://demo.ulex.fr/vxml/index.vxml
------------------------------------------------------------------------------
.

VALID: http://demo.ulex.fr/vxml/index.vxml

TIME PROCESSING: 213697

PAGES PARSED: 1 (4.67952 p/s)

无论您使用的是脚本语言还是静态 vxml,您都必须 运行 浏览器中的页面才能看到您得到的 xml 输出。 它会告诉你是否有任何 ecmascript/xml 错误。 即使 xml 输出是正确的,你也必须仔细检查所有标签。

有时 vxml 服务器不会给您正确的错误信息。